基于web的課程管理系統(tǒng)_第1頁(yè)
基于web的課程管理系統(tǒng)_第2頁(yè)
基于web的課程管理系統(tǒng)_第3頁(yè)
基于web的課程管理系統(tǒng)_第4頁(yè)
基于web的課程管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

摘要本論文主要介紹基于Web的課程設(shè)計(jì)管理系統(tǒng)的研究和設(shè)計(jì),以及系統(tǒng)設(shè)計(jì)中所涉及的技術(shù)。進(jìn)行了模塊劃分,而后分析了各個(gè)模塊和流程的具體劃分和最后的編程實(shí)現(xiàn),從問(wèn)題的提出到最后逐步的實(shí)現(xiàn)。都一步一步作了系統(tǒng)的介紹,在實(shí)際開(kāi)發(fā)階段,本文將比較有代表性的代碼給出,并作了相關(guān)注釋,便于理解和對(duì)照。本系統(tǒng)在當(dāng)前流行的web開(kāi)發(fā)平臺(tái)上進(jìn)行課程管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。系統(tǒng)使用XML、JAVA等當(dāng)前流行的技術(shù)進(jìn)行系統(tǒng)實(shí)現(xiàn)。他給學(xué)生帶來(lái)了很多的方便,學(xué)生可以在線選擇自己想要選的課題。老師也可以在線添加課題、給學(xué)生打分等。管理員可以在線對(duì)老師、學(xué)生、課程進(jìn)行管理。總體上實(shí)現(xiàn)了預(yù)期的目的。在實(shí)現(xiàn)方面,該畢業(yè)設(shè)計(jì)最大的特點(diǎn)是使用JSP+JavaBean+Servlet開(kāi)發(fā)模式,將系統(tǒng)中的表示層和業(yè)務(wù)邏輯層分開(kāi)。這種開(kāi)發(fā)模式在一定程度上表達(dá)了MVC的思想,又減少的常規(guī)MVC模式的復(fù)雜性,在中小型Web應(yīng)用的軟件開(kāi)發(fā)中具有一定的應(yīng)用價(jià)值。而且采用MVC開(kāi)發(fā)模式進(jìn)行該系統(tǒng)的具體實(shí)現(xiàn),為日后程序的修改和擴(kuò)展提供了很好的可擴(kuò)展性。關(guān)鍵詞:JSP,Servlet,JavaBean,iReport,JavaMail目錄摘要11.1基于web的課程設(shè)計(jì)管理系統(tǒng)開(kāi)展特點(diǎn)。51.2主要功能62.1Java語(yǔ)言簡(jiǎn)介62.2Java語(yǔ)言在網(wǎng)絡(luò)上的應(yīng)用72.3JSP技術(shù)簡(jiǎn)介71.4Servlet技術(shù)簡(jiǎn)介81.5JavaBean技術(shù)簡(jiǎn)介91.6Tomcat簡(jiǎn)介91.7B/S與C/S模式10第二章需求分析112.1設(shè)計(jì)目標(biāo)112.2功能概圖122.3性能需求122.4數(shù)據(jù)需求13第三章系統(tǒng)概要設(shè)計(jì)143.1系統(tǒng)運(yùn)行平臺(tái)設(shè)置143.2運(yùn)行環(huán)境143.3開(kāi)發(fā)工具及技術(shù)簡(jiǎn)介143.3.1開(kāi)發(fā)工具簡(jiǎn)介14技術(shù)簡(jiǎn)介15第四章數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)164.1數(shù)據(jù)庫(kù)表如下:164.1.1.登錄表(user)164.1.2.管理員表(admin)164.1.3.教師表(teacher)164.1.4.學(xué)生表(student)174.1.5.課程表(course)174.1.6.選課表(selectCourse)174.1.7.評(píng)教表(judgeTeacher)174.2數(shù)據(jù)庫(kù)的完整性和平安性184.2.1數(shù)據(jù)庫(kù)的完整性184.2.2數(shù)據(jù)庫(kù)的平安性184.3登錄用到的觸發(fā)器18第五章數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)205.1數(shù)據(jù)庫(kù)的需求分析205.2數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)205.2.1實(shí)體與屬性之間的關(guān)系205.2.2E-R模型20第六章數(shù)據(jù)流圖及程序結(jié)構(gòu)框圖216.1、核心模塊數(shù)據(jù)流圖216.2、程序結(jié)構(gòu)圖226.2.1.用戶登錄及其處理類(lèi)圖:226.2.2.接數(shù)據(jù)庫(kù)類(lèi):236.2.3.個(gè)性效勞信息及其處理類(lèi)圖:236.2.4.管理員及其處理類(lèi)圖:236.2.5.課程及其處理類(lèi):236.2.6.學(xué)生及其處理類(lèi)圖:246.2.7.教師及其處理類(lèi)圖:246.2.8.評(píng)教及其處理類(lèi)圖:246.2.9.選課及其處理類(lèi):24第七章程序源代碼及其說(shuō)明257.1、登錄模塊核心代碼:257.1.1.非法登錄時(shí)的界面:287.2、課程管理系統(tǒng)選課模塊中能否選課時(shí)間的核心代碼287.2.1.沒(méi)到選課時(shí)間時(shí),提示界面:297.2.2.管理員設(shè)置選課時(shí)間順序錯(cuò)誤時(shí):307.2.3.選課成功時(shí),在當(dāng)前頁(yè)面顯示選課結(jié)果:317.2.4.學(xué)生可以對(duì)相應(yīng)的授課老師進(jìn)行評(píng)教:327.3、發(fā)送郵件模塊核心代碼:32、發(fā)送給34、發(fā)送給35、發(fā)送郵件給未選上課的學(xué)生:35、張?jiān)略聅000003收到的選課信息:367.4、報(bào)表打印模塊核心代碼:36、未選上課的學(xué)生報(bào)表:37、學(xué)生報(bào)表生成頁(yè)面如下377.5、其他模塊圖:38添加學(xué)生圖〔帶校驗(yàn)〕:38添加學(xué)生成功時(shí),自動(dòng)關(guān)閉窗口,并刷新父窗口:39、學(xué)生,教師,管理員可修改登錄密碼:40、教師錄入成績(jī):41、學(xué)生可查詢成績(jī),教師也可查詢成績(jī),管理員可以查詢所有信息:41、學(xué)生精確查詢成績(jī):41、管理員可以查詢所有信息:42、管理員可以設(shè)置系統(tǒng)通知信息:42、相應(yīng)的學(xué)生都可以查看系統(tǒng)通知信息:43第八章系統(tǒng)測(cè)試分析438.1系統(tǒng)測(cè)試目的和原那么438.2JSP的中文亂碼問(wèn)題448.3測(cè)試環(huán)境458.4功能測(cè)試458.5測(cè)試結(jié)果45結(jié)論45參考文獻(xiàn)46致謝46第一章緒論1.1基于web的課程設(shè)計(jì)管理系統(tǒng)開(kāi)展特點(diǎn)?;趙eb的課程設(shè)計(jì)管理系統(tǒng),根據(jù)高校課程管理的根本流程,實(shí)現(xiàn)課程信息管理的電子化,減輕管理人員的負(fù)擔(dān)。管理人員能夠很好對(duì)課程進(jìn)行管理。長(zhǎng)期以來(lái),學(xué)校根本都是使用傳統(tǒng)人工的方式管理學(xué)生課程信息,效率低、保密性差,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的開(kāi)展,使用計(jì)算機(jī)來(lái)管理課程信息已經(jīng)成為開(kāi)展趨勢(shì)。這樣可以提高學(xué)生選課和成績(jī)管理工作的效率,圍繞此管理所需要的學(xué)生個(gè)人信息、課程和任課教師信息、所選課程信息進(jìn)行管理及維護(hù)。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),他已經(jīng)進(jìn)入人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用作為計(jì)算機(jī)應(yīng)用的一局部,使用計(jì)算機(jī)對(duì)高校課程進(jìn)行管理,有著手工管理所無(wú)法比較的優(yōu)點(diǎn)。例如:檢索迅速,查找方便,可靠性高存儲(chǔ)量大本錢(qián)低等。這些有點(diǎn)都能夠極大的提高高校課程管理的效率也是企業(yè)的科學(xué)化正規(guī)化管理,與世界接軌的重要條件。所以說(shuō),程管理系統(tǒng)是高校不可缺少的一局部,他的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要1.2主要功能開(kāi)發(fā)課程管理系統(tǒng)的總體任務(wù)是實(shí)現(xiàn)學(xué)生網(wǎng)上選課功能,將學(xué)生選擇的課程和學(xué)生成績(jī)通過(guò)網(wǎng)絡(luò)進(jìn)行管理等。本系統(tǒng)的主要功能如下:管理員登錄:管理學(xué)生、教師、課程和班級(jí)信息。學(xué)生:學(xué)生學(xué)籍的管理,根本信息的查詢,成績(jī)查詢,選課查詢教師:選擇學(xué)生、任教科目查詢、成績(jī)錄入、師根本信息查詢第二章開(kāi)發(fā)語(yǔ)言及相關(guān)技術(shù)概述2.1Java語(yǔ)言簡(jiǎn)介Java語(yǔ)言是當(dāng)今流行的網(wǎng)絡(luò)編程語(yǔ)言,它的面向?qū)ο蟆⒖缙脚_(tái)、分布應(yīng)用等特點(diǎn)給編程人員帶來(lái)了一種嶄新的概念,使WWW從最初的單純提供靜態(tài)信息開(kāi)展到現(xiàn)在的能夠提供各種的動(dòng)態(tài)效勞。Java不僅能通過(guò)編寫(xiě)小應(yīng)用程序?qū)崿F(xiàn)嵌入網(wǎng)頁(yè)的聲音和動(dòng)畫(huà)功能,而且還哪個(gè)應(yīng)用與獨(dú)立的大中型應(yīng)用程序中,其強(qiáng)大的網(wǎng)絡(luò)功能可以把整個(gè)Internet最為一個(gè)統(tǒng)一的運(yùn)行平臺(tái)。Java的誕生從根本上解決了Internet的異構(gòu)、代碼交換以及網(wǎng)絡(luò)程序的平安性等諸多問(wèn)題。Java語(yǔ)言且有平臺(tái)無(wú)關(guān)性,程序經(jīng)過(guò)編譯后,生成字節(jié)代碼并運(yùn)行在Java虛擬機(jī)上,隨著JavaServlet的推出,Java的應(yīng)用更加廣泛,目前Java技術(shù)已成為工程開(kāi)發(fā)的主要選擇。2.2Java語(yǔ)言在網(wǎng)絡(luò)上的應(yīng)用Java程序可以獲取網(wǎng)絡(luò)上結(jié)點(diǎn)的圖像、聲音、HTML文檔及文本等資源,并可以對(duì)獲得的資源進(jìn)行處理。例如Java程序可以每隔一定時(shí)間讀取某結(jié)點(diǎn)提供的最新數(shù)據(jù),并以圖表的形式顯示出來(lái)。在編程處理上,一般先生成一URL類(lèi)型的對(duì)象,然后用Java中相應(yīng)的方法〔method〕獲取該對(duì)象所代表的資源。2.3JSP技術(shù)簡(jiǎn)介JSP〔JavaServerPages〕是一種基于Java的腳本技術(shù),這種技術(shù)為創(chuàng)立顯示動(dòng)態(tài)生成內(nèi)容的Web頁(yè)面提供了一個(gè)簡(jiǎn)捷而快速的方法。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序哪個(gè)與各種Web效勞器、應(yīng)用效勞器、瀏覽器和開(kāi)發(fā)工具共同工作。在JSP的眾多優(yōu)點(diǎn)之中,其中之一是它能將HTML編碼從Web頁(yè)面的業(yè)務(wù)邏輯中有效地別離出來(lái)。用JSP訪問(wèn)可重用的組件,如Servlet、JavaBean和基于Java的Web應(yīng)用程序。JSP還支持在Web頁(yè)面中直接嵌入Java代碼。可用兩種方法訪問(wèn)JSP文件:瀏覽器發(fā)送JSP文件請(qǐng)求、發(fā)送至Servlet的請(qǐng)求。

1.JSP文件訪問(wèn)Bean或其它能將生成的動(dòng)態(tài)內(nèi)容發(fā)送到瀏覽器的組件。圖1.1說(shuō)明了該JSP訪問(wèn)模型。當(dāng)Web效勞器接收到一個(gè)JSP文件請(qǐng)求時(shí),效勞器將請(qǐng)求發(fā)送至WebSphere應(yīng)用效勞器。WebSphere應(yīng)用效勞器對(duì)JSP文件進(jìn)行語(yǔ)法分析并生成Java源文件〔被編譯和執(zhí)行為Servlet〕。Java源文件的生成和編譯僅在初次調(diào)用Servlet時(shí)發(fā)生,除非已經(jīng)更新了原始的JSP文件。在這種情況下,WebSphere應(yīng)用效勞器將檢測(cè)所做的更新,并在執(zhí)行它之前重新生成和編譯Servlet。圖1.1:瀏覽器發(fā)送JSP文件請(qǐng)求2.發(fā)送至Servlet的請(qǐng)求生成動(dòng)態(tài)內(nèi)容,并調(diào)用JSP文件將內(nèi)容發(fā)送到瀏覽器。圖1.2說(shuō)明了該訪問(wèn)模型。該訪問(wèn)模型使得將內(nèi)容生成從內(nèi)容顯示中別離出來(lái)更為方便。WebSphere應(yīng)用效勞器支持HttpServiceRequest對(duì)象和HttpServiceResponse對(duì)象的一套新方法。這些方法允許調(diào)用的Servlet將一個(gè)對(duì)象放入〔通常是一個(gè)Bean〕請(qǐng)求對(duì)象中,并將該請(qǐng)求傳遞到另一個(gè)頁(yè)面〔通常是一個(gè)JSP文件〕以供顯示。調(diào)用的頁(yè)面從請(qǐng)求對(duì)象中檢索Bean,并用JSP來(lái)生成客戶機(jī)端的HTML。圖1.2:發(fā)送至Servlet的請(qǐng)求1.4Servlet技術(shù)簡(jiǎn)介Servlet是用Java書(shū)寫(xiě)的一種協(xié)議,是與平臺(tái)無(wú)關(guān)的效勞器端的構(gòu)件。它可以在支持Servlet的Web效勞器或應(yīng)用效勞器上運(yùn)行。Servlet被裝載到Web效勞器或應(yīng)用效勞器后,在Java虛擬機(jī)上執(zhí)行,所以不需要唄裝載到Web客戶端的JVM上執(zhí)行是同樣的方式。由于Servlet在效勞器上執(zhí)行,所以不需要任何圖形用戶界面。從這個(gè)意義上講,Servlet是一個(gè)“無(wú)面〞對(duì)象。Servlet為客戶端和效勞器端的信息處理提供了一種“請(qǐng)求/答復(fù)〞機(jī)制。Java的ServletAPI為處理客戶端和效勞器端之間的請(qǐng)求和答復(fù)信息定義了標(biāo)準(zhǔn)接口。JavaServlet處理技術(shù)與傳統(tǒng)的CGI和許多其他類(lèi)似CGI的技術(shù)相比,具有許多優(yōu)點(diǎn)。高效在傳統(tǒng)的CGI中,每個(gè)請(qǐng)求都要啟動(dòng)一個(gè)新的進(jìn)程,如果CGI程序本身的執(zhí)行時(shí)間較短,啟動(dòng)進(jìn)程所需要的開(kāi)銷(xiāo)反而超過(guò)實(shí)際執(zhí)行時(shí)間。而在Servlet中,每個(gè)請(qǐng)求由一個(gè)輕量級(jí)的Java線程而不是重量級(jí)的操作系統(tǒng)進(jìn)程來(lái)處理。方便Servlet提供了大量的實(shí)用工程,例如自動(dòng)解析和解碼HTML表單數(shù)據(jù)、讀取、和設(shè)置HTTP頭、處理Cookie、跟蹤會(huì)話狀態(tài)等。功能強(qiáng)大在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務(wù)都可以輕松地完成??梢浦残院肧ervlet用Java編寫(xiě),ServletAPI具有完善的標(biāo)準(zhǔn)。因此,為某個(gè)EnterpriseServer寫(xiě)的Servlet無(wú)須任何實(shí)質(zhì)上的改動(dòng)即可移植到Apache、MicrosoftIIS或者WebStar上。節(jié)省投資不僅有很多廉價(jià)甚至免費(fèi)的Web效勞器供供個(gè)人或小規(guī)模網(wǎng)站使用,而且對(duì)于現(xiàn)有的效勞器,如果它不支持Servlet,那么要加上這局部功能也往往是免費(fèi)的或是只需要極少的投資。1.5JavaBean技術(shù)簡(jiǎn)介JavaBean是一種基于Java的軟件組件。JSP對(duì)于在Web應(yīng)用中集成JavaBean組件提供了完善的支持。這種支持不僅能縮短開(kāi)發(fā)時(shí)間〔可以直接利用經(jīng)測(cè)試和可信任的已有組件,防止了重復(fù)開(kāi)發(fā)〕,也為JSP應(yīng)用帶來(lái)了更多的可伸縮性。JavaBean組件可以用來(lái)執(zhí)行復(fù)雜的計(jì)算任務(wù),或負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互以及數(shù)據(jù)提取等。1.6Tomcat簡(jiǎn)介T(mén)omcat效勞器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用效勞器,它是Apache軟件基金會(huì)〔ApacheSoftwareFoundation〕的Jakarta工程中的一個(gè)核心工程,由Apache、Sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP標(biāo)準(zhǔn)總是能在Tomcat中得到表達(dá),Tomcat6支持最新的Servlet2.4和JSP2.0標(biāo)準(zhǔn)。因?yàn)門(mén)omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛(ài)好者的喜愛(ài)并得到了局部軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用效勞器。選課工作是學(xué)校課程管理的重要組成局部,為老師和學(xué)生提供一個(gè)課程管理的平臺(tái),長(zhǎng)期以來(lái),學(xué)校根本都是使用傳統(tǒng)人工的方式管理學(xué)生課程信息,效率低、保密性差,但隨著某高等學(xué)院教學(xué)體制的不斷改革,信息化的不斷開(kāi)展,特別是學(xué)分制、選課制等展開(kāi)和深入,各大院校教務(wù)日常管理工作日趨繁重、復(fù)雜,迫切需要研制開(kāi)發(fā)一套基于Internet網(wǎng)絡(luò)的計(jì)算機(jī)課程管理軟件,從而減輕教務(wù)管理的壓力,更好的為師生效勞。本系統(tǒng)正是為適應(yīng)這種需求而研發(fā)的。本文從課程管理系統(tǒng)的開(kāi)發(fā)背景、相關(guān)技術(shù)、需求分析、詳細(xì)設(shè)計(jì)、系統(tǒng)測(cè)試與維護(hù)等方面詳細(xì)闡述了整個(gè)系統(tǒng)的開(kāi)發(fā)過(guò)程。1.7B/S與C/S模式隨著網(wǎng)絡(luò)的開(kāi)展,在web應(yīng)用程序中,程序的部署簡(jiǎn)單、開(kāi)發(fā)高效、平臺(tái)兼容、程序的維護(hù)是越來(lái)越重要。由于編程語(yǔ)言越來(lái)越多,以至于程序員的通信和維護(hù)更加的困難,因此需要一個(gè)統(tǒng)一的平臺(tái)和架構(gòu)來(lái)解決編程語(yǔ)言和平臺(tái)的兼容問(wèn)題。當(dāng)前流行的架構(gòu)有B/S和C/S模式,B/S的市場(chǎng)規(guī)模每年都在快速增長(zhǎng),越來(lái)越成為當(dāng)今開(kāi)發(fā)的主流模式。然而當(dāng)前的技術(shù)有微軟的.net平臺(tái)提供的web應(yīng)用架構(gòu)和SUN公司開(kāi)發(fā)的java。按照系統(tǒng)終端情況的不同,可將高職院校輔助教學(xué)平臺(tái)系統(tǒng)的開(kāi)發(fā)結(jié)構(gòu)分為C/S〔客戶端/效勞器〕和B/S〔瀏覽器/效勞器〕兩種模式,它們各具特色,是當(dāng)前高職院校輔助教學(xué)平臺(tái)系統(tǒng)開(kāi)發(fā)的主流。C/S是一種client客戶端和serves效勞器的架構(gòu),其中客戶端負(fù)責(zé)接受用戶的請(qǐng)求,然后發(fā)給效勞器,由效勞器處理然后在返回給客戶端。B/S作為如今最為流行的體系結(jié)構(gòu)模式,也是受到了廣闊開(kāi)發(fā)人員以及客戶的認(rèn)同,其開(kāi)發(fā)模式也在不斷的開(kāi)展著,九江職業(yè)技術(shù)學(xué)院輔助教學(xué)平臺(tái)采用的是B/S的體系結(jié)構(gòu)模式。客戶器/效勞器系統(tǒng)的主要優(yōu)點(diǎn)為能最大表達(dá)客戶和效勞器或客戶間的交互性。作為本基于B/S模式的教學(xué)管理系統(tǒng)主要特點(diǎn)表現(xiàn)為:學(xué)生和老師的交互,學(xué)生幾乎可以隨時(shí)和老師進(jìn)行互動(dòng),學(xué)生學(xué)習(xí)中問(wèn)題的提出,老師對(duì)相應(yīng)問(wèn)題進(jìn)行答復(fù);老師通過(guò)該系統(tǒng)平臺(tái)發(fā)布有關(guān)通知,布置作業(yè)題目、家庭學(xué)習(xí)任務(wù)等,學(xué)生既可及時(shí)地通過(guò)該系統(tǒng)平臺(tái)得到相關(guān)信息,并可通過(guò)該系統(tǒng)提交自己完成的任務(wù)或作業(yè)等;老師對(duì)重點(diǎn)難點(diǎn)課件或教授視頻的上傳,學(xué)生通過(guò)該系統(tǒng)加強(qiáng)對(duì)相應(yīng)重點(diǎn)難點(diǎn)內(nèi)容的學(xué)習(xí);學(xué)生并可以通過(guò)該系統(tǒng)及時(shí)查看自己的某次考試的分?jǐn)?shù),并及時(shí)與相應(yīng)老師進(jìn)行交流.(1)系統(tǒng)易于擴(kuò)展和維護(hù)。該平臺(tái)系統(tǒng)可隨時(shí)根據(jù)需要上傳任何格式的文件〔只要效勞器的空間足夠〕,對(duì)過(guò)期的資料進(jìn)行相應(yīng)的處理。學(xué)生成績(jī)查詢子系統(tǒng)采用數(shù)據(jù)庫(kù)存放個(gè)學(xué)生相應(yīng)信息,可隨時(shí)根據(jù)具體的考試情況對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)和管理。并且系統(tǒng)的各個(gè)模塊之間相對(duì)獨(dú)立但又相互關(guān)聯(lián),易于對(duì)相應(yīng)模塊單獨(dú)進(jìn)行調(diào)整與完善。(2)大大降低對(duì)網(wǎng)絡(luò)帶寬的要求。采用客戶端/效勞器系統(tǒng)可防止點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)傳輸所產(chǎn)生的過(guò)分的網(wǎng)絡(luò)阻塞與延遲。可以說(shuō),只要效勞器端的帶寬足夠,并具備大規(guī)模效勞的能力,對(duì)于客戶端的網(wǎng)絡(luò)帶寬要求是非常低的第3章需求分析3.1設(shè)計(jì)目標(biāo)本系統(tǒng)是一個(gè)網(wǎng)絡(luò)版的管理系統(tǒng),主要針對(duì)高效學(xué)生教務(wù)流程開(kāi)發(fā)設(shè)計(jì),系統(tǒng)提供了較好的功能擴(kuò)充接口。下面簡(jiǎn)要分析系統(tǒng)大致的功能需求。管理員登錄在管理員進(jìn)入系統(tǒng)前,首先要求管理員進(jìn)行登錄,防止非法用戶對(duì)系統(tǒng)進(jìn)行操作,登錄時(shí)要驗(yàn)證用戶名和密碼是否匹配,驗(yàn)證通過(guò)后允許管理員進(jìn)入本系統(tǒng)操作。同時(shí)特別注意sql系統(tǒng)注入漏洞問(wèn)題。學(xué)生信息管理提供包括學(xué)生學(xué)籍的管理,根本信息的查詢,成績(jī)查詢,選課查詢。〔a〕填寫(xiě)學(xué)生信息〔b〕查詢學(xué)生信息〔c〕修改學(xué)生信息〔d〕刪除學(xué)生信息教師管理教師對(duì)學(xué)生信息的查詢,任教科目查詢,成績(jī)錄入,教師根本信息查詢?!瞐〕填寫(xiě)教師信息〔b〕添加教師信息〔c〕修改教師信息〔d〕刪除教師信息選課管理提供學(xué)生每學(xué)期的公選課的選擇。設(shè)定選課時(shí)間、人數(shù)選上課的學(xué)生名單未選上課的學(xué)生名單并用郵件通知選課成績(jī)信息可用郵件通知其一門(mén)課或?qū)W期所有課的成績(jī)3.2功能概圖本系統(tǒng)的流程主要描述的是學(xué)生選擇課程后,教師為學(xué)生錄入成績(jī)。該系統(tǒng)的適用對(duì)象包括學(xué)生、教師和管理員,如果3.1所示:網(wǎng)上選課系統(tǒng)網(wǎng)上選課系統(tǒng)登錄評(píng)教管理員學(xué)生個(gè)性效勞網(wǎng)上選課課程管理選課管理查詢教師管理學(xué)生管理查詢教師個(gè)性效勞錄入成績(jī)查詢?cè)u(píng)教管理圖3.1系統(tǒng)模塊結(jié)構(gòu)圖3.3性能需求可靠性系統(tǒng)7×24小時(shí)持續(xù)可用,可在每日特定時(shí)間段內(nèi)對(duì)系統(tǒng)進(jìn)行維護(hù)。傳輸數(shù)據(jù)效勞要求準(zhǔn)確,不能喪失數(shù)據(jù)。系統(tǒng)應(yīng)有分級(jí)權(quán)限和逐級(jí)授權(quán)管理功能。可維護(hù)性軟件采用面向?qū)ο蠹夹g(shù)開(kāi)發(fā),較之過(guò)程化技術(shù),更容易維護(hù)。軟件嚴(yán)格和標(biāo)準(zhǔn)文檔化,給系統(tǒng)的維護(hù)帶來(lái)方便。軟件標(biāo)準(zhǔn)模塊化,盡量做到低耦合,便于軟件的更新修改,增強(qiáng)可維護(hù)性性能,效率本軟件平安保護(hù)優(yōu)良,可提供備份,工作有較好的穩(wěn)定性,響應(yīng)時(shí)間短,系統(tǒng)可以在1小時(shí)內(nèi)實(shí)現(xiàn)恢復(fù)。如果硬件損壞,應(yīng)提供給急和替代方案??蓴U(kuò)展性系統(tǒng)功能擴(kuò)充或使用單位增加時(shí)應(yīng)不影響現(xiàn)有系統(tǒng)功能和結(jié)構(gòu)。系統(tǒng)建設(shè)要求能夠保護(hù)投資,當(dāng)系統(tǒng)數(shù)據(jù)量和訪問(wèn)量增大而導(dǎo)致系統(tǒng)配置不能滿足要求時(shí),可以通過(guò)僅增加效勞器等硬件進(jìn)行解決,而不是在軟件上做修改。平安性硬件設(shè)備的平安性。操作系統(tǒng)及支持軟件的平安性〔必須進(jìn)行平安配置〕。應(yīng)用及數(shù)據(jù)的平安性。易用性要求管理用戶具有一定的計(jì)算機(jī)知識(shí)和操作能力,按照數(shù)據(jù)流程進(jìn)行操作兼容性本軟件在windows系列操作系統(tǒng)上都可以正常運(yùn)行。對(duì)硬件的要求也不高,一般PC機(jī)上均可。可移植性本系統(tǒng)可以移植到windows系統(tǒng)的計(jì)算機(jī)上,也可以移植到Linux系統(tǒng)的計(jì)算機(jī)上。3.4數(shù)據(jù)需求(1)數(shù)據(jù)錄入和處理的準(zhǔn)確性和實(shí)時(shí)性數(shù)據(jù)的輸入是否準(zhǔn)確是數(shù)據(jù)處理的前提,錯(cuò)誤的輸入會(huì)導(dǎo)致系統(tǒng)輸出的不正確和不可用,從而使系統(tǒng)的工作失去意義。數(shù)據(jù)的輸入來(lái)源是手工輸入。手工輸入要通過(guò)系統(tǒng)界面上的安排系統(tǒng)具有容錯(cuò)性,并且對(duì)操作人員要進(jìn)行系統(tǒng)的培訓(xùn)。 在系統(tǒng)中,數(shù)據(jù)的輸入往往是大量的,因此系統(tǒng)要有一定的處理能力,以保證迅速的處理數(shù)據(jù)。(2)數(shù)據(jù)的平安性本系統(tǒng)為企業(yè)人事管理部門(mén)設(shè)計(jì),因此只有特定的人事管理者才能對(duì)數(shù)據(jù)實(shí)現(xiàn)增,刪,改,查等操作。未獲授權(quán)人員不能進(jìn)入系統(tǒng)。(3)數(shù)據(jù)的備份要定期對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行全部或新增局部的備份工作,以保證在硬件出現(xiàn)故障或人為原因?qū)е聼o(wú)法運(yùn)行時(shí)是可以快速及時(shí)的復(fù)原到原來(lái)的正常狀態(tài)。本章小結(jié):本章主要介紹了本系統(tǒng)的設(shè)計(jì)目的已經(jīng)系統(tǒng)的功能和數(shù)據(jù)需求第4章系統(tǒng)概要設(shè)計(jì)4.1系統(tǒng)運(yùn)行平臺(tái)設(shè)置本系統(tǒng)的運(yùn)行平臺(tái)設(shè)置分為硬件環(huán)境和軟件環(huán)境。4.2運(yùn)行環(huán)境1.硬件環(huán)境系統(tǒng)的硬件環(huán)境配置為處理器PentiumIII800,內(nèi)存1G,硬盤(pán)1G。2.軟件環(huán)境系統(tǒng)的軟件環(huán)境配置為WindowsXP操作系統(tǒng),SQLServer2005數(shù)據(jù)庫(kù),JDK1.5、MyEclipse5.1開(kāi)發(fā)工具包和Tomcat6.0效勞器。4.3開(kāi)發(fā)工具及技術(shù)簡(jiǎn)介以下內(nèi)容是對(duì)本系統(tǒng)所采用的開(kāi)發(fā)工具和技術(shù)進(jìn)行的簡(jiǎn)單介紹。4.3.1開(kāi)發(fā)工具簡(jiǎn)介MyEclipse企業(yè)級(jí)工作平臺(tái)〔MyEclipseEnterpriseWorkbench,簡(jiǎn)稱MyEclipse〕是對(duì)EclipseIDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和J2EE的開(kāi)發(fā)、發(fā)布,以及應(yīng)用程序效勞器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。在結(jié)構(gòu)上,MyEclipse的特征可以分為7類(lèi):〔1〕J2EE模型;〔2〕WEB開(kāi)發(fā)工具;〔3〕EJB開(kāi)發(fā)工具;〔4〕應(yīng)用程序效勞器的連接器;〔5〕J2EE工程部署效勞;〔6〕數(shù)據(jù)庫(kù)效勞;〔7〕MyEclipse整合幫助。對(duì)于以上每一種功能上的類(lèi)別,在Eclipse中都有相應(yīng)的功能部件,并通過(guò)一系列的插件來(lái)實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以在不影響其他模塊的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。簡(jiǎn)單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開(kāi)發(fā)環(huán)境,支持代碼編寫(xiě)、配置、測(cè)試以及除錯(cuò)。SQLServer2005是一種采用T-SQL語(yǔ)言,基于C/S模式的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。SQLServer2005存儲(chǔ)和管理數(shù)據(jù)有以下優(yōu)點(diǎn)〔1〕每個(gè)數(shù)據(jù)項(xiàng)都存儲(chǔ)在中央位置,所有用戶都可在這個(gè)位置使用它們;〔2〕各個(gè)客戶端上不單獨(dú)存儲(chǔ)數(shù)據(jù)項(xiàng)復(fù)本,從而消除了因用戶不得不確保使用的信息相同所帶來(lái)的麻煩。系統(tǒng)不需要確保使用當(dāng)前值更新所有數(shù)據(jù)復(fù)本,因?yàn)橹醒胛恢脙H有一個(gè)復(fù)本;可以在效勞器上一次性定義業(yè)務(wù)和平安規(guī)那么,并對(duì)所有的用戶平等執(zhí)行;〔4〕可以在數(shù)據(jù)庫(kù)內(nèi)通過(guò)使用約束、存儲(chǔ)過(guò)程和觸發(fā)器來(lái)強(qiáng)制執(zhí)行規(guī)那么。還可在效勞器應(yīng)用程序中執(zhí)行規(guī)那么,因?yàn)檫@些應(yīng)用程序也是許多客戶端訪問(wèn)的中央資源;〔5〕關(guān)系數(shù)據(jù)庫(kù)效勞器只返回應(yīng)用程序所需要的數(shù)據(jù),優(yōu)化了網(wǎng)絡(luò)流量;〔6〕最大程度地降低硬件的本錢(qián),由于數(shù)據(jù)不是存儲(chǔ)在每個(gè)客戶端上,客戶端不必消耗磁盤(pán)空間來(lái)存儲(chǔ)數(shù)據(jù)。客戶端無(wú)需在本地增加管理數(shù)據(jù)的功能,同時(shí),效勞器不需將處理能力消耗在顯示數(shù)據(jù)上;〔7〕可以配置效勞器以優(yōu)化檢索數(shù)據(jù)所需的磁盤(pán)輸入/輸出容量,配置客戶端以優(yōu)化從效勞器檢索數(shù)據(jù)的格式;〔8〕可以將效勞器存儲(chǔ)在一個(gè)相對(duì)平安的位置,并配備如不間斷電源供給系統(tǒng)這樣的設(shè)備,這比完全保護(hù)每個(gè)客戶端更經(jīng)濟(jì);〔9〕維護(hù)任務(wù)〔例如備份和恢復(fù)數(shù)據(jù)〕得到簡(jiǎn)化,因?yàn)檫@些任務(wù)都可以集中在中央效勞器上執(zhí)行。4.3.2技術(shù)簡(jiǎn)介本系統(tǒng)采用MVC框架,MVC〔Model-View-Controller〕是一種設(shè)計(jì)模式,它強(qiáng)制性地把應(yīng)用程序的輸入、處理和輸出分開(kāi)。MVC把應(yīng)用程序分成3個(gè)核心:模型層、視圖層和控制層,它們分別擔(dān)負(fù)不同的任務(wù)。其中視圖層向用戶顯示相關(guān)的數(shù)據(jù),并能接受用戶的輸入數(shù)據(jù),但是它并不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。模型層表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯??刂茖咏邮沼脩糨斎氩⒄{(diào)用模型和視圖去完成用戶的需求。本系統(tǒng)需要用到的Java相關(guān)技術(shù)有jsp技術(shù)、servlet技術(shù)、jdbc技術(shù)、SSH框架。其中,關(guān)鍵的技術(shù)難點(diǎn)在于Struts技術(shù)的運(yùn)用。Struts技術(shù)是基于MVC的Web應(yīng)用框架。在Struts框架中,模型層由實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean組件構(gòu)成,控制層由ActionServlet和Action來(lái)實(shí)現(xiàn),視圖層由一組JSP文件構(gòu)成。4.4數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)表如下:4.4.1.登錄表(user屬性類(lèi)型主鍵/外鍵是否為空注釋idchar(12)主鍵否用戶IDpasswordchar(12)否密碼namechar(8)否用戶名4.4.2.管理員表(admin屬性類(lèi)型主鍵/外鍵是否為空注釋aidchar(12)外鍵(user)否管理員IDpasswordchar(12)否密碼namechar(8)否用戶名4.4.3.教師表(teacher屬性類(lèi)型主鍵/外鍵是否為空注釋tidchar(12)外鍵(user)否教師IDpasswordchar(12)否密碼namechar(8)否用戶名4.4.4.學(xué)生表(student屬性類(lèi)型主鍵/外鍵是否為空注釋sidchar(12)外鍵(user)否學(xué)生IDpasswordchar(12)否密碼namechar(8)否用戶名classchar(4)班級(jí)departmentnchar(20)系科majornchar(20)專業(yè)4.4.5.課程表(course屬性類(lèi)型主鍵/外鍵是否為空注釋cidchar(12)外鍵(user)否課程IDnamechar(8)否課程名capcitysmallint課程容量remainsmallint剩余容量classTimesmalldate上課時(shí)間classAdressnchar(20)上課地點(diǎn)startSCTimesmalldate開(kāi)始選課時(shí)間endSCTimesmalldate結(jié)束選課時(shí)間4.4.6.選課表(selectCourse屬性類(lèi)型主鍵/外鍵是否為空注釋sidchar(12)外鍵(student)否學(xué)生IDcidchar(12)外鍵(course)否課程IDnamefloat否成績(jī)4.4.7.評(píng)教表(judgeTeacher屬性 類(lèi)型 主鍵/外鍵是否為空注釋tidchar(12)外鍵(teacher)否教師IDcidchar(12)外鍵(course)否課程IDnamefloat否成績(jī)4.5數(shù)據(jù)庫(kù)的完整性和平安性4.5.1數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)的正確性和相容性。數(shù)據(jù)庫(kù)管理系統(tǒng)〔DBMS〕用一定的機(jī)制來(lái)檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否滿足規(guī)定的條件——完整性約束條件,數(shù)據(jù)的約束條件是語(yǔ)義的表達(dá),將作為模式的一局部存入數(shù)據(jù)庫(kù)中。本系統(tǒng)中定義了表與表之間的聯(lián)系有助于實(shí)現(xiàn)完整性規(guī)那么,一般在程序中實(shí)現(xiàn)具體的完整性控制。4.5.2數(shù)據(jù)庫(kù)的平安性數(shù)據(jù)庫(kù)的平安性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄漏、更改或破壞。在數(shù)據(jù)庫(kù)系統(tǒng)中,大量的數(shù)據(jù)集中存放,而且為許多用戶直接共享,是珍貴的信息資源,系統(tǒng)的平安保護(hù)措施就顯得更為重要,它保護(hù)數(shù)據(jù)庫(kù)防止惡意的破壞和非法的存取。本系統(tǒng)包括數(shù)據(jù)庫(kù)的平安和效勞器的平安。采用管理員表示和鑒定的方法實(shí)現(xiàn)數(shù)據(jù)庫(kù)的平安,此平安管理措施并不在前臺(tái)開(kāi)發(fā)工具中實(shí)現(xiàn),而是在后臺(tái)數(shù)據(jù)庫(kù)中實(shí)現(xiàn)。在登錄數(shù)據(jù)庫(kù)時(shí),系統(tǒng)讓管理員戶表示自己的身份,不同的管理員權(quán)限不同,系統(tǒng)進(jìn)行核實(shí),鑒別此管理員是否為合法用戶,假設(shè)是,系統(tǒng)進(jìn)一步核實(shí)用戶,通常要求用戶輸入口令,系統(tǒng)和對(duì)用戶口令以鑒別用戶身份。效勞器的平安也是通過(guò)用戶在登錄效勞器時(shí)輸入合法的用戶名和密碼來(lái)實(shí)現(xiàn)的。這是一種簡(jiǎn)單可行的方法,實(shí)現(xiàn)起來(lái)比較方便。沒(méi)有采用更加復(fù)雜的系統(tǒng)平安管理措施是因?yàn)楸竟芾硐到y(tǒng)一般是應(yīng)用在校園網(wǎng)中,采用平安管理措施主要是為了防止沒(méi)有修改權(quán)限的用戶無(wú)意間修改了數(shù)據(jù),因此采用用戶標(biāo)識(shí)和鑒定的平安管理措施就能夠保障數(shù)據(jù)庫(kù)的平安性。4.6登錄用到的觸發(fā)器--當(dāng)插入學(xué)生時(shí),自動(dòng)的在用戶(admin)表中插入相應(yīng)的學(xué)生編號(hào)且級(jí)別為1、密碼為默認(rèn)值createtriggerinsert_studentonstudentforinsertas begin declare@idchar(20),@namechar(20) select@id=inserted.studentId,@name=inserted.studentNamefrominserted; ifnotexists(selectuserIdfromadminwhereuserId=@id) insertintoadmin(userId,userJiBie,userName)values(@id,1,@name); endGO--當(dāng)插入教師時(shí),自動(dòng)的在用戶(admin)表中插入相應(yīng)的教師編號(hào)且級(jí)別為3、密碼為默認(rèn)值createtriggerinsert_teacheronteacherforinsertas begin declare@idchar(20),@namechar(20) select@id=inserted.teacherId,@name=inserted.teacherNamefrominserted; ifnotexists(selectuserIdfromadminwhereuserId=@id) insertintoadmin(userId,userJiBie,userName)values(@id,3,@name); endGO--當(dāng)插入管理員時(shí),自動(dòng)的在用戶(admin)表中插入相應(yīng)的管理員編號(hào)且級(jí)別為5、密碼為默認(rèn)值createtriggerinsert_administratoronadministratorforinsertas begin declare@idchar(20),@namechar(20)select@id=inserted.adminId,@name=inserted.adminNamefrominserted; ifnotexists(selectuserIdfromadminwhereuserId=@id)insertintoadmin(userId,userJiBie,userName)values(@id,5,@name); endGO4.7數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)4.7.1數(shù)據(jù)庫(kù)的需求分析依據(jù)課程管理系統(tǒng)的處理需求,對(duì)就數(shù)據(jù)表的設(shè)計(jì)及功能如下:〔1〕班級(jí)信息表:存放所有班級(jí)的根本信息。〔2〕課程信息表:存放所有課程的根本信息。〔3〕學(xué)生信息表:存放學(xué)生的根本信息?!?〕教師信息表:存放教師的根本信息。〔5〕管理員信息表:存放訂管理員的根本信息。〔6〕選課信息表:存放學(xué)生選課的根本信息。〔7〕評(píng)教表:存放學(xué)生評(píng)價(jià)教師的根本信息〔8〕信息表:存放一些登錄信息的表。數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)實(shí)體與屬性之間的關(guān)系E-R模型的組成元素有:實(shí)體、屬性、聯(lián)系。E-R模型用E-R圖表示。實(shí)體是用戶工作環(huán)境中所涉及的事務(wù),屬性是對(duì)實(shí)體特征的描述。(1)模型中的實(shí)體相當(dāng)于實(shí)體集、一個(gè)表,而不是單個(gè)實(shí)體或表中的一行。實(shí)體用矩形框表示,實(shí)體名稱標(biāo)注在矩形框內(nèi)。用菱形表示實(shí)體間的聯(lián)系,菱形框內(nèi)寫(xiě)上聯(lián)系名,用無(wú)向邊把菱形分別與有關(guān)實(shí)體相連接,在無(wú)向邊旁標(biāo)上聯(lián)系的類(lèi)型。(2)屬性是實(shí)體的性質(zhì)。用橢圓框表示,與實(shí)體之間用一條線相連表的主碼是關(guān)鍵屬性,關(guān)鍵屬性項(xiàng)加下劃線。(3)各子系統(tǒng)模塊中主鍵相同的字段之間存在著相互關(guān)聯(lián)的關(guān)系。(4)在程序中實(shí)現(xiàn)對(duì)他們的完整性和一致性控制。E-R模型管理員管理員學(xué)生課程教師選課N1N管理M管理NMID姓名班級(jí)系科專業(yè)學(xué)生ID課程ID密碼成績(jī)ID上課時(shí)間開(kāi)始選課時(shí)間結(jié)束選課時(shí)間講授N1密碼ID課程名姓名密碼ID姓名課程容量剩余容量管理MN上課地點(diǎn)系科4.8數(shù)據(jù)流圖及程序結(jié)構(gòu)框圖、核心模塊數(shù)據(jù)流圖選課通知學(xué)生選課通知學(xué)生評(píng)教表教師管理員課程表選課處理評(píng)教處理生成網(wǎng)上選課名單選課成功選課時(shí)間未到或選課失敗選課表設(shè)置選課時(shí)間選課成功評(píng)教成績(jī)處理錄入成績(jī)成績(jī)錄入設(shè)置評(píng)教時(shí)間評(píng)教通知4.8.2、程序結(jié)構(gòu)圖系統(tǒng)采用MVC設(shè)計(jì)模式,M〔Model〕模型層用javabean表示業(yè)務(wù)邏輯連接操作數(shù)據(jù)庫(kù)等,V〔View〕視圖層用jsp表示各用戶界面,C〔Control〕控制層用Servlet快速的控制反轉(zhuǎn)功能調(diào)用M業(yè)務(wù)邏輯層。因此,系統(tǒng)程序結(jié)構(gòu)為(由于空間有限只列出了局部類(lèi)的屬性和方法,其他都隱藏了):.用戶登錄及其處理類(lèi)圖:.接數(shù)據(jù)庫(kù)類(lèi):.個(gè)性效勞信息及其處理類(lèi)圖:.管理員及其處理類(lèi)圖:.課程及其處理類(lèi):.學(xué)生及其處理類(lèi)圖:.教師及其處理類(lèi)圖:.評(píng)教及其處理類(lèi)圖:.選課及其處理類(lèi):第5章程序源代碼及其說(shuō)明5.1、登錄模塊核心代碼:說(shuō)明:a)課程管理系統(tǒng)中系統(tǒng)平安性方面非常重要,防止數(shù)據(jù)庫(kù)注入漏洞,用戶名、密碼、級(jí)別分開(kāi)判斷b)創(chuàng)立系統(tǒng)失效時(shí)間,進(jìn)一步增強(qiáng)平安性??稍趧偟卿涍M(jìn)系統(tǒng)時(shí)為每個(gè)用戶創(chuàng)立一個(gè)Session,并設(shè)置失效時(shí)間。代碼如:HttpSessionhs=request.getSession();hs.setMaxInactiveInterval(600);//600秒即10分鐘

然后在每個(gè)頁(yè)面判斷Session是否為空,假設(shè)為空那么回到登錄界面重新登錄。/***數(shù)據(jù)庫(kù)連接類(lèi)*@author王龍11**/publicclassConnectDB{ privateConnectionct=null; /** *數(shù)據(jù)庫(kù)連接方法 *@author王龍11 *@return連接Connection */ publicConnectiongetConnection(){ try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1500;DatabaseName=EMS", "zck","583"); }catch(Exceptione){ System.err.println("ConnectDB.getConnection()"); e.printStackTrace(); } returnct; }}/***function:完成用戶登錄驗(yàn)證*@author王龍*@paramuser:用戶ID*@parampassword:用戶密碼*@paramgrade:用戶級(jí)別*@return用戶級(jí)別*/publicintcheckUser(Stringuser,Stringpassword,Stringgrade){ intb=-1;//用戶級(jí)別 try{ ct=newConnectDB().getConnection();//單寫(xiě)的ConnectDB類(lèi),其中g(shù)etConnection()用于與數(shù)據(jù)庫(kù)連接,以增加系統(tǒng)擴(kuò)展性 ps=ct.prepareStatement("selectrtrim(userPassword),"+"rtrim(userJiBie)"+"fromadminwhereuserId=?"); ps.setString(1,user); rs=ps.executeQuery(); if(rs.next()){ if(rs.getString(1).equals(password)){ if(rs.getString(2).equals(""+grade)){ b=Integer.parseInt(grade);//單獨(dú)判斷以防止注入數(shù)據(jù)庫(kù)漏洞 } } }}catch(Exceptione){ System.err.println("checkUser出錯(cuò)"); e.printStackTrace(); }finally{ this.close();//單寫(xiě)的一個(gè)方法專用于關(guān)閉數(shù)據(jù)庫(kù)連接 } returnb; } /** *fuction:用戶關(guān)閉數(shù)據(jù)庫(kù)連接 *@author王龍 */ publicvoidclose(){ try{ if(rs!=null){ rs.close(); rs=null; } if(ps!=null){ ps.close(); rs=null; } if(ct!=null){ ct.close(); ct=null; } }catch(SQLExceptione){ System.err.println("close()出錯(cuò)"); e.printStackTrace(); } }5.1.1.非法登錄時(shí)的界面:5.2、課程管理系統(tǒng)選課模塊中能否選課時(shí)間的核心代碼說(shuō)明:a)因?yàn)閿?shù)據(jù)庫(kù)中設(shè)定日期時(shí)間格式為xxxx-xx-xx形式而Date類(lèi)能轉(zhuǎn)換的形式是xxxx/xx/xx所以要將其轉(zhuǎn)換,然后再比較。b)將此方法寫(xiě)在單獨(dú)的日期處理類(lèi)里,以便用的此方法時(shí),直接調(diào)用即可,從而增加復(fù)用性/***選課時(shí)間處理方法:用于判斷是否能選課以及能否評(píng)教*@author張成昆*@parambeginDate開(kāi)始選課時(shí)間*@paramendDate結(jié)束選課時(shí)間*@return是否能選課*/publicbooleandateJudge(StringbeginDate,StringendDate){ booleanb=false; DatenowTime=newDate(); //取得效勞器當(dāng)前時(shí)間 beginDate=beginDate.replace('-','/'); //選課開(kāi)始時(shí)間中"-"替換為"/"便于將字符串轉(zhuǎn)換成時(shí)間類(lèi)endDate=endDate.replace('-','/'); Datebegindate=newDate(beginDate); //將字符型轉(zhuǎn)換成特定時(shí)間類(lèi) Dateenddate=newDate(endDate); if(nowTime.getTime()>=begindate.getTime()&&nowTime.getTime()<=enddate.getTime()){//比較是否能夠選課及評(píng)教,其中g(shù)etTime()返回自1970年1月1日00:00:00GMT以來(lái)此Date對(duì)象表示的毫秒數(shù) b=true; } returnb; }5.2.1.沒(méi)到選課時(shí)間時(shí),提示界面說(shuō)明:核心代碼如下:StudentBeanClsbc=newStudentBeanCl();StringcourseId=request.getParameter("courseId");StringbeginSelectCourseTime=scbc.getBeginSelectCourseTime(courseId).trim(); StringendSelectCourseTime=scbc.getEndSelectCourseTime(courseId).trim(); DateFunctiondf=newDateFunction(); if(df.dateJudge(beginSelectCourseTime,endSelectCourseTime)){ StringstudentId=request.getParameter("studentId"); SelectCourseBeanClscbl=newSelectCourseBeanCl(); ArrayListal=scbl.getAllOnlineCourse(); ArrayListhaveSelectCourseBeanList=scbl.getAllSelectCourse(studentId);request.setAttribute("haveSelectCourseBeanList",haveSelectCourseBeanList);request.setAttribute("allCourse",al);request.getRequestDispatcher("student/student_selectCourse.jsp").forward(request,response); }else{ out.println("<script>window.alert(\"選課時(shí)間("+beginSelectCourseTime+"~"+endSelectCourseTime+")已過(guò)!\")</script>");}5.2.2.管理員設(shè)置選課時(shí)間順序錯(cuò)誤時(shí)說(shuō)明:相應(yīng)的javascript代碼:<scripttype="text/javascript"> functioncheckTime(){ varstart=selectCourseForm.beginSelectDay.value; varend=selectCourseForm.endSelectDay.value; varstartDate=newDate(start.replace("-",",")).getTime(); varendDate=newDate(end.replace("-",",")).getTime(); if(startDate>endDate){ alert("結(jié)束選課時(shí)間小于開(kāi)始選課時(shí)間,請(qǐng)重新設(shè)置!"); selectCourseForm.beginSelectDay.focus(); returnfalse; } returntrue; } </script>5.2.3.選課成功時(shí),在當(dāng)前頁(yè)面顯示選課結(jié)果5.2.4.學(xué)生可以對(duì)相應(yīng)的授課老師進(jìn)行評(píng)教5.3、發(fā)送郵件模塊核心代碼說(shuō)明:鑒于每次回家時(shí),家里網(wǎng)絡(luò)不是太好,登錄學(xué)校網(wǎng)站成績(jī)很困難,有時(shí)因網(wǎng)絡(luò)超時(shí)而不能查詢到成績(jī),因此,可以由管理員統(tǒng)一,在特定時(shí)間發(fā)送郵件到每個(gè)同學(xué)的郵箱,從而可在每個(gè)人的郵箱中就可查詢到個(gè)人的這個(gè)學(xué)期的成績(jī)。/***發(fā)送郵件*@author王龍*/publicbooleansend(){ //創(chuàng)立一個(gè)屬性對(duì)象 Propertiesprops=newProperties(); //指定SMTP效勞器 props.put("mail.smtp.host",SMTPHost); //指定是否需要SMTP驗(yàn)證 props.put("mail.smtp.auth","true"); try{ //創(chuàng)立一個(gè)授權(quán)驗(yàn)證對(duì)象 SmtpAuthauth=newSmtpAuth(); auth.setAccount(user,password);//創(chuàng)立一個(gè)Session對(duì)象 SessionmailSession=Session.getDefaultInstance(props,auth); mailSession.setDebug(true); //創(chuàng)立一個(gè)MimeMessage對(duì)象 MimeMessagemessage=newMimeMessage(mailSession); //指定發(fā)件人郵箱 message.setFrom(newInternetAddress(from)); //指定收件人郵箱 message.addRecipient(Message.RecipientType.TO,newInternetAddress(to)); //指定郵件主題 message.setSubject(subject); //指定郵件內(nèi)容、ContentType及編碼方式 message.setContent(content,"text/html;charset=gb2312"); //指定郵件發(fā)送日期 message.setSentDate(newDate()); //指定郵件優(yōu)先級(jí)1:緊急3:普通5:緩慢 message.setHeader("X-Priority","3"); message.saveChanges(); //創(chuàng)立一個(gè)Transport對(duì)象 Transporttransport=mailSession.getTransport("smtp"); //連接SMTP效勞器 transport.connect(SMTPHost,user,password); //發(fā)送郵件 transport.sendMessage(message,message.getAllRecipients()); transport.close(); returntrue; }catch(Exceptionex){ ex.printStackTrace(); returnfalse; } } //定義一個(gè)SMTP授權(quán)驗(yàn)證類(lèi) staticclassSmtpAuthextendsAuthenticator{ Stringuser,password; //設(shè)置帳號(hào)信息 voidsetAccount(Stringuser,Stringpassword){ this.user=user; this.password=password; } //取得PasswordAuthentication對(duì)象 protectedPasswordAuthenticationgetPasswordAuthentication(){ returnnewPasswordAuthentication(user,password); } }5.3.1、郵件發(fā)送成績(jī)單界面如下5.3.2、發(fā)送給s000001麗麗同學(xué)的郵件如下5.3.3、發(fā)送給s000002王敏同學(xué)的郵件如下5.3.4、發(fā)送郵件給未選上課的學(xué)生:5.3.5、張?jiān)略聅000003收到的選課信息:5.4、報(bào)表打印模塊核心代碼:說(shuō)明:a)先用iReport做好模板并為程序留有接口,這樣報(bào)表就能根據(jù)數(shù)據(jù)庫(kù)動(dòng)態(tài)變化。b)做好后編譯、運(yùn)行,生成xxxx.jasper結(jié)尾的文。c)將此文件導(dǎo)入到WebRoot/iReport/下d)jsp文件頭部應(yīng)引入包:<%@pagelanguage="java"import="java.util.*,.hytc.cs.model.bean.*,.hytc.cs.model.beanCl.*"pageEncoding="gb2312"%><%@pageimport="net.sf.jasperreports.engine.*,.hytc.cs.model.connectDB.*,java.io.*,java.sql.*"%>FilereportFile=newFile(application.getRealPath("iReport/haveNotSelectCoureStudent.jasper"));//獲得模板文件Connectionconn=newConnectDB().getConnection();//連接數(shù)據(jù)庫(kù),ConnectDB類(lèi)是自定義的類(lèi)用于數(shù)據(jù)庫(kù)的連接try{byte[]bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),null,conn);//將文件動(dòng)態(tài)綁定到數(shù)據(jù)庫(kù),更新數(shù)據(jù) if(conn!=null){//關(guān)閉數(shù)據(jù)庫(kù) try{ if(!conn.isClosed()){conn.close();}}catch(SQLExceptione){e.printStackTrace();}}response.setContentType("application/pdf");//調(diào)用系統(tǒng)pdf工具response.setContentLength(bytes.length);//設(shè)置內(nèi)容大小ServletOutputStreamoutputStream=response.getOutputStream();//翻開(kāi)數(shù)據(jù)流outputStream.write(bytes,0,bytes.length);//向緩存中寫(xiě)動(dòng)態(tài)生成的文件內(nèi)容outputStream.flush();//將緩存區(qū)中的數(shù)據(jù)寫(xiě)入到pdf工具中outputStream.close();}catch(JRExceptione){e.printStackTrace(); }5.4.1、未選上課的學(xué)生報(bào)表:5.4.2、學(xué)生報(bào)表生成頁(yè)面如下5.5、其他模塊圖:5.5.1添加學(xué)生圖〔帶校驗(yàn)〕:5.5.2添加學(xué)生成功時(shí),自動(dòng)關(guān)閉窗口,并刷新父窗口:說(shuō)明:相應(yīng)的javascript核心代碼:<scripttype="text/javascript"> functionclosewindow(){ if(window.opener){ window.opener.location.reload(true); window.close(); } } functionclock(){ i=i-1; if(document.getElementById("info")){ document.getElementById("info").innerHTML="本窗口將在"+i+"秒后自動(dòng)關(guān)閉";} if(i>0) setTimeout("clock();",1000); else closewindow(); } vari=6; clock();</script><divid="info">本窗口將在5秒后自動(dòng)關(guān)閉</div><p>5.5.3、學(xué)生,教師,管理員可修改登錄密碼:5.5.4、教師錄入成績(jī):5.5.5、學(xué)生可查詢成績(jī),教師也可查詢成績(jī),管理員可以查詢所有信息:、學(xué)生精確查詢成績(jī):、管理員可以查詢所有信息:、管理員可以設(shè)置系統(tǒng)通知信息:、相應(yīng)的學(xué)生都可以查看系統(tǒng)通知信息:第6章系統(tǒng)測(cè)試分析6.1系統(tǒng)測(cè)試目的和原那么在開(kāi)發(fā)大型軟件系統(tǒng)的過(guò)程中,需要面對(duì)錯(cuò)綜復(fù)雜的問(wèn)題,因此,在軟件生存周期的每個(gè)階段都不可防止地會(huì)產(chǎn)生錯(cuò)誤。我們力求在每個(gè)階段結(jié)束之前通過(guò)嚴(yán)格的技術(shù)審查,盡可能早的發(fā)現(xiàn)并糾正錯(cuò)誤。測(cè)試的目的就是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。目前軟件測(cè)試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)和編碼的最后復(fù)審。盡管面向?qū)ο蠹夹g(shù)的根本思想保證了軟件應(yīng)該有更高的質(zhì)量,但無(wú)論采用什么樣的編程技術(shù),編程人員的錯(cuò)誤都是不可防止的,而且由于面向?qū)ο蠹夹g(shù)開(kāi)發(fā)的軟件代碼重用率高,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論