

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 一 可行性分析1</b></p><p> 1.1 經(jīng)濟上的可行性1</p><p> 1.2 技術(shù)上的可行性2</p><p> 1.3 操作上的可行性2</p><p><b>
2、; 二 需求分析2</b></p><p><b> 2.1需求陳述2</b></p><p><b> 2.2分析建模2</b></p><p><b> 三 概要設(shè)計8</b></p><p> 3.1系統(tǒng)功能結(jié)構(gòu)設(shè)計8</p>
3、<p> 3.2.系統(tǒng)硬件結(jié)構(gòu)設(shè)計14</p><p> 3.3系統(tǒng)軟件架構(gòu)設(shè)計16</p><p><b> 四 詳細設(shè)計17</b></p><p><b> 六 測試28</b></p><p> 6.1.測試方法28</p><p>
4、 6.2測試用例28</p><p><b> 七 總結(jié)31</b></p><p> 7.1.小組總結(jié)31</p><p> 7.2.個人總結(jié)31</p><p><b> 一 可行性分析</b></p><p> 1.1 經(jīng)濟上的可行性 </p&g
5、t;<p> 界面友好,操作簡單,系統(tǒng)實現(xiàn)可行,因此經(jīng)濟可行。該系統(tǒng)可以容易實現(xiàn)學(xué)生、老師和教學(xué)系統(tǒng)管理員與學(xué)校之間的聯(lián)系,在Internet上實現(xiàn)完成部分教務(wù)工作,提高辦事效率。</p><p> 1.2 技術(shù)上的可行性</p><p> 隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,越來越多的機構(gòu)將科研管理與Internet融合到一起,以方便個高校管理。在這樣一個社會背景下,基于Windo
6、ws和SQL Server 2005設(shè)計出數(shù)據(jù)庫 ,運用先進的ASP.NET技術(shù)、先進的C#語言,采用B/S模式開發(fā)的大學(xué)生選修課管理系統(tǒng),將學(xué)生、老師、管理員有機地結(jié)合在一起,有效地提高管理水平和效率。隨著科學(xué)技術(shù)的不斷提高,計算機科學(xué)日漸成熟,基于以上的技術(shù)在現(xiàn)今比較容易實現(xiàn)。 </p><p> 1.3 操作上的可行性</p><p> 該系統(tǒng)操作方便,簡單。 </p>
7、;<p><b> 二 需求分析</b></p><p><b> 2.1需求陳述</b></p><p> 系統(tǒng)功能模塊基本將本系統(tǒng)劃分為三大模塊,即學(xué)生選課模塊、教師開課模塊以及管理員管理模塊。 </p><p> ?。?)學(xué)生選課模塊:在這個模塊中,允許學(xué)生修改個人信息,瀏覽基本的課程;并實現(xiàn)主要
8、的選課功能,包括填寫選課信息、查看已選課程、修改選課等。</p><p> (2)教師開課模塊:這個模塊主要是讓教師申請教課,同時教師可以修改個人信息、瀏覽基本課程以及查看學(xué)生的選課情況等。</p><p> (3)管理員管理模塊:這個模塊的功能比較多,主要包括創(chuàng)建課程的指定任課老師、設(shè)定課程人數(shù)、統(tǒng)計學(xué)生選課信息、發(fā)通知等等。</p><p> ?。?)通用功
9、能模塊:即用戶登錄、密碼修改等功能的實現(xiàn)。</p><p><b> 2.2分析建模</b></p><p><b> 根據(jù)系統(tǒng)需求</b></p><p> 角色確定,外部參與者如下:</p><p> ?、俟芾韱T:對學(xué)生和教師基本資料維護,對課程基本資料進行添加、 刪除、 更新或查詢等;&
10、lt;/p><p> ?、趯W(xué)生:進行課程預(yù)覽,選課信息查詢,進行選課,成績查詢等;</p><p> ?、劢處煟翰樵冋n程,申請教課及課程報名人數(shù)情況,進行成績評定等;</p><p><b> 確定用例</b></p><p> 與管理員有關(guān)的用例:</p><p> 發(fā)布通知、分配帳號密碼、注
11、銷或修改用戶狀態(tài)、創(chuàng)建課程,定任課老師、設(shè)定課程人數(shù)、統(tǒng)計學(xué)生選課信息;</p><p><b> 與學(xué)生有關(guān)的用例:</b></p><p> 修改個人信息、選課操作、修改選課、瀏覽課程、查詢成績</p><p><b> 與教師有關(guān)的用例:</b></p><p> 申請教課、瀏覽課題、
12、查詢學(xué)生選課情況、成績評定</p><p><b> 建立系統(tǒng)用例圖</b></p><p> 此系統(tǒng)用例圖包括:學(xué)生選課系統(tǒng)的高層用例圖,管理員管理子系統(tǒng)用例圖,教師管理子系統(tǒng)用例圖以及學(xué)生選課子系統(tǒng)的用例圖。</p><p><b> 系統(tǒng)用例</b></p><p> 大學(xué)生選修課用例
13、描述</p><p> 管理員:管理員負責整個選修課系統(tǒng)的全面工作</p><p> 管理員使用子系統(tǒng)“選課管理”中的教學(xué)大綱信息和“科室分配管理”中的教師信息,制定選課表</p><p> 管理員點擊子系統(tǒng)“課程信息管理” 對學(xué)生和教師基本資料維護,課程基本資料進行添加、刪除、更新或查詢等相關(guān)操作</p><p> 學(xué)生:進行課程預(yù)
14、覽,選課信息查詢,進行選課,成績查詢等;</p><p> 教師:查詢課程,申請教課及課程報名人數(shù)情況,進行成績評定等;</p><p> 成績查詢:登錄選課系統(tǒng)→選擇用戶“學(xué)生”→輸入密碼,提交→提示登錄成功或錯誤信息→選擇“選修課成績查詢”,選擇學(xué)期→查到對應(yīng)成績。</p><p> 成績管理:教師進行操作,包括教師錄入和維護學(xué)生的成績,統(tǒng)計成績查詢成績,
15、也可進行學(xué)生成績的刪除和修改工作。</p><p><b> 詳細描述如下:</b></p><p> 登錄:通過用戶名及密碼登錄學(xué)生選課系統(tǒng)→驗證當前用戶權(quán)限。</p><p> 課程信息瀏覽:讓學(xué)生可以詳細的了解課程情況。</p><p> 選課:學(xué)生可以選擇要選修的課程 。選課概述:前提條件(正確登錄、同一
16、選課選修兩次第二次不計學(xué)分)→點擊選課項→提交按鈕→提示選課情況</p><p> 修改選課:由于主觀或客觀原因要求退課。修改選課概述:前提條件(限定的課程開設(shè)人數(shù)已滿,或是不足規(guī)定人數(shù)取消該課程安排的信息,以及個人在規(guī)定日期前可以修改選課等)</p><p> 成績查詢:登錄選課系統(tǒng)→選擇用戶“學(xué)生”→輸入密碼,提交→提示登錄成功或錯誤信息→選擇“選修課成績查詢”,選擇學(xué)期→查到對應(yīng)
17、成績。</p><p> 圖1 學(xué)生選課系統(tǒng)的高層用例圖</p><p><b> 管理子系統(tǒng)用例</b></p><p><b> 用戶登錄</b></p><p> 獲取用戶輸入的用戶名及密碼;</p><p> 若出現(xiàn)用戶名、密碼錯誤或不匹配現(xiàn)象,反饋錯誤提示
18、;</p><p> 在用戶名及密碼都正確的前提下,支持密碼修改。</p><p><b> 選課系統(tǒng)</b></p><p> 首先發(fā)布選課通知,即先對教師發(fā)出通知(教師得到通知后才可申請教課),然后對學(xué)生發(fā)出通知(此時已安排完有關(guān)選修課的所有信息)</p><p> 創(chuàng)建課程指定任課教師</p>
19、<p> 設(shè)定課程的人數(shù)和開課時間安排</p><p> 分配賬號及密碼(由于是管理員操作此部分)。</p><p><b> 教師教課申請</b></p><p> 獲取教師申請教課的信息,包括教師信息及其所要教的課程課程信息;</p><p> 提供教師瀏覽課程的功能,即課程時間、教室等的安排;
20、并提供查詢學(xué)生選課情況的功能,即選此門課程的名單等;</p><p> 處理和統(tǒng)計教師對學(xué)生成績的評定。</p><p><b> 學(xué)生選課</b></p><p> 提供學(xué)生修改個人信息的功能;</p><p> 提供學(xué)生瀏覽全部選修課信息的功能,然后接受學(xué)生的選課操作;</p><p>
21、; 獲取學(xué)生及其所選課程的信息后,提供學(xué)生瀏覽自己所選課程的安排情況;</p><p> 得到選課系統(tǒng)的指令,在相應(yīng)時間內(nèi)可以讓學(xué)生修改自己的選課;</p><p> 將選課系統(tǒng)統(tǒng)計好的成績信息反饋給學(xué)生供其瀏覽。</p><p> 管理員管理子系統(tǒng)用例詳細描述如下:</p><p> ?、侔l(fā)放通知:此用例包含兩種情況,一是相對于教師
22、的,二是相對于學(xué)生的。相對于教師,即對于選課信息錄入后發(fā)放給教師的通知,相對于學(xué)生即是在安排完選課相應(yīng)的教師、選課限定人數(shù)等規(guī)則后發(fā)放給學(xué)生的通知。</p><p> ?、趯W(xué)生及教師列表:對于學(xué)生的個人信息、選課信息,教師的個人信息、對應(yīng)教受的課程信息等的查詢、刪除、修改等操作。</p><p> ?、劭蛇x課程列表:在限定人數(shù)已滿或是人數(shù)不夠不進行課程開設(shè)等情況下對于課程選擇的限定。<
23、;/p><p> ④學(xué)生已選課程列表:在課程修完教師評定相應(yīng)成績后,對于學(xué)生已選課程的成績統(tǒng)計以及錄入發(fā)放。</p><p> 管理員添加及密碼修改:根據(jù)實際情況進行添加、修改等。</p><p> 管理員管理子系統(tǒng)用例圖如下:</p><p> 圖2 管理員管理子系統(tǒng)用例圖</p><p> 教師進行查詢課程,
24、申請教課及課程報名人數(shù)情況,進行成績評定等工作。詳細見頂層用例圖。</p><p> 圖3教師管理子系統(tǒng)用例圖</p><p><b> 主要是學(xué)生選課操作</b></p><p> 提供學(xué)生修改個人信息的功能;</p><p> 提供學(xué)生瀏覽全部選修課信息的功能,然后接受學(xué)生的選課操作;</p>
25、<p> 獲取學(xué)生及其所選課程的信息后,提供學(xué)生瀏覽自己所選課程的安排情況;</p><p> 得到選課系統(tǒng)的指令,在相應(yīng)時間內(nèi)可以讓學(xué)生修改自己的選課。</p><p> 圖4學(xué)生選課子系統(tǒng)用例圖</p><p><b> 三 概要設(shè)計</b></p><p> 3.1系統(tǒng)功能結(jié)構(gòu)設(shè)計</p&
26、gt;<p> 首先輸入用戶名和密碼登錄系統(tǒng),系統(tǒng)給出提示,若登錄成功后則進行課程信息查詢。</p><p> 然后對信息進行詳細查看,例如選課時間安排、教師安排、人數(shù)安排等,之后可點擊選擇課程并提交確認,此時系統(tǒng)也會給出提示,若成功選擇給出課程詳細信息,否則將提示人數(shù)已滿的限制信息。</p><p> 修改所選課程,也必須找到自己已選課程列表并進行刪除,然后再按相同方
27、法進行選課,最終完成選課。當然修改課程過程中,也要注意修改時間的限定,因為管理員也要統(tǒng)計學(xué)生及其所選課程的信息,所以必須在規(guī)定時間進行修改。</p><p> 經(jīng)過活動圖的可視化效果,可更清楚了解此過程。</p><p> 圖5 學(xué)生選課操作的活動圖</p><p><b> 順序圖</b></p><p> 學(xué)
28、生選課操作的順序圖及管理員管理操作的子系統(tǒng)分別如圖6和圖7所示。</p><p> 圖6 學(xué)生選課操作順序圖</p><p> 圖7 管理員管理操作子系統(tǒng)順序圖4.4.協(xié)作圖</p><p> 圖8 學(xué)生選課操作的協(xié)作圖</p><p> 圖9描述了管理員管理操作時的協(xié)作圖。參與交互的對象有課程信息模塊、課程安排模塊及面向教師、學(xué)生。
29、此圖主要考慮通過對象之間的交互共同完成選課操作的過程,各信息流向及標明的順序更好詮釋出管理員進行管理時所需對象及時間上的配合。管理員管理操作的協(xié)作圖如下所示:</p><p> 圖9 管理員管理操作的協(xié)作圖</p><p> 參與的交互對象有課程信息模塊、成績評定模塊、成績管理模塊以及學(xué)生。</p><p> 首先教師進入課程信息模塊,選擇自已所教授的選修課,
30、進而得到所有學(xué)生信息。然后通過反饋的信息及自己記錄的考勤情況(如特定安排取消的課時等)進入成績評定模塊。一般是將所有學(xué)生進行統(tǒng)一打分,若不是統(tǒng)一的情況或是有修改等情況都可進入成績管理模塊進行相應(yīng)操作。在規(guī)定日期前上交評定成績信息后再反饋給學(xué)生。</p><p> 圖10 教師評定成績的協(xié)作圖</p><p> 學(xué)生在選課操作中其生存周期中所處的不同狀態(tài)、轉(zhuǎn)換時的條件,雖然看似較為簡單,
31、但并不可忽視。對于此信息的詳細設(shè)計,可進一步用于用類狀態(tài)的設(shè)計和編制類。</p><p> 圖11 學(xué)生登錄選課的狀態(tài)圖</p><p> 3.2.系統(tǒng)硬件結(jié)構(gòu)設(shè)計</p><p> 類模型是面向?qū)ο蠓椒ǖ暮诵模惸P蛷膶ο蟮慕嵌让枋鱿到y(tǒng)的組成,描述對象及相互間的關(guān)系。系統(tǒng)已在前面進行過簡單描述,通過檢查問題陳述中的所有名詞短語和代詞,得到初始類:</p
32、><p> 學(xué)生 教師 管理員 選課操作 選課管理 申請教課</p><p> 成績管理 成績查詢 用戶管理 課程信息 可選課程 學(xué)生已選課程</p><p> 經(jīng)過分析最后得到教師、學(xué)生、管理員、課程信息及系統(tǒng)維護這幾個類。并標識出類的名稱及屬性。如下圖所示:</p><p>&
33、lt;b> ?。?)數(shù)據(jù)庫設(shè)計</b></p><p> 本系統(tǒng)設(shè)計的是一個以班級為單位的選課數(shù)據(jù)庫,能夠?qū)崿F(xiàn)學(xué)生自主選課功能,并能實現(xiàn)學(xué)生信息、課程信息、學(xué)生選課信息、教室信息、授課教師信息等的創(chuàng)建、更新、刪除、修改,數(shù)據(jù)庫完整性檢查、沖突檢測、查詢優(yōu)化以及數(shù)據(jù)庫角色、權(quán)限的分配,實現(xiàn)數(shù)據(jù)庫的備份等事務(wù)處理以保證數(shù)據(jù)的完整性、一致性、安全性、可靠性。</p><p>
34、 圖4-1 學(xué)生選課系統(tǒng)總E-R圖</p><p> 3.3系統(tǒng)軟件架構(gòu)設(shè)計 </p><p><b> 3.1功能要求:</b></p><p> (1) 設(shè)計數(shù)據(jù)對象(表、視圖、規(guī)則、函數(shù)等),完成學(xué)生自主選課,實現(xiàn)對于數(shù)據(jù)庫完整性的檢查; </p><p> (2) 根據(jù)用戶不同,指派不同權(quán)利:管理員
35、具有dbo權(quán)限,學(xué)生具有插入選課表、退課表權(quán)限,查詢課程表權(quán)限,確保數(shù)據(jù)庫的安全性; </p><p> (3) 能夠?qū)崿F(xiàn)對于學(xué)生選課信息、課程信息、授課教師信息、教室使用信息的查詢; </p><p> (4) 設(shè)計觸發(fā)器/存儲過程,優(yōu)化數(shù)據(jù)庫查詢、沖突檢測、擴展數(shù)據(jù)庫完整性和數(shù)據(jù)操縱功能; </p><p> (5) 設(shè)計選課時間段,在指定時間段內(nèi),
36、允許選課、退課。</p><p> (6) 完成數(shù)據(jù)庫的備份等事務(wù)處理,保證數(shù)據(jù)庫的一致性,可靠性。</p><p><b> 3.2 實現(xiàn)要求</b></p><p> (1) 根據(jù)系統(tǒng)的功能要求,建立了概念模型,設(shè)計各功能塊的E-R圖,對其合并,形成系統(tǒng)總E-R圖, 如圖3-1所示。</p><p> (2)
37、 利用T-SQL實現(xiàn)數(shù)據(jù)庫,關(guān)系表,視圖,數(shù)據(jù)類型,存儲過程及其他數(shù)據(jù)對象的建立、更新、修改及數(shù)據(jù)庫完整性檢查。</p><p> (3) 利用企業(yè)管理器實現(xiàn)角色及用戶權(quán)利的定義。</p><p><b> 四 詳細設(shè)計</b></p><p><b> 蔡忠文設(shè)計內(nèi)容:</b></p><p&g
38、t;<b> 老師操作模塊:</b></p><p><b> 1)增加老師</b></p><p> 2)根據(jù)教師號碼修改教師信息</p><p> 3)根據(jù)教師號碼刪除教師信息</p><p> 4)根據(jù)教師號碼查詢教師的信息</p><p> 5)查詢所有教
39、師的信息</p><p><b> 李梓郡設(shè)計內(nèi)容:</b></p><p><b> 學(xué)生操作模塊</b></p><p><b> 1)增加學(xué)生</b></p><p> 2)根據(jù)學(xué)號修改學(xué)生信息</p><p> 3)根據(jù)學(xué)號刪除學(xué)生信息
40、</p><p> 4)根據(jù)學(xué)號查詢學(xué)生信息</p><p> 5)查詢所有學(xué)生信息</p><p><b> 王超設(shè)計內(nèi)容:</b></p><p><b> 課程操作模塊</b></p><p><b> 1)增加課程</b></p&
41、gt;<p> 2)根據(jù)課程號修改課程信息</p><p> 3)根據(jù)課程號刪除課程的信息</p><p> 4根據(jù)課程號查詢課程的信息</p><p><b> 5)查詢所有課程</b></p><p><b> 張暢設(shè)計內(nèi)容:</b></p><p&g
42、t;<b> 系統(tǒng)的數(shù)據(jù)字典:</b></p><p> 教師號T-teacher</p><p> 課程表t-course</p><p> 成績表t-score</p><p> 學(xué)生表t-student</p><p> 管理員t-manager</p><p
43、><b> 系表</b></p><p><b> 五 實現(xiàn)</b></p><p> 1.管理員底層代碼:</p><p> package xiangmu.dao;</p><p> import java.util.List;</p><p> imp
44、ort xiangmu.po.course;</p><p> import xiangmu.po.manager;</p><p> import xiangmu.po.student;</p><p> import xiangmu.po.teacher;</p><p> public interface ManagerDao
45、{</p><p><b> //管理員登錄</b></p><p> public boolean inToSystem(manager m);</p><p><b> //增加學(xué)生</b></p><p> public boolean addStudentforManager(stu
46、dent s);</p><p> //根據(jù)學(xué)生的學(xué)號修改學(xué)生的信息</p><p> public boolean updateStudentforManager(String sno,student s);</p><p> //根據(jù)學(xué)號刪除學(xué)生的全部信息</p><p> public boolean deleteStudent
47、forManager(String sno);</p><p> //根據(jù)學(xué)號查詢學(xué)生的信息</p><p> public student selectStudentforManager(String sno);</p><p> //查詢所有學(xué)生的信息</p><p> public List<student> sel
48、ectAllStudent();</p><p><b> //增加老師</b></p><p> public boolean addTeacherforManager(teacher t);</p><p> //根據(jù)教師號修改教師的信息</p><p> public boolean updateTeach
49、erforManager(String tno,teacher t);</p><p> //根據(jù)教師號刪除教師的信息</p><p> public boolean deleteTeacherforManager(String tno);</p><p> //根據(jù)教師號查詢教師的信息</p><p> public teacher
50、 selectTeacherforManager(String tno);</p><p> //查詢所有教師的信息</p><p> public List<teacher> selectAllTeacher();</p><p><b> //增加課程</b></p><p> public bo
51、olean addCourseforManager(course c);</p><p> //根據(jù)課程號修改課程的信息</p><p> public boolean updateCourseforManager(String cno,course c);</p><p> //根據(jù)課程號刪除課程的信息</p><p> publi
52、c boolean deleteCourseforManager(String cno);</p><p> //根據(jù)課程號查詢課程的信息</p><p> public course selectCourseforManager(String cno);</p><p> //查詢所有課程的信息</p><p> public Li
53、st<course> selectAllCourse();</p><p><b> //退出系統(tǒng)</b></p><p> public void backSystem();</p><p><b> }</b></p><p> 2.學(xué)生模塊底層代碼:</p>
54、<p> package xiangmu.dao;</p><p> import java.util.List;</p><p> import xiangmu.po.StuChengJi;</p><p> import xiangmu.po.course;</p><p> import xiangmu.po.sco
55、re;</p><p> import xiangmu.po.student;</p><p> public interface StudentDao {</p><p><b> //登錄系統(tǒng)</b></p><p> public boolean inToSystembyStudent(String sno
56、,String spassword);</p><p><b> //選課</b></p><p> public boolean xunKebyStudent(String sno,String cno); </p><p> //查詢所有已選課程</p><p> public List<StuChen
57、gJi> xunAllKeChengbyStudent(String sno);</p><p><b> //查詢自身的信息</b></p><p> public student xunStudent(String sno);</p><p> //查詢所選課程的成績</p><p> public L
58、ist<score> xunChengJibyStudent(String sno,score s);</p><p><b> //退課</b></p><p> public boolean deleteCoursebyStudent(String sno,course c);</p><p><b> //退出
59、系統(tǒng)</b></p><p> public void backSystembyStudent();</p><p><b> }</b></p><p> 3.老師模塊底層代碼:</p><p> package xiangmu.dao;</p><p> import j
60、ava.util.List;</p><p> import xiangmu.po.student;</p><p> import xiangmu.po.teacher;</p><p> public interface TeacherDao {</p><p><b> //登錄系統(tǒng)</b></p&g
61、t;<p> public boolean inToSystembyTeacher(String tno,String tpassword);</p><p> //查詢所有自身所帶課程的所有學(xué)生的信息</p><p> public List<student> xunAllStudentbyStudent(String tno);</p>&
62、lt;p> //輸入成績(在上一步的結(jié)果上,輸入成績)</p><p> public boolean chengjibyTeacher(String sno,String sscore,String cno);</p><p><b> //查詢自身的信息</b></p><p> public teacher xunTeach
63、erbyTeacher(String tno);</p><p><b> //退出系統(tǒng)</b></p><p><b> }</b></p><p> 5.主界面的servlet代碼如下:</p><p> package xiangmu.gongneng;</p><
64、p> import java.io.IOException;</p><p> import java.io.PrintWriter;</p><p> import javax.servlet.ServletException;</p><p> import javax.servlet.http.HttpServlet;</p>&l
65、t;p> import javax.servlet.http.HttpServletRequest;</p><p> import javax.servlet.http.HttpServletResponse;</p><p> public class main extends HttpServlet{</p><p> private stati
66、c final long serialVersionUID = 1L;</p><p><b> @Override</b></p><p> protected void doGet(HttpServletRequest req, HttpServletResponse resp)</p><p> throws ServletExce
67、ption, IOException {</p><p> req.setCharacterEncoding("utf-8");</p><p> resp.setContentType("text/html;charset=utf-8");</p><p> PrintWriter out = resp.getWrit
68、er();</p><p> String username = req.getParameter("username");</p><p> String password = req.getParameter("password");</p><p> String yonghu = req.getParameter
69、("yonghu");</p><p> if(yonghu.equals("student")){</p><p> req.getRequestDispatcher("/studentcaozuo").forward(req, resp);</p><p> }else if(yonghu.equ
70、als("teacher")){</p><p> req.getRequestDispatcher("/teachercaozuo").forward(req, resp);</p><p> }else if(yonghu.equals("manager")){</p><p> req.getR
71、equestDispatcher("/managercaozuo").forward(req, resp);</p><p><b> }</b></p><p><b> }</b></p><p><b> @Override</b></p><p&g
72、t; protected void doPost(HttpServletRequest req, HttpServletResponse resp)</p><p> throws ServletException, IOException {</p><p> this.doGet(req, resp);</p><p><b> }</b
73、></p><p><b> }</b></p><p><b> 管理員界面的代碼:</b></p><p> package xiangmu.gongneng;</p><p> import java.io.IOException;</p><p> i
74、mport java.io.PrintWriter;</p><p> import javax.servlet.ServletException;</p><p> import javax.servlet.http.HttpServlet;</p><p> import javax.servlet.http.HttpServletRequest;<
75、/p><p> import javax.servlet.http.HttpServletResponse;</p><p> import xiangmu.daoimpl.ManagerDaoimpl;</p><p> import xiangmu.po.manager;</p><p> public class managerca
76、ozuo extends HttpServlet {</p><p> private static final long serialVersionUID = 1L;</p><p> public void doGet(HttpServletRequest request, HttpServletResponse response)</p><p> th
77、rows ServletException, IOException {</p><p> this.doPost(request, response);</p><p><b> }</b></p><p> public void doPost(HttpServletRequest request, HttpServletRespon
78、se response)</p><p> throws ServletException, IOException {</p><p> PrintWriter out = response.getWriter();</p><p> String username = request.getParameter("username");&
79、lt;/p><p> String password = request.getParameter("password");</p><p> manager m = new manager(username,password);</p><p> ManagerDaoimpl mipml = new ManagerDaoimpl();<
80、/p><p> if(mipml.inToSystem(m)){</p><p> request.getRequestDispatcher("managergongneng.jsp").forward(request, response);</p><p><b> }else{</b></p><p
81、> request.getRequestDispatcher("/managerdengluerror").forward(request, response);</p><p><b> }</b></p><p> out.println(username);</p><p> out.println(pa
82、ssword);</p><p><b> }</b></p><p><b> }</b></p><p> 7.學(xué)生模塊界面的代碼:</p><p> package xiangmu.gongneng;</p><p> import java.io.IOExc
83、eption;</p><p> import java.io.PrintWriter;</p><p> import javax.servlet.ServletException;</p><p> import javax.servlet.http.HttpServlet;</p><p> import javax.servl
84、et.http.HttpServletRequest;</p><p> import javax.servlet.http.HttpServletResponse;</p><p> import javax.servlet.http.HttpSession;</p><p> import xiangmu.daoimpl.StudentDaoimpl;&l
85、t;/p><p> public class studentcaozuo extends HttpServlet {</p><p> private static final long serialVersionUID = 1L;</p><p> public void doGet(HttpServletRequest request, HttpServlet
86、Response response)</p><p> throws ServletException, IOException {</p><p> this.doPost(request, response);</p><p><b> }</b></p><p> public void doPost(Ht
87、tpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> PrintWriter out = response.getWriter();</p><p> String sno = reques
88、t.getParameter("username");</p><p> String spassword = request.getParameter("password");</p><p> StudentDaoimpl simpl = new StudentDaoimpl();</p><p> String s
89、name = simpl.chaSnameforSno(sno);</p><p> HttpSession sessionsno = request.getSession();</p><p> HttpSession sessionsname = request.getSession();</p><p> sessionsno.setAttribute(
90、"sno", sno);</p><p> sessionsname.setAttribute("sname", sname);</p><p> if(simpl.inToSystembyStudent(sno, spassword)){</p><p> request.getRequestDispatcher(&q
91、uot;student/studentgongneng.jsp").forward(request, response);</p><p><b> }else{</b></p><p> request.getRequestDispatcher("/managerdengluerror").forward(request, resp
92、onse);</p><p><b> }</b></p><p> out.println(sno);</p><p> out.println(spassword);</p><p><b> }</b></p><p><b> }</b>
93、;</p><p> 8.老師界面的servlet代碼:</p><p> package xiangmu.gongneng;</p><p> import java.io.IOException;</p><p> import java.io.PrintWriter;</p><p> import j
94、avax.servlet.ServletException;</p><p> import javax.servlet.http.HttpServlet;</p><p> import javax.servlet.http.HttpServletRequest;</p><p> import javax.servlet.http.HttpServletR
95、esponse;</p><p> import xiangmu.daoimpl.TeacherDaoimpl;</p><p> public class teachercaozuo extends HttpServlet {</p><p> private static final long serialVersionUID = 1L;</p>
96、;<p> public void doGet(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> this.doPost(request, response);</p><
97、p><b> }</b></p><p> public void doPost(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> PrintWrite
98、r out = response.getWriter();</p><p> String tno = request.getParameter("username");</p><p> String tpassword = request.getParameter("password");</p><p> Teac
99、herDaoimpl timpl = new TeacherDaoimpl();</p><p> String tname = timpl.chaTnameforTno(tno);</p><p> if(timpl.inToSystembyTeacher(tno, tpassword)){</p><p> request.getRequestDispat
100、cher("teacher/teachergongneng.jsp?tname="+tname+"").forward(request, response);</p><p><b> }else{</b></p><p> request.getRequestDispatcher("/managerdenglue
101、rror").forward(request, response);</p><p><b> }</b></p><p> out.println(tno);</p><p> out.println(tpassword);</p><p> out.flush();</p><p
102、> out.close(); </p><p><b> }</b></p><p><b> }</b></p><p><b> 數(shù)據(jù)庫設(shè)計的代碼:</b></p><p><b> //創(chuàng)建課程表</b></p>
103、<p> create table t_course(</p><p> cno varchar(10) primary key ,</p><p> cname varchar(10) ,</p><p> cscore varchar(5) ,</p><p> dno varchar(10) foreign K
104、EY (dno) REFERENCES t_dept(dno)</p><p><b> )</b></p><p><b> //創(chuàng)建系表</b></p><p> create table t_dept(</p><p> dno varchar(10) primary key,<
105、;/p><p> dname varchar(10)</p><p><b> )</b></p><p><b> //創(chuàng)建學(xué)生表</b></p><p> create table t_student(</p><p> sno varchar(10) primar
106、y key,</p><p> spassword varchar(10),</p><p> sname varchar(10),</p><p> ssex varchar(5),</p><p> sage int ,</p><p> dno varchar(10) foreign KEY (dno
107、) REFERENCES t_dept(dno),</p><p><b> )</b></p><p><b> //創(chuàng)建教師表</b></p><p> create table t_teacher(</p><p> tno varchar(10) primary key,</
108、p><p> tpassword varchar(10) ,</p><p> tname varchar(10),</p><p> tsex varchar(5) ,</p><p> dno varchar(10) foreign KEY(dno) REFERENCES t_dept(dno),</p><p&g
109、t; cno varchar(10) foreign KEY(cno) REFERENCES t_course(cno)</p><p><b> )</b></p><p><b> //創(chuàng)建成績表</b></p><p> create table t_score(</p><p>
110、cno varchar(10) foreign KEY(cno) REFERENCES t_course(cno),</p><p> sno varchar(10) foreign KEY(sno) REFERENCES t_student(sno),</p><p> sscore varchar(5),</p><p> primary KEY(sno,
111、cno)</p><p><b> )</b></p><p><b> //創(chuàng)建管理員表</b></p><p> create table t_manager(</p><p> managerid varchar(10) primary KEY,</p><p>
112、; managerpassword varchar(10) </p><p><b> )</b></p><p><b> 程序的部分界面:</b></p><p><b> 1.學(xué)生界面:</b></p><p> 2.老師操作界面的部分截圖:</p>
113、<p> 3.管理員操作界面的部分截圖:</p><p><b> 六 測試</b></p><p><b> 6.1.測試方法</b></p><p><b> 黑盒測試</b></p><p> 選取測試用例的原則:</p><p
114、> 1、所設(shè)計出的測試用例能夠減少為達到合理測試所需要設(shè)計的附加測試用例數(shù)目</p><p> 2、所設(shè)計出的測試用例能夠告訴我們,是否存在某些類型的錯誤,而不是僅僅指出與特定測試相關(guān)的錯誤是否存在</p><p> 3、正確的劃分等價類,已根據(jù)等價類設(shè)計測試方案,以滿足所有的測試都能追溯到用戶需求</p><p> 盡量避免含糊的測試用例。</
115、p><p> 盡量將具有相類似功能的測試用例抽象并歸類。</p><p> 盡量避免冗長和復(fù)雜的測試用例。</p><p><b> 6.2測試用例</b></p><p><b> 學(xué)生部分測試:</b></p><p><b> 教師部分測試:</b
116、></p><p><b> 課程部分測試:</b></p><p><b> 七 總結(jié) </b></p><p><b> 7.1.小組總結(jié)</b></p><p> 這次的UML信息系統(tǒng)分析課程設(shè)計,我們做的是“大學(xué)生選修課管理系統(tǒng)”,通過幾個星期對其各階段任
117、務(wù)的分析實驗操作(確定課題、可行性研究與計劃、需求分析、設(shè)計等),使我們對這門課程有了更深層次的了解,同時也學(xué)到了很多東西。</p><p><b> 7.2.個人總結(jié)</b></p><p> 我們剛學(xué)過軟件工程課程,此次項目當中我也用到了軟件工程過程的思想。首先確定項目課題,弄清選題依據(jù)后,進行了可行性研究,可行性研究的主要任務(wù)不是具體解決系統(tǒng)中實現(xiàn)問題,而是
118、以最小的代價在盡可能短的時間內(nèi)確定問題是否值得解決,是否能夠解決,因此我考慮了項目的進度、質(zhì)量,范圍以及風(fēng)險等內(nèi)容。</p><p> 從UML建模思想與操作技術(shù)上的可行方面。接著是需求分析工作流階段,分析工作六階段,但是這部分任務(wù)用了較長的時間,因為除了用傳統(tǒng)的結(jié)構(gòu)化分析方法學(xué)外,還用了我們學(xué)過的課程信息系統(tǒng)面向?qū)ο蟮姆治龇椒椒▽W(xué)。剛開始用結(jié)構(gòu)化的方法時,由于對系統(tǒng)的了解程度不夠,項目即將面臨癱瘓,認為做不下
119、來這個項目,實施過程中出現(xiàn)這樣那樣一系列的風(fēng)險問題,搞得我弄得暈頭轉(zhuǎn)向,好多好多的困難。最后我決定從最基本的數(shù)據(jù)流圖著手,一步一步的來,縮小項目的范圍。按照“自定而下,逐層分解”的總原則劃分,逐層到每一層的復(fù)雜度。</p><p> 比較有難度的就是用面向?qū)ο蟮姆椒ǚ治隽?,這種方法以前自己沒有使用過,只是通過課程來了解其含義,理解起來也很空洞。一開始我就覺得很難上手,在建立用例模型的時候,也遇到好多困難。比如,
120、用例的擴展和包含,我們書上是include和extend。在Visio軟件中,沒有這內(nèi)容,這令人比較糾結(jié),還有如何確定執(zhí)行者、用例、用例之間的具體關(guān)系;在建立動態(tài)模型的時候,</p><p> 如何分析確定類、確定類與類之間的關(guān)系等等都阻礙著分析的前行。為了解決這些問題,我也不乏做了很多工作,比如把書上的各小節(jié)的例子與案例分析都仔細的研究了幾遍,尤其是我們講的Osbert Oglesby案例進行了研究。然后通過
121、借鑒其它書本及網(wǎng)上搜索的資料,</p><p> 我花了一個周時間進行設(shè)計階段的工作,這部分我熟悉了一個軟件開發(fā)工具——Visio。當然了,考慮用word來畫模型圖還是比較復(fù)雜,至少說很花時間的,而用Visio工具大大節(jié)約了時間并且減少了出錯率,同時也使得我們對UML建模有了一個專業(yè)上的認知。之后根據(jù)需要對系統(tǒng)進行了數(shù)據(jù)結(jié)構(gòu)的設(shè)計,這部分內(nèi)容比較簡潔,因為我們原來就學(xué)過SQL數(shù)據(jù)庫應(yīng)用知識,曾經(jīng)也做過有關(guān)數(shù)據(jù)庫
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 學(xué)生選課系統(tǒng)課程設(shè)計
- 課程設(shè)計--學(xué)生選課系統(tǒng)
- 學(xué)生選課系統(tǒng)課程設(shè)計
- pb課程設(shè)計—學(xué)生選課系統(tǒng)
- 學(xué)生選課系統(tǒng)課程設(shè)計報告
- 學(xué)生選課管理系統(tǒng)課程設(shè)計
- 學(xué)生選課系統(tǒng)-課程設(shè)計報告
- 學(xué)生選課系統(tǒng)課程設(shè)計報告
- 學(xué)生選課系統(tǒng)設(shè)計報告課程設(shè)計
- 學(xué)生選課管理系統(tǒng)課程設(shè)計報告
- c#學(xué)生選課系統(tǒng)課程設(shè)計
- 課程設(shè)計報告--學(xué)生選課管理系統(tǒng)
- 學(xué)生選課課程設(shè)計
- 課程設(shè)計----學(xué)生選課管理
- jsp課程設(shè)計學(xué)生在線選課系統(tǒng)
- vfp課程設(shè)計報告--學(xué)生選課管理系統(tǒng)
- 學(xué)生選課系統(tǒng)《軟件工程》課程設(shè)計
- 施工組織課程設(shè)計--學(xué)生選課管理系統(tǒng)
評論
0/150
提交評論