![網(wǎng)上實驗預(yù)約系統(tǒng)的設(shè)計與實現(xiàn)本科畢業(yè)論文_第1頁](http://file4.renrendoc.com/view/4e97c498762547082ef12389533c03ce/4e97c498762547082ef12389533c03ce1.gif)
![網(wǎng)上實驗預(yù)約系統(tǒng)的設(shè)計與實現(xiàn)本科畢業(yè)論文_第2頁](http://file4.renrendoc.com/view/4e97c498762547082ef12389533c03ce/4e97c498762547082ef12389533c03ce2.gif)
![網(wǎng)上實驗預(yù)約系統(tǒng)的設(shè)計與實現(xiàn)本科畢業(yè)論文_第3頁](http://file4.renrendoc.com/view/4e97c498762547082ef12389533c03ce/4e97c498762547082ef12389533c03ce3.gif)
![網(wǎng)上實驗預(yù)約系統(tǒng)的設(shè)計與實現(xiàn)本科畢業(yè)論文_第4頁](http://file4.renrendoc.com/view/4e97c498762547082ef12389533c03ce/4e97c498762547082ef12389533c03ce4.gif)
![網(wǎng)上實驗預(yù)約系統(tǒng)的設(shè)計與實現(xiàn)本科畢業(yè)論文_第5頁](http://file4.renrendoc.com/view/4e97c498762547082ef12389533c03ce/4e97c498762547082ef12389533c03ce5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE前言21世紀的教育必須適應(yīng)信息化社會需求。為此,世界發(fā)達國家高度重視信息技術(shù)對教育的影響和作用,重新調(diào)整教育目標,制定教育改革方案,加快推進教育信息化建設(shè)。近年來我國也十分重視教育信息化,特別是在“面向21世紀教育振興行動計劃”中強調(diào)利用信息技術(shù)推進教育改革。教育改革中強調(diào)了教育方式和管理方式的變革。隨著高校規(guī)模的不斷擴大和對教學管理需求的不斷提高,引進先進的信息技術(shù),實現(xiàn)教學管理方式的網(wǎng)絡(luò)化和智能化已成為教學改革的必然趨勢,我這次設(shè)計的題目是網(wǎng)上實驗預(yù)約系統(tǒng)(簡稱預(yù)約系統(tǒng)),是針對原有手工管理效率低下,缺乏可控性等特點,采用科學、高效的教學管理方式,使教師、學生預(yù)約實驗比原來更加方便快捷。此次的畢業(yè)設(shè)計課題是一個新的體驗、新的挑戰(zhàn),我在此過程中初次涉足JSP技術(shù),對Java編程的首次嘗試,其中遇到了不少的困難,不足與失誤之處在所難免,故敬請各位老師、領(lǐng)導批評指正。在此期間,我也不僅僅應(yīng)用了所學的知識,而且還不斷的學習了新的知識、工具,以完成設(shè)計的需要。在設(shè)計的過程中我深深體會到作為一個學習計算機專業(yè)的職員,為了實現(xiàn)一個模塊的代碼、為了一個設(shè)計的實現(xiàn)思想、經(jīng)常要絞盡腦汁來達到設(shè)計所要達到的目的。盡管我的基礎(chǔ)知識還不夠扎實,但是在此期間我積累了許多寶貴的經(jīng)驗,這都是我以后走上工作崗位的巨大的財富。由于這是我的一個新嘗試,以及受有限的知識和倉促的時間所限,所以程序代碼中難免會有不足的地方,望各位老師給予我指正,我將在以后的設(shè)計中做得更好。1緒論學校中的實驗設(shè)備是屬于全校師生共用的教學資源。由于學校實驗室個數(shù)及每門課程相關(guān)實驗室課時數(shù)的有限性,使得實驗室不可能像普通教室那樣按周次進行固定排課。當前實驗教室的排課普遍采用人工預(yù)約的方法,這種方式無論在人員聯(lián)系上還是實驗室安排上都很不方便。預(yù)約一個教室的周期往往在兩周以上,極大地影響了教學進度的安排,并且由于實驗室教室的分散性,往往會出現(xiàn)一個教室爆滿而另一個閑置的不對稱使用情況,在這種情況下,開發(fā)一種全校實驗室資源共享、合理分配教室資源、遠距離操作實驗室預(yù)約系統(tǒng)就顯得尤為必要。在國外,預(yù)約系統(tǒng)早就起源并且早已經(jīng)擴展開來?;贏SP的高校實驗網(wǎng)絡(luò)管理系統(tǒng),也可為學生提供一種選修自己喜歡實驗的途徑。有些系統(tǒng)允許學生通過校園網(wǎng)選修實驗,它具有實驗預(yù)約、查詢等功能。在國內(nèi),現(xiàn)在一般是用ASP做實驗預(yù)約系統(tǒng)。預(yù)先查看幾個比較典型的實驗預(yù)約系統(tǒng):長江大學電子信息學院開發(fā)的長江大學電工電子實驗預(yù)約系統(tǒng),它是一個實驗預(yù)約管理系統(tǒng),提供學生和教師登錄預(yù)約,教師和學生登錄后的功能不一樣,教師登錄后還可以對學生進行實驗管理;學生可以進行實驗預(yù)約,只是該系統(tǒng)有時候?qū)W生預(yù)約并不開放,以教師預(yù)約為主。這是國內(nèi)目前功能比較完善的實驗預(yù)約系統(tǒng)。紹興文理學院的開放實驗網(wǎng)上預(yù)約系統(tǒng)預(yù)約實現(xiàn)了可選擇的實驗進行預(yù)約和取消預(yù)約,可以輕松查看實驗室狀況,不過此系統(tǒng)封閉性不強,任何注冊人員都可以進行預(yù)約,這給系統(tǒng)管理帶來了負面影響。另外,最近在網(wǎng)上還出現(xiàn)了一個簡單的網(wǎng)上實驗預(yù)約系統(tǒng),簡單實現(xiàn)了預(yù)約功能,也是一個純粹的實驗預(yù)約系統(tǒng),用戶可以隨時進行注冊并預(yù)約實驗,又沒有取消預(yù)約的功能,而且此系統(tǒng)維護不夠,預(yù)約得不到管理員的批準與調(diào)配。但這也說明預(yù)約系統(tǒng)現(xiàn)在在國內(nèi)比較盛行,大家在勇于攀登,在不斷完善實驗預(yù)約系統(tǒng)的功能。建國以來,我國經(jīng)濟飛速的發(fā)展,特別是改革開放以后,大量資金、先進技術(shù)的引入,人民的生活水平有了很大的提高,物質(zhì)生活的提高也改變了消費觀念,網(wǎng)絡(luò)逐漸走進了人們的生活。隨著學校場所規(guī)模的擴大,使其在管理上存在一些漏洞,如實驗安排不及時,實驗安排有時間缺乏雙方交流性等。這導致了這些實驗室不能達到實驗的最佳結(jié)果。實驗室本來是用來結(jié)合理論聯(lián)系實踐的一個重要環(huán)節(jié),這步如果出了一點點問題,不良后果也是很大的。至少是一個班級的同學不能完成實踐學習或者是不能及時完成相關(guān)的實踐,也會給理論學習帶來一定的困難,也可能導致對該課程的學習失去興趣。我這次畢業(yè)設(shè)計題目是網(wǎng)上實驗預(yù)約的設(shè)計與實現(xiàn),是湖南科技大學教學研究重點項目中的一個方面。我們湖南科技大學是由原湘潭工學院和原湘潭師范學院合并而來,現(xiàn)在分為南北兩個主校區(qū)。為充分利用兩個校區(qū)的實驗室,就要根據(jù)現(xiàn)有的實驗室情況調(diào)配兩個校區(qū)的學生人數(shù),盡量做到最大限度的使用實驗設(shè)備,實現(xiàn)全校實驗的合理化,提高實驗設(shè)備的利用率。通過實驗室的調(diào)查,實驗室暫時還沒實現(xiàn)網(wǎng)上實驗預(yù)約功能,而且實現(xiàn)也有一定的難度。實驗室的管理員老師用他們的經(jīng)驗和事實說明在實驗室工作并不是一件簡單的事情,因為實驗室是個流動的場所,按照周一到周日,而且每天又按照一二節(jié)課、三四節(jié)課、五六節(jié)課、七八節(jié)課以及晚上分開進行排課,如果是節(jié)假日提前全部排滿的課程也只能被沖掉,不能再重新安排。在這一點上就說明本系統(tǒng)的建立就很有必要性,如果是授課教師能夠?qū)崟r地進行實驗預(yù)約,就能夠盡量避免實驗安排沖突的現(xiàn)象?,F(xiàn)在實驗室的課程安排更是復(fù)雜,一般都是用手工安排實驗課,又由于沒有網(wǎng)上預(yù)約系統(tǒng),實驗預(yù)約必須由教師與管理員進行預(yù)約并查看實驗室有關(guān)安排信息。實驗室是公共場合,除了上課還要用于實驗考試等,有些固定安排是不能被耽擱的,任課老師完成對班級理論課表的參照后與實驗室管理員商量好實驗時間段,最后還是要等待實驗室最后的安排表出來才能定好實驗日期,這一般是要幾個星期的時間。而學生一般是不能進行實驗預(yù)約的。根據(jù)對實驗室日常業(yè)務(wù)的考察,以及具體情況的分析得到實驗預(yù)約系統(tǒng)的迫切性,特別是作為計算機實驗室,本身就為實驗預(yù)約系統(tǒng)的應(yīng)用奠定了基礎(chǔ),加上師生的需求就確定了該系統(tǒng)開發(fā)必要性。
2系統(tǒng)開發(fā)平臺基于對系統(tǒng)的分析,本系統(tǒng)采用JSP技術(shù)來實現(xiàn)動態(tài)網(wǎng)頁,利用MicrosoftSQLServer2000作為數(shù)據(jù)庫管理系統(tǒng)建立數(shù)據(jù)庫,操作系統(tǒng)為WindowsXPprofession,Web服務(wù)器為Tomcat5.0。2.1HTML語言HTML(Hyper
Text
Markup
Language
超文本標記語言)[7]是一種用來制作超文本文檔的簡單標記語言。與常見的字處理文件不同,Web頁以超文本標識語言編排格式。HTML文件是帶有特定HTML插入標記的用以編排文檔屬性和格式的標準文本文件。它能獨立于各種操作系統(tǒng)平臺。自1990年以來HTML就一直被用作World
Wide
Web上的信息表示語言,用于描述Homepage的格式設(shè)計和它與WWW上其它Homepage的連結(jié)信息。HTML文檔是一個放置了標記的ASCII文本文件,通常它帶有.
html或.
htm的文件擴展名。2.2JavaScript語言JaveScript腳本語言腳本是應(yīng)用程序在網(wǎng)頁上表達的語言,可以將腳本嵌入Web頁中。通常腳本在服務(wù)器上運行,但也可以采用客戶端和服務(wù)器端結(jié)合使用VBScript是ASP的默認腳本語言[3]。2.3JSP技術(shù)2.3.1JSP概述JSP(JavaServerPage)技術(shù)是由SunMicrosystem公司倡導,許多公司參與,于1999年6月推出的一種動態(tài)網(wǎng)頁技術(shù)標準。它是基于JavaServlet以及整個Java體系的Web開發(fā)技術(shù),是Servlet2.1API的擴展。JSP技術(shù)是由Servlet技術(shù)發(fā)展起來的,自從有了JSP后,在Java服務(wù)器端編程中普遍采用的就是JSP,而不是Servlet。同時,JSP秉承了Java的“編程一次到處運行”的精神,能應(yīng)用于不同的操作平臺之上(如Windows、Unix、Linux等多種操作系統(tǒng)),是一種與平臺無關(guān)的技術(shù)。簡而言之,JSP就是Java,就是Servlet.只是它是一個特別的Java語言,同時又引入了“<%...%>”等一系列的特別語法。JSP技術(shù)的具體實現(xiàn)簡單地說,就是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中,利用HTML(或XML)標簽的擴展,插入JSP腳本代碼(主要是Java代碼),構(gòu)成了JSP文件(擴展名為.jsp)[3]。2.3.2JSP工作原理在JSP第一次獲得來自于客戶端瀏覽器的請求時,JSP文件將被JSP引擎(JSPengine)轉(zhuǎn)換成一個Servlet,即將”.jsp”文件編譯成JavaClass文件。當Servlet引擎接收到請求后,如果設(shè)置了使用最新的JSP,它就會去找JSP文件,檢查該文件在上次編譯后是否改動過。如果改動過,就會重新編譯生成新的Servlet,最終將請求轉(zhuǎn)交給編譯好的Servlet引擎執(zhí)行。如圖2-1。在編譯時如果發(fā)現(xiàn)JSP文件有任何語法錯誤,轉(zhuǎn)換過程將中斷,并向客戶端發(fā)出出錯信息;如果編譯成功,則所轉(zhuǎn)換產(chǎn)生的Servlet代碼被編譯,然后該Servlet被JSP引擎加載到內(nèi)存中。此時JSP引擎還請求了jspInit()方法的執(zhí)行,并對此Servlet初始化。JspInit()方法在Servlet的生命周期中只被請求一次,然后將被調(diào)用來處理客戶端的請求和回復(fù)操作。對于所有隨后對該JSP文件的請求,服務(wù)器將檢查該JSP文件自最后一次被存取后是否經(jīng)過修改。如果沒有修改,則將請求交還給還在內(nèi)存中的Servlet的jspService()方法,執(zhí)行回復(fù)操作。由于Servlet始終駐于內(nèi)存,所以響應(yīng)是非??斓摹SP頁面在第一次訪問時由于要轉(zhuǎn)化和編譯,運行速度較慢,但是當?shù)诙卧L問該頁時,由于文件已經(jīng)被編譯成字節(jié)碼文件了,所以速度非常得快。ClientClient客戶端請求(Request)WebServer響應(yīng)(Response)Serverextension服務(wù)器擴展ServletengineJSPengineServlet引擎JSP引擎ClassloaderJavacomplierJSPparser類載入器Java編譯器JSP語法分析器圖2-1JSP運行原理2.3.3JSP頁面的組成JSP頁面看上去像是標準的HTML和XML頁面,并附帶有JSP引擎能夠處理和解析執(zhí)行的代碼與組件。通常,JSP代碼和組件用于創(chuàng)建在最終頁面上顯示的文本。通常來說,JSP頁面包括編譯指令,動作指令,聲明,表達式和程序段等內(nèi)容。1、編譯指令:使用JSP編譯指令(〈%@和%〉內(nèi)的)來指定所使用的腳本語言,Servlet實現(xiàn)的接口,Servlet擴展的類,Servlet導入的軟件包。JSP指令的一般語法形式為:<%@指令名=“值”%>。2、動作指令(標識):動作指令用于執(zhí)行某些動作。在JSP規(guī)范中有2種類型的動作指令的標識。第一種是標準動作,它定義的是無論在什么版本的JSP引擎或Web服務(wù)器下總是可用的動作。第二種是自定義動作,它通過使用taglib指令來實現(xiàn)。例如JSP:useBean;JSP:setProperty;JSP:getProperty就是標準動作。3、聲明:用于聲明合法的變量和方法。與任何語言相同,JSP語言使用變量來保存數(shù)據(jù)。這些變量用declaration元素聲明,聲明的語法為<%!declaration(s)%>。當頁面被初始化的時候,JSP頁面中的所有聲明都被初始化。除了簡單的變量,方法也能被聲明。聲明不對當前的輸出流產(chǎn)生任何影響。4、表達式:通過計算表達式所得到的結(jié)果來表示某個值。表達式的形式為:<%=expression>。表達式求值的結(jié)果被強制轉(zhuǎn)換為一個字符串,并插入到當前的輸出流中。5、程序段:JSP可以在頁面中包含的一段程序,稱之為程序段。程序段是一個代碼片斷,在請求的處理過程中被執(zhí)行。程序段可以和頁面中的靜態(tài)元件組合起來創(chuàng)建動態(tài)生成的頁面。程序段在“<%%>”中定義,在這對標識中的所有東西都會被當成JSP程序執(zhí)行。2.3.4JavaBean技術(shù)介紹JavaBean技術(shù)是一種基于Java的組件技術(shù),JavaBean組件可以用來執(zhí)行復(fù)雜的計算任務(wù),或負責與數(shù)據(jù)庫的交互以及數(shù)據(jù)的提取等,是解決代碼重用問題的一種策略。以前的組件無法實現(xiàn)真正的代碼重用,其主要原因就是它們對于處理平臺的依賴和對開發(fā)語言的依賴過重。由于Java語言在這些方面所具有的特點和優(yōu)勢,使得基于它的軟件JavaBean組件技術(shù)倍受人們的關(guān)注。它的任務(wù)就是:一次編寫,可以在任何地方執(zhí)行,可以在任何地方重用。JavaBean組件可以在任何地方重用包括了可以在應(yīng)用程序、其他組件、文檔、Web站點和應(yīng)用程序構(gòu)造器工具等多種方案中再利用。為了創(chuàng)建和使用Java軟件組件,JavaBean被實現(xiàn)為一種獨立于平臺和結(jié)構(gòu)的應(yīng)用程序接口,它的實現(xiàn)可以忽略內(nèi)部的結(jié)構(gòu)及細節(jié)問題,只需要定義其外部的特征及對外功能就行。其中,屬性、方法和事件三種接口可以獨立對外進行開發(fā)。JavaBean的實質(zhì)就是一個.class文件,也可以成為類文件。JavaBean以binary格式保存,可以保護Java源代碼不容易被他人抄襲。2.3.5JSP的運行環(huán)境要運行JSP(注意,不是瀏覽JSP頁面),需要有支持JSP的服務(wù)器。這里分2種情況:一種是自身就支持JSP的服務(wù)器,如Jrun,Weblogic,JSWDK等;而另一種則是在不支持JSP的服務(wù)器上安裝JSP引擎的插件,如在IIS,Apache等服務(wù)器上安裝WebSphere,tomcat,Resin等插件。其中主流服務(wù)器是Weblogic和tomcat.Weblogic是一款功能強大的服務(wù)器軟件,配置比較簡單,而且JSP的擴展功能較多,附帶了數(shù)據(jù)庫的JDBC驅(qū)動程序。,支持JHTML(一種與JSP十分相似的技術(shù)),是目前市場占有率最高的服務(wù)器。不過,Weblogic的運行情況不太穩(wěn)定,使用它調(diào)試JSP文件,出現(xiàn)語法錯誤或者數(shù)據(jù)庫連接錯誤時,Weblogic就有可能崩潰。Tomcat服務(wù)器是當今使用廣泛的JSP/Servlet服務(wù)器,它本身也可做Web服務(wù)器使用。它的運行穩(wěn)定好。Tomcat服務(wù)器是ApacheGroupJakarta小組開發(fā)的一個免費服務(wù)器軟件,適合于嵌入Apache中使用,而且,它的源代碼可以免費獲得,你可以自由地對它進行擴充。訪問的地址http://jakarta./tomacat/index.html,Tomcat服務(wù)器的兼容性很好,如WebLogic服務(wù)器采用其為Web服務(wù)器引擎,Jbuilder將其作為標準的測試服務(wù)器,Sun公司也將其作為JSP技術(shù)應(yīng)用的示例服務(wù)器。不足之處是它的配置比較麻煩,而且有一些安全性的問題沒有解決。但是Tomcat服務(wù)器有眾多大軟件公司的支持,而且服務(wù)器的性能穩(wěn)定,其發(fā)展前景很好。2.4SQLServer2000數(shù)據(jù)庫簡介MicrosoftSQLServer2000是由一系列產(chǎn)品組成,不僅能夠滿足最大的數(shù)據(jù)處理系統(tǒng)和商業(yè)Web站點存儲和處理數(shù)據(jù)的需要,還能為個人或小企業(yè)提供容易使用的數(shù)據(jù)存儲服務(wù)。現(xiàn)在的企業(yè)和政府部門對數(shù)據(jù)的存儲要求非常高,如要求系統(tǒng)必須可以同時處理上千件訂單,能提供安全、與Web緊密集成的數(shù)據(jù)存儲,能夠存儲最大量的數(shù)據(jù)和支持眾多的用戶,有可靠的聯(lián)機分析處理系統(tǒng),這些系統(tǒng)能夠很容易地通過OLTP(聯(lián)機事務(wù)處理)數(shù)據(jù)生成,并支持復(fù)雜的數(shù)據(jù)分析。要求數(shù)據(jù)存儲系統(tǒng)可由應(yīng)用程序配置,然后系統(tǒng)自身可以自動調(diào)整,用戶不需要專門的數(shù)據(jù)庫管理員不間斷的監(jiān)視和調(diào)整應(yīng)用程序。MicrosoftSQLServer2000通過提供一系列相互協(xié)助的足見滿足了用戶的各種要求。MicrosoftSQLServer2000是由一系列相互協(xié)作的組件構(gòu)成,能滿足最大的Web站點和企業(yè)數(shù)據(jù)處理系統(tǒng)存儲和分析數(shù)據(jù)的需要。MicrosoftSQLServer2000主要由以下幾個組件組成:關(guān)系數(shù)據(jù)庫組件、數(shù)據(jù)庫構(gòu)架、管理構(gòu)架、復(fù)制構(gòu)架、數(shù)據(jù)倉庫和聯(lián)機分析處理分析和應(yīng)用程序開發(fā)構(gòu)架等。2.4.1MicrosoftSQLServer2000的特性MicrosoftSQLServer2000的主要特性包括:與Internet集成、可伸縮性和可用性、企業(yè)級數(shù)據(jù)庫功能、易于安裝、部署和使用數(shù)據(jù)倉庫。MicrosoftSQLServer2000數(shù)據(jù)庫引擎提供完整的XML(可擴展標記語言)支持。SQLServer2000與其他產(chǎn)品共同構(gòu)成了可靠安全的Internet和Intranet系統(tǒng)的數(shù)據(jù)存儲。SQLServer2000支持EnglishQuery和Microsoft搜索服務(wù)等功能,在Web應(yīng)用程序中包含了用戶友好的查詢和強大的搜索功能。同一MicrosoftSQLServer2000數(shù)據(jù)庫引擎可以運行在MicrosoftSQLServer2000的各個版本。MicrosoftWindowsNT4.0版的所有版本、Windows98和WindowsMillenniumEdition上。同時,當以默認設(shè)置運行時,SQLServer2000還具有動態(tài)自調(diào)整等功能,可以有效地運行在便攜式電腦和臺式機中,用戶無需承擔管理任務(wù)。SQLServer2000企業(yè)版支持聯(lián)合服務(wù)器、索引視圖和大型內(nèi)存支持等功能,使其可以升級到最大的Web站點所需的性能級別。SQLServer2000關(guān)系數(shù)據(jù)庫引擎支持當今苛刻的數(shù)據(jù)處理環(huán)境所需要的功能。如分布式查詢、動態(tài)行級鎖定、充分的完整性保護、分布式事務(wù)、復(fù)制等功能,為用戶提供企業(yè)級的數(shù)據(jù)庫功能。MicrosoftSQLServer2000中包含了一系列管理和開發(fā)工具,這些工具可改進在多個站點上安裝、部署、管理和使用SQLServer的過程。MicrosoftSQLServer2000包含多個可用于生成有效地支持決策、支持處理需求的數(shù)據(jù)倉庫的組件。這些組件包括:數(shù)據(jù)倉庫框架、數(shù)據(jù)轉(zhuǎn)換服務(wù)、聯(lián)機分析處理支持、數(shù)據(jù)挖掘支持、EnglishQuery、MetaDataServices.2.4.2數(shù)據(jù)庫構(gòu)架MicrosoftSQLServer2000的數(shù)據(jù)存儲在數(shù)據(jù)庫中。在數(shù)據(jù)庫中,數(shù)據(jù)被組織到用戶可以看見的邏輯組件中。數(shù)據(jù)庫還可以按物理方式,在磁盤上作為兩個或更多的文件實現(xiàn)。使用數(shù)據(jù)庫時使用的主要是邏輯組件,例如表、視圖、過程和用戶。文件的物理實現(xiàn)在很大程度上是透明的。一般只有數(shù)據(jù)庫管理員需要處理物理實現(xiàn)。每個SQLServer實例中有4個系統(tǒng)數(shù)據(jù)庫(master,tempdb,model和msdb)以及由用戶創(chuàng)建的一個或多個用戶數(shù)據(jù)庫。在4個系統(tǒng)數(shù)據(jù)庫中,master數(shù)據(jù)庫記錄SQLServer系統(tǒng)的所有系統(tǒng)級別信息記錄、所有的登錄帳戶和系統(tǒng)配置設(shè)置,記錄所有其他的數(shù)據(jù)庫的信息,包括其他數(shù)據(jù)庫文件的位置記錄SQLServer的初始化信息,并且始終有一個可用的最新的master數(shù)據(jù)庫備份。Tempdb數(shù)據(jù)庫保存所有的臨時表和臨時存儲過程。它還能滿足任何其他的臨時存儲要求。Tempdb數(shù)據(jù)庫在SQLServer每次啟動時都將重新創(chuàng)建,并且將重置為初始大小。Model數(shù)據(jù)庫用作在系統(tǒng)上創(chuàng)建的所有數(shù)據(jù)庫的模板。當創(chuàng)建新的數(shù)據(jù)庫時,新數(shù)據(jù)庫的第一部分通過復(fù)制的model數(shù)據(jù)庫中的內(nèi)容創(chuàng)建,剩余部分有空白頁填充。由于SQLServer每次啟動都要創(chuàng)建tempdb數(shù)據(jù)庫,所以model數(shù)據(jù)庫必須一直存在于SQLServer系統(tǒng)。Msdb數(shù)據(jù)庫是供SQLServer代理程序調(diào)度警報和作業(yè)以及記錄操作員時使用的數(shù)據(jù)庫。SQLServer2000中的每個數(shù)據(jù)庫都包含系統(tǒng)表,用來記錄SQLServer足見所需的數(shù)據(jù)。SQLServer的操作能否成功,取決于系統(tǒng)表信息的完整性,因此Microsoft不支持用戶直接更新系統(tǒng)表中的信息。下面介紹圖形工具。MicrosoftSQLServer2000包含許多圖形實用工具,使得用戶、程序員和系統(tǒng)管理員得以輕松地完成各項復(fù)雜的工作。這些圖形實用工具主要包括:SQLServer企業(yè)管理器、SQL查詢分析器、Windows2000系統(tǒng)監(jiān)視器(WindowsNT性能監(jiān)視器)、導入/導出數(shù)據(jù)向?qū)?、SQL事件探查器、SQLServer服務(wù)管理器、客戶端網(wǎng)絡(luò)實用工具、服務(wù)器網(wǎng)絡(luò)實用工具和其他一些實用工具。1、SQLServer企業(yè)管理器SQLServer企業(yè)管理器是MicrosoftSQLServer2000的主要管理工具,提供了一個遵從Microsoft管理控制臺(MMC)的用戶界面,SQLServer企業(yè)管理器提供的主要功能有:定義運行SQLServer的服務(wù)器組,將個別服務(wù)器注冊到組中,為每個已注冊的服務(wù)器配置所有的SQLServer選項,在每個已注冊的服務(wù)器中創(chuàng)建并管理所有SQLServer數(shù)據(jù)庫、對象、登錄、用戶和權(quán)限,在每個已注冊的服務(wù)器定義并執(zhí)行所有的SQLServer管理任務(wù),通過喚醒調(diào)用SQL查詢分析器,交互地設(shè)計并測試SQL語句、批處理文件和腳本,喚醒調(diào)用為SQLServer定義的各種向?qū)А?、SQL查詢分析器SQL查詢分析器是一個圖形用戶界面,用以交互地設(shè)計和測試Transact-SQL語句、批處理文件和腳本。它可以從SQLServer企業(yè)管理器中調(diào)用。SQL查詢分析器提供如下功能:可以對Transact-SQL語句進行文本編輯。用不同的顏色對Transact-SQL語句不同成分進行標識,這樣提高了復(fù)雜語句的易讀性。提供了對象瀏覽器和對象搜索工具,可以輕松查找數(shù)據(jù)庫中的對象和對象結(jié)構(gòu)。提供了性能優(yōu)越的模板,可用于加快創(chuàng)建SQLServer對象的Transact-SQL語句的開發(fā)速度。模板是包含創(chuàng)建數(shù)據(jù)庫對象所需的Transact-SQL語句基本結(jié)構(gòu)的文件。提供了用于分析存儲過程的交互式調(diào)試工具。2.4.3SOL語言簡單介紹SQL是英文Structured
Query
Language的縮寫,意思為結(jié)構(gòu)化查詢語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通。按照ANSI(美國國家標準協(xié)會)的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標準語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。
目前,絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如Oracle、
Sybase、
Microsoft
SQL
Server、
Access等都采用了SQL語言標準。雖然很多數(shù)據(jù)庫都對SQL語句進行了再開發(fā)和擴展,但是包括Select、
Insert、
Update、
Delete、
Create
以及Drop在內(nèi)的標準的SQL命令仍然可以被用來完成幾乎所有的數(shù)據(jù)庫操作。SQLServer數(shù)據(jù)庫系統(tǒng)在客戶機/服務(wù)器運算模式下,數(shù)據(jù)庫的查詢操作都集中在服務(wù)器方進行,在網(wǎng)絡(luò)上傳輸?shù)氖怯脩舻恼埱竺詈头?wù)器的檢索結(jié)果,而不是整個數(shù)據(jù)庫文件,這樣可以減少網(wǎng)絡(luò)上的信息流量,從而提高網(wǎng)絡(luò)的使用效率。2.4.4JDBC數(shù)據(jù)庫連接技術(shù)數(shù)據(jù)庫連接對動態(tài)網(wǎng)站來說是最為重要的部分,Java中連接數(shù)據(jù)庫的技術(shù)是JDBC(JavaDatabaseConnectivity)。它是SUN基于X/OpenSQLCLI的數(shù)據(jù)庫技術(shù),是一種能通過Java語言訪問結(jié)構(gòu)化數(shù)據(jù)庫的應(yīng)用程序接口(JDBCAPI),對于一些使用結(jié)構(gòu)化查詢語句的關(guān)系型數(shù)據(jù)庫尤為有效。很多數(shù)據(jù)庫系統(tǒng)帶有JDBC驅(qū)動程序,Java程序就通過JDBC驅(qū)動程序與數(shù)據(jù)庫相連,執(zhí)行查詢、提取數(shù)據(jù)等等操作。JDBC不但提供了標準的API連接數(shù)據(jù)源,而且還為數(shù)據(jù)庫的生產(chǎn)廠家提供了標準的驅(qū)動程序,使得用戶可以方便地使自己的Java應(yīng)用程序與數(shù)據(jù)庫互相通信。JDBC最大的特點是:對下,JDBC封裝了各種底層數(shù)據(jù)源之間的差異;對上,JDBC提供標準的SQL界面。這使得上層應(yīng)用對底層數(shù)據(jù)源的訪問完全透明,大大地簡化了訪問底層數(shù)據(jù)源的復(fù)雜性,真正做到了無障礙溝通。2.5搭建開發(fā)環(huán)境2.5.1安裝和配置JDK下載JDK1.5.0并安裝完后,在環(huán)境變量中進行相關(guān)的配置。下面以WindowsXP操作系統(tǒng)為例進行配置:1、Java_HOME環(huán)境變量的設(shè)置,Java_HOME是表示Java安裝的目錄,其他應(yīng)用程序如果需要使用Java運行環(huán)境,首先獲得該變量信息,然后確定執(zhí)行路徑。2、CLASSPATH環(huán)境變量的設(shè)置,CLASSPATH表示搜索Java類的路徑,這個路徑中可以包括一些Jar歸檔文件,也可以是一個目錄。3、PATH環(huán)境變量的設(shè)置,PATH變量是系統(tǒng)可執(zhí)行程序的路徑。2.5.2安裝TomcatTomcat服務(wù)器是當今使用廣泛的JSP/Servlet服務(wù)器,它運行穩(wěn)定、性能可靠,是學習和中小企業(yè)的最佳選擇。在安裝Tomcat的過程中選擇Java的安裝目錄,安裝完后啟動Tomcat監(jiān)視器點擊Startservice來啟動Tomcat服務(wù)器,并打開IE瀏覽器,在地址欄輸入:8080進行測試。2.5.3安裝和配置JDBC安裝好MSSQLServer2000數(shù)據(jù)庫系統(tǒng)后,繼續(xù)安裝微軟公司提供的JDBC驅(qū)動程序SQLServer2000DriverforJDBCSP3,然后進行配置如下:1、JDBC_HOME環(huán)境變量中設(shè)置為JDBC的安裝地址。2、增加新的環(huán)境參數(shù)CLASSPATH=%JDBC_Home%\lib\msbase.jar;%JDBC_Home%\lib\mssqlserver.jar;%JDBC_Home%\lib\msutil.jar。3、把3個JDBC的驅(qū)動程序文件msbase.jar、mssqlserver.jar、msutil.jar拷貝到所有源碼目錄的Web-INF\lib目錄中,否則JSP無法連接到SQLServer2000數(shù)據(jù)庫。3需求分析為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提條件,不論我們把設(shè)計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望,給開發(fā)者帶來煩惱。分析需求是所有是所有網(wǎng)上實驗預(yù)約系統(tǒng)開發(fā)的第一步,也是最重要的一步。理解需求是在問題及其最終解決方案之間架設(shè)橋梁的第一步。開發(fā)者只有和客戶充分理解了需求之后才可以設(shè)計系統(tǒng),否則,對需求定義的任何改進,設(shè)計上都必須大量的返工[2]。3.1系統(tǒng)需要解決的主要問題通過對網(wǎng)上實驗預(yù)約系統(tǒng)的實地調(diào)查,得知實驗預(yù)約是面向特定的某些對象的,并且實驗預(yù)約是任意的,一般一次預(yù)約是連續(xù)的兩節(jié)課,預(yù)約者可以在某一周的星期一至星期日的一二節(jié)、三四節(jié)、五六節(jié)、七八節(jié)和晚上,預(yù)約實驗和固定實驗一旦被安排好之后節(jié)假日也不再安排實驗。實驗預(yù)約系統(tǒng)是給高校的實驗提供通過網(wǎng)絡(luò)管理的系統(tǒng),給學生、教師和實驗室的管理人員都提供方便。學生和老師在系統(tǒng)中能夠預(yù)約實驗、取消實驗、查看實驗情況等;管理員再對預(yù)約實驗進行審批,以及添加固定實驗。3.2基本功能分析根據(jù)調(diào)查后的實際情況以及這次設(shè)計的要求,網(wǎng)上實驗預(yù)約系統(tǒng)應(yīng)該具備這些基本功能:1、有使用權(quán)限的用戶登錄才可以進入系統(tǒng)。2、進入系統(tǒng)后用戶可以查看實驗室狀態(tài)并進行實驗預(yù)約、在未被批準前取消自己的預(yù)約、查看實驗預(yù)約情況。3、管理員在后臺可以添加固定實驗和安排預(yù)約實驗。4、為了健全預(yù)約系統(tǒng),管理員可以添加刪除預(yù)約實驗的用戶,以及修改他們除開密碼和預(yù)約信息以外的所有的信息。5、為了實現(xiàn)網(wǎng)上實驗預(yù)約系統(tǒng)的快捷性,系統(tǒng)還可實現(xiàn)郵件群發(fā)單發(fā)的功能,管理員可以對用戶利用郵件發(fā)送通知預(yù)約情況。除了實現(xiàn)上述功能以外,在線實驗預(yù)約系統(tǒng)還應(yīng)該一些其他小功能,并具有友好、簡潔的界面,安全性要高,穩(wěn)定性要強,能夠滿足100人以上同時及進行在線預(yù)約。3.3建模分析為了更好地理解復(fù)雜事物,人們常常采用建立事物模型的方法。所謂模型,就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一些圖形符號和組織這些符號的規(guī)則組成。結(jié)構(gòu)化分析實質(zhì)上是一種創(chuàng)建模型的活動。為了開發(fā)出復(fù)雜的軟件系統(tǒng),我們在需求階段應(yīng)該從不同角度抽象出目標系統(tǒng)的特性,使用精確的方法構(gòu)造系統(tǒng)的模型,驗證模型是否滿足用戶對目標系統(tǒng)的需求,并在設(shè)計中逐漸把和實現(xiàn)有關(guān)的細節(jié)加進模型中,直至最終用程序?qū)崿F(xiàn)模型[2]。3.3.1系統(tǒng)流程圖系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具。它是用圖形符號以黑盒子形式描繪出組成系統(tǒng)的每個部件。系統(tǒng)流程圖表達的是數(shù)據(jù)在系統(tǒng)各部件之間流動的情況,而不是對數(shù)據(jù)進行加工的控制過程,因此盡管系統(tǒng)流程圖的某些符號和程序流程圖的符號形式相同,但是它卻是物理數(shù)據(jù)流圖而不是程序流程圖。預(yù)約用戶使用該系統(tǒng)進行實驗預(yù)約,每一次預(yù)約信息的變化稱為一個事務(wù),由用戶通過預(yù)約輸入到計算機中;系統(tǒng)中的實驗預(yù)約程序?qū)κ聞?wù)進行處理,更新存儲在預(yù)約信息中。最后由管理員審批安排實驗。圖3-1描繪了上述系統(tǒng)的概貌。注意圖中每個符號用黑盒子形式定義了組成系統(tǒng)的一個部件,然而并沒有指明每個部件的具體工作過程;圖中的箭頭確定了信息通過系統(tǒng)的邏輯路徑(信息流動路徑)。圖3-1基本系統(tǒng)流程圖3.3.2數(shù)據(jù)流圖數(shù)據(jù)流圖是系統(tǒng)的邏輯模型,然而任何計算機系統(tǒng)實質(zhì)上都是信息處理系統(tǒng),也就是說計算機系統(tǒng)本質(zhì)上都是把輸入數(shù)據(jù)變換成輸出數(shù)據(jù)。因此,任何系統(tǒng)的基本模型都由若干個數(shù)據(jù)源點/終點以及一個處理組成,這個處理就代表了系統(tǒng)對數(shù)據(jù)加工變換的基本功能。對于這個系統(tǒng)畫出圖3-2這樣的基本系統(tǒng)模型。圖3-2實驗預(yù)約系統(tǒng)的基本系統(tǒng)模型從這個基本系統(tǒng)模型出發(fā)開始畫功能級數(shù)據(jù)流圖,把基本系統(tǒng)模型細化,描繪系統(tǒng)的主要功能。預(yù)約實驗和審批實驗是系統(tǒng)必須完成的兩個主要功能,它們將替代圖3-2中的預(yù)約系統(tǒng)。此外,細化后的的數(shù)據(jù)流圖中還增加了兩個數(shù)據(jù)存儲:處理事務(wù)需要實驗室狀態(tài)數(shù)據(jù);審批預(yù)約和處理事務(wù)在兩個不同時間,因此需要存儲預(yù)約信息。還有另外兩個數(shù)據(jù)流,它們與數(shù)據(jù)存儲相同。這是因為從一個數(shù)據(jù)存儲中取出來的或放進去的數(shù)據(jù)通常和原來存儲的數(shù)據(jù)相同,也就是說,數(shù)據(jù)存儲和數(shù)據(jù)流只不過是同樣數(shù)據(jù)的兩種不同形式。如圖3-3預(yù)約系統(tǒng)的功能級數(shù)據(jù)流圖所示。在圖3-3中給處理和數(shù)據(jù)存儲都加了編號,這樣做的目的是便于引用和追蹤。圖3-3系統(tǒng)的功能級數(shù)據(jù)流圖接下來應(yīng)該對功能級數(shù)據(jù)流圖中描繪的系統(tǒng)主要功能進一步細化??紤]通過系統(tǒng)的邏輯數(shù)據(jù)流:當發(fā)生一個事務(wù)時必須首先接收它;對后按照事務(wù)的內(nèi)容修改實驗室狀態(tài);然后寫入預(yù)約信息中。因此,把實驗預(yù)約這個功能分解為下述3個步驟,這在邏輯上是合理的:查看實驗室狀態(tài)、添加預(yù)約、取消預(yù)約。如圖3-4所示。圖3-4系統(tǒng)的功能級進一步分解的數(shù)據(jù)流圖3.4系統(tǒng)運行環(huán)境運行JSP的服務(wù)器端的要求,如表3-1所示表3-1服務(wù)器端配置操作系統(tǒng)需要安裝的J2SDKTomcatWindows98J2sdk-1_4_1_01Tomcat4.0以上WindowsNT4.0ServerJ2sdk-1_4_1_01Tomcat4.0以上Windows2000J2sdk-1_4_1_01Tomcat4.0以上WindowsXPJ2sdk-1_4_1_01Tomcat4.0以上4系統(tǒng)設(shè)計4.1系統(tǒng)設(shè)計思想本系統(tǒng)采用三層架構(gòu)設(shè)計,它的工作原理如圖4-1所示。圖4-1系統(tǒng)工作原理圖采用三層構(gòu)架以后,用戶界面層通過統(tǒng)一的接口向業(yè)務(wù)層發(fā)送請求,業(yè)務(wù)層按自己的邏輯規(guī)則將請求處理之后進行數(shù)據(jù)庫操作,然后將數(shù)據(jù)庫返回的數(shù)據(jù)封裝成類的形式返回給用戶界面層。這樣用戶界面層甚至可以不知道數(shù)據(jù)庫的結(jié)構(gòu),它只要維護與業(yè)務(wù)層之間的接口即可。4.2系統(tǒng)功能模塊圖根據(jù)需求分析得到系統(tǒng)的總體結(jié)構(gòu)圖,如圖4-2所示。本系統(tǒng)工作在Web瀏覽器/服務(wù)器模式(Browser/Server,簡稱B/S)模式下。實際上是一種三層模型,包括前臺用戶窗口、后臺數(shù)據(jù)庫和中間應(yīng)用程序。用戶窗口圍繞主頁進行展開,主頁采取自頂向下的規(guī)則進行,逐級分解功能進行鏈接。本程序采用jsp和數(shù)據(jù)庫技術(shù)結(jié)合編程。本系統(tǒng)設(shè)計思想基于以上實驗預(yù)約的需求分析,將系統(tǒng)分為以下五大功能模塊。系統(tǒng)登錄模塊該模塊包括超級管理員、普通管理員、教師用戶、學生用戶的系統(tǒng)登錄,每一個系統(tǒng)用戶都擁有事先分配好的用戶名和密碼,不同類型的用戶只能訪問各自工作領(lǐng)域內(nèi)的相關(guān)頁面。超級管理員模塊超級管理員可以對系統(tǒng)進行管理,主要是對實驗室、普通管理員、教師信息、學生信息的維護,以及對實驗進行管理,此外還可以發(fā)送郵件,管理留言求助。普通管理員模塊普通管理員可以查看實驗室信息、教師信息,以及進行留言管理和實驗管理。教師用戶模塊教師進入系統(tǒng)后就進入預(yù)約頁面,包括任意預(yù)約、取消預(yù)約和查看預(yù)約情況。另外教師還可以進行留言求助和修改個人信息。學生用戶模塊學生進入系統(tǒng)后就進入預(yù)約頁面,包括任意預(yù)約、取消預(yù)約和查看預(yù)約情況。學生也可以進行留言求助和修改個人信息。圖4-2系統(tǒng)功能模塊圖5數(shù)據(jù)庫設(shè)計5.1數(shù)據(jù)庫設(shè)計原則一致性原則:對信息進行統(tǒng)一系統(tǒng)的設(shè)計,協(xié)調(diào)好各數(shù)據(jù),保證系統(tǒng)數(shù)據(jù)的一致性和有效性。完整性原則:數(shù)據(jù)庫的完整性是數(shù)據(jù)庫的正確性和相容性。要防止合法用戶在使用數(shù)據(jù)庫用數(shù)據(jù)庫造成數(shù)據(jù)泄露,更改和破壞。要有認證和授權(quán)機制??缮炜s性原則:數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計應(yīng)充分考慮發(fā)展的需要,移植的需要,具有良好的可擴展性,伸縮性和適度繁瑣度。規(guī)范化數(shù)據(jù)庫的設(shè)計:應(yīng)遵循規(guī)范化理論,程度過低,可能會存在插入。刪除異常,修改復(fù)雜,數(shù)據(jù)繁瑣的問題,解決的方法就是對關(guān)系模式進行分解或合并,轉(zhuǎn)換成高級范式。范式有六個級別:1NF,2NF,3NF,BCNF,4NF,5NF。但是也應(yīng)當注意到,并不是規(guī)范程度越高就越好。當一個應(yīng)用的查詢中經(jīng)常涉及到兩個或兩個以上的關(guān)系模式的屬性時,系統(tǒng)就必須經(jīng)常地進行連接運算,而連接運算的代價是非常高的。所以,在具體應(yīng)用時的規(guī)范化程度需要權(quán)衡利弊。一般而言,做到第三范式就足夠了。5.2數(shù)據(jù)庫需求分析根據(jù)前面的分析得,系統(tǒng)的實體-聯(lián)系圖為5-1,預(yù)約用戶教師和學生的關(guān)系是多對多,一個教師可以預(yù)約多個實驗室,因為一個教師有可能教幾個班級的課;一個學生代表一個班集體進行實驗預(yù)約預(yù)約,與實驗室的預(yù)約關(guān)系是一對一的關(guān)系。因為一個班級一次只能預(yù)約一次實驗室。圖5-1實體間關(guān)系的ER圖1、教師實體圖如圖5-2所示。教師實體信息包括教師編號、教師姓名、教師密碼、郵箱、所屬學院、電話、住址、性別。圖5-2教師實體圖學生實體圖如圖5-3所示,主要信息包括學號、姓名、密碼、班級、學院、郵箱、性別、電話。圖5-3學生實體圖實驗室實體圖如圖5-4所示,主要信息包括實驗室編號、實驗室名、實驗室現(xiàn)狀態(tài)、設(shè)備數(shù)量。圖5-4實驗室實體圖4、管理員實體圖如圖5-5所示,主要信息包括用戶名、權(quán)限、密碼。圖5-5管理員實體圖對實驗預(yù)約系統(tǒng)的需求,通過對實驗預(yù)約工作流程和數(shù)據(jù)流程分析,設(shè)計出如下的數(shù)據(jù)項和數(shù)結(jié)構(gòu):實驗室信息:包括的數(shù)據(jù)項目有實驗室編號、實驗室名稱、當前狀態(tài)、設(shè)備總臺數(shù)。教師信息:包括的數(shù)據(jù)項目有教師編號、教師姓名、密碼、郵箱、住址、電話、性別、學院。學生信息:包括的數(shù)據(jù)項目有學生學號、學生姓名、密碼、郵箱、班級、電話、性別、學院。實驗預(yù)約信息:包括的數(shù)據(jù)項有預(yù)約編號、實驗室編號、實驗室名稱、預(yù)約人編號、預(yù)約班級、預(yù)約時間。班級信息:包括的數(shù)據(jù)項有班級號、班級名稱。管理員信息:包括的數(shù)據(jù)項有用戶名、密碼、權(quán)限。留言信息:包括的數(shù)據(jù)項有留言人編號、留言人姓名、留言內(nèi)容、留言時間、回復(fù)信息。5.3數(shù)據(jù)庫概念設(shè)計為了做到第三范式,分析如下,每個實體都有個主鍵,實體與實體之間又相互聯(lián)系,如圖5-6。預(yù)約信息表中的教師編號是教師信息表中的外鍵,預(yù)約信息表中的班級名也是班級信息表中外鍵,預(yù)約信息表中的實驗室名是實驗室信息中的外鍵。所以預(yù)約信息表中的數(shù)據(jù)項中關(guān)鍵字有三個預(yù)約人、班級名和實驗室名,而且這三個是預(yù)約用戶的主鍵、班級信息的主鍵和實驗室信息的主鍵,預(yù)約信息表由這三個表所約束,符合了第三范式,消除了第一范式的冗余,也消除了非主屬性對碼的部分函數(shù)依賴,更進一步消除了非主屬性對碼的傳遞函數(shù)依賴。圖5-6部分實體關(guān)系圖5.4數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為SQLServer2000數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu),下面是主要的數(shù)據(jù)表的設(shè)計。1、名稱:管理員信息表(admin)標識:admin數(shù)據(jù)來源:后臺頁面取得。如表5-1所示。表5-1管理員信息表名稱列名數(shù)據(jù)類型長度允許空用戶名adminIDchar10NO密碼passwordchar10NO權(quán)限adminTypeint4NO2、名稱:班級信息表(class_info)標識:class_info。數(shù)據(jù)來源:后臺頁面取得。如表5-2所示。表5-2班級信息名稱列名數(shù)據(jù)類型長度允許空班級號idchar20NO班級名classnamechar30NO3、名稱:實驗室信息表(lab_info)標識:lab_info。數(shù)據(jù)來源:后臺頁面取得如表5-3所示。 表5-3實驗信息表名稱列名數(shù)據(jù)類型長度允許空實驗室號idbigint8NO實驗室名labnamechar30NO實驗室狀態(tài)statechar4NO設(shè)備總臺數(shù)Equip_numint8NO4、名稱:留言信息表(message)。標識:message。數(shù)據(jù)來源:前臺頁面取得。如表5-4所示。表5-4留言信息表名稱列名數(shù)據(jù)類型長度允許空留言人編號IDnvarchar20NO留言人姓名Tnamechar20NO留言內(nèi)容subjectnvarchar80NO留言時間[time]datetime8NO回復(fù)replynvarchar80YES5、名稱:教師信息表(Teacher_info)標識:Teacher_info數(shù)據(jù)來源:后臺頁面取得如表5-5所示。表5-5教師信息表名稱列名數(shù)據(jù)類型長度允許空教師編號IDnvarchar20NO教師姓名Tnamenvarchar20NO密碼passwordnvarchar20NO郵箱emailnvarchar40NO住址addressnvarchar60NO電話telnvarchar16NO性別sexnvarchar10NO學院depnvarchar60NO6、名稱:預(yù)約信息表(yuyue_info)標識:yuyue_info數(shù)據(jù)來源:前臺頁面取得如表5-6所示。表5-6預(yù)約信息表名稱列名數(shù)據(jù)類型長度允許空編號idint4NO周數(shù)weekchar20NO星期幾[day]char20NO第幾節(jié)coursechar20NO班級classchar20NO實驗室名labchar30NO預(yù)約人編號usernamechar30NO7、名稱:郵箱信息表(formail)標識:formail數(shù)據(jù)來源:前臺數(shù)據(jù)庫如表5-7所示。表5-7郵箱信息表名稱列名數(shù)據(jù)類型長度允許空郵箱addressvarchar50NO標題titlevarchar50NO內(nèi)容contentvarchar8000NO收信名usernamevarchar50NO8、名稱:學生信息表(stu_info)標識:stu_info數(shù)據(jù)來源:后臺頁面取得。如表5-8所示。表5-8學生信息表名稱列名數(shù)據(jù)類型長度允許空學號IDnvarchar20NO學生姓名Tnamenvarchar20NO密碼passwordnvarchar20NO郵箱emailnvarchar40NO班級classnvarchar60NO電話telnvarchar16NO性別sexnvarchar10NO學院depnvarchar60NO6系統(tǒng)實現(xiàn)與關(guān)鍵技術(shù)這個實驗預(yù)約系統(tǒng)里主要有兩類文件,一類是Bean文件,另一類是JSP文件,保存在user文件夾里,classes中存放Bean文件。user文件夾地址為:C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5\webapps\user6.1代碼的目錄結(jié)構(gòu)user存儲了整個開發(fā)系統(tǒng)的源代碼。Database保存了此系統(tǒng)分離后的后臺數(shù)據(jù)庫。WEB-INF中保存了classes文件夾,JavaBean保存在此。images用于保存系統(tǒng)用到的圖片。admin用于存儲超級管理員的后臺操作功能代碼。nadmin用于存儲普通管理員操作功能代碼。teacher用于存儲教師用戶的操作功能代碼。student用于存儲學生用戶的操作功能代碼。6.2主要功能模塊1、超級管理員模塊功能結(jié)構(gòu)如圖6-1所示。包括超級管理員登錄、教師管理、實驗室管理、實驗管理、留言管理、郵件管理六個模塊。登錄模塊中選擇管理員用戶類型再輸入用戶名和密碼判斷用戶名和密碼是否有效。添入用戶名和密碼后點擊[提交]按紐,系統(tǒng)自動從數(shù)據(jù)庫中管理員信息表判斷是否存在相同的用戶名和密碼,并核對權(quán)限,如果有則進入系統(tǒng),如果不存在則提示用戶名和密碼有錯誤信息。輸出:登錄成功,進入超級管理員的系統(tǒng)使用資源頁面,不成功顯示錯誤信息頁面。然后可以進行對預(yù)約實驗進行管理、添加固定實驗、用戶信息維護、添加普通管理員、實驗室信息維護、留言管理以及郵件群發(fā)等功能。圖6-1超級管理員模塊結(jié)構(gòu)圖2、普通管理員模塊功能結(jié)構(gòu)如下圖6-2所示。包括普通管理員登錄、查看用戶信息、查看實驗室狀態(tài)、實驗管理、留言管理、郵件管理五個模塊。普通管理員是進入系統(tǒng)協(xié)助超級管理員維護系統(tǒng)信息的。普通管理員登錄系統(tǒng)時先選擇管理員入口,輸入用戶名和密碼后,系統(tǒng)從數(shù)據(jù)庫中管理員信息表中判斷是否存在相同的用戶名和密碼,并核對權(quán)限,如果存在則進入系統(tǒng)進行實驗管理,也可以查看用戶信息、查看實驗室信息、發(fā)送郵件等功能。圖6-2普通管理員模塊結(jié)構(gòu)圖3、教師用戶模塊此功能模塊結(jié)構(gòu)圖如下圖6-3所示。包括個人信息修改、預(yù)約、查看實驗室狀態(tài)、留言求助四個功能。教師作為用戶進入系統(tǒng),在登錄模塊中先選擇用戶類型為教師,再輸入用戶名和密碼,即教師編號,原始密碼也默認為教師編號。然后系統(tǒng)從數(shù)據(jù)庫教師信息表中查詢判斷是否存在相同的用戶名和密碼,如果存在則進入系統(tǒng)進行實驗預(yù)約包括查看預(yù)約和撤消自己未被批準的實驗預(yù)約,也可以根據(jù)需要對個人信息進行修改、查看實驗室當前狀態(tài)信息,當實驗室設(shè)備或者軟件出現(xiàn)問題時就留言向管理員進行求助。圖6-3教師用戶模塊結(jié)構(gòu)圖4、學生用戶模塊此功能模塊結(jié)構(gòu)圖如下圖6-4所示。學生模塊包括個人信息修改、預(yù)約、查看實驗室狀態(tài)、留言求助四個功能。學生作為用戶進入系統(tǒng),代表一個班級進行實驗預(yù)約。在登錄模塊中先選擇用戶類型為學生,再輸入用戶名和密碼,即學號,原始密碼也默認為學號。然后系統(tǒng)從數(shù)據(jù)庫學生信息表中查詢判斷是否存在相同的用戶名和密碼,如果存在則進入系統(tǒng)進行實驗預(yù)約包括查看預(yù)約和撤消自己未被批準的實驗預(yù)約,也可以根據(jù)需要對個人信息進行修改、查看實驗室當前狀態(tài)信息,當實驗室設(shè)備或者軟件出現(xiàn)問題時就留言向管理員進行求助。圖6-4學生用戶模塊結(jié)構(gòu)圖6.3系統(tǒng)實現(xiàn)的主要通用模塊6.3.1實現(xiàn)數(shù)據(jù)庫連接的Bean(Conn.java)//Conn.javapublicclassConn{privatestaticConnectioncon;privateStatementstmt;privateResultSetrs;privatestaticfinalStringdrivername="com.microsoft.jdbc.sqlserver.SQLServerDriver";privatestaticfinalStringurl=jdbc:microsoft:sqlserver://:1433;DatabaseName=Booklab;user=sa;password=;";//設(shè)置連接的數(shù)據(jù)庫為Booklab,用戶名為sa,密碼為空。publicstaticsynchronizedConnectiongetCon()throwsException{//獲得數(shù)據(jù)庫連接try{Class.forName(drivername);con=DriverManager.getConnection(url);//獲得連接returncon;};}publicStatementgetStmtread(){try{con=getCon();stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);returnstmt;//返回對象}……}publicResultSetgetRs(Stringsql){try{stmt=getStmtread();//獲得對象rs=stmt.executeQuery(sql);//執(zhí)行查詢結(jié)果returnrs;//返回結(jié)果集}……}有個這個JavaBean后,以后每次連接數(shù)據(jù)庫進行操作時只要調(diào)用相應(yīng)的方法體就可以了。避免了每個對數(shù)據(jù)庫操作的jsp頁面要編寫同樣的數(shù)據(jù)庫連接與操作代碼,使jsp頁面代碼盡量簡潔。這樣也易于系統(tǒng)擴展。6.3.2提示頁面Bean(Show.java)這是一個網(wǎng)頁式的提示信息,將代碼寫到JavaBean中使用的時候就方便了許多。調(diào)用Show對象中的方法errorBox時,先傳遞變量str2,后傳遞str1,生成一個HTML頁面并且報告出錯信息。6.3.3實現(xiàn)編碼轉(zhuǎn)換的Bean(Str.java)這個Bean中提供了幾種編碼轉(zhuǎn)換的封裝方法,用的特別多的是轉(zhuǎn)換為中文的這一個。得到轉(zhuǎn)換為中文的字符串publicStringtoChinese(Stringstr){if(str==null||str.length()<1){str="";}else{try{str=(newString(str.getBytes("iso-8859-1"),"GB2312"));}catch(UnsupportedEncodingExceptione){System.err.print(e.getMessage());e.printStackTrace();returnstr;}}returnstr;}2、將編碼轉(zhuǎn)換為GBK字體publicStringtoStr(Stringstr){if(str==null||str.length()<1){str="";}else{try{str=(newString(str.getBytes("ISO8859_1"),"GBK"));}catch(UnsupportedEncodingExceptione){System.err.print(e.getMessage());e.printStackTrace();returnstr;}}returnstr;}publicStringdbEncode(Stringstr){if(str==null){str="";}else{try{str=str.replace('\'',(char)1).trim();}catch(Exceptione){System.err.print(e.getMessage());e.printStackTrace();returnstr;}}returnstr;}3、將指定的字符串按UNICODE的形式進行編碼. publicStringtoUnicode(Stringsrc){ if(src==null||"".equals(src.trim()))returnsrc; try{ Stringtarget=newString(src.getBytes("GBK"),"ISO-8859-1"); returntarget; } catch(Exceptione){ } returnsrc;}publicStringgbToUtf8(Stringsrc){byte[]b=src.getBytes();char[]c=newchar[b.length];for(intx=0;x<b.length;x++){c[x]=(char)(b[x]&0x00FF);}returnnewString(c);}6.3.4分頁技術(shù)Bean(Page.java) 在本系統(tǒng)中我的分頁面技術(shù)使用JavaBean技術(shù)。先聲明幾個私有屬性如下:privateintonePageCount=0;//每頁記錄數(shù)privateintallRecordCount=0;//總記錄數(shù)privateintallPageCount=0;//總頁數(shù)privateintnowFirst=0;//當前首記錄privateintnowLast=0;//當前尾記錄privateintintPage;//當前頁號privateConncon=newConn();privateResultSetrs;1、得到查詢結(jié)果集的方法:publicResultSetgetRs(Stringsql){rs=con.getRs(sql);returnrs;}2、得到總記錄數(shù)的方法:publicintgetallRecordCount(Stringsql){try{rs=getRs(sql);rs.last();//光標在最后一行allRecordCount=rs.getRow();//(總的記錄數(shù))}catch(Exceptione){System.err.println(e.getMessage());e.printStackTrace();}returnallRecordCount;}3、得到總頁數(shù)的封裝:publicintgetallPageCount(Stringsql){try{allPageCount=getallRecordCount(sql)/onePageCount;if((allRecordCount%onePageCount)>0){allPageCount++;}}catch(Exceptione){System.err.println(e.getMessage());e.printStackTrace();}returnallPageCount;}4、得到當前頁面方法的封裝:publicintgetintPage(StringstrPage){try{if(strPage==null){//此時顯示第一頁數(shù)據(jù)intPage=1;}else{//將字符串轉(zhuǎn)換成整型intPage=java.lang.Integer.parseInt(strPage);//當前頁面if(intPage<1)intPage=1;elseif(intPage>allPageCount)intPage=allPageCount;nowFirst=(int)(onePageCount*(int1));//當前頁面首記錄}nowLast=nowFirst+onePageCount-1;//當前頁面尾記錄}catch(Exceptione){System.err.println(e.getMessage());e.printStackTrace();}returnintPage;}5、設(shè)置每頁記錄數(shù)方法封裝:publicvoidsetonePageCount(intonePageCount){this.onePageCount=onePageCount;}6、得到當前頁面首記錄方法:publicintgetnowFirst(){returnnowFirst;}7、得到當前頁面尾記錄方法:publicintgetnowLast(){returnnowLast;}6.4登錄此系統(tǒng)是一個封閉的實用系統(tǒng),進入本系統(tǒng)前用戶首先得身份驗證,進行登錄操作,所有頁面從這里登錄后進入。如圖6-5所示,實現(xiàn)登錄的時先選擇用戶類型為管理員、教師、學生中一個,再輸入相應(yīng)的用戶名和密碼,提交完信息后系統(tǒng)就轉(zhuǎn)入了login.jsp進行數(shù)據(jù)驗證。login.jsp中的關(guān)鍵代碼如下:1、login.jsp代碼段1:StringUsername=(String)request.getParameter("username");StringPassword=(String)request.getParameter("pwd");StringUsertype=(String)request.getParameter("usertype");這三行代碼就是聲明三個string變量Username、Password、Usertype與index.html的username、pwd、usertype就是用戶名、密碼和用戶類型一一相對應(yīng),然后把登錄頁面中輸入的數(shù)據(jù)進行數(shù)值傳遞。圖6-5登錄2、login.jsp代碼段2:if(Usertype!=null&&Usertype.equals("admin")){rs=con.getRs("SELECT*FROMadminWHEREadminID='"+Username+"'andpassword='"+Password+"'andadminType=0;");}if(Usertype!=null&&Usertype.equals("teacher")){rs=con.getRs("SELECT*FROMTeacher_infoWHEREID='"+Username+"'andpassword='"+Password+"';");}if(Usertype!=null&&Usertype.equals("sudent")){rs=con.getRs("SELECT*FROMstu_infoWHEREstu_id='"+Username+"'andpassword='"+Password+"';");}這段代碼用來把輸入數(shù)據(jù)與數(shù)據(jù)庫表中的信息進行驗證,其中三個if語句先判斷出用戶類型是teacher、student、admin中的哪一個,然后再查詢數(shù)據(jù)庫表中是否有相應(yīng)的用戶,以及密碼是否正確。3、login.jsp代碼段3:〈%if(rs.next()){session.setAttribute("username",Username);//保存登錄名session.setAttribute("usertype",Usertype);//保存登錄類型if(Usertype.equals("admin")){response.sendRedirect("admin.jsp");}else{response.sendRedirect("yuyue.jsp");}……%>當rs結(jié)果集不為空時,判斷用戶類型與admin一致不一致,如果一致就轉(zhuǎn)入管理員功能頁面,不然就轉(zhuǎn)入用戶預(yù)約功能頁面yuyue.jsp。預(yù)約者進入預(yù)約首頁,就可以進行實驗預(yù)約、實驗取消,如果需要還可以轉(zhuǎn)入個人信息修改頁面。否則出錯并禁止登錄。當每次訪問與用戶權(quán)限相關(guān)的頁面時,需要重新獲取session中的信息,驗證session中的信息是否符合要求,如果符合要求,則顯示該頁面,否則,返回登錄界面重新登錄。6.5預(yù)約實驗用戶預(yù)約實驗的流程圖如圖6-6。預(yù)約實驗的思想是:一方面,預(yù)約用戶學生或者教師通過驗證后登錄系統(tǒng)就進入預(yù)約功能的主頁面,然后可以進行實驗室現(xiàn)狀的查詢,然后進行實驗預(yù)約,實驗預(yù)約時候系統(tǒng)程序提供了預(yù)約時間沖突提示出錯,沒有特殊情況是不能在同一時間預(yù)約同一間實驗室的,預(yù)約不成功可以重新預(yù)約。預(yù)約成功后也可以在管理員驗證預(yù)約之前取消本人的預(yù)約。實驗預(yù)約的主頁面yuyue.jsp如圖6-7。在此頁面中,用戶可以直接按周數(shù)進行時間選擇然后預(yù)約實驗,然后可以看到自己的預(yù)約情況并進行預(yù)約取消。另一方面,預(yù)約用戶也可以選擇實驗室狀態(tài)進行實驗查詢后,如圖6-8和6-9所示,在這里系統(tǒng)提供了在兩周內(nèi)查看實驗室是否有空堂的查詢,然后可以在查詢實驗室狀態(tài)時同時進行實驗預(yù)約。另外,主頁面6-7中還為用戶提供了一些預(yù)約實驗的幫助功能:用戶根據(jù)需要可以修改個人信息;也可以在系統(tǒng)留言求助有關(guān)實驗方面的問題。在yuyue.jsp中,關(guān)鍵代碼分析如下:1、yuyue.jsp關(guān)鍵代碼段1:<%booleanisLogin=true;Stringusername=(String)session.getAttribute("username");Stringusertype=(String)session.getAttribute("usertype");if(username==null||username==""||(usertype.equals("admin")){isLogin=false;}if(!isLogin){ //response.sendError(403,"用戶未登錄,禁止訪問");response.sendRedirect("index.htm"); return;}%>上面代碼段先取出username用戶名和usertype用戶類型,如果用戶名為空格或者空值時,或者用戶類型為admin管理員,就輸出“用戶未登錄,禁止訪問”這句話,然后返回系統(tǒng)登錄頁面index.htm重新登錄。圖6-6實驗預(yù)約流程2、yuyue.jsp關(guān)鍵代碼段2:<formmethod=postaction="yuyue_update.jsp">教學周:<selectname="week"><%for(i=0;i<24;i++){%><optionvalue="第<%=i+1%>周">第<%=i+1%>周</option><%}%></select>提交表單成功時,就轉(zhuǎn)入yuyue_update.jsp,把此次預(yù)約情況添加進預(yù)約信息表中,并在個人預(yù)約情況表中顯示出來。圖6-7實驗預(yù)約主界面星期:<selectname="day"><%for(i=0;i<7;i++){if(i==6){%><optionvalue="星期天">星期日</option><%}else{%><optionvalue="星期<%=i+1%>">星期<%=i+1%></option><%}}%></select>課程節(jié)次:<selectname="course"><%for(i=0;i<10;i+=2){%><optionvalue="第<%=i+1%>-<%=i+2%>節(jié)">第<%=i+1%>-<%=i+2%>節(jié)</option><%}%></select>這段關(guān)鍵代碼2在yuyue.jsp頁面中設(shè)置了三個下拉菜單用來給用戶選擇預(yù)約的時間。教學周總共設(shè)置了24周,用戶可以在其中選擇24周的任何一周;星期里面也包括了一個星期七天,用戶也可以任選星期幾來進行實驗預(yù)約;課程節(jié)次就用來選擇是第幾周星期幾的哪兩節(jié)課,因為一般一天分為10節(jié)課,而且實驗一般以兩節(jié)課為最小單位,這里代碼段顯示預(yù)約用戶可以在這里選擇第1-2節(jié)、第3-4節(jié)直至第7-8節(jié)和第9-10節(jié)。這個表單中還有預(yù)約的班級信息、實驗室信息供選擇,他們都與班級信息表和實驗室信息表相連接,下拉框中顯示數(shù)據(jù)表中所有的信息。當提交預(yù)約信息時,系統(tǒng)會自動檢查實驗室是否已經(jīng)被預(yù)約過,如果預(yù)約信息表中實驗室狀態(tài)值為0,則預(yù)約成功,否則重新預(yù)約。具體代碼如下:班級:<%Stringclassname;out.print("<selectname=class>");sql="select*fromclass_info;";rs=con.getRs(sql);while(rs.next()){classname=rs.getString("classname");id=rs.getInt("id");out.print("<optionvalue="+classname+">"+classname+"</option>"); }out.print("</select>");%>預(yù)約實驗室:<%Stringlabname;out.print("<selectname=lab>");sql="select*fromlab_infowherestate='0';";//判斷實驗室在此時間下被預(yù)約過沒有。rs=con.getRs(sql);while(rs.next()){labname=rs.getString("labname");id=rs.getInt("id");out.print("<optionvalue="+labname+">"+labname+"</option>"); }out.print("</select>");%>yuyue.jsp代碼段3下面這段代碼顯示了預(yù)約情況表,表格包括這七列預(yù)約實驗編號、教學周
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025標準版?zhèn)€人購房合同書
- 2025合伙買車合同
- 2024-2025學年新教材高中生物 第二章 基因和染色體的關(guān)系 微專題四 伴性遺傳的解題方法說課稿 新人教版必修第二冊
- 預(yù)制樓板施工方案
- 肇慶鋼板樁支護施工方案
- 別墅電梯出售合同范例
- 2023九年級數(shù)學下冊 第二十九章 投影與視圖29.1 投影第2課時 正投影說課稿 (新版)新人教版001
- 2024年四年級英語上冊 Unit 3 Let's Go Lesson 15 In the City說課稿 冀教版(三起)
- 自然補償管道施工方案
- 2024年四年級英語上冊 Unit 1 My classroom The fifth period(第五課時)說課稿 人教PEP
- 2025年熱管換熱氣行業(yè)深度研究分析報告
- 職業(yè)學院學生晚出、晚歸、不歸管理辦法
- 2025年陜西西安市經(jīng)濟技術(shù)開發(fā)區(qū)管委會招聘30人歷年高頻重點提升(共500題)附帶答案詳解
- 2025山東能源集團中級人才庫選拔高頻重點提升(共500題)附帶答案詳解
- 《安利蛋白質(zhì)粉》課件
- 【可行性報告】2024年數(shù)據(jù)標注與審核項目可行性研究分析報告
- 2024-2025學年滬科版數(shù)學七年級上冊期末綜合測試卷(一)(含答案)
- 2025門診護理工作計劃
- 《針法灸法》課件-溫灸器灸
- 電氣領(lǐng)域知識培訓課件
- 山東省部分學校2024-2025學年高一上學期12月選科指導聯(lián)合測試地理試題( 含答案)
評論
0/150
提交評論