學(xué)生選課系統(tǒng)《軟件工程》課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論