

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 一、問題定義5</b></p><p> 1.1問題的定義5</p><p> 1.2 系統(tǒng)要解決的問題5</p><p><b> 二、可行性研究6</b></p><
2、;p><b> 2.1 引言6</b></p><p><b> 2.1.1目的6</b></p><p> 2.1.2背景及功能6</p><p> 2.1.3 參考資料6</p><p> 2.2 可行性研究的前提6</p><p> 2.2.
3、1 要求6</p><p> 2.2.2 目標(biāo)7</p><p> 2.2.3 條件、假定和限制7</p><p> 2.2.4 進(jìn)行可行性研究的方法7</p><p> 2.3 所建議的系統(tǒng)7</p><p> 2.3.1 對(duì)所建議系統(tǒng)的說明7</p><p> 2.3
4、.2 處理流程和數(shù)據(jù)流程8</p><p> 2.3.3 工作負(fù)荷9</p><p> 2.3.4技術(shù)條件方面的可行性9</p><p> 2.4 社會(huì)因素方面的可行性10</p><p> 2.4.1 法律方面的可行性10</p><p> 2.4.2 使用方面的可行性10</p>
5、<p> 2.5 經(jīng)濟(jì)可行性10</p><p><b> 2.6 結(jié)論10</b></p><p> 三、項(xiàng)目開發(fā)計(jì)劃11</p><p><b> 3.1 引言11</b></p><p> 3.1.1 編寫目的11</p><p> 3
6、.1.2 背景11</p><p> 3.1.3 參考資料11</p><p> 3.2 項(xiàng)目概述11</p><p> 3.2.1 工作內(nèi)容11</p><p> 3.2.2 產(chǎn)品12</p><p> 3.2.4 完成項(xiàng)目的最遲期限13</p><p> 3.2.5
7、關(guān)鍵問題及支持的系統(tǒng)條件13</p><p> 3.3 支持條件13</p><p><b> 四、需求分析14</b></p><p> 4.1 系統(tǒng)需求14</p><p> 4.2. 功能需求14</p><p> 4.3業(yè)務(wù)流程圖14</p><p
8、> 五、 概要設(shè)計(jì)16</p><p> 5.1 基本設(shè)計(jì)概念和處理流程16</p><p> 5.2. 系統(tǒng)層次模塊圖16</p><p> 5.3. 系統(tǒng)層次模塊圖16</p><p> 5.4. 模塊設(shè)計(jì)17</p><p> 六、數(shù)據(jù)庫(kù)設(shè)計(jì)19</p><p&g
9、t;<b> 6.1 引言19</b></p><p> 6.1.1 編寫目的19</p><p> 6.1.2 背景19</p><p> 6.1.3 定義19</p><p> 6.1.4 參考資料20</p><p> 6.2 外部設(shè)計(jì)21</p>&l
10、t;p> 6.2.1 標(biāo)識(shí)符和狀態(tài)21</p><p> 6.2.2 使用它的程序21</p><p> 6.2.3 約定21</p><p> 6.2.4 專門指導(dǎo)21</p><p> 6.2.5 支持軟件21</p><p> 6.3 結(jié)構(gòu)設(shè)計(jì)22</p><p&
11、gt; 6.4 運(yùn)用設(shè)計(jì)26</p><p> 6.4.1 數(shù)據(jù)字典設(shè)計(jì)26</p><p> 6.4.2 安全保密設(shè)計(jì)27</p><p><b> 七、詳細(xì)設(shè)計(jì)27</b></p><p><b> 7.1 引言27</b></p><p> 7.1
12、.1 編寫目的27</p><p> 7.1.2 背景28</p><p> 7.1.3定義28</p><p> 7.1.4 參考資料28</p><p><b> 八、測(cè)試報(bào)告28</b></p><p><b> 8.1 引言28</b></
13、p><p> 8.1.1 編寫目的28</p><p> 8.1.2 定義29</p><p> 8.1.3 參考資料29</p><p> 8.2 測(cè)試概要29</p><p> 8.3 測(cè)試結(jié)果及發(fā)現(xiàn)32</p><p> 8.3.1 測(cè)試具體實(shí)施32</p>
14、<p> 8.4 對(duì)軟件功能的結(jié)論33</p><p> 8.4.1 用戶登錄模塊33</p><p> 8.5 分析摘要33</p><p> 8.5.1 能力33</p><p> 8.5.2 評(píng)價(jià)34</p><p> 8.6 測(cè)試資源消耗34</p><
15、p><b> 九、用戶手冊(cè)34</b></p><p><b> 9.1 引言34</b></p><p> 9.1.1 編寫目的34</p><p> 9.1.2 定義34</p><p> 9.1.3 參考資料34</p><p><b&g
16、t; 9.2 用途35</b></p><p> 9.2.1 功能35</p><p> 9.2.2 性能35</p><p> 9.2.3 安全保密36</p><p><b> 十、附錄38</b></p><p> 10.1 數(shù)據(jù)庫(kù)的封裝代碼DB.java
17、38</p><p> 10.2 選課系統(tǒng)登陸界面代碼Login.java39</p><p> 10.3 選課系統(tǒng)學(xué)生選課界面代碼Student.java43</p><p> 10.4 學(xué)生選課情況查詢代碼Query.java47</p><p> 10.5 學(xué)生用戶登錄密碼的修改代碼Modify.java50</p
18、><p> 10.6 教師查詢學(xué)生選課的情況代碼Teacher.java53</p><p> 10.7 超級(jí)管理員查詢學(xué)生選課的情況代碼Administrator.java55</p><p><b> 一、問題定義 </b></p><p><b> 1.1問題的定義</b></
19、p><p> 學(xué)生選課系統(tǒng):也稱學(xué)生課程選修制,即允許學(xué)生對(duì)學(xué)校所開設(shè)的課程有一定的選擇自由,包括選擇課程、任課教師和上課時(shí)間,選擇適合自己的學(xué)習(xí)量和學(xué)習(xí)進(jìn)程。對(duì)于習(xí)慣了中小學(xué)課程(所有的課程由學(xué)校統(tǒng)一安排,而且科目從小學(xué)到高中有連續(xù)性)的大學(xué)新生來說,大學(xué)的課程多得令他們眼花繚亂,課程分類也比較復(fù)雜,因此選課對(duì)他們而言還是一件新鮮而陌生的事物。但大學(xué)的學(xué)習(xí)與選課有莫大的關(guān)系,必須了解它,才能掌握主動(dòng)權(quán)。而要了解選
20、課制,首先要對(duì)大學(xué)的課程設(shè)置有所認(rèn)識(shí)。</p><p> 1.2 系統(tǒng)要解決的問題</p><p> 建立一個(gè)小型的學(xué)生選課系統(tǒng),用戶(學(xué)號(hào),姓名,年齡,性別,系別,班級(jí),出生年月)可以注冊(cè)成為會(huì)員,注冊(cè)的用戶可以選擇要選修的課程,也可以查詢已選修的課程(包含課程名、任課教師和上課時(shí)間,學(xué)分)等,老師(姓名,職位,所教課程)可以查看該門課程的選課人數(shù)及上課時(shí)間,管理員可以查看所有學(xué)生的
21、選課情況,查看各門課程的任課老師的信息,查看各門課程選課人數(shù),查看注冊(cè)用戶信息。</p><p><b> 二、可行性研究</b></p><p><b> 2.1 引言</b></p><p><b> 2.1.1目的</b></p><p> 本項(xiàng)目開發(fā)計(jì)劃旨在明確
22、規(guī)范開發(fā)過程,保證項(xiàng)目質(zhì)量,</p><p> 同時(shí)還作為項(xiàng)目通過評(píng)審的依據(jù)。并說明</p><p> 該軟件開發(fā)項(xiàng)目的實(shí)現(xiàn)在技術(shù)上、經(jīng)濟(jì)上和社會(huì)因素上的可行性,評(píng)述為了合理</p><p> 地達(dá)到開發(fā)目標(biāo)可供選擇的各種可能實(shí)施方案,說明并論證所選定實(shí)施方案的理</p><p><b> 由。</b></
23、p><p> 2.1.2背景及功能</p><p> A、系統(tǒng)的名稱為學(xué)生選課系統(tǒng)(Java實(shí)現(xiàn));</p><p> 2.2 可行性研究的前提</p><p><b> 2.2.1 要求</b></p><p><b> A、功能:</b></p>&l
24、t;p><b> 1) 普通用戶:</b></p><p> 登錄系統(tǒng)前用戶可以查看用戶選課的情況;用戶可以注冊(cè);查找忘記的密碼;查看自己選課的一些相關(guān)信息。</p><p> B、性能:查詢效率盡可能做到精準(zhǔn),信息維護(hù)做到簡(jiǎn)單易用,不需要對(duì)用戶進(jìn)行培訓(xùn);</p><p> C、完成期限:到本學(xué)期的第21 周。</p>
25、<p><b> 2.2.2 目標(biāo)</b></p><p> 系統(tǒng)應(yīng)該盡量做到以下的目標(biāo):</p><p> A、人力與設(shè)備費(fèi)用的減少;</p><p> B、采用現(xiàn)代程序設(shè)計(jì)技術(shù);</p><p> C、數(shù)據(jù)的處理速度提高;</p><p> D、管理信息服務(wù)的改進(jìn);&
26、lt;/p><p> E、人員利用率盡可能提高;</p><p> F、結(jié)果應(yīng)能清除地審查。</p><p> 2.2.3 條件、假定和限制</p><p> 本系統(tǒng)的條件、假定和所受到的限制有以下幾方面:</p><p> A、所開發(fā)系統(tǒng)的運(yùn)行壽命的最小值為3 年;</p><p>
27、B、硬件、軟件、運(yùn)行環(huán)境和開發(fā)環(huán)境方面的條件和限制:由于是個(gè)人電腦,</p><p> 所以硬件設(shè)施可能在性能上比較差;軟件全部是免費(fèi)的,功能可能會(huì)受到相應(yīng)的</p><p> 限制;對(duì)windows xp比較熟悉,所以開發(fā)主要是在這個(gè)平臺(tái)上進(jìn)行的;</p><p> C、可利用的信息和資源:沒有相應(yīng)的軟件項(xiàng)目開發(fā)的經(jīng)驗(yàn),所以能力還是</p>&
28、lt;p> 有限,收集的資料來源有限,故對(duì)信息的了解不夠全面;</p><p> 2.2.4 進(jìn)行可行性研究的方法</p><p> 根據(jù)課本里面的相關(guān)知識(shí)、圖書館所借的書以及平時(shí)所積累的一些經(jīng)驗(yàn),綜</p><p> 合本系統(tǒng)所要達(dá)到的目標(biāo)進(jìn)行分析而得到。</p><p> 2.3 所建議的系統(tǒng)</p><
29、;p> 2.3.1 對(duì)所建議系統(tǒng)的說明</p><p> 本系統(tǒng)是運(yùn)用Java制作的一個(gè)小型學(xué)生選課系統(tǒng)系統(tǒng),包括用戶注冊(cè),選課查詢。實(shí)現(xiàn)這個(gè)系統(tǒng)將用到以下幾種技術(shù):</p><p> 1) Java主要是用來處理各種業(yè)務(wù);</p><p> 2) 數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)。</p><p> 2.3.2 處理流程和數(shù)據(jù)流程</p
30、><p> 系統(tǒng)的處理流程圖見下圖所示:</p><p> 學(xué)生登錄及選課情況:</p><p> 教師登錄及查看信息:</p><p> 管理員登錄及管理信息:</p><p> 2.3.3 工作負(fù)荷</p><p> 現(xiàn)有系統(tǒng)所承擔(dān)的工作及工作量:</p><p&
31、gt;<b> 1)系統(tǒng)功能:</b></p><p> (1) 登錄、注冊(cè),修改密碼等功能.</p><p><b> (2) 選課功能</b></p><p><b> (3) 查詢功能</b></p><p> 2)由于現(xiàn)有開發(fā)的系統(tǒng)比較小,只涉及小量的數(shù)據(jù),所
32、以工作量小。</p><p> 2.3.4技術(shù)條件方面的可行性</p><p> 2.4 社會(huì)因素方面的可行性</p><p> 2.4.1 法律方面的可行性</p><p> 2.4.2 使用方面的可行性</p><p> 本系統(tǒng)一經(jīng)制作完成,可以在windows系統(tǒng)中運(yùn)行,加之本系統(tǒng)操作上面不存在技術(shù)性,
33、所以可以達(dá)到易操作性。</p><p><b> 2.5 經(jīng)濟(jì)可行性</b></p><p><b> 三、項(xiàng)目開發(fā)計(jì)劃</b></p><p><b> 3.1 引言</b></p><p> 3.1.1 編寫目的</p><p><b&
34、gt; 3.1.2 背景</b></p><p><b> 說明:</b></p><p> 待開發(fā)的軟件系統(tǒng)的名稱:學(xué)生選課系統(tǒng);</p><p><b> 3.2 項(xiàng)目概述</b></p><p> 3.2.1 工作內(nèi)容</p><p> 本項(xiàng)目的
35、內(nèi)容包括技術(shù)和非技術(shù)兩大部分:技術(shù)上需要進(jìn)行數(shù)據(jù)庫(kù)開發(fā)和java技術(shù)的基本使用。非技術(shù)部分包括:人力資源的充分利用。</p><p><b> 3.2.2 產(chǎn)品</b></p><p> 3.2.2.1 程序</p><p> 3.2.2.2 文件</p><p> 3.2.2.3 服務(wù)</p>&
36、lt;p> A、用戶方面:可以登錄、注冊(cè)、查詢等;</p><p> B、系統(tǒng)方面:查看注冊(cè)用戶信息、管理系統(tǒng)的各種信息、查看系統(tǒng)的信息。</p><p> C、老師方面:查看學(xué)生選課情況、</p><p> 3.2.3 驗(yàn)收標(biāo)準(zhǔn)</p><p> 3.2.4 完成項(xiàng)目的最遲期限</p><p> 3
37、.2.5 關(guān)鍵問題及支持的系統(tǒng)條件</p><p> 本項(xiàng)目用到了Java程序設(shè)計(jì)和數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)應(yīng)用等開源的框架,所以對(duì)學(xué)生選課系統(tǒng)的功能的實(shí)現(xiàn)可能欠缺。</p><p><b> 3.3 支持條件</b></p><p> A、運(yùn)行該軟件系統(tǒng)所需要的硬設(shè)備包括服務(wù)器和客戶機(jī),要求滿足(最低</p><p>&l
38、t;b> 配置):</b></p><p> 1) 1G Hz 以上處理器,內(nèi)存不少于256M。</p><p> 2) 3G 以上空余硬盤空間。</p><p> 3) 客戶機(jī)為普通電腦。 </p><p> B、本系統(tǒng)是運(yùn)用Ja
39、va制作的一個(gè)小型學(xué)生選課系統(tǒng)系統(tǒng),包括用戶注冊(cè),選課查詢。實(shí)現(xiàn)這個(gè)系統(tǒng)將用到以下幾種技術(shù):</p><p> 1) Java主要是用來處理各種業(yè)務(wù);</p><p> 2) 數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)(采用mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)該系統(tǒng))。</p><p><b> 四、需求分析</b></p><p><b> 4
40、.1 系統(tǒng)需求</b></p><p> 用戶的需求具體體現(xiàn)在各種學(xué)習(xí)成績(jī)的提供、保存、更新和查詢方面,這就要求數(shù)據(jù)庫(kù)結(jié)構(gòu)能充分滿足各種信息的輸入和輸出。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)處理的流程,組成一份詳盡數(shù)據(jù)字典,為后面的具體設(shè)計(jì)打下基礎(chǔ)。</p><p><b> 4.2. 功能需求</b></p><p> 通過系統(tǒng)功能
41、分析,針對(duì)一般的網(wǎng)上選課系統(tǒng),總結(jié)出如下的需求信息:</p><p> (1) 學(xué)生的需求:網(wǎng)上選課、選課情況查詢包括該門課程的老師信息,上課時(shí)間以及該門課程的學(xué)分,修改密碼等;</p><p> (2) 本系統(tǒng)主要實(shí)現(xiàn)學(xué)生信息管理和選課查詢。</p><p> 學(xué)生信息包括學(xué)號(hào),姓名,年齡,性別,系別,班級(jí),出生年月;</p><p>
42、; 課程信息包括課程名,上課時(shí)間,成績(jī),學(xué)分,學(xué)時(shí)數(shù);</p><p> 老師信息包括姓名,職位,所教課程;</p><p> 管理員信息包括用戶名和密碼,能夠查詢所有學(xué)生的選課情況及信息;</p><p><b> 4.3業(yè)務(wù)流程圖</b></p><p> 學(xué)生登錄及選課情況:</p><
43、;p> 教師登錄及查看信息:</p><p> 管理員登錄及管理信息:</p><p><b> 五、 概要設(shè)計(jì)</b></p><p> 5.1 基本設(shè)計(jì)概念和處理流程</p><p> 互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,Java等設(shè)計(jì)工具的方便實(shí)用,以及數(shù)據(jù)庫(kù)技術(shù)的發(fā)展給本系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)提供了技術(shù)上的支持。&l
44、t;/p><p> 系統(tǒng)基本的流程是:用戶登錄->主界面->選擇各項(xiàng)子系統(tǒng)(選課)</p><p> 老師登錄 ->主界面->選擇各項(xiàng)子系統(tǒng)(查看學(xué)生選課情況)</p><p> 管理員登錄->主界面->選擇各項(xiàng)子系統(tǒng)(管理學(xué)生選課)</p><p> 5.2. 系統(tǒng)層次模塊圖</p>&
45、lt;p> 5.3. 系統(tǒng)層次模塊圖</p><p><b> 5.4. 模塊設(shè)計(jì)</b></p><p> (1) 用戶注冊(cè)模塊:填寫用戶名、密碼、確認(rèn)密碼</p><p> (2) 用戶登錄模塊:填寫已注冊(cè)的用戶名稱,填寫正確的密碼,進(jìn)入主控制頁(yè)面。</p><p> (3) 用戶選課模塊:從所有課程
46、中選擇自己要選修的課程。</p><p> (4) 用戶查詢模塊:可以進(jìn)行查看所選課程的操作。</p><p><b> 六、數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b> 6.1 引言</b></p><p> 6.1.1 編寫目的</p><p><b>
47、 6.1.2 背景</b></p><p><b> 6.1.3 定義</b></p><p> 文件中用到的專門術(shù)語的定義和外文的首字母組詞的原詞組如下:</p><p> A、B/S:B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。
48、在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。相對(duì)于C/S結(jié)構(gòu)屬于“胖”客戶端,需要在使用者電腦上安裝相應(yīng)的操作軟件來說,B/S結(jié)構(gòu)是屬于一種“瘦”客戶端,大多數(shù)或主要的業(yè)務(wù)邏輯都存在在服務(wù)器端,因此,B/S結(jié)構(gòu)的系統(tǒng)不需要安裝客戶端軟件,它運(yùn)行在客戶端的瀏覽器之上,系統(tǒng)升級(jí)或維護(hù)時(shí)只需更新服務(wù)器端軟件即可,
49、這樣就大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本(TCO)。B/S結(jié)構(gòu)系統(tǒng)的產(chǎn)生為系統(tǒng)面對(duì)無限未知用戶提供了可能。當(dāng)然,與C/S結(jié)構(gòu)相比,B/S結(jié)構(gòu)也存在著系統(tǒng)運(yùn)行速度較慢,訪問系統(tǒng)的用戶不可控的弱點(diǎn);</p><p> B、DBMS:英文全程:DataBase Management System ,翻譯為中文就是“數(shù)據(jù)庫(kù)管理系統(tǒng)”,是位于用戶和操作系統(tǒng)之間的一層數(shù)據(jù)庫(kù)管
50、理軟件。數(shù)據(jù)庫(kù)管理系統(tǒng)和操作系統(tǒng)一樣是計(jì)算機(jī)的基礎(chǔ)軟件,也是一個(gè)大型復(fù)雜的軟件系統(tǒng)。它的主要功能包括一下幾個(gè)方面:1.數(shù)據(jù)定義功能。2.數(shù)據(jù)組織,存儲(chǔ)和管理;3.數(shù)據(jù)操作功能。4.數(shù)據(jù)庫(kù)的事物管理和運(yùn)行管理。5.數(shù)據(jù)庫(kù)的建立和維護(hù)功能。6.其他功能;</p><p> C、SQL語言:SQL(Structured Query Language)結(jié)構(gòu)化查詢語言,是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢
51、、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。同時(shí)也是數(shù)據(jù)庫(kù)</p><p><b> 6.2 外部設(shè)計(jì)</b></p><p> 6.2.1 標(biāo)識(shí)符和狀態(tài)</p><p> 數(shù)據(jù)庫(kù)軟件:Mysql</p><p> 系統(tǒng)要求建立的數(shù)據(jù)庫(kù)名稱:sc</p><p> 6.2.2 使用它的程序</p&
52、gt;<p><b> 6.2.3 約定</b></p><p> 6.2.4 專門指導(dǎo)</p><p> 系統(tǒng)使用Hibernate實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的接口,該接口基于Hibernate方法生成</p><p> 的CLASS文件對(duì)數(shù)據(jù)庫(kù)的建立和控制,是應(yīng)用程序與數(shù)據(jù)庫(kù)的橋梁。最終是對(duì)</p><p>
53、 class文件操作來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的管理(一般是一個(gè)數(shù)據(jù)表對(duì)應(yīng)一個(gè)CLASS文</p><p><b> 件)。</b></p><p> 6.2.5 支持軟件</p><p> Mysql提供了核心的引擎,為支持本系統(tǒng)的數(shù)據(jù)庫(kù)BBS需要使用到Mysql</p><p><b> 的幾個(gè)組件,包括:&
54、lt;/b></p><p> A、圖形管理工具M(jìn)ySQL Administrator 和MySQL Query Browser;</p><p> B、MySQL-front。提供了解決MySQL中插入中文亂碼的問題;</p><p> C、Navicat Lite for MySQL??梢杂脕砜焖俳?shù)據(jù)庫(kù),可拖拉式的MySQL插件。</p&g
55、t;<p><b> 6.3 結(jié)構(gòu)設(shè)計(jì)</b></p><p><b> 6.4 運(yùn)用設(shè)計(jì)</b></p><p> 6.4.1 數(shù)據(jù)字典設(shè)計(jì)</p><p> 數(shù)據(jù)項(xiàng)名:username</p><p><b> 說明: 用戶登入名</b></p
56、><p><b> 別名: 無</b></p><p> 數(shù)據(jù)類型:varchar</p><p><b> 長(zhǎng)度: 3-10</b></p><p><b> 位置:用戶信息表</b></p><p> 數(shù)據(jù)項(xiàng)名:password</p&g
57、t;<p> 說明: 用戶登入密碼</p><p><b> 別名: 無</b></p><p> 數(shù)據(jù)類型:varchar</p><p><b> 長(zhǎng)度: 3-10</b></p><p><b> 位置:用戶信息表</b></p>&
58、lt;p><b> 數(shù)據(jù)項(xiàng)名:name</b></p><p><b> 說明: 用戶登入名</b></p><p><b> 別名: 無</b></p><p> 數(shù)據(jù)類型:varchar</p><p><b> 長(zhǎng)度: 3-10</b>
59、;</p><p><b> 位置:用戶信息表</b></p><p><b> 數(shù)據(jù)項(xiàng)名:dept</b></p><p> 說明: 用戶所在學(xué)院</p><p><b> 別名: 無</b></p><p> 數(shù)據(jù)類型:varchar<
60、;/p><p><b> 長(zhǎng)度: 3-10</b></p><p><b> 位置:用戶信息表</b></p><p> 數(shù)據(jù)項(xiàng)名:banji</p><p> 說明: 用戶所在班級(jí)</p><p><b> 別名: 無</b></p>
61、<p> 數(shù)據(jù)類型:varchar</p><p><b> 長(zhǎng)度: 3-10</b></p><p><b> 位置:用戶信息表</b></p><p> 數(shù)據(jù)項(xiàng)名:lessons</p><p> 說明: 用戶所選課程</p><p><b&
62、gt; 別名: 無</b></p><p> 數(shù)據(jù)類型:varchar</p><p><b> 長(zhǎng)度: 3-10</b></p><p><b> 位置:用戶信息表</b></p><p> 6.4.2 安全保密設(shè)計(jì)</p><p> 一個(gè)系統(tǒng),它的
63、安全性是很重要的,尤其是數(shù)據(jù)庫(kù)的安全性能,每當(dāng)用戶發(fā)出存取數(shù)據(jù)庫(kù)的操作請(qǐng)求后,DBMS查找數(shù)據(jù)字典,根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查,若用戶的操作請(qǐng)求超出了定義的權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。為了讓某些合法的用戶得到一定的權(quán)限,數(shù)據(jù)庫(kù)管理員可以授權(quán)給讓他們。在一些敏感的數(shù)據(jù)上面采用了MD5算法進(jìn)行加密,比如用戶的登入密碼,就算是數(shù)據(jù)泄漏,用戶也不知道怎么登錄系統(tǒng)。</p><p><b> 七、詳細(xì)設(shè)計(jì)&l
64、t;/b></p><p><b> 7.1 引言</b></p><p> 7.1.1 編寫目的</p><p><b> 7.1.2 背景</b></p><p><b> 7.1.3定義</b></p><p> JVM:Java
65、Virtual Machine(Java 虛擬機(jī)),它是一個(gè)虛構(gòu)出來的計(jì)算</p><p> 機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。Java 虛擬</p><p> 機(jī)有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系</p><p><b> 統(tǒng)。</b></p><p>&l
66、t;b> 八、測(cè)試報(bào)告</b></p><p><b> 8.1 引言</b></p><p> 8.1.1 編寫目的</p><p><b> 8.1.2 定義</b></p><p> A、白盒測(cè)試:白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,
67、通過測(cè)試來檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照設(shè)計(jì)規(guī)格說明書的規(guī)定正常進(jìn)行,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。這一方法是把測(cè)試對(duì)象看作一個(gè)打開的盒子,測(cè)試人員依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)相關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試,通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。</p><p> B、黑盒測(cè)試:黑盒測(cè)試也稱功能測(cè)試,它是通過測(cè)試來檢測(cè)每個(gè)功能是否都能正常使用。在測(cè)試中,把
68、程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息。黑盒測(cè)試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。</p><p> 8.1.3 參考資料</p><p><b> .</b><
69、;/p><p><b> 8.2 測(cè)試概要</b></p><p> 表8-1 測(cè)試本系統(tǒng)的模塊計(jì)劃</p><p><b> 1)學(xué)生登錄時(shí)</b></p><p><b> 用戶名和密碼都為空</b></p><p> B.學(xué)生用戶名和密碼有一
70、個(gè)為空</p><p> C.學(xué)生用戶名和密碼不匹配</p><p><b> 2)教師登錄時(shí)</b></p><p><b> 用戶名和密碼都為空</b></p><p> B.學(xué)生用戶名和密碼有一個(gè)為空</p><p> C.學(xué)生用戶名和密碼不匹配</p&
71、gt;<p><b> 3)管理員登錄時(shí)</b></p><p><b> 用戶名和密碼都為空</b></p><p> B.學(xué)生用戶名和密碼有一個(gè)為空</p><p> C.學(xué)生用戶名和密碼不匹配</p><p><b> 4)學(xué)生修改密碼時(shí)</b>&
72、lt;/p><p> 用戶名、原密碼、新密碼都至少有一個(gè)為空</p><p> B.新密碼兩次輸入不同</p><p> C.學(xué)生用戶名和密碼不匹配</p><p><b> D.修改密碼成功</b></p><p> 8.3 測(cè)試結(jié)果及發(fā)現(xiàn)</p><p> 8.
73、3.1 測(cè)試具體實(shí)施</p><p> A、用戶登錄模塊測(cè)試。該算法用例表見表8-2 所示。</p><p> 下圖是用戶登錄流程圖:</p><p> 8.4 對(duì)軟件功能的結(jié)論</p><p> 8.4.1 用戶登錄模塊</p><p> 這個(gè)模塊可以防止用戶未輸入用戶名,未輸入密碼的時(shí)候登入到權(quán)限以外的系
74、統(tǒng)。</p><p><b> 8.5 分析摘要</b></p><p><b> 8.5.1 能力</b></p><p><b> 8.5.2 評(píng)價(jià)</b></p><p><b> 九、用戶手冊(cè)</b></p><p>
75、;<b> 9.1 引言</b></p><p> 9.1.1 編寫目的</p><p> 本手冊(cè)主要對(duì)學(xué)生選課系統(tǒng)進(jìn)行詳細(xì)描述和講解,讓用戶可以順利的使用本系統(tǒng)以及更好的管理本系統(tǒng)。</p><p><b> 9.1.2 定義</b></p><p> MD5:Message Diges
76、t Algorithm MD5(中文名為消息摘要算法第五版)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù)。</p><p> 9.1.3 參考資料</p><p><b> 9.2 用途</b></p><p><b> 9.2.1 功能</b></p><p> 此系統(tǒng)
77、的功能層次圖如圖9-1 所示:</p><p><b> 9.2.2 性能</b></p><p> 9.2.2.1 時(shí)間特性</p><p> 本軟件由于數(shù)據(jù)庫(kù)較小,相應(yīng)時(shí)間、更新處理時(shí)間、數(shù)據(jù)傳送、轉(zhuǎn)換時(shí)間、計(jì)算時(shí)間等都非常迅速,如下:</p><p> A、響應(yīng)時(shí)間:響應(yīng)時(shí)間為5 秒內(nèi);</p>
78、<p> B、更新處理時(shí)間:由系統(tǒng)運(yùn)行狀態(tài)決定;</p><p> C、數(shù)據(jù)的轉(zhuǎn)換和傳輸時(shí)間:能夠在5 秒鐘內(nèi)完成。</p><p> 9.2.2.2 靈活性</p><p> 對(duì)于信息的查找,本軟件提供了模糊查詢的方法,這樣最大的滿足用戶的要求,方便用戶的使用。</p><p> 9.2.3 安全保密</p&g
79、t;<p> 一個(gè)系統(tǒng),它的安全性是很重要的,尤其是數(shù)據(jù)庫(kù)的安全性能,每當(dāng)用戶發(fā)出存取數(shù)據(jù)庫(kù)的操作請(qǐng)求后,DBMS查找數(shù)據(jù)字典,根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查,若用戶的操作請(qǐng)求超出了定義的權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。為了讓某些合法的用戶得到一定的權(quán)限,數(shù)據(jù)庫(kù)管理員可以授權(quán)給讓他們。在一些敏感的數(shù)據(jù)上面采用了MD5算法進(jìn)行加密,比如用戶的登入密碼,就算是數(shù)據(jù)泄漏,用戶也不知道怎么登錄系統(tǒng)。</p><p&
80、gt;<b> 十、附錄</b></p><p> 10.1 數(shù)據(jù)庫(kù)的封裝代碼DB.java</p><p> import java.sql.*;</p><p> public class DB {</p><p> public static Connection getConn() {</p>
81、;<p> Connection conn = null;</p><p><b> try {</b></p><p> Class.forName("com.mysql.jdbc.Driver");</p><p> conn = DriverManager.getConnection("
82、jdbc:mysql://localhost/sc", "root", "root");</p><p> } catch (ClassNotFoundException e) {</p><p> e.printStackTrace();</p><p> } catch (SQLException e) {
83、</p><p> e.printStackTrace();</p><p><b> } </b></p><p> return conn;</p><p><b> }</b></p><p> public static Statement getState
84、(Connection conn) {</p><p> Statement stmt = null;</p><p><b> try {</b></p><p> if(conn != null) {</p><p> stmt = conn.createStatement();</p><
85、;p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> } </b></p><p> return stmt;</p><p>
86、<b> }</b></p><p> public static ResultSet getResultSet(Statement stmt, String sql) {</p><p> ResultSet rs = null;</p><p><b> try{</b></p><p>
87、; rs = stmt.executeQuery(sql);</p><p> } catch(SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p> return rs;</p><p>&
88、lt;b> }</b></p><p> public static void close(Connection conn) {</p><p><b> try {</b></p><p> if(conn !=null){</p><p> conn.close();</p>
89、<p> conn = null;</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><
90、;p><b> }</b></p><p> public static void close(Statement stmt) {</p><p><b> try {</b></p><p> if(stmt !=null){</p><p> stmt.close();</
91、p><p> stmt = null;</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p>
92、;<p><b> }</b></p><p> public static void close(ResultSet rs) {</p><p><b> try {</b></p><p> if(rs !=null){</p><p> rs.close();</
93、p><p> rs = null;</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p>
94、<p><b> }</b></p><p><b> }</b></p><p> 10.2 選課系統(tǒng)登陸界面代碼Login.java</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p>
95、;<p> import java.sql.*;</p><p> import javax.swing.*;</p><p> public class Login extends Frame implements ActionListener {</p><p> Label useName, passWord, l1;</p>
96、<p> TextField tf1, tf2;</p><p> Checkbox ck1, ck2, ck3;</p><p> Button b1, b2;</p><p> CheckboxGroup group;</p><p> String str;</p><p> publi
97、c void setStr(String str) {</p><p> this.str = str;</p><p><b> }</b></p><p> Connection conn = null;</p><p> Statement stmt = null;</p><p>
98、 ResultSet rs = null;</p><p> public void lauchFrame() {</p><p> this.setTitle("學(xué)生選課登錄");</p><p> setLayout(null);</p><p> useName = new Label("用戶名
99、稱 :");</p><p> passWord = new Label("用戶密碼 :");</p><p> tf1 = new TextField();</p><p> tf2 = new TextField();</p><p> l1 = new Label("學(xué)生選課系統(tǒng)---登錄
100、/Login");</p><p> str = tf1.getText();</p><p> group = new CheckboxGroup();</p><p> ck1 = new Checkbox("管理員",false , group);</p><p> ck2 = new Checkb
101、ox("學(xué)生", true, group);</p><p> ck3 = new Checkbox("教師", false, group);</p><p> b1 = new Button("確定");</p><p> b2 = new Button("重置");</p
102、><p> add(useName);</p><p> add(passWord);</p><p><b> add(l1);</b></p><p><b> add(tf1);</b></p><p><b> add(tf2);</b>&
103、lt;/p><p><b> add(ck1);</b></p><p><b> add(ck2);</b></p><p><b> add(ck3);</b></p><p><b> add(b1);</b></p><p&
104、gt;<b> add(b2);</b></p><p> l1.setBounds(new Rectangle(350, 150, 200, 50));</p><p> useName.setBounds(new Rectangle(300, 200, 60, 50));</p><p> passWord.setBounds(ne
105、w Rectangle(300, 250, 60, 50));</p><p> tf1.setBounds(new Rectangle(370, 210, 200, 25));</p><p> tf2.setBounds(new Rectangle(370, 260, 200, 25));</p><p> ck1.setBounds(new Rectan
106、gle(350, 280, 50, 50));</p><p> ck2.setBounds(new Rectangle(410, 280, 50, 50));</p><p> ck3.setBounds(new Rectangle(470, 280, 50, 50));</p><p> b1.setBounds(new Rectangle(320, 33
107、0, 40, 25));</p><p> b2.setBounds(new Rectangle(400, 330, 40, 25));</p><p> b1.addActionListener(this);</p><p> b2.addActionListener(this);</p><p> tf2.setEchoChar(
108、'*');</p><p> setBounds(100,50,800,700);</p><p> setVisible(true);</p><p> setResizable(false);</p><p> this.addWindowListener(new WindowAdapter() {</p&g
109、t;<p><b> @Override</b></p><p> public void windowClosing(WindowEvent e) {</p><p> System.exit(0);</p><p><b> }</b></p><p><b&g
110、t; });</b></p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if (e.getSource() == b1 && ck2.getState()) { // 確定</p>
111、<p> if (tf1.getText().equals("") || tf2.getText().equals("")) {</p><p> JOptionPane.showMessageDialog(null, "學(xué)生用戶名和密碼輸入不能為空!");</p><p><b> } else {
112、</b></p><p> conn = DB.getConn();</p><p> stmt = DB.getState(conn);</p><p> String sql = "select * from login";</p><p> rs = DB.getResultSet(stmt, s
113、ql);</p><p> boolean check = false;</p><p><b> try {</b></p><p> while (rs.next()) {</p><p> String userName = rs.getString(1); // 獲得數(shù)據(jù)庫(kù)第一列</p>&
114、lt;p> String passWord = rs.getString(2); // 獲得數(shù)據(jù)庫(kù)第二列</p><p> if (tf1.getText().equals(userName)</p><p> && tf2.getText().equals(passWord)) { // 判斷語句</p><p> check = t
115、rue;</p><p> this.dispose();</p><p> str = tf1.getText();</p><p> new Student(str);</p><p><b> }</b></p><p> }if (check == false) {</p&
116、gt;<p> JOptionPane.showMessageDialog(null, "登陸失敗,請(qǐng)重新輸入學(xué)生用戶名和密碼!");</p><p><b> }</b></p><p> } catch (SQLException el) {</p><p> el.printStackT
117、race();</p><p> } finally {</p><p> DB.close(rs);</p><p> DB.close(stmt);</p><p> DB.close(conn);</p><p><b> }</b></p><p><
118、;b> }</b></p><p> } else if (e.getSource() == b1 && ck1.getState()) { </p><p> if (tf1.getText().equals("") || tf2.getText().equals("")) {</p>
119、<p> JOptionPane.showMessageDialog(null, "請(qǐng)輸入管理員用戶名和密碼!");</p><p><b> } else {</b></p><p> conn = DB.getConn();</p><p> stmt = DB.getState(conn);</
120、p><p> String sql = "select * from administrator";</p><p> rs = DB.getResultSet(stmt, sql);</p><p> boolean check = false;</p><p><b> try {<
121、/b></p><p> while (rs.next()) {</p><p> String userName = rs.getString(1); // 獲得數(shù)據(jù)庫(kù)第一列</p><p> String passWord = rs.getString(2); // 獲得數(shù)據(jù)庫(kù)第二列</p><p> if (tf1.get
122、Text().equals(userName)</p><p> && tf2.getText().equals(passWord)) { // 判斷語句</p><p> check = true;</p><p> this.dispose();</p><p> new Administrator();<
123、/p><p><b> }</b></p><p> }if (check == false) {</p><p> JOptionPane.showMessageDialog(null, "登陸失敗,請(qǐng)重新輸入管理員用戶名和密碼!");</p><p><b> }</
124、b></p><p> } catch (SQLException el) {</p><p> el.printStackTrace();</p><p> } finally {</p><p> DB.close(rs);</p><p> DB.close(stmt);</p>&
125、lt;p> DB.close(conn);</p><p><b> }</b></p><p><b> }</b></p><p> } else if (e.getSource() == b1 && ck3.getState()) { </p><p> if
126、 (tf1.getText().equals("") || tf2.getText().equals("")) {</p><p> JOptionPane.showMessageDialog(null, "請(qǐng)輸入教師用戶名和密碼!");</p><p><b> } else {</b></p&g
127、t;<p> conn = DB.getConn();</p><p> stmt = DB.getState(conn);</p><p> String sql = "select * from teacher";</p><p> rs = DB.getResultSet(stmt, sql);<
128、/p><p> boolean check = false;</p><p><b> try {</b></p><p> while (rs.next()) {</p><p> String userName = rs.getString(1); // 獲得數(shù)據(jù)庫(kù)第一列</p><p>
129、 String passWord = rs.getString(2); // 獲得數(shù)據(jù)庫(kù)第二列</p><p> if (tf1.getText().equals(userName)</p><p> && tf2.getText().equals(passWord)) { // 判斷語句</p><p> check = true;<
130、/p><p> this.dispose();</p><p> new Teacher();</p><p><b> }</b></p><p> }if (check == false) {</p><p> JOptionPane.showMessageDialog(nu
131、ll, "登陸失敗,請(qǐng)重新輸入教師用戶名和密碼!");</p><p><b> }</b></p><p> } catch (SQLException el) {</p><p> el.printStackTrace();</p><p> } finally {</p&
132、gt;<p> DB.close(rs);</p><p> DB.close(stmt);</p><p> DB.close(conn);</p><p><b> }</b></p><p><b> }</b></p><p> } e
133、lse if (e.getSource() == b2) {</p><p> tf1.setText(""); //把用戶名和密碼設(shè)置為空</p><p> tf2.setText("");</p><p><b> }</b></p><p><b>
134、 }</b></p><p> public static void main(String[] args) {</p><p> new Login().lauchFrame();</p><p><b> }</b></p><p><b> }</b></p>
135、;<p> 10.3 選課系統(tǒng)學(xué)生選課界面代碼Student.java</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import java.sql.*;</p><p> import java.util.*;</p
136、><p> public class Student extends Frame implements ActionListener, ItemListener {</p><p> Label l1, l2, l3, l4, l5, l6;</p><p> Label field1, field2, field3, field4;</p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生選課系統(tǒng)《軟件工程》課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)----學(xué)生選課系統(tǒng)
- 軟件工程課程設(shè)計(jì)報(bào)告--學(xué)生選課系統(tǒng)
- 軟件工程課程設(shè)計(jì)—選課系統(tǒng)
- 軟件工程課程設(shè)計(jì)-選課管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--研究生選課系統(tǒng)
- 《軟件工程》課程設(shè)計(jì)--學(xué)生管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--學(xué)生管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)——學(xué)生管理系統(tǒng)
- 學(xué)生學(xué)籍管理系統(tǒng)-軟件工程課程設(shè)計(jì)
- 軟件工程,選課系統(tǒng)
- 軟件工程課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)
- 軟件工程導(dǎo)論課程設(shè)計(jì)-學(xué)生學(xué)籍管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論