計算機科學(xué)與技術(shù)畢業(yè)論文-教學(xué)公共空余時間抽取系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  教學(xué)公共空余時間抽取系統(tǒng)的設(shè)計與實現(xiàn)</p><p>  Design and Implementation of Autonomous work program generation system&

2、lt;/p><p><b>  摘要</b></p><p>  在現(xiàn)代綜合型大學(xué)中,教學(xué)密度隨課程種類和數(shù)量增多不斷加大。而作為教師,選取特定時間特點地點和學(xué)生交流變得越來越困難,從而需要一套軟件協(xié)助選取最適宜的教學(xué)公余時間。本課題旨在建立一套先進的課程信息采集與公余信息處理的軟件系統(tǒng),以用于面向教室公余管理、學(xué)生公余和教師公余管理等的研發(fā)、設(shè)計與應(yīng)用。</p&g

3、t;<p>  在通過自己對現(xiàn)有的學(xué)校官方網(wǎng)站的教學(xué)管理系統(tǒng)和將要實現(xiàn)功能的功能詳細分析,并且與指導(dǎo)教師探討以后,決定與前者一樣采用B/S模式,開發(fā)一個基于web的教學(xué)公共空余時間抽取系統(tǒng),一方面便于與學(xué)校的教務(wù)管理網(wǎng)站由學(xué)校統(tǒng)一管理,另一方面,更方便老師隨時隨地可以提交需求,教務(wù)工作人員處理老師提交的申請,以及同學(xué)們對自己課程的情況掌握等各個功能。</p><p>  本系統(tǒng)在MyEclipse平

4、臺下,采用SSH2框架,前端采用JSP和javascript,數(shù)據(jù)庫采用MySQL,經(jīng)過系統(tǒng)測試,系統(tǒng)運行穩(wěn)定,實現(xiàn)了教學(xué)公共空余時間的抽取和對上機課程的排課等功能。</p><p>  關(guān)鍵詞:公共空余時間;排課;SSH2</p><p><b>  ABSTRACT</b></p><p>  In the modern comprehen

5、sive university, with the type and number of courses increasing continuously, teaching density grows together. As a teacher, it becomes more and more difficult to select the specific time and place to exchange with stude

6、nt. Therefore, the topic establishes a set of advanced course information acquisition and spare information processing software system. It uses for the public spare time management of classrooms, students and teachers ma

7、nagement.</p><p>  Through detailed analysis of the school teaching management system on the official website and the functional requirements, this paper decides to use B/S structure to develop a teaching pu

8、blic spare time extraction system based on web. On one hand, the system is convenient for unified management of the school educational administration web site, on the other hand, convenient for the teacher to submit dema

9、nd every time and everywhere, the staff to process the application what the teacher submits </p><p>  This system is based on MyEclipse platform, using SSH2 framework, JSP and javascript in the front page an

10、d MySQL as the database. After testing the system, the running stability of the system is great. The system achieves the teaching public spare time extraction and the function of arranging course.</p><p>  K

11、ey words: public spare time;course scheduling;SSH2</p><p><b>  目  錄</b></p><p><b>  第1章 緒論1</b></p><p>  1.1選題背景及意義1</p><p>  1.1.1 課題研究背景1&l

12、t;/p><p>  1.1.2 課題研究的目的和意義1</p><p>  1.2 國內(nèi)外教學(xué)公共空余時間抽取系統(tǒng)的歷史與發(fā)展2</p><p>  1.3 課題內(nèi)容2</p><p>  1.4論文的結(jié)構(gòu)2</p><p>  第2章 系統(tǒng)需求分析及相關(guān)技術(shù)1</p><p>  2.

13、1系統(tǒng)需求分析1</p><p>  2.1.1 業(yè)務(wù)分析1</p><p>  2.1.2系統(tǒng)功能分析4</p><p>  2.1.3 性能需求分析4</p><p>  2.2相關(guān)技術(shù)和工具簡介5</p><p>  2.2.1 相關(guān)技術(shù)概述5</p><p>  2.2.2

14、相關(guān)工具簡介8</p><p>  2.2.3 開發(fā)環(huán)境9</p><p>  2.2.4 運行環(huán)境9</p><p><b>  2.3本章小結(jié)9</b></p><p>  第3章 系統(tǒng)概要設(shè)計10</p><p>  3.1 系統(tǒng)的總體設(shè)計10</p><p&

15、gt;  3.1.1 總體結(jié)構(gòu)設(shè)計10</p><p>  3.1.2 運行環(huán)境設(shè)計10</p><p>  3.1.3主要功能簡要設(shè)計10</p><p>  3.2 數(shù)據(jù)庫設(shè)計11</p><p>  3.2.1數(shù)據(jù)庫需求分析11</p><p>  3.2.2數(shù)據(jù)庫的概要設(shè)計12</p>

16、<p>  3.2.3物理結(jié)構(gòu)設(shè)計14</p><p>  3.3本章小結(jié)16</p><p>  第4章 系統(tǒng)詳細設(shè)計與實現(xiàn)17</p><p>  4.1 前臺頁面設(shè)計17</p><p>  4.2功能詳細設(shè)計和實現(xiàn)17</p><p>  4.2.1 用戶登錄17</p>

17、<p>  4.2.2 課表查詢19</p><p>  4.2.3 排課功能23</p><p>  4.3 系統(tǒng)測試28</p><p>  4.3.1 測試的概念及目的28</p><p>  4.3.2 測試環(huán)境28</p><p>  4.3.3 瀏覽器兼容性測試28</p>

18、<p>  4.3.4主要功能性能測試29</p><p>  4.4 本章小結(jié)31</p><p><b>  結(jié)  論32</b></p><p><b>  參考文獻33</b></p><p>  攻讀學(xué)士學(xué)位期間發(fā)表的論文和取得的科研成果35</p>

19、<p><b>  致  謝36</b></p><p><b>  第1章 緒論</b></p><p>  1.1選題背景及意義</p><p>  1.1.1 課題研究背景</p><p>  隨著國家教學(xué)改革的不斷深化,高校擴大招生的腳步不斷前進,隨著大學(xué)生人數(shù)的不斷增加,課程種

20、類和數(shù)量的不斷增多,教學(xué)密度不斷加大。學(xué)校的機房管理工作量也因此不斷加大,機房管理人員對機房的管理難度不斷提高[1]。每學(xué)期開始的時候,機房管理人員統(tǒng)計需要上機的課程和學(xué)生的工作量都比較大,過程也相當繁瑣,主要原因就是機房管理的方法和手段過于落后,缺乏一套可以協(xié)助管理的軟件系統(tǒng),特別是對于實驗課等實踐課程,需要管理人員用自己的大腦和雙手去安排和管理,而這一手段將越來越難以滿足越來越大的數(shù)據(jù)和越來越快的效率需求。為了提高教學(xué)辦公效率和質(zhì)量

21、,減輕老師和機房管理人員的工作量和工作壓力,提高教學(xué)資源利用率,真正實現(xiàn)自動化辦公,從而急需研發(fā)出一套完整的機房和實驗、上機等課程的管理系統(tǒng)。</p><p>  1.1.2 課題研究的目的和意義</p><p><b>  本課題的主要目的:</b></p><p>  開發(fā)一個針對學(xué)校所有老師、學(xué)生、和機房的公共空余時間的管理系統(tǒng),利用他們

22、的公共空余時間,系統(tǒng)將在學(xué)期開始的時候進行初始化,然后從教務(wù)處同步各個老師、學(xué)生和機房的信息以及課程數(shù)據(jù),從而在需要安排上機實驗課程時能根據(jù)教師和班級信息在一定算法下得到最佳的上機時間和地點。</p><p><b>  本課題的主要意義:</b></p><p>  隨著學(xué)生人數(shù)的不斷增多,課程種類和數(shù)目的不斷增加,教學(xué)密度也越來越高。而在此背景下,上機課程的安排還

23、是依靠著老師、學(xué)生和機房管理人員在口頭與書面的不斷交流下完成的。而這個形式必然會引起課程密度安排不合理,教學(xué)資源分配不合理,教學(xué)安排效率低等各個問題[2]。手工管理方式在管理質(zhì)量和效率上,根本不能適應(yīng)大規(guī)模的管理要求。隨著計算機和網(wǎng)絡(luò)技術(shù)的發(fā)展和普及,借助于該系統(tǒng),管理人員將從繁瑣的工作中解脫出來,老師也不必為了安排上機不斷在學(xué)生和機房中間徘徊,學(xué)生也能隨時隨地掌握到自己的上機課程信息。</p><p>  1.

24、2 國內(nèi)外教學(xué)公共空余時間抽取系統(tǒng)的歷史與發(fā)展</p><p>  教學(xué)公共空余時間抽取系統(tǒng),說到底就是一個機房排課系統(tǒng),是教務(wù)教學(xué)管理系統(tǒng)的一個子系統(tǒng),類似于各大教務(wù)處網(wǎng)站的教學(xué)安排,只是它涉及的是具體的某一方面。</p><p>  目前排課系統(tǒng)的研究主要是放在各個學(xué)校的教學(xué)大綱中的理論課程上面,關(guān)于機房的管理研究卻是很難得的。機房排課與理論課的編排有相似的地方,又有很多不同的地方理論

25、課的編排限制因素比較少,主要考慮到教室容量大于班級人數(shù)就可以了,而上機課的編排不但要考慮到這一點,還要權(quán)衡教師、學(xué)生、課程和機房等各個方面的影響,因而使機房的排課變得復(fù)雜[3]。所以本課題的研究目的正是為了填補和平衡這一情況。</p><p><b>  1.3 課題內(nèi)容</b></p><p>  本課題所研究的是一個以B/S為架構(gòu)的web應(yīng)用。它主要是為了實現(xiàn)機房

26、排課的自動化和信息化,以減輕教師和機房管理人員的工作量,同時也加快辦公效率,提高教學(xué)資源利用率[4]。在該系統(tǒng)中,學(xué)生可以查詢到自己的上機課課表;教師也可以查詢課表信息,但是還可以遞交上課申請;管理員則負責維護整個系統(tǒng),以及對教師所提交的和開學(xué)時候的數(shù)據(jù)處理,如教務(wù)處數(shù)據(jù)的導(dǎo)入和存儲更新、根據(jù)教學(xué)大綱預(yù)排好部分上機課程。以此形成一個完整的機房管理系統(tǒng),可以自動對教師、學(xué)生和機房的公共空余時間進行篩選和抽取,終而排出滿意的課程表[5]。&

27、lt;/p><p><b>  1.4論文的結(jié)構(gòu)</b></p><p>  整個論文主要分為四章。</p><p>  第1章為緒論部分,綜合闡述了教學(xué)公共空余時間抽取系統(tǒng)的背景,通過背景介紹課題研究的目的和意義,展示了教學(xué)公共空余時間抽取系統(tǒng)國內(nèi)外的發(fā)展歷程,介紹整個系統(tǒng)的大體的規(guī)劃和整體的論文結(jié)構(gòu)。</p><p> 

28、 第2章包括了對教學(xué)公共空余時間抽取系統(tǒng)的需求分析以及總體設(shè)計,用用戶用例圖、以及業(yè)務(wù)流程圖等表明系統(tǒng)的總體需求;結(jié)構(gòu)圖闡述了系統(tǒng)的總體架構(gòu)。</p><p>  第3章簡單的描述了系統(tǒng)的概要設(shè)計以及模塊設(shè)計,介紹了數(shù)據(jù)庫系統(tǒng)的概要設(shè)計和數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計,列出的每個表的屬性及字段類型和長度。</p><p>  第3章包括了系統(tǒng)的詳細設(shè)計與實現(xiàn),從界面到功能模塊給予詳細設(shè)計以及實現(xiàn)過程

29、和相應(yīng)的測試結(jié)果,還包括系統(tǒng)的部分測試以及整體測試。</p><p>  最后是本文的結(jié)論部分,對本文工作進行了總結(jié)。</p><p>  第2章 系統(tǒng)需求分析及相關(guān)技術(shù)</p><p>  軟件工程認為,在軟件的生命周期中,系統(tǒng)的需求分析是最重要的一個階段。軟件需求分析的質(zhì)量對軟件開發(fā)的影響深遠,如果能做出一個高質(zhì)量的需求分析,后期的軟件開發(fā)階段將會非常輕松,做出

30、來的系統(tǒng)功能非常全面而且各個細節(jié)都會完成得很好,對軟件開發(fā)往往起到事半功倍的效果,所謂“磨刀不誤砍柴功”。反之,若前期需求分析沒做好,在后續(xù)階段還需要不斷地改需求、改代碼、改界面,更嚴重的甚至需要重新設(shè)計系統(tǒng),總之,改正需求分析階段產(chǎn)生的錯誤將付出高昂的代價[6]。</p><p><b>  2.1系統(tǒng)需求分析</b></p><p>  2.1.1 業(yè)務(wù)分析<

31、;/p><p>  系統(tǒng)主要完成的是在對各個用戶對象取了空余時間的交集以后,對數(shù)據(jù)進行處理,選擇一個合適的機房,完成對上機課程的編排功能;可以讓用戶在登錄以后查詢到最新的上機課表。那么用戶分為三個類型。</p><p> ?。?)學(xué)生。如果按用戶等級劃分權(quán)限,學(xué)生用戶是最低權(quán)限的,他們只有很少的一部分操作:登錄、修改密碼以及課表查詢。</p><p> ?。?)教師。教

32、師用戶除了擁有學(xué)生用戶的操作以外,還可以進行上機課程的申請。因為有的課程在預(yù)排課時沒有納入其中,便需要教師選取時間與機房管理人員進行溝通。此時教師只需要把所教班級提交上去,經(jīng)管理人員提交給系統(tǒng)自動編排便可。</p><p>  (3)管理員。每個系統(tǒng)都需要管理員。本系統(tǒng)的管理員就是教務(wù)工作人員。他們有一個單獨的登錄入口,在后臺操作數(shù)據(jù),完成對系統(tǒng)的維護。主要操作有自動排課和手動排課。而自動排課是本系統(tǒng)的核心功能,

33、它所涉及的需求分析和相對應(yīng)的算法設(shè)計也是本次畢業(yè)設(shè)計的主要工作量所在。</p><p>  由于管理員可直接在后臺頁面登錄對系統(tǒng)進行操作,在下面的流程圖只包含了教師和學(xué)生的操作流程。如圖2.1。</p><p>  圖2.1 業(yè)務(wù)流程圖</p><p>  根據(jù)以上分析,該系統(tǒng)主要有三個參與者:學(xué)生、教師和管理員。每個用戶需要實現(xiàn)的功能也都一一列出來的,據(jù)此分別畫出

34、其用例圖。如圖2.2~2.4所示。</p><p>  圖2.2 學(xué)生用例圖</p><p>  圖2.3 教師用例圖</p><p>  圖2.4 管理員用例圖</p><p>  2.1.2系統(tǒng)功能分析</p><p>  前面說了,系統(tǒng)主要有三大用戶對象,分別為學(xué)生、教師和管理員。而每個用戶類型對系統(tǒng)的操作和需求

35、都是不一樣的,因此需要再細分為四大模塊,分別為數(shù)據(jù)的導(dǎo)入和存儲模塊,用戶的管理模塊,課程的查詢模塊以及排課模塊。每個類型的用戶所操作的是這幾個模塊中的一個或者幾個,使系統(tǒng)具有高內(nèi)聚低耦合的優(yōu)點。</p><p>  (1)數(shù)據(jù)的導(dǎo)入和存儲模塊:教務(wù)處導(dǎo)入學(xué)生、教師和機房的課表存儲在本地作為數(shù)據(jù)庫。數(shù)據(jù)庫包含學(xué)生、教師和機房的基本信息,比如學(xué)生的學(xué)號、姓名、班級,教師的教師編號和姓名等。</p>&l

36、t;p>  (2)用戶的管理模塊:管理員才有的操作權(quán)限,他可以對數(shù)據(jù)庫中數(shù)據(jù)進行增、刪、改、查操作,對系統(tǒng)進行維護。</p><p>  (3)課程的查詢模塊:所有用戶需要登錄以后才能進行該操作,可以分別從教室、學(xué)生和機房的角度進行課表查詢。</p><p> ?。?) 排課模塊:排課分為兩種,一種是開學(xué)由管理員直接按照教學(xué)大綱所進行的預(yù)排課,一種是由教師預(yù)約申請的排課。如不出意外,

37、管理員只需輸入課程信息和教師、班級便可由系統(tǒng)自動完成排課,但在某些特定情況下則由管理員手動排課或調(diào)課。</p><p>  2.1.3 性能需求分析</p><p><b>  簡易性</b></p><p>  簡易性包括兩個方面,一個是界面的簡潔,因為系統(tǒng)用戶都是學(xué)校教師和學(xué)生,使用系統(tǒng)的目的在于那一張課程表,因此不需要多華麗的界面,課程表

38、能讓用戶看起來很舒服就可以了;另一個是容易使用,因為不是所有用戶都擅長使用計算機。</p><p><b>  可擴展性</b></p><p>  系統(tǒng)暫時只是實現(xiàn)一個核心模塊——排課,而且在從教務(wù)處導(dǎo)入數(shù)據(jù)的時候只是利用到其中一小部分字段,在后續(xù)工作中肯定會有業(yè)務(wù)需求的增加,系統(tǒng)也肯定會需要完善,因此必須保證以后添加功能時不會“牽一發(fā)而動全身”。</p>

39、;<p><b>  安全性</b></p><p>  該系統(tǒng)雖然不涉及什么高級機密,但是也關(guān)系到教學(xué)系統(tǒng)的穩(wěn)定,因此必須保證系統(tǒng)的安全性。</p><p><b>  穩(wěn)定性</b></p><p>  跟安全性一樣要理解本系統(tǒng)的重要性,且需保證隨著數(shù)據(jù)和時間的改動,系統(tǒng)的穩(wěn)定性不受影響,以此保證教務(wù)教學(xué)

40、系統(tǒng)的正常運行。</p><p>  2.2相關(guān)技術(shù)和工具簡介</p><p>  2.2.1 相關(guān)技術(shù)概述</p><p>  1、B/S開發(fā)模式 </p><p>  B/S即是Browser/Serve,瀏覽器/服務(wù)器模式,是web興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,其最大的優(yōu)點是只要是裝有瀏覽器的能上網(wǎng)的電腦一臺,就可以在任何地方進行操作而不用

41、安裝任何專用軟件,零安裝零更新零維護,系統(tǒng)的擴展十分簡單。也正是由于這個優(yōu)勢,決定了B/S架構(gòu)越來越受大眾喜愛,被越來越多的開發(fā)人員和用戶所青睞,其發(fā)展速度也是越來越快,應(yīng)用范圍越來越廣[7]。</p><p>  它的三層架構(gòu)具體是指數(shù)據(jù)訪問層(DAL)、業(yè)務(wù)邏輯層(BLL)、和應(yīng)用表示層(UI)。表示層(UI):也就是我們講的與用戶交互的前臺頁面,即用戶在使用一個系統(tǒng)的時候他所看到的。它主要是以WEB的方式表

42、現(xiàn)出來,也可以用WINFORM的方式表現(xiàn)出來,也可以用aspx的WEB方式表現(xiàn)出來,如果邏輯層非常的強大和完善,那么不管表現(xiàn)層怎么定義和改變,邏輯層都可以很好地為其提供服務(wù)。在業(yè)務(wù)邏輯層(BLL):它是一個針對具體問題的操作,換種說法,也可以說是對數(shù)據(jù)層的操作,對數(shù)據(jù)的業(yè)務(wù)邏輯進行處理。如果說數(shù)據(jù)層是磚頭、水泥和沙子,那么邏輯層就是在用它們建房子。數(shù)據(jù)訪問層(DAL):這層所做的事務(wù)是直接對數(shù)據(jù)庫進行操作,對數(shù)據(jù)進行增添、刪除、修改、查

43、找等操作。它的主要功能是對原始數(shù)據(jù)進行的各種操作,而不是指原始數(shù)據(jù),具體為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù)。如圖2.5所示。</p><p>  2.5 B/S三層結(jié)構(gòu)示意圖</p><p><b>  2、SSH2框架</b></p><p>  SSH2框架其實就是Struts2+Hibernate+Spring,此框架是一個典型的三層架構(gòu)。

44、接下來分別介紹一下這三個框架。</p><p>  Struts2雖然看上去是Struts1的下一代產(chǎn)品,但是它們兩者差別非常的大。Struts 2以WebWork為核心,處理用戶的請求選擇采用攔截器的機制,這樣的設(shè)計便可以讓業(yè)務(wù)邏輯控制器與ServletAPI完全脫離開來。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts2的變化很小,所以Struts 2可以理解為W

45、ebWork而不是Struts1的下一代產(chǎn)品。Struts2的優(yōu)點有以下幾點:</p><p>  實現(xiàn)了MVC模式,層次結(jié)構(gòu)清晰,使程序員只需關(guān)心業(yè)務(wù)邏輯的實現(xiàn);</p><p>  包含大量的標簽庫,從而大大提高了開發(fā)的效率;</p><p>  提供豐富的攔截器實現(xiàn);</p><p>  只需要通過配置文件,就可以掌握整個系統(tǒng)各個部分之

46、間的關(guān)系;</p><p>  異常機制處理,在配置文件中配置好處理機制,即可處理相應(yīng)的異常情況。</p><p>  Spring框架是為了解決軟件開發(fā)的復(fù)雜性問題而創(chuàng)建的。Spring使用的是基本的JavaBean,由它去完成以前只可能由EJB才能完成的事情。但是Spring的用途不僅僅局限于服務(wù)器端的開發(fā)。無論是從簡單性、可測試性還是松耦合性的角度來說,絕大部分Java應(yīng)用都可以從S

47、pring中受益。Spring框架的優(yōu)點如下:</p><p><b>  絲毫沒有入侵性;</b></p><p>  各個組件之間的耦合極為松散,也就是我們常說的低耦合;</p><p>  無需程序員自己實現(xiàn)singleton模式;</p><p>  通過AOP,可以實現(xiàn)事務(wù)管理和日志管理;</p>

48、<p>  Hibernate版本更新速度很快,目前為止有兩個階段性的版本:Hibernate2和Hibernate3。那么Hibernate框架的優(yōu)點如下:</p><p>  對象/關(guān)系數(shù)據(jù)庫映射(ORM)使用時只需操縱對象,使開發(fā)更加面向?qū)ο蠡?lt;/p><p><b>  無入侵性;</b></p><p>  hql語句簡

49、潔明了,大大減少了jdbc和sql操作數(shù)據(jù)庫時候的代碼量;</p><p><b>  移植性好。</b></p><p>  表現(xiàn)層采用的是傳統(tǒng)的JSP技術(shù)。JSP自1999年問世以來,經(jīng)過十幾年的發(fā)展,由于它應(yīng)用之廣泛和表現(xiàn)之穩(wěn)定,為其作為表現(xiàn)層技術(shù)打下了堅實良好的基礎(chǔ)。</p><p>  中間層采用的是流行的Spring+Hiberna

50、te,為了把DAL(數(shù)據(jù)訪問層)和BLL(業(yè)務(wù)邏輯層)分離開來,又把中間層細分為Web層和Service層(即業(yè)務(wù)邏輯層)、DAO層和PO。利用這樣的三層體系將業(yè)務(wù)規(guī)則、合法性校驗及數(shù)據(jù)訪問等工作放在中間層進行處理。從以上說明可以看出來,客戶端是不直接與數(shù)據(jù)庫打交道的,而是先通過組件與中間層建立連接,再由中間層與數(shù)據(jù)庫交換、傳遞數(shù)據(jù)。</p><p><b>  3、JSP</b></

51、p><p>  JSP是由SunMicrosystems公司發(fā)起、許多公司參與而創(chuàng)建的一種動態(tài)技術(shù)標準。JSP網(wǎng)頁即是在傳統(tǒng)的HTML網(wǎng)頁文件中加入Java程序片段和JSP標簽。Java程序片段可以實現(xiàn)的功能有很多,比如操縱數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,以此實現(xiàn)建立動態(tài)網(wǎng)站需要實現(xiàn)的功能。在JSP技術(shù)標準下,所有程序的操作都是在服務(wù)器端執(zhí)行,而網(wǎng)絡(luò)上只是把得到的結(jié)果傳送到客戶端,這樣就大大降低了對客戶瀏

52、覽器(就是前面說的客戶端)的要求,就算客戶的瀏覽器端不支持Java,也不會影響到它訪問JSP網(wǎng)頁。</p><p>  JSP全名為Java Server Pages,從根本上來說就是一個簡化的Servlet設(shè)計,實現(xiàn)了HTMLl語法中的Java擴張(以 <%, %>形式)。JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的。因為通常它返回給客戶端的就是一個HTML文本,所以客戶端只要有瀏覽器就能瀏覽,得

53、到該得到的結(jié)果和界面。Web服務(wù)器如果收到了訪問JSP網(wǎng)頁的請求,首先執(zhí)行該請求中的程序段,再把得到的結(jié)果與JSP文件中的HTML代碼一起發(fā)送到客戶端。</p><p>  通常JSP頁面很少進行數(shù)據(jù)處理,只是用來實現(xiàn)網(wǎng)頁的靜態(tài)化頁面,只是用來提取數(shù)據(jù),不會進行業(yè)務(wù)處理。</p><p>  JSP技術(shù)使用Java編程語言編寫類XML的scriptlets與tags,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處

54、理邏輯。網(wǎng)頁也可以通過scriptlets與tags訪問存在于服務(wù)器端資源的應(yīng)用邏輯。JSP將網(wǎng)頁設(shè)計的顯示和網(wǎng)頁邏輯分離開來,并且支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易,在很大程度上造就了基于B/S架構(gòu)的web應(yīng)用開發(fā)的快速發(fā)展。</p><p>  前面提到,JSP頁面由普通的HTML代碼和嵌入其中的Java代碼組合而成。服務(wù)器在收到前臺頁面的客戶端請求以后對這些Java代碼進

55、行處理,再把生成的HTML頁面返回到客戶端的瀏覽器。Java Servlet是JSP的技術(shù)基礎(chǔ),而且在大型的Web應(yīng)用程序的開發(fā)往往需要Java Servlet和JSP一起配合才能把功能做出來,并且做得完善。JSP具備了Java技術(shù)很多優(yōu)點,簡單易用性,徹底的面向?qū)ο?,跨平臺性以及安全可靠性,主要面向因特網(wǎng)的所有特點。</p><p>  自從JSP橫空出世以來,許多大公司都陸續(xù)采用支持JSP技術(shù)的服務(wù)器,如IB

56、M、Oracle、Bea公司等,所以JSP迅速發(fā)展成為普遍的商業(yè)應(yīng)用服務(wù)器端語言。</p><p>  2.2.2 相關(guān)工具簡介</p><p><b>  1、MySQL</b></p><p>  MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL是目前全世界應(yīng)用的最流行的關(guān)系型數(shù)據(jù)庫

57、管理系統(tǒng),在WEB應(yīng)用方面MySQL可以說是最好的RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫把不同對象的數(shù)據(jù)保存在不同的數(shù)據(jù)庫表中,而沒有選擇把所有的數(shù)據(jù)都放在一個大倉庫里,這樣就大大增加了速度而且很好地提高了系統(tǒng)的靈活性。MySQL所使用的SQL語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。MySQL軟件采用了雙授權(quán)

58、政策,它分為社區(qū)版和商業(yè)版,由于其集齊眾多優(yōu)點于一身,比如體積小、速度快、總體擁有成本低,更為重要的是開放源碼這一特點,使得一般的中小型(企業(yè))網(wǎng)站開發(fā)都選擇把MySQL作為網(wǎng)站數(shù)據(jù)庫。因為其社區(qū)版的性能也是相當卓越,搭配PHP和Apache可組成良好的開發(fā)環(huán)境,開發(fā)起來更輕巧、快捷方便。</p><p>  2、 MyEclipse</p><p>  MyEclipse,即企業(yè)級工作平

59、臺(MyEclipse Enterprise Workbench ,簡稱MyEclipse)是對Eclipse IDE的擴展,是一個十分優(yōu)秀的用于開發(fā)Java, J2EE的 Eclipse 插件集合,它可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布和應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它功能非常強大,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hib

60、ernate,EJB3,JDBC等數(shù)據(jù)庫鏈接工具和HTML, CSS,Javascript等前臺頁面技術(shù)??梢哉fMyEclipse是幾乎囊括了目前所有主流開源產(chǎn)品的專屬Eclipse開發(fā)工具。</p><p>  綜合以上各個開發(fā)框架、工具平臺,結(jié)合起來做Java web應(yīng)用開發(fā)是相當好的,最后再把與用戶交互的的前臺頁面用Dreamweaver進行美化,使界面變得更加友好和人性化,使用起來更方便,從而形成一個實用

61、美觀的教學(xué)公共空余時間抽取系統(tǒng)。</p><p>  2.2.3 開發(fā)環(huán)境</p><p>  系統(tǒng)開發(fā)環(huán)境如表2.1所示。</p><p>  表2.1系統(tǒng)開發(fā)環(huán)境</p><p>  2.2.4 運行環(huán)境</p><p>  客戶端軟件環(huán)境如表2.2所示。</p><p>  表2.2 客戶

62、端軟件環(huán)境</p><p>  服務(wù)器端硬件環(huán)境如表2.3所示。</p><p>  表2.3 服務(wù)器硬件環(huán)境</p><p><b>  2.3本章小結(jié)</b></p><p>  本章主要進行了系統(tǒng)的需求分析和相關(guān)技術(shù)的介紹。首先了系統(tǒng)的業(yè)務(wù)和需要實現(xiàn)的功能,即進一步課題研究的目的。之后簡單介紹了系統(tǒng)的開發(fā)模式B/S

63、和SSH2框架,說明了前臺頁面JSP及其技術(shù),以及概述了開發(fā)平臺MyEclipse和數(shù)據(jù)庫系統(tǒng)MySQL。最后介紹了系統(tǒng)的開發(fā)和運行環(huán)境。在總體上了解了開發(fā)系統(tǒng)所需要的硬件、軟件環(huán)境和知識框架。</p><p>  第3章 系統(tǒng)概要設(shè)計</p><p>  3.1 系統(tǒng)的總體設(shè)計</p><p>  通過論文前面的系統(tǒng)業(yè)務(wù)需求分析、功能分析以及性能分析等章節(jié),已經(jīng)大

64、致了解總系統(tǒng)需要相應(yīng)的功能模塊,在這節(jié)中將會給出所有的模塊中的設(shè)計與模塊中的組合結(jié)構(gòu)設(shè)計,運行環(huán)境和開發(fā)工具以及相應(yīng)的開發(fā)技術(shù)和界面的設(shè)計等[10]。</p><p>  由于本系統(tǒng)是屬于典型的Java Web應(yīng)用開發(fā),采用B/S三層架構(gòu),在MyEclipse平臺上和SSH2框架的基礎(chǔ)上進行開發(fā),數(shù)據(jù)庫采用MySQL,前端頁面采用JSP和腳本語言采用javascript。</p><p>

65、  3.1.1 總體結(jié)構(gòu)設(shè)計</p><p>  除了前面提到的數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表現(xiàn)層以外,系統(tǒng)還增加了數(shù)據(jù)庫表實體和工具兩個包輔助系統(tǒng)更好地完成任務(wù)。前者是通過Hibernate映射得到的,后者主要是為了使系統(tǒng)更友好更安全。比如常用的工具分頁和加密系統(tǒng)就是很好的例子。</p><p>  3.1.2 運行環(huán)境設(shè)計</p><p>  本系統(tǒng)由于是以互聯(lián)網(wǎng)為

66、服務(wù)范圍的網(wǎng)絡(luò)平臺,因此其運行環(huán)境的設(shè)計不僅包括服務(wù)器端的運行環(huán)境,還包括客戶端的運行環(huán)境。</p><p>  服務(wù)器端的運行環(huán)境采用裝有Windows 7操作系統(tǒng)的PC機,以Apache Tomcat作為網(wǎng)絡(luò)服務(wù)器,采用MySQL5.0作為數(shù)據(jù)庫。</p><p>  客戶端運行環(huán)境要求客戶端PC機安裝IE 8及以上版本的瀏覽器,支持網(wǎng)絡(luò)連接。</p><p>

67、  3.1.3主要功能簡要設(shè)計</p><p>  1、數(shù)據(jù)的導(dǎo)入和存儲功能設(shè)計</p><p>  系統(tǒng)從教務(wù)處導(dǎo)入學(xué)生、教師以及機房的基本信息和課表到本地作為數(shù)據(jù)庫,管理員可以對該數(shù)據(jù)庫數(shù)據(jù)進行增、刪、改、查等各個操作。</p><p>  2、數(shù)據(jù)管理功能設(shè)計</p><p>  在數(shù)據(jù)庫中將首次導(dǎo)入的學(xué)生、老師密碼統(tǒng)一初始化,對班級主

68、要設(shè)定班級號和班級人數(shù)屬性;教師主要設(shè)定教師編號、姓名和密碼屬性;學(xué)生主要設(shè)定學(xué)號、姓名、所在班級和密碼屬性;機房主要設(shè)定機房號以及可容納人數(shù)屬性;課程信息表,除了以上各個表的主鍵以外,再添加一個課程名稱屬性。</p><p>  3、數(shù)據(jù)查詢功能設(shè)計</p><p>  用戶登錄以后可以根據(jù)教師id、班級id或者機房id查詢課程,所得到的結(jié)果以正常課程表的結(jié)構(gòu)顯示出來;也可以查詢總課程表

69、,即不添加任何條件,所有的上機課程都將顯示在課程表中。</p><p><b>  4、排課功能設(shè)計</b></p><p>  排課是只有管理員才有操作權(quán)限的功能,它分為兩種,一個是自動排課,一個是手動排課。自動排課根據(jù)輸入的教師id、班級id經(jīng)過一定算法獲得他們的公共空余時間并確定一個合適的(如果有的話)機房從而完成操作;手動排課則是在有特定需求或特別情況下,只能

70、由管理員手動操作完成[11]。系統(tǒng)的功能結(jié)構(gòu)圖如圖3.1。</p><p>  圖3.1 功能結(jié)構(gòu)圖</p><p><b>  3.2 數(shù)據(jù)庫設(shè)計</b></p><p>  3.2.1數(shù)據(jù)庫需求分析</p><p>  教學(xué)公共空余時間抽取系統(tǒng)主要是從教務(wù)處導(dǎo)入學(xué)生信息表、教師信息表、機房信息表、課程信息表、班級信息

71、表,然后在本地新建一個上課時間表。利用學(xué)生信息表、教師信息表可以查詢得到他們的公共空余時間,根據(jù)得到的時間再去查詢有足夠容量能夠容納的上機班級人數(shù)的機房,這樣組合起來查詢得到的結(jié)果便是排課時所需要得到的上機時間和地點。把得到的數(shù)據(jù)存儲到上課表里面。這樣就組成了一個完整的數(shù)據(jù)庫。</p><p><b>  1、 學(xué)生信息表</b></p><p>  學(xué)生信息表用來存

72、儲所有學(xué)生的基本信息。它包含了學(xué)生id,學(xué)生姓名,密碼,所在班級id。其中學(xué)生id是主鍵,班級id為外鍵。</p><p><b>  2、教師信息表</b></p><p>  教師信息表用來存儲教師的基本信息。它包含了教師id,教師姓名和密碼。教師id為主鍵。</p><p><b>  3、課程信息表</b><

73、/p><p>  課程信息表用來存儲課程的相關(guān)信息。它包含了課程id和課程名稱,上課時間,機房id,教師id和班級id。課程id為主鍵,機房id,教師id和班級id為外鍵。</p><p><b>  4、機房信息表</b></p><p>  機房信息表用來存儲機房的基本信息。它包含了機房id、機房名稱和機房容量。id為主鍵。</p>

74、<p><b>  5、班級信息表</b></p><p>  班級信息表主要存儲班級的基本信息。它包含了班級id、班級名稱和學(xué)生人數(shù)。id為主鍵。</p><p>  3.2.2數(shù)據(jù)庫的概要設(shè)計</p><p>  數(shù)據(jù)庫的概念設(shè)計就是要根據(jù)系統(tǒng)的需求分析弄清楚每個實體對象所需要包含的屬性以及每個實體之間的關(guān)系,并以此建立一個完

75、整的關(guān)系數(shù)據(jù)庫管理系統(tǒng),滿足系統(tǒng)的需求。E-R圖也就是實體-聯(lián)系圖,它是描述現(xiàn)實世界概念模型的有效方法,本章節(jié)就利用E-R圖表示出系統(tǒng)內(nèi)各個實體對象之間的關(guān)系模型[13]。由于系統(tǒng)在初步建設(shè)階段,暫時所需用到的對象比如教師、學(xué)生等的字段比較少,故而看起來可能會比較簡陋,如圖3.2~3.6所示。</p><p>  圖3.2 教師實體屬性圖</p><p>  圖3.3 學(xué)生實體屬性圖<

76、;/p><p>  圖3.4 班級實體屬性圖</p><p>  圖3.5 機房實體屬性圖</p><p>  圖3.6 課程實體屬性圖</p><p>  3.2.3物理結(jié)構(gòu)設(shè)計</p><p>  前面完成了數(shù)據(jù)庫的需求分析和概要設(shè)計,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計部分,那么接下來進行數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計。數(shù)據(jù)庫邏輯設(shè)計是

77、整個設(shè)計的前半段,包括所需的實體和關(guān)系,實體規(guī)范化等工作。設(shè)計的后半段則是數(shù)據(jù)庫物理設(shè)計,包括選擇數(shù)據(jù)庫產(chǎn)品,確定數(shù)據(jù)庫實體屬性(字段)、數(shù)據(jù)類型、長度、精度確定、DBMS頁面大小等。由于教學(xué)公共空余時間抽取系統(tǒng)還是一個初步開發(fā)的系統(tǒng),暫時所涉及到的教師、學(xué)生和機房等實體只需要很少的屬性,后面如有需要可以再進行擴展,并不影響現(xiàn)有功能。現(xiàn)階段需要的實體對象及其屬性表如下所示。 </p><p>  表3.1 教師信

78、息表</p><p>  表3.2 學(xué)生信息表</p><p>  表3.3 機房信息表</p><p>  表3.4 課程信息表</p><p>  表3.5 班級信息表</p><p>  表3.6 課程申請表</p><p>  表3.7 管理員信息表</p><p&g

79、t;<b>  3.3本章小結(jié)</b></p><p>  本章的主要工作是系統(tǒng)的概要設(shè)計。前半部分結(jié)合系統(tǒng)功能結(jié)構(gòu)圖分析了系統(tǒng)的四個功能模塊,即數(shù)據(jù)導(dǎo)入模塊,用戶管理模塊,課程查詢模塊和排課模塊。并對通過對數(shù)據(jù)庫的需求分析,建立一個完整的數(shù)據(jù)庫系統(tǒng),為后續(xù)的系統(tǒng)開發(fā)和編碼實現(xiàn)打下了基礎(chǔ)。</p><p>  第4章 系統(tǒng)詳細設(shè)計與實現(xiàn)</p><

80、p>  經(jīng)過前面的系統(tǒng)需求分析和概要設(shè)計,在總體思路上來說,教學(xué)公共空余時間抽取系統(tǒng)已經(jīng)初具模型,但是只有由代碼構(gòu)成的系統(tǒng)才能投入使用,本章便介紹系統(tǒng)的具體設(shè)計與實現(xiàn)。再通過不斷的測試,證實了系統(tǒng)的可用性,穩(wěn)定性才能說完成了課題的研究。</p><p>  4.1 前臺頁面設(shè)計</p><p>  近幾年,UI這個詞開始火起來。UI,在這里我們?nèi)∫釻ser’s Interface,即

81、人機界面。以前人們一直忽視了界面設(shè)計工作,甚至國內(nèi)現(xiàn)在還有很多人覺得它是一個陌生的詞,從事這方面工作的人被貶稱為“美工”。但是隨著互聯(lián)網(wǎng)的飛速發(fā)展,人們對軟件的要求也越來越高,越來越注重全方位的體驗。因此軟件現(xiàn)在要做好的不僅僅是功能的完善,人性化、友好的人機交互甚至已經(jīng)成了人們選擇軟件的第一考慮因素。</p><p>  本系統(tǒng)是一個網(wǎng)站,所以展示在用戶面前的就是前臺頁面。界面可以不華麗,走簡潔路線,但是,要仔細

82、做好每一個細節(jié),讓整個界面看上去就很舒服。</p><p>  4.2功能詳細設(shè)計和實現(xiàn)</p><p>  根據(jù)系統(tǒng)總體設(shè)計部分中系統(tǒng)功能模塊的劃分和前面的設(shè)計思路,進行各個功能所需的實體類以及數(shù)據(jù)結(jié)構(gòu)和業(yè)務(wù)的設(shè)計,最后編寫具體代碼進行整體的實現(xiàn)。</p><p>  4.2.1 用戶登錄</p><p>  用戶進入系統(tǒng)首頁以后需要登錄才

83、能完成后續(xù)操作。登錄時,如果用戶輸入正確的賬戶和密碼,則進入登錄成功頁面,否則再次返回到登錄界面。具體過程是用戶點擊確認,前臺頁面將數(shù)據(jù)提交到服務(wù)器,服務(wù)器調(diào)用業(yè)務(wù)邏輯層定義的登錄方法訪問數(shù)據(jù)庫進行驗證,具體實現(xiàn)代碼如下:</p><p>  public String execute() throws Exception {</p><p>  System.out.println(ac

84、count);</p><p>  System.out.println(password);</p><p>  System.out.println("type:"+type);</p><p>  if (type == 1) {</p><p>  Student teststudent = new Student

85、();</p><p>  teststudent.setName(account);</p><p>  teststudent.setPassword(password);</p><p>  if ((student = studentDao.findStudentByAccout(teststudent))!= null) {</p><

86、p>  System.out.println("success");</p><p>  return "student";</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (type == 2)

87、 {</p><p>  teacher = new Teacher();</p><p>  teacher.setName(account);</p><p>  teacher.setPassword(password);</p><p>  if ((teacher = teacherBiz.dologin(teacher))!=nu

88、ll) {</p><p>  System.out.println("teach success");</p><p>  return "teacher";</p><p><b>  }</b></p><p><b>  }</b></p>

89、<p>  return ERROR;</p><p><b>  }</b></p><p>  登錄流程如圖4.1所示。</p><p>  圖4.1用戶登錄流程圖</p><p>  在用戶登錄具體實現(xiàn)界面的前臺編碼中,采用了javascript對登錄進行控制,如果出現(xiàn)用戶輸入的用戶名為空、輸入不合法

90、字符或者密碼為空的情況,則彈出信息提示輸入不合法或不能為空。界面如圖4.2所示。</p><p>  圖4.2 用戶登錄界面</p><p>  4.2.2 課表查詢</p><p>  所有用戶登錄進入系統(tǒng)以后,都可以進行課表查詢操作,查詢角度分別有按教師查詢課表,即輸入教師編號得到該教師所有相關(guān)的課程;按班級或者學(xué)生查詢課表,比如系統(tǒng)自動排課首先建立在對教師和班

91、級的課表查詢基礎(chǔ)上,而學(xué)生登錄系統(tǒng)以后當然希望得到自己的課表;按機房查詢機房相關(guān)的課表。以上輸入的條件在課表中將不會顯示,只有查詢所有課程的時候需要把教師、班級、機房以及上課時間等所有信息都展示在界面上。查詢所有課程時,列出的查詢結(jié)果被放在同一個表格中,顏色隔行相間。因為該系統(tǒng)需要呈現(xiàn)給用戶看到的是上機課的課表,所以課表中只需要把與該用戶相關(guān)的上機課展現(xiàn)在界面上,用一個c:forEach循環(huán)實現(xiàn),以一個一般的表格列出來即可,在每一行里顯

92、示課程的時間,也能達到同樣的效果。況且有分頁工具,可以隨時改變每頁顯示的數(shù)量。下面貼出后臺部分相關(guān)代碼。</p><p>  根據(jù)教師ID查詢課程:</p><p>  public List<Course> getCoursesByTeacherId(Integer id) {</p><p>  String hql = "from Cou

93、rse where teacher.id ="+id+" order by id";</p><p>  return super.getHibernateTemplate().find(hql);</p><p><b>  }</b></p><p>  根據(jù)班級ID查詢課程:</p><p

94、>  public List<Course> getCoursesByStudentsclassId(Integer id) {</p><p>  String hql = "from Course where studentsclass.id ="+id+"order by id";</p><p>  return super

95、.getHibernateTemplate().find(hql);</p><p><b>  }</b></p><p>  分頁工具的后臺實現(xiàn)代碼如下:</p><p>  public List getByFenYe(String hql,</p><p>  int pageNo, int pageSize)

96、{//第二個參數(shù)為當前頁數(shù),第三個參數(shù)為每頁顯示幾條記錄</p><p>  Session session = super.getSession();</p><p>  List result = session.createQuery(hql).setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list(

97、);</p><p>  session.close();</p><p>  return result;</p><p><b>  }</b></p><p><b>  /*</b></p><p><b>  * 獲得總條數(shù)</b></p

98、><p><b>  */</b></p><p>  public Long getTotalCount(String hql) {</p><p>  return (Long)super.getHibernateTemplate().find(hql).get(0);</p><p><b>  }</

99、b></p><p><b>  /*</b></p><p>  * 得到分成多少頁的方法</p><p>  * pageSize 每頁要顯示幾條</p><p><b>  */</b></p><p>  public Long getTotalPages(St

100、ring hql,int pageSize) {</p><p>  Long totalpages ;</p><p>  Long all = this.getTotalCount(hql);//得到總條數(shù)</p><p>  //totalpages = (all%2==0)?(all/2):(all/2+1);//2代表每頁顯示2條</p>&

101、lt;p>  totalpages = (all%pageSize==0)?(all/pageSize):(all/pageSize+1);//這里換成變量</p><p>  return totalpages;</p><p><b>  }</b></p><p><b>  }</b></p>

102、<p><b>  前臺相關(guān)代碼:</b></p><p>  <td colspan="7" ></p><p>  當前頁數(shù)[${pageNumber}/${totalpages}]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>

103、<p>  <a href="course_doGetAllCourse.action?pageNumber=1&state=${state}" ><font color="gray">首頁</font></a></p><p>  <a href="course_doGetAllCour

104、se.action?pageNumber=${pageNumber-1}&state=${state}"><font color="gray">上一頁</font></a></p><p>  <a href="course_doGetAllCourse.action?pageNumber=${pageNumber+1

105、}&state=${state}"><font color="gray">下一頁</font></a></p><p>  <a href="course_doGetAllCourse.action?pageNumber=${totalpages}&state=${state}"><fon

106、t color="gray">末頁</font></a></p><p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>  總記錄數(shù)[${totalcounts}]條</td></p><p>  學(xué)生登錄系統(tǒng)

107、以后,還有修改密碼功能。參考教務(wù)處網(wǎng)站,修改密碼需提供原密碼,而不是密保問題或者密保手機之類的。具體實現(xiàn)界面分別如圖4.3與圖4.4所示。在圖4.3中,由于我在插入測試數(shù)據(jù)時都是選擇下拉框默認的選項,所以出現(xiàn)了很多課程都安排第一機房以及20100611班的情況。</p><p>  圖4.3 學(xué)生查詢課表界面</p><p>  圖4.4 學(xué)生修改密碼界面</p><p

108、>  4.2.3 排課功能</p><p>  排課功能的思路是以增加課程的形式編排課程。首先由管理員輸入或選擇需要排課的班級、教師以及課程,根據(jù)在課程信息表中查詢獲得所有教師或者班級出現(xiàn)的時間,因為時間在數(shù)據(jù)庫中存儲的形式是1~35的整數(shù),根據(jù)一定規(guī)律依次遞增,與課表的每一大節(jié)課相對應(yīng),所以根據(jù)這里得到的整數(shù),從課表時間集合中取非,再循環(huán)搜索每一個時間下是否有容量大于班級人數(shù)的空閑的機房,如果有,就可以選

109、擇把課程安排在這個時間這個機房,并彈出“排課成功”的窗口;如果沒有則繼續(xù)搜索。若直到循環(huán)結(jié)束都沒能成功編排課程,則給出對應(yīng)的提示,比如如果沒有足夠大的機房是空閑的,則提示“不存在滿足班級學(xué)生人數(shù)的機房!”,具體實現(xiàn)代碼如下:</p><p>  public String doAddCourse(){</p><p>  HttpServletResponse response = Ser

110、vletActionContext.getResponse();</p><p>  response.setContentType("text/html");</p><p>  response.setCharacterEncoding("utf-8");</p><p>  ctList = classtimesBiz.

111、getAllClasstimes();//查詢?nèi)可险n時間(結(jié)果按ID排序,默認增加數(shù)據(jù)最好按照時間升序,否則數(shù)據(jù)庫表建議增加能夠按照時間排序的字段)</p><p>  studentsclass = studentsclassBiz.getStudentsclassById(studentsclass.getId());</p><p>  teacher = teacherBiz.g

112、etTeacherById(teacher.getId());</p><p>  List<Baseroom> bList = baseroomBiz.getBaseroomBystudentsnum(studentsclass.getStudentsnum());//根據(jù)班級人數(shù)查詢大于等于班級學(xué)生人數(shù)的機房集合(結(jié)果按照機房大小升序排列)</p><p>  boolea

113、n a=false;//看選擇的教師是否有時間。</p><p>  boolean b=false;//看選擇的班級是否有時間。</p><p>  boolean c=false;//看是否有滿足班級學(xué)生人數(shù)的機房</p><p>  boolean d=false;//看機房是否有時間</p><p>  Integer num =0;

114、</p><p>  for (Classtimes classtimes1 : ctList) {//循環(huán)上課時間</p><p>  List<Course> cList1 = courseBiz.getCoursesByTeacherAndTime(teacher.getId(), classtimes1.getId());// 根據(jù)教師ID和循環(huán)到的時間查詢課程表集合&

115、lt;/p><p>  if (cList1.size() <= 0) {</p><p>  a = true;// 循環(huán)到的時間,選擇的教師正好空閑</p><p>  List<Course> cList2 = courseBiz.getCoursesByStudentsclassAndTime(studentsclass.getId(), cl

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論