版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> (20 屆)</b></p><p> 教學(xué)公共空余時(shí)間抽取系統(tǒng)的設(shè)計(jì)與實(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ù)量增多不斷加大。而作為教師,選取特定時(shí)間特點(diǎn)地點(diǎn)和學(xué)生交流變得越來(lái)越困難,從而需要一套軟件協(xié)助選取最適宜的教學(xué)公余時(shí)間。本課題旨在建立一套先進(jìn)的課程信息采集與公余信息處理的軟件系統(tǒng),以用于面向教室公余管理、學(xué)生公余和教師公余管理等的研發(fā)、設(shè)計(jì)與應(yīng)用。</p&g
3、t;<p> 在通過(guò)自己對(duì)現(xiàn)有的學(xué)校官方網(wǎng)站的教學(xué)管理系統(tǒng)和將要實(shí)現(xiàn)功能的功能詳細(xì)分析,并且與指導(dǎo)教師探討以后,決定與前者一樣采用B/S模式,開(kāi)發(fā)一個(gè)基于web的教學(xué)公共空余時(shí)間抽取系統(tǒng),一方面便于與學(xué)校的教務(wù)管理網(wǎng)站由學(xué)校統(tǒng)一管理,另一方面,更方便老師隨時(shí)隨地可以提交需求,教務(wù)工作人員處理老師提交的申請(qǐng),以及同學(xué)們對(duì)自己課程的情況掌握等各個(gè)功能。</p><p> 本系統(tǒng)在MyEclipse平
4、臺(tái)下,采用SSH2框架,前端采用JSP和javascript,數(shù)據(jù)庫(kù)采用MySQL,經(jīng)過(guò)系統(tǒng)測(cè)試,系統(tǒng)運(yùn)行穩(wěn)定,實(shí)現(xiàn)了教學(xué)公共空余時(shí)間的抽取和對(duì)上機(jī)課程的排課等功能。</p><p> 關(guān)鍵詞:公共空余時(shí)間;排課;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 國(guó)內(nèi)外教學(xué)公共空余時(shí)間抽取系統(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ù)和工具簡(jiǎn)介5</p><p> 2.2.1 相關(guān)技術(shù)概述5</p><p> 2.2.2
14、相關(guān)工具簡(jiǎn)介8</p><p> 2.2.3 開(kāi)發(fā)環(huán)境9</p><p> 2.2.4 運(yùn)行環(huán)境9</p><p><b> 2.3本章小結(jié)9</b></p><p> 第3章 系統(tǒng)概要設(shè)計(jì)10</p><p> 3.1 系統(tǒng)的總體設(shè)計(jì)10</p><p&
15、gt; 3.1.1 總體結(jié)構(gòu)設(shè)計(jì)10</p><p> 3.1.2 運(yùn)行環(huán)境設(shè)計(jì)10</p><p> 3.1.3主要功能簡(jiǎn)要設(shè)計(jì)10</p><p> 3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)11</p><p> 3.2.1數(shù)據(jù)庫(kù)需求分析11</p><p> 3.2.2數(shù)據(jù)庫(kù)的概要設(shè)計(jì)12</p>
16、<p> 3.2.3物理結(jié)構(gòu)設(shè)計(jì)14</p><p> 3.3本章小結(jié)16</p><p> 第4章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)17</p><p> 4.1 前臺(tái)頁(yè)面設(shè)計(jì)17</p><p> 4.2功能詳細(xì)設(shè)計(jì)和實(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)測(cè)試28</p><p> 4.3.1 測(cè)試的概念及目的28</p><p> 4.3.2 測(cè)試環(huán)境28</p><p> 4.3.3 瀏覽器兼容性測(cè)試28</p>
18、<p> 4.3.4主要功能性能測(cè)試29</p><p> 4.4 本章小結(jié)31</p><p><b> 結(jié) 論32</b></p><p><b> 參考文獻(xiàn)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> 隨著國(guó)家教學(xué)改革的不斷深化,高校擴(kuò)大招生的腳步不斷前進(jìn),隨著大學(xué)生人數(shù)的不斷增加,課程種
20、類和數(shù)量的不斷增多,教學(xué)密度不斷加大。學(xué)校的機(jī)房管理工作量也因此不斷加大,機(jī)房管理人員對(duì)機(jī)房的管理難度不斷提高[1]。每學(xué)期開(kāi)始的時(shí)候,機(jī)房管理人員統(tǒng)計(jì)需要上機(jī)的課程和學(xué)生的工作量都比較大,過(guò)程也相當(dāng)繁瑣,主要原因就是機(jī)房管理的方法和手段過(guò)于落后,缺乏一套可以協(xié)助管理的軟件系統(tǒng),特別是對(duì)于實(shí)驗(yàn)課等實(shí)踐課程,需要管理人員用自己的大腦和雙手去安排和管理,而這一手段將越來(lái)越難以滿足越來(lái)越大的數(shù)據(jù)和越來(lái)越快的效率需求。為了提高教學(xué)辦公效率和質(zhì)量
21、,減輕老師和機(jī)房管理人員的工作量和工作壓力,提高教學(xué)資源利用率,真正實(shí)現(xiàn)自動(dòng)化辦公,從而急需研發(fā)出一套完整的機(jī)房和實(shí)驗(yàn)、上機(jī)等課程的管理系統(tǒng)。</p><p> 1.1.2 課題研究的目的和意義</p><p><b> 本課題的主要目的:</b></p><p> 開(kāi)發(fā)一個(gè)針對(duì)學(xué)校所有老師、學(xué)生、和機(jī)房的公共空余時(shí)間的管理系統(tǒng),利用他們
22、的公共空余時(shí)間,系統(tǒng)將在學(xué)期開(kāi)始的時(shí)候進(jìn)行初始化,然后從教務(wù)處同步各個(gè)老師、學(xué)生和機(jī)房的信息以及課程數(shù)據(jù),從而在需要安排上機(jī)實(shí)驗(yàn)課程時(shí)能根據(jù)教師和班級(jí)信息在一定算法下得到最佳的上機(jī)時(shí)間和地點(diǎn)。</p><p><b> 本課題的主要意義:</b></p><p> 隨著學(xué)生人數(shù)的不斷增多,課程種類和數(shù)目的不斷增加,教學(xué)密度也越來(lái)越高。而在此背景下,上機(jī)課程的安排還
23、是依靠著老師、學(xué)生和機(jī)房管理人員在口頭與書(shū)面的不斷交流下完成的。而這個(gè)形式必然會(huì)引起課程密度安排不合理,教學(xué)資源分配不合理,教學(xué)安排效率低等各個(gè)問(wèn)題[2]。手工管理方式在管理質(zhì)量和效率上,根本不能適應(yīng)大規(guī)模的管理要求。隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展和普及,借助于該系統(tǒng),管理人員將從繁瑣的工作中解脫出來(lái),老師也不必為了安排上機(jī)不斷在學(xué)生和機(jī)房中間徘徊,學(xué)生也能隨時(shí)隨地掌握到自己的上機(jī)課程信息。</p><p> 1.
24、2 國(guó)內(nèi)外教學(xué)公共空余時(shí)間抽取系統(tǒng)的歷史與發(fā)展</p><p> 教學(xué)公共空余時(shí)間抽取系統(tǒng),說(shuō)到底就是一個(gè)機(jī)房排課系統(tǒng),是教務(wù)教學(xué)管理系統(tǒng)的一個(gè)子系統(tǒng),類似于各大教務(wù)處網(wǎng)站的教學(xué)安排,只是它涉及的是具體的某一方面。</p><p> 目前排課系統(tǒng)的研究主要是放在各個(gè)學(xué)校的教學(xué)大綱中的理論課程上面,關(guān)于機(jī)房的管理研究卻是很難得的。機(jī)房排課與理論課的編排有相似的地方,又有很多不同的地方理論
25、課的編排限制因素比較少,主要考慮到教室容量大于班級(jí)人數(shù)就可以了,而上機(jī)課的編排不但要考慮到這一點(diǎn),還要權(quán)衡教師、學(xué)生、課程和機(jī)房等各個(gè)方面的影響,因而使機(jī)房的排課變得復(fù)雜[3]。所以本課題的研究目的正是為了填補(bǔ)和平衡這一情況。</p><p><b> 1.3 課題內(nèi)容</b></p><p> 本課題所研究的是一個(gè)以B/S為架構(gòu)的web應(yīng)用。它主要是為了實(shí)現(xiàn)機(jī)房
26、排課的自動(dòng)化和信息化,以減輕教師和機(jī)房管理人員的工作量,同時(shí)也加快辦公效率,提高教學(xué)資源利用率[4]。在該系統(tǒng)中,學(xué)生可以查詢到自己的上機(jī)課課表;教師也可以查詢課表信息,但是還可以遞交上課申請(qǐng);管理員則負(fù)責(zé)維護(hù)整個(gè)系統(tǒng),以及對(duì)教師所提交的和開(kāi)學(xué)時(shí)候的數(shù)據(jù)處理,如教務(wù)處數(shù)據(jù)的導(dǎo)入和存儲(chǔ)更新、根據(jù)教學(xué)大綱預(yù)排好部分上機(jī)課程。以此形成一個(gè)完整的機(jī)房管理系統(tǒng),可以自動(dòng)對(duì)教師、學(xué)生和機(jī)房的公共空余時(shí)間進(jìn)行篩選和抽取,終而排出滿意的課程表[5]。&
27、lt;/p><p><b> 1.4論文的結(jié)構(gòu)</b></p><p> 整個(gè)論文主要分為四章。</p><p> 第1章為緒論部分,綜合闡述了教學(xué)公共空余時(shí)間抽取系統(tǒng)的背景,通過(guò)背景介紹課題研究的目的和意義,展示了教學(xué)公共空余時(shí)間抽取系統(tǒng)國(guó)內(nèi)外的發(fā)展歷程,介紹整個(gè)系統(tǒng)的大體的規(guī)劃和整體的論文結(jié)構(gòu)。</p><p>
28、 第2章包括了對(duì)教學(xué)公共空余時(shí)間抽取系統(tǒng)的需求分析以及總體設(shè)計(jì),用用戶用例圖、以及業(yè)務(wù)流程圖等表明系統(tǒng)的總體需求;結(jié)構(gòu)圖闡述了系統(tǒng)的總體架構(gòu)。</p><p> 第3章簡(jiǎn)單的描述了系統(tǒng)的概要設(shè)計(jì)以及模塊設(shè)計(jì),介紹了數(shù)據(jù)庫(kù)系統(tǒng)的概要設(shè)計(jì)和數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì),列出的每個(gè)表的屬性及字段類型和長(zhǎng)度。</p><p> 第3章包括了系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn),從界面到功能模塊給予詳細(xì)設(shè)計(jì)以及實(shí)現(xiàn)過(guò)程
29、和相應(yīng)的測(cè)試結(jié)果,還包括系統(tǒng)的部分測(cè)試以及整體測(cè)試。</p><p> 最后是本文的結(jié)論部分,對(duì)本文工作進(jìn)行了總結(jié)。</p><p> 第2章 系統(tǒng)需求分析及相關(guān)技術(shù)</p><p> 軟件工程認(rèn)為,在軟件的生命周期中,系統(tǒng)的需求分析是最重要的一個(gè)階段。軟件需求分析的質(zhì)量對(duì)軟件開(kāi)發(fā)的影響深遠(yuǎn),如果能做出一個(gè)高質(zhì)量的需求分析,后期的軟件開(kāi)發(fā)階段將會(huì)非常輕松,做出
30、來(lái)的系統(tǒng)功能非常全面而且各個(gè)細(xì)節(jié)都會(huì)完成得很好,對(duì)軟件開(kāi)發(fā)往往起到事半功倍的效果,所謂“磨刀不誤砍柴功”。反之,若前期需求分析沒(méi)做好,在后續(xù)階段還需要不斷地改需求、改代碼、改界面,更嚴(yán)重的甚至需要重新設(shè)計(jì)系統(tǒng),總之,改正需求分析階段產(chǎn)生的錯(cuò)誤將付出高昂的代價(jià)[6]。</p><p><b> 2.1系統(tǒng)需求分析</b></p><p> 2.1.1 業(yè)務(wù)分析<
31、;/p><p> 系統(tǒng)主要完成的是在對(duì)各個(gè)用戶對(duì)象取了空余時(shí)間的交集以后,對(duì)數(shù)據(jù)進(jìn)行處理,選擇一個(gè)合適的機(jī)房,完成對(duì)上機(jī)課程的編排功能;可以讓用戶在登錄以后查詢到最新的上機(jī)課表。那么用戶分為三個(gè)類型。</p><p> (1)學(xué)生。如果按用戶等級(jí)劃分權(quán)限,學(xué)生用戶是最低權(quán)限的,他們只有很少的一部分操作:登錄、修改密碼以及課表查詢。</p><p> ?。?)教師。教
32、師用戶除了擁有學(xué)生用戶的操作以外,還可以進(jìn)行上機(jī)課程的申請(qǐng)。因?yàn)橛械恼n程在預(yù)排課時(shí)沒(méi)有納入其中,便需要教師選取時(shí)間與機(jī)房管理人員進(jìn)行溝通。此時(shí)教師只需要把所教班級(jí)提交上去,經(jīng)管理人員提交給系統(tǒng)自動(dòng)編排便可。</p><p> ?。?)管理員。每個(gè)系統(tǒng)都需要管理員。本系統(tǒng)的管理員就是教務(wù)工作人員。他們有一個(gè)單獨(dú)的登錄入口,在后臺(tái)操作數(shù)據(jù),完成對(duì)系統(tǒng)的維護(hù)。主要操作有自動(dòng)排課和手動(dòng)排課。而自動(dòng)排課是本系統(tǒng)的核心功能,
33、它所涉及的需求分析和相對(duì)應(yīng)的算法設(shè)計(jì)也是本次畢業(yè)設(shè)計(jì)的主要工作量所在。</p><p> 由于管理員可直接在后臺(tái)頁(yè)面登錄對(duì)系統(tǒng)進(jìn)行操作,在下面的流程圖只包含了教師和學(xué)生的操作流程。如圖2.1。</p><p> 圖2.1 業(yè)務(wù)流程圖</p><p> 根據(jù)以上分析,該系統(tǒng)主要有三個(gè)參與者:學(xué)生、教師和管理員。每個(gè)用戶需要實(shí)現(xiàn)的功能也都一一列出來(lái)的,據(jù)此分別畫(huà)出
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> 前面說(shuō)了,系統(tǒng)主要有三大用戶對(duì)象,分別為學(xué)生、教師和管理員。而每個(gè)用戶類型對(duì)系統(tǒng)的操作和需求
35、都是不一樣的,因此需要再細(xì)分為四大模塊,分別為數(shù)據(jù)的導(dǎo)入和存儲(chǔ)模塊,用戶的管理模塊,課程的查詢模塊以及排課模塊。每個(gè)類型的用戶所操作的是這幾個(gè)模塊中的一個(gè)或者幾個(gè),使系統(tǒng)具有高內(nèi)聚低耦合的優(yōu)點(diǎn)。</p><p> ?。?)數(shù)據(jù)的導(dǎo)入和存儲(chǔ)模塊:教務(wù)處導(dǎo)入學(xué)生、教師和機(jī)房的課表存儲(chǔ)在本地作為數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)包含學(xué)生、教師和機(jī)房的基本信息,比如學(xué)生的學(xué)號(hào)、姓名、班級(jí),教師的教師編號(hào)和姓名等。</p>&l
36、t;p> ?。?)用戶的管理模塊:管理員才有的操作權(quán)限,他可以對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行增、刪、改、查操作,對(duì)系統(tǒng)進(jìn)行維護(hù)。</p><p> (3)課程的查詢模塊:所有用戶需要登錄以后才能進(jìn)行該操作,可以分別從教室、學(xué)生和機(jī)房的角度進(jìn)行課表查詢。</p><p> ?。?) 排課模塊:排課分為兩種,一種是開(kāi)學(xué)由管理員直接按照教學(xué)大綱所進(jìn)行的預(yù)排課,一種是由教師預(yù)約申請(qǐng)的排課。如不出意外,
37、管理員只需輸入課程信息和教師、班級(jí)便可由系統(tǒng)自動(dòng)完成排課,但在某些特定情況下則由管理員手動(dòng)排課或調(diào)課。</p><p> 2.1.3 性能需求分析</p><p><b> 簡(jiǎn)易性</b></p><p> 簡(jiǎn)易性包括兩個(gè)方面,一個(gè)是界面的簡(jiǎn)潔,因?yàn)橄到y(tǒng)用戶都是學(xué)校教師和學(xué)生,使用系統(tǒng)的目的在于那一張課程表,因此不需要多華麗的界面,課程表
38、能讓用戶看起來(lái)很舒服就可以了;另一個(gè)是容易使用,因?yàn)椴皇撬杏脩舳忌瞄L(zhǎng)使用計(jì)算機(jī)。</p><p><b> 可擴(kuò)展性</b></p><p> 系統(tǒng)暫時(shí)只是實(shí)現(xiàn)一個(gè)核心模塊——排課,而且在從教務(wù)處導(dǎo)入數(shù)據(jù)的時(shí)候只是利用到其中一小部分字段,在后續(xù)工作中肯定會(huì)有業(yè)務(wù)需求的增加,系統(tǒng)也肯定會(huì)需要完善,因此必須保證以后添加功能時(shí)不會(huì)“牽一發(fā)而動(dòng)全身”。</p>
39、;<p><b> 安全性</b></p><p> 該系統(tǒng)雖然不涉及什么高級(jí)機(jī)密,但是也關(guān)系到教學(xué)系統(tǒng)的穩(wěn)定,因此必須保證系統(tǒng)的安全性。</p><p><b> 穩(wěn)定性</b></p><p> 跟安全性一樣要理解本系統(tǒng)的重要性,且需保證隨著數(shù)據(jù)和時(shí)間的改動(dòng),系統(tǒng)的穩(wěn)定性不受影響,以此保證教務(wù)教學(xué)
40、系統(tǒng)的正常運(yùn)行。</p><p> 2.2相關(guān)技術(shù)和工具簡(jiǎn)介</p><p> 2.2.1 相關(guān)技術(shù)概述</p><p> 1、B/S開(kāi)發(fā)模式 </p><p> B/S即是Browser/Serve,瀏覽器/服務(wù)器模式,是web興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,其最大的優(yōu)點(diǎn)是只要是裝有瀏覽器的能上網(wǎng)的電腦一臺(tái),就可以在任何地方進(jìn)行操作而不用
41、安裝任何專用軟件,零安裝零更新零維護(hù),系統(tǒng)的擴(kuò)展十分簡(jiǎn)單。也正是由于這個(gè)優(yōu)勢(shì),決定了B/S架構(gòu)越來(lái)越受大眾喜愛(ài),被越來(lái)越多的開(kāi)發(fā)人員和用戶所青睞,其發(fā)展速度也是越來(lái)越快,應(yīng)用范圍越來(lái)越廣[7]。</p><p> 它的三層架構(gòu)具體是指數(shù)據(jù)訪問(wèn)層(DAL)、業(yè)務(wù)邏輯層(BLL)、和應(yīng)用表示層(UI)。表示層(UI):也就是我們講的與用戶交互的前臺(tái)頁(yè)面,即用戶在使用一個(gè)系統(tǒng)的時(shí)候他所看到的。它主要是以WEB的方式表
42、現(xiàn)出來(lái),也可以用WINFORM的方式表現(xiàn)出來(lái),也可以用aspx的WEB方式表現(xiàn)出來(lái),如果邏輯層非常的強(qiáng)大和完善,那么不管表現(xiàn)層怎么定義和改變,邏輯層都可以很好地為其提供服務(wù)。在業(yè)務(wù)邏輯層(BLL):它是一個(gè)針對(duì)具體問(wèn)題的操作,換種說(shuō)法,也可以說(shuō)是對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)的業(yè)務(wù)邏輯進(jìn)行處理。如果說(shuō)數(shù)據(jù)層是磚頭、水泥和沙子,那么邏輯層就是在用它們建房子。數(shù)據(jù)訪問(wèn)層(DAL):這層所做的事務(wù)是直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,對(duì)數(shù)據(jù)進(jìn)行增添、刪除、修改、查
43、找等操作。它的主要功能是對(duì)原始數(shù)據(jù)進(jìn)行的各種操作,而不是指原始數(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框架其實(shí)就是Struts2+Hibernate+Spring,此框架是一個(gè)典型的三層架構(gòu)。
44、接下來(lái)分別介紹一下這三個(gè)框架。</p><p> Struts2雖然看上去是Struts1的下一代產(chǎn)品,但是它們兩者差別非常的大。Struts 2以WebWork為核心,處理用戶的請(qǐng)求選擇采用攔截器的機(jī)制,這樣的設(shè)計(jì)便可以讓業(yè)務(wù)邏輯控制器與ServletAPI完全脫離開(kāi)來(lái)。雖然從Struts 1到Struts 2有著太大的變化,但是相對(duì)于WebWork,Struts2的變化很小,所以Struts 2可以理解為W
45、ebWork而不是Struts1的下一代產(chǎn)品。Struts2的優(yōu)點(diǎn)有以下幾點(diǎn):</p><p> 實(shí)現(xiàn)了MVC模式,層次結(jié)構(gòu)清晰,使程序員只需關(guān)心業(yè)務(wù)邏輯的實(shí)現(xiàn);</p><p> 包含大量的標(biāo)簽庫(kù),從而大大提高了開(kāi)發(fā)的效率;</p><p> 提供豐富的攔截器實(shí)現(xiàn);</p><p> 只需要通過(guò)配置文件,就可以掌握整個(gè)系統(tǒng)各個(gè)部分之
46、間的關(guān)系;</p><p> 異常機(jī)制處理,在配置文件中配置好處理機(jī)制,即可處理相應(yīng)的異常情況。</p><p> Spring框架是為了解決軟件開(kāi)發(fā)的復(fù)雜性問(wèn)題而創(chuàng)建的。Spring使用的是基本的JavaBean,由它去完成以前只可能由EJB才能完成的事情。但是Spring的用途不僅僅局限于服務(wù)器端的開(kāi)發(fā)。無(wú)論是從簡(jiǎn)單性、可測(cè)試性還是松耦合性的角度來(lái)說(shuō),絕大部分Java應(yīng)用都可以從S
47、pring中受益。Spring框架的優(yōu)點(diǎn)如下:</p><p><b> 絲毫沒(méi)有入侵性;</b></p><p> 各個(gè)組件之間的耦合極為松散,也就是我們常說(shuō)的低耦合;</p><p> 無(wú)需程序員自己實(shí)現(xiàn)singleton模式;</p><p> 通過(guò)AOP,可以實(shí)現(xiàn)事務(wù)管理和日志管理;</p>
48、<p> Hibernate版本更新速度很快,目前為止有兩個(gè)階段性的版本:Hibernate2和Hibernate3。那么Hibernate框架的優(yōu)點(diǎn)如下:</p><p> 對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射(ORM)使用時(shí)只需操縱對(duì)象,使開(kāi)發(fā)更加面向?qū)ο蠡?lt;/p><p><b> 無(wú)入侵性;</b></p><p> hql語(yǔ)句簡(jiǎn)
49、潔明了,大大減少了jdbc和sql操作數(shù)據(jù)庫(kù)時(shí)候的代碼量;</p><p><b> 移植性好。</b></p><p> 表現(xiàn)層采用的是傳統(tǒng)的JSP技術(shù)。JSP自1999年問(wèn)世以來(lái),經(jīng)過(guò)十幾年的發(fā)展,由于它應(yīng)用之廣泛和表現(xiàn)之穩(wěn)定,為其作為表現(xiàn)層技術(shù)打下了堅(jiān)實(shí)良好的基礎(chǔ)。</p><p> 中間層采用的是流行的Spring+Hiberna
50、te,為了把DAL(數(shù)據(jù)訪問(wèn)層)和BLL(業(yè)務(wù)邏輯層)分離開(kāi)來(lái),又把中間層細(xì)分為Web層和Service層(即業(yè)務(wù)邏輯層)、DAO層和PO。利用這樣的三層體系將業(yè)務(wù)規(guī)則、合法性校驗(yàn)及數(shù)據(jù)訪問(wèn)等工作放在中間層進(jìn)行處理。從以上說(shuō)明可以看出來(lái),客戶端是不直接與數(shù)據(jù)庫(kù)打交道的,而是先通過(guò)組件與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)交換、傳遞數(shù)據(jù)。</p><p><b> 3、JSP</b></
51、p><p> JSP是由SunMicrosystems公司發(fā)起、許多公司參與而創(chuàng)建的一種動(dòng)態(tài)技術(shù)標(biāo)準(zhǔn)。JSP網(wǎng)頁(yè)即是在傳統(tǒng)的HTML網(wǎng)頁(yè)文件中加入Java程序片段和JSP標(biāo)簽。Java程序片段可以實(shí)現(xiàn)的功能有很多,比如操縱數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)以及發(fā)送E-mail等,以此實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)站需要實(shí)現(xiàn)的功能。在JSP技術(shù)標(biāo)準(zhǔn)下,所有程序的操作都是在服務(wù)器端執(zhí)行,而網(wǎng)絡(luò)上只是把得到的結(jié)果傳送到客戶端,這樣就大大降低了對(duì)客戶瀏
52、覽器(就是前面說(shuō)的客戶端)的要求,就算客戶的瀏覽器端不支持Java,也不會(huì)影響到它訪問(wèn)JSP網(wǎng)頁(yè)。</p><p> JSP全名為Java Server Pages,從根本上來(lái)說(shuō)就是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì),實(shí)現(xiàn)了HTMLl語(yǔ)法中的Java擴(kuò)張(以 <%, %>形式)。JSP與Servlet一樣,是在服務(wù)器端執(zhí)行的。因?yàn)橥ǔK祷亟o客戶端的就是一個(gè)HTML文本,所以客戶端只要有瀏覽器就能瀏覽,得
53、到該得到的結(jié)果和界面。Web服務(wù)器如果收到了訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求,首先執(zhí)行該請(qǐng)求中的程序段,再把得到的結(jié)果與JSP文件中的HTML代碼一起發(fā)送到客戶端。</p><p> 通常JSP頁(yè)面很少進(jìn)行數(shù)據(jù)處理,只是用來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)的靜態(tài)化頁(yè)面,只是用來(lái)提取數(shù)據(jù),不會(huì)進(jìn)行業(yè)務(wù)處理。</p><p> JSP技術(shù)使用Java編程語(yǔ)言編寫(xiě)類XML的scriptlets與tags,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處
54、理邏輯。網(wǎng)頁(yè)也可以通過(guò)scriptlets與tags訪問(wèn)存在于服務(wù)器端資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)設(shè)計(jì)的顯示和網(wǎng)頁(yè)邏輯分離開(kāi)來(lái),并且支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易,在很大程度上造就了基于B/S架構(gòu)的web應(yīng)用開(kāi)發(fā)的快速發(fā)展。</p><p> 前面提到,JSP頁(yè)面由普通的HTML代碼和嵌入其中的Java代碼組合而成。服務(wù)器在收到前臺(tái)頁(yè)面的客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)
55、行處理,再把生成的HTML頁(yè)面返回到客戶端的瀏覽器。Java Servlet是JSP的技術(shù)基礎(chǔ),而且在大型的Web應(yīng)用程序的開(kāi)發(fā)往往需要Java Servlet和JSP一起配合才能把功能做出來(lái),并且做得完善。JSP具備了Java技術(shù)很多優(yōu)點(diǎn),簡(jiǎn)單易用性,徹底的面向?qū)ο螅缙脚_(tái)性以及安全可靠性,主要面向因特網(wǎng)的所有特點(diǎn)。</p><p> 自從JSP橫空出世以來(lái),許多大公司都陸續(xù)采用支持JSP技術(shù)的服務(wù)器,如IB
56、M、Oracle、Bea公司等,所以JSP迅速發(fā)展成為普遍的商業(yè)應(yīng)用服務(wù)器端語(yǔ)言。</p><p> 2.2.2 相關(guān)工具簡(jiǎn)介</p><p><b> 1、MySQL</b></p><p> MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),目前屬于Oracle公司。MySQL是目前全世界應(yīng)用的最流行的關(guān)系型數(shù)據(jù)庫(kù)
57、管理系統(tǒng),在WEB應(yīng)用方面MySQL可以說(shuō)是最好的RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)把不同對(duì)象的數(shù)據(jù)保存在不同的數(shù)據(jù)庫(kù)表中,而沒(méi)有選擇把所有的數(shù)據(jù)都放在一個(gè)大倉(cāng)庫(kù)里,這樣就大大增加了速度而且很好地提高了系統(tǒng)的靈活性。MySQL所使用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了雙授權(quán)
58、政策,它分為社區(qū)版和商業(yè)版,由于其集齊眾多優(yōu)點(diǎn)于一身,比如體積小、速度快、總體擁有成本低,更為重要的是開(kāi)放源碼這一特點(diǎn),使得一般的中小型(企業(yè))網(wǎng)站開(kāi)發(fā)都選擇把MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。因?yàn)槠渖鐓^(qū)版的性能也是相當(dāng)卓越,搭配PHP和Apache可組成良好的開(kāi)發(fā)環(huán)境,開(kāi)發(fā)起來(lái)更輕巧、快捷方便。</p><p> 2、 MyEclipse</p><p> MyEclipse,即企業(yè)級(jí)工作平
59、臺(tái)(MyEclipse Enterprise Workbench ,簡(jiǎn)稱MyEclipse)是對(duì)Eclipse IDE的擴(kuò)展,是一個(gè)十分優(yōu)秀的用于開(kāi)發(fā)Java, J2EE的 Eclipse 插件集合,它可以在數(shù)據(jù)庫(kù)和J2EE的開(kāi)發(fā)、發(fā)布和應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它功能非常強(qiáng)大,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hib
60、ernate,EJB3,JDBC等數(shù)據(jù)庫(kù)鏈接工具和HTML, CSS,Javascript等前臺(tái)頁(yè)面技術(shù)??梢哉f(shuō)MyEclipse是幾乎囊括了目前所有主流開(kāi)源產(chǎn)品的專屬Eclipse開(kāi)發(fā)工具。</p><p> 綜合以上各個(gè)開(kāi)發(fā)框架、工具平臺(tái),結(jié)合起來(lái)做Java web應(yīng)用開(kāi)發(fā)是相當(dāng)好的,最后再把與用戶交互的的前臺(tái)頁(yè)面用Dreamweaver進(jìn)行美化,使界面變得更加友好和人性化,使用起來(lái)更方便,從而形成一個(gè)實(shí)用
61、美觀的教學(xué)公共空余時(shí)間抽取系統(tǒng)。</p><p> 2.2.3 開(kāi)發(fā)環(huán)境</p><p> 系統(tǒng)開(kāi)發(fā)環(huán)境如表2.1所示。</p><p> 表2.1系統(tǒng)開(kāi)發(fā)環(huán)境</p><p> 2.2.4 運(yùn)行環(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> 本章主要進(jìn)行了系統(tǒng)的需求分析和相關(guān)技術(shù)的介紹。首先了系統(tǒng)的業(yè)務(wù)和需要實(shí)現(xiàn)的功能,即進(jìn)一步課題研究的目的。之后簡(jiǎn)單介紹了系統(tǒng)的開(kāi)發(fā)模式B/S
63、和SSH2框架,說(shuō)明了前臺(tái)頁(yè)面JSP及其技術(shù),以及概述了開(kāi)發(fā)平臺(tái)MyEclipse和數(shù)據(jù)庫(kù)系統(tǒng)MySQL。最后介紹了系統(tǒng)的開(kāi)發(fā)和運(yùn)行環(huán)境。在總體上了解了開(kāi)發(fā)系統(tǒng)所需要的硬件、軟件環(huán)境和知識(shí)框架。</p><p> 第3章 系統(tǒng)概要設(shè)計(jì)</p><p> 3.1 系統(tǒng)的總體設(shè)計(jì)</p><p> 通過(guò)論文前面的系統(tǒng)業(yè)務(wù)需求分析、功能分析以及性能分析等章節(jié),已經(jīng)大
64、致了解總系統(tǒng)需要相應(yīng)的功能模塊,在這節(jié)中將會(huì)給出所有的模塊中的設(shè)計(jì)與模塊中的組合結(jié)構(gòu)設(shè)計(jì),運(yùn)行環(huán)境和開(kāi)發(fā)工具以及相應(yīng)的開(kāi)發(fā)技術(shù)和界面的設(shè)計(jì)等[10]。</p><p> 由于本系統(tǒng)是屬于典型的Java Web應(yīng)用開(kāi)發(fā),采用B/S三層架構(gòu),在MyEclipse平臺(tái)上和SSH2框架的基礎(chǔ)上進(jìn)行開(kāi)發(fā),數(shù)據(jù)庫(kù)采用MySQL,前端頁(yè)面采用JSP和腳本語(yǔ)言采用javascript。</p><p>
65、 3.1.1 總體結(jié)構(gòu)設(shè)計(jì)</p><p> 除了前面提到的數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層和表現(xiàn)層以外,系統(tǒng)還增加了數(shù)據(jù)庫(kù)表實(shí)體和工具兩個(gè)包輔助系統(tǒng)更好地完成任務(wù)。前者是通過(guò)Hibernate映射得到的,后者主要是為了使系統(tǒng)更友好更安全。比如常用的工具分頁(yè)和加密系統(tǒng)就是很好的例子。</p><p> 3.1.2 運(yùn)行環(huán)境設(shè)計(jì)</p><p> 本系統(tǒng)由于是以互聯(lián)網(wǎng)為
66、服務(wù)范圍的網(wǎng)絡(luò)平臺(tái),因此其運(yùn)行環(huán)境的設(shè)計(jì)不僅包括服務(wù)器端的運(yùn)行環(huán)境,還包括客戶端的運(yùn)行環(huán)境。</p><p> 服務(wù)器端的運(yùn)行環(huán)境采用裝有Windows 7操作系統(tǒng)的PC機(jī),以Apache Tomcat作為網(wǎng)絡(luò)服務(wù)器,采用MySQL5.0作為數(shù)據(jù)庫(kù)。</p><p> 客戶端運(yùn)行環(huán)境要求客戶端PC機(jī)安裝IE 8及以上版本的瀏覽器,支持網(wǎng)絡(luò)連接。</p><p>
67、 3.1.3主要功能簡(jiǎn)要設(shè)計(jì)</p><p> 1、數(shù)據(jù)的導(dǎo)入和存儲(chǔ)功能設(shè)計(jì)</p><p> 系統(tǒng)從教務(wù)處導(dǎo)入學(xué)生、教師以及機(jī)房的基本信息和課表到本地作為數(shù)據(jù)庫(kù),管理員可以對(duì)該數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行增、刪、改、查等各個(gè)操作。</p><p> 2、數(shù)據(jù)管理功能設(shè)計(jì)</p><p> 在數(shù)據(jù)庫(kù)中將首次導(dǎo)入的學(xué)生、老師密碼統(tǒng)一初始化,對(duì)班級(jí)主
68、要設(shè)定班級(jí)號(hào)和班級(jí)人數(shù)屬性;教師主要設(shè)定教師編號(hào)、姓名和密碼屬性;學(xué)生主要設(shè)定學(xué)號(hào)、姓名、所在班級(jí)和密碼屬性;機(jī)房主要設(shè)定機(jī)房號(hào)以及可容納人數(shù)屬性;課程信息表,除了以上各個(gè)表的主鍵以外,再添加一個(gè)課程名稱屬性。</p><p> 3、數(shù)據(jù)查詢功能設(shè)計(jì)</p><p> 用戶登錄以后可以根據(jù)教師id、班級(jí)id或者機(jī)房id查詢課程,所得到的結(jié)果以正常課程表的結(jié)構(gòu)顯示出來(lái);也可以查詢總課程表
69、,即不添加任何條件,所有的上機(jī)課程都將顯示在課程表中。</p><p><b> 4、排課功能設(shè)計(jì)</b></p><p> 排課是只有管理員才有操作權(quán)限的功能,它分為兩種,一個(gè)是自動(dòng)排課,一個(gè)是手動(dòng)排課。自動(dòng)排課根據(jù)輸入的教師id、班級(jí)id經(jīng)過(guò)一定算法獲得他們的公共空余時(shí)間并確定一個(gè)合適的(如果有的話)機(jī)房從而完成操作;手動(dòng)排課則是在有特定需求或特別情況下,只能
70、由管理員手動(dòng)操作完成[11]。系統(tǒng)的功能結(jié)構(gòu)圖如圖3.1。</p><p> 圖3.1 功能結(jié)構(gòu)圖</p><p><b> 3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 3.2.1數(shù)據(jù)庫(kù)需求分析</p><p> 教學(xué)公共空余時(shí)間抽取系統(tǒng)主要是從教務(wù)處導(dǎo)入學(xué)生信息表、教師信息表、機(jī)房信息表、課程信息表、班級(jí)信息
71、表,然后在本地新建一個(gè)上課時(shí)間表。利用學(xué)生信息表、教師信息表可以查詢得到他們的公共空余時(shí)間,根據(jù)得到的時(shí)間再去查詢有足夠容量能夠容納的上機(jī)班級(jí)人數(shù)的機(jī)房,這樣組合起來(lái)查詢得到的結(jié)果便是排課時(shí)所需要得到的上機(jī)時(shí)間和地點(diǎn)。把得到的數(shù)據(jù)存儲(chǔ)到上課表里面。這樣就組成了一個(gè)完整的數(shù)據(jù)庫(kù)。</p><p><b> 1、 學(xué)生信息表</b></p><p> 學(xué)生信息表用來(lái)存
72、儲(chǔ)所有學(xué)生的基本信息。它包含了學(xué)生id,學(xué)生姓名,密碼,所在班級(jí)id。其中學(xué)生id是主鍵,班級(jí)id為外鍵。</p><p><b> 2、教師信息表</b></p><p> 教師信息表用來(lái)存儲(chǔ)教師的基本信息。它包含了教師id,教師姓名和密碼。教師id為主鍵。</p><p><b> 3、課程信息表</b><
73、/p><p> 課程信息表用來(lái)存儲(chǔ)課程的相關(guān)信息。它包含了課程id和課程名稱,上課時(shí)間,機(jī)房id,教師id和班級(jí)id。課程id為主鍵,機(jī)房id,教師id和班級(jí)id為外鍵。</p><p><b> 4、機(jī)房信息表</b></p><p> 機(jī)房信息表用來(lái)存儲(chǔ)機(jī)房的基本信息。它包含了機(jī)房id、機(jī)房名稱和機(jī)房容量。id為主鍵。</p>
74、<p><b> 5、班級(jí)信息表</b></p><p> 班級(jí)信息表主要存儲(chǔ)班級(jí)的基本信息。它包含了班級(jí)id、班級(jí)名稱和學(xué)生人數(shù)。id為主鍵。</p><p> 3.2.2數(shù)據(jù)庫(kù)的概要設(shè)計(jì)</p><p> 數(shù)據(jù)庫(kù)的概念設(shè)計(jì)就是要根據(jù)系統(tǒng)的需求分析弄清楚每個(gè)實(shí)體對(duì)象所需要包含的屬性以及每個(gè)實(shí)體之間的關(guān)系,并以此建立一個(gè)完
75、整的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),滿足系統(tǒng)的需求。E-R圖也就是實(shí)體-聯(lián)系圖,它是描述現(xiàn)實(shí)世界概念模型的有效方法,本章節(jié)就利用E-R圖表示出系統(tǒng)內(nèi)各個(gè)實(shí)體對(duì)象之間的關(guān)系模型[13]。由于系統(tǒng)在初步建設(shè)階段,暫時(shí)所需用到的對(duì)象比如教師、學(xué)生等的字段比較少,故而看起來(lái)可能會(huì)比較簡(jiǎn)陋,如圖3.2~3.6所示。</p><p> 圖3.2 教師實(shí)體屬性圖</p><p> 圖3.3 學(xué)生實(shí)體屬性圖<
76、;/p><p> 圖3.4 班級(jí)實(shí)體屬性圖</p><p> 圖3.5 機(jī)房實(shí)體屬性圖</p><p> 圖3.6 課程實(shí)體屬性圖</p><p> 3.2.3物理結(jié)構(gòu)設(shè)計(jì)</p><p> 前面完成了數(shù)據(jù)庫(kù)的需求分析和概要設(shè)計(jì),也就是數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)部分,那么接下來(lái)進(jìn)行數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)。數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)是
77、整個(gè)設(shè)計(jì)的前半段,包括所需的實(shí)體和關(guān)系,實(shí)體規(guī)范化等工作。設(shè)計(jì)的后半段則是數(shù)據(jù)庫(kù)物理設(shè)計(jì),包括選擇數(shù)據(jù)庫(kù)產(chǎn)品,確定數(shù)據(jù)庫(kù)實(shí)體屬性(字段)、數(shù)據(jù)類型、長(zhǎng)度、精度確定、DBMS頁(yè)面大小等。由于教學(xué)公共空余時(shí)間抽取系統(tǒng)還是一個(gè)初步開(kāi)發(fā)的系統(tǒng),暫時(shí)所涉及到的教師、學(xué)生和機(jī)房等實(shí)體只需要很少的屬性,后面如有需要可以再進(jìn)行擴(kuò)展,并不影響現(xiàn)有功能?,F(xiàn)階段需要的實(shí)體對(duì)象及其屬性表如下所示。 </p><p> 表3.1 教師信
78、息表</p><p> 表3.2 學(xué)生信息表</p><p> 表3.3 機(jī)房信息表</p><p> 表3.4 課程信息表</p><p> 表3.5 班級(jí)信息表</p><p> 表3.6 課程申請(qǐng)表</p><p> 表3.7 管理員信息表</p><p&g
79、t;<b> 3.3本章小結(jié)</b></p><p> 本章的主要工作是系統(tǒng)的概要設(shè)計(jì)。前半部分結(jié)合系統(tǒng)功能結(jié)構(gòu)圖分析了系統(tǒng)的四個(gè)功能模塊,即數(shù)據(jù)導(dǎo)入模塊,用戶管理模塊,課程查詢模塊和排課模塊。并對(duì)通過(guò)對(duì)數(shù)據(jù)庫(kù)的需求分析,建立一個(gè)完整的數(shù)據(jù)庫(kù)系統(tǒng),為后續(xù)的系統(tǒng)開(kāi)發(fā)和編碼實(shí)現(xiàn)打下了基礎(chǔ)。</p><p> 第4章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><
80、p> 經(jīng)過(guò)前面的系統(tǒng)需求分析和概要設(shè)計(jì),在總體思路上來(lái)說(shuō),教學(xué)公共空余時(shí)間抽取系統(tǒng)已經(jīng)初具模型,但是只有由代碼構(gòu)成的系統(tǒng)才能投入使用,本章便介紹系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn)。再通過(guò)不斷的測(cè)試,證實(shí)了系統(tǒng)的可用性,穩(wěn)定性才能說(shuō)完成了課題的研究。</p><p> 4.1 前臺(tái)頁(yè)面設(shè)計(jì)</p><p> 近幾年,UI這個(gè)詞開(kāi)始火起來(lái)。UI,在這里我們?nèi)∫釻ser’s Interface,即
81、人機(jī)界面。以前人們一直忽視了界面設(shè)計(jì)工作,甚至國(guó)內(nèi)現(xiàn)在還有很多人覺(jué)得它是一個(gè)陌生的詞,從事這方面工作的人被貶稱為“美工”。但是隨著互聯(lián)網(wǎng)的飛速發(fā)展,人們對(duì)軟件的要求也越來(lái)越高,越來(lái)越注重全方位的體驗(yàn)。因此軟件現(xiàn)在要做好的不僅僅是功能的完善,人性化、友好的人機(jī)交互甚至已經(jīng)成了人們選擇軟件的第一考慮因素。</p><p> 本系統(tǒng)是一個(gè)網(wǎng)站,所以展示在用戶面前的就是前臺(tái)頁(yè)面。界面可以不華麗,走簡(jiǎn)潔路線,但是,要仔細(xì)
82、做好每一個(gè)細(xì)節(jié),讓整個(gè)界面看上去就很舒服。</p><p> 4.2功能詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)</p><p> 根據(jù)系統(tǒng)總體設(shè)計(jì)部分中系統(tǒng)功能模塊的劃分和前面的設(shè)計(jì)思路,進(jìn)行各個(gè)功能所需的實(shí)體類以及數(shù)據(jù)結(jié)構(gòu)和業(yè)務(wù)的設(shè)計(jì),最后編寫(xiě)具體代碼進(jìn)行整體的實(shí)現(xiàn)。</p><p> 4.2.1 用戶登錄</p><p> 用戶進(jìn)入系統(tǒng)首頁(yè)以后需要登錄才
83、能完成后續(xù)操作。登錄時(shí),如果用戶輸入正確的賬戶和密碼,則進(jìn)入登錄成功頁(yè)面,否則再次返回到登錄界面。具體過(guò)程是用戶點(diǎn)擊確認(rèn),前臺(tái)頁(yè)面將數(shù)據(jù)提交到服務(wù)器,服務(wù)器調(diào)用業(yè)務(wù)邏輯層定義的登錄方法訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行驗(yàn)證,具體實(shí)現(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> 在用戶登錄具體實(shí)現(xiàn)界面的前臺(tái)編碼中,采用了javascript對(duì)登錄進(jìn)行控制,如果出現(xiàn)用戶輸入的用戶名為空、輸入不合法
90、字符或者密碼為空的情況,則彈出信息提示輸入不合法或不能為空。界面如圖4.2所示。</p><p> 圖4.2 用戶登錄界面</p><p> 4.2.2 課表查詢</p><p> 所有用戶登錄進(jìn)入系統(tǒng)以后,都可以進(jìn)行課表查詢操作,查詢角度分別有按教師查詢課表,即輸入教師編號(hào)得到該教師所有相關(guān)的課程;按班級(jí)或者學(xué)生查詢課表,比如系統(tǒng)自動(dòng)排課首先建立在對(duì)教師和班
91、級(jí)的課表查詢基礎(chǔ)上,而學(xué)生登錄系統(tǒng)以后當(dāng)然希望得到自己的課表;按機(jī)房查詢機(jī)房相關(guān)的課表。以上輸入的條件在課表中將不會(huì)顯示,只有查詢所有課程的時(shí)候需要把教師、班級(jí)、機(jī)房以及上課時(shí)間等所有信息都展示在界面上。查詢所有課程時(shí),列出的查詢結(jié)果被放在同一個(gè)表格中,顏色隔行相間。因?yàn)樵撓到y(tǒng)需要呈現(xiàn)給用戶看到的是上機(jī)課的課表,所以課表中只需要把與該用戶相關(guān)的上機(jī)課展現(xiàn)在界面上,用一個(gè)c:forEach循環(huán)實(shí)現(xiàn),以一個(gè)一般的表格列出來(lái)即可,在每一行里顯
92、示課程的時(shí)間,也能達(dá)到同樣的效果。況且有分頁(yè)工具,可以隨時(shí)改變每頁(yè)顯示的數(shù)量。下面貼出后臺(tái)部分相關(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ù)班級(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> 分頁(yè)工具的后臺(tái)實(shí)現(xiàn)代碼如下:</p><p> public List getByFenYe(String hql,</p><p> int pageNo, int pageSize)
96、{//第二個(gè)參數(shù)為當(dāng)前頁(yè)數(shù),第三個(gè)參數(shù)為每頁(yè)顯示幾條記錄</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> * 得到分成多少頁(yè)的方法</p><p> * pageSize 每頁(yè)要顯示幾條</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代表每頁(yè)顯示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> 前臺(tái)相關(guān)代碼:</b></p><p> <td colspan="7" ></p><p> 當(dāng)前頁(yè)數(shù)[${pageNumber}/${totalpages}] </p>
103、<p> <a href="course_doGetAllCourse.action?pageNumber=1&state=${state}" ><font color="gray">首頁(yè)</font></a></p><p> <a href="course_doGetAllCour
104、se.action?pageNumber=${pageNumber-1}&state=${state}"><font color="gray">上一頁(yè)</font></a></p><p> <a href="course_doGetAllCourse.action?pageNumber=${pageNumber+1
105、}&state=${state}"><font color="gray">下一頁(yè)</font></a></p><p> <a href="course_doGetAllCourse.action?pageNumber=${totalpages}&state=${state}"><fon
106、t color="gray">末頁(yè)</font></a></p><p> </p><p> 總記錄數(shù)[${totalcounts}]條</td></p><p> 學(xué)生登錄系統(tǒng)
107、以后,還有修改密碼功能。參考教務(wù)處網(wǎng)站,修改密碼需提供原密碼,而不是密保問(wèn)題或者密保手機(jī)之類的。具體實(shí)現(xiàn)界面分別如圖4.3與圖4.4所示。在圖4.3中,由于我在插入測(cè)試數(shù)據(jù)時(shí)都是選擇下拉框默認(rèn)的選項(xiàng),所以出現(xiàn)了很多課程都安排第一機(jī)房以及20100611班的情況。</p><p> 圖4.3 學(xué)生查詢課表界面</p><p> 圖4.4 學(xué)生修改密碼界面</p><p
108、> 4.2.3 排課功能</p><p> 排課功能的思路是以增加課程的形式編排課程。首先由管理員輸入或選擇需要排課的班級(jí)、教師以及課程,根據(jù)在課程信息表中查詢獲得所有教師或者班級(jí)出現(xiàn)的時(shí)間,因?yàn)闀r(shí)間在數(shù)據(jù)庫(kù)中存儲(chǔ)的形式是1~35的整數(shù),根據(jù)一定規(guī)律依次遞增,與課表的每一大節(jié)課相對(duì)應(yīng),所以根據(jù)這里得到的整數(shù),從課表時(shí)間集合中取非,再循環(huán)搜索每一個(gè)時(shí)間下是否有容量大于班級(jí)人數(shù)的空閑的機(jī)房,如果有,就可以選
109、擇把課程安排在這個(gè)時(shí)間這個(gè)機(jī)房,并彈出“排課成功”的窗口;如果沒(méi)有則繼續(xù)搜索。若直到循環(huán)結(jié)束都沒(méi)能成功編排課程,則給出對(duì)應(yīng)的提示,比如如果沒(méi)有足夠大的機(jī)房是空閑的,則提示“不存在滿足班級(jí)學(xué)生人數(shù)的機(jī)房!”,具體實(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時(shí)間(結(jié)果按ID排序,默認(rèn)增加數(shù)據(jù)最好按照時(shí)間升序,否則數(shù)據(jù)庫(kù)表建議增加能夠按照時(shí)間排序的字段)</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ù)班級(jí)人數(shù)查詢大于等于班級(jí)學(xué)生人數(shù)的機(jī)房集合(結(jié)果按照機(jī)房大小升序排列)</p><p> boolea
113、n a=false;//看選擇的教師是否有時(shí)間。</p><p> boolean b=false;//看選擇的班級(jí)是否有時(shí)間。</p><p> boolean c=false;//看是否有滿足班級(jí)學(xué)生人數(shù)的機(jī)房</p><p> boolean d=false;//看機(jī)房是否有時(shí)間</p><p> Integer num =0;
114、</p><p> for (Classtimes classtimes1 : ctList) {//循環(huán)上課時(shí)間</p><p> List<Course> cList1 = courseBiz.getCoursesByTeacherAndTime(teacher.getId(), classtimes1.getId());// 根據(jù)教師ID和循環(huán)到的時(shí)間查詢課程表集合&
115、lt;/p><p> if (cList1.size() <= 0) {</p><p> a = true;// 循環(huán)到的時(shí)間,選擇的教師正好空閑</p><p> List<Course> cList2 = courseBiz.getCoursesByStudentsclassAndTime(studentsclass.getId(), cl
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文-資料管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文-賓館管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文群體人臉檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文計(jì)算機(jī)科學(xué)與技術(shù)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文校園導(dǎo)航系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文-病床呼叫管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)論文-教學(xué)科研表格自主生成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論