學(xué)生請假管理系統(tǒng)_第1頁
學(xué)生請假管理系統(tǒng)_第2頁
學(xué)生請假管理系統(tǒng)_第3頁
學(xué)生請假管理系統(tǒng)_第4頁
學(xué)生請假管理系統(tǒng)_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程實(shí)踐一設(shè)計(jì)任務(wù)書指導(dǎo)教師簽字:年月日學(xué)生請假管理系統(tǒng)摘要當(dāng)前信息化時(shí)代,講究高效,準(zhǔn)確,及時(shí)的完成事情,近年來學(xué)校都在開展信息化部署,實(shí)現(xiàn)了多媒體教學(xué),網(wǎng)上提交作業(yè),在線考試等學(xué)生考勤對學(xué)校教務(wù)管理是至關(guān)重要,在以前,學(xué)生請假要去找班主任或者領(lǐng)導(dǎo)批準(zhǔn),并且不一定每次都能順利的找到班主任,完成請假批準(zhǔn)。如果學(xué)生不在學(xué)校,沒辦法向班主任提交請假單;對于學(xué)生出勤檢查, 是學(xué)生會(huì)根據(jù)紙制名單逐一點(diǎn)名,或老師根據(jù)學(xué)生上交課堂作業(yè)來判斷學(xué)生是否來上課。這些方法往往具有考勤差錯(cuò)率比較高,考勤效率也比較慢,沒有一個(gè)總體的的記錄和整理,并且紙制的點(diǎn)名冊容易丟失遺漏,耽誤時(shí)間等缺點(diǎn)。針對以上的問題,開發(fā)一

2、種針對學(xué)生請假的考勤網(wǎng)上管理系統(tǒng),通過請假管理系統(tǒng),任課老師可以在課堂上直接登錄考勤記錄網(wǎng)站進(jìn)行課堂查看哪些學(xué)生請假,記錄學(xué)生考勤情況等。此外, 在其他時(shí)間,班主任以及其他老師也可以登錄該網(wǎng)站查詢學(xué)生在某課程的出勤情況。該系統(tǒng)是基于 Java web 的簡單型設(shè)計(jì),它體現(xiàn)了對一些簡單的 JSP標(biāo)簽語言的運(yùn)用,該系統(tǒng)界面簡單、操作方便。根據(jù)實(shí)際需要將系統(tǒng)分為學(xué)生端和教師端,學(xué)生請假和教師批假都需要首先登錄,學(xué)生端實(shí)現(xiàn)了學(xué)生申請請假、申請銷假、查詢自己請假記錄功能;教師端實(shí)現(xiàn)了教師對學(xué)生請假的批準(zhǔn)、銷假批準(zhǔn)以及查詢學(xué)生的請假記錄功能。關(guān)鍵詞: 學(xué)生; 請假管理;Java Web目錄摘要2第 1 章

3、 項(xiàng)目分析11.1 問題描述11.2 技術(shù)分析11.3 工程進(jìn)度計(jì)劃2第 2 章 系統(tǒng)分析與設(shè)計(jì)42.1 系統(tǒng)分析42.1.1 參與者42.1.2 用例圖52.1.3 用例及用例規(guī)約UC001登錄62.1 .3.2 UC002申請請假 UC003 申請銷假 UC004查詢請假記錄102.2 系統(tǒng)設(shè)計(jì)112.2.1 順序圖112.2.2 類圖142.2.3 系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)142.2.4 設(shè)計(jì)時(shí)序圖15圖 2.10 學(xué)生銷假申請?jiān)O(shè)計(jì)時(shí)序圖172.3 數(shù)據(jù)庫設(shè)計(jì)182.3.1E-R 圖182.3.2 關(guān)系模式182.3.3 表的設(shè)計(jì)20第 3 章 實(shí)

4、現(xiàn)與測試213.1 請假申請功能233.1.1 活動(dòng)圖243.1.2 界面253.1.3 代碼253.1.4 測試用例273.2 銷假申請功能錯(cuò)誤!未定義書簽。3.2.1 活動(dòng)圖錯(cuò)誤!未定義書簽。3.2.2 界面錯(cuò)誤!未定義書簽。3.2.3 代碼錯(cuò)誤!未定義書簽。3.2.4 測試用例錯(cuò)誤!未定義書簽。3.3 請假記錄查詢273.3.1 活動(dòng)圖錯(cuò)誤!未定義書簽。3.3.2 界面283.3.3 代碼283.3.4 測試用例283.4 登錄功能283.4.1 活動(dòng)圖323.4.2 界面313.4.3 代碼293.5.4 測試用例32第 4 章 結(jié)束語33附錄A: 附加圖、表38附錄B: 主要源程序3

5、8第 1 章 項(xiàng)目分析隨著計(jì)算機(jī)的發(fā)展與不斷進(jìn)步,各個(gè)領(lǐng)域都出現(xiàn)了新的技 術(shù),曾經(jīng)各種規(guī)模之間的競爭已經(jīng)發(fā)展成為技術(shù)之間的競爭,管理和人才之間的競爭,然而計(jì)算機(jī)技術(shù)的發(fā)展也離不開軟件的更新,在軟件不斷更新和替換的過程中已經(jīng)滲透到各個(gè)領(lǐng)域,政府機(jī)關(guān),各大高校等都不斷向智能方向發(fā)展,學(xué)生請假也成為一件棘手的事情,為了請假學(xué)生需要寫請假條找老師批準(zhǔn),結(jié)果是這個(gè)時(shí)候老師不一定在,另外學(xué)生需要請假時(shí)不一定在學(xué)校,所以為了給廣大師生提供方便,我們需要開發(fā)軟件系統(tǒng)學(xué)生請假管理系統(tǒng)。1.1 問題描述要完成這個(gè)系統(tǒng)最大的問題就是所學(xué)知識(shí)是有限的,在完成其中某些功能時(shí)候所需要的可能就完全沒有接觸過,所以只能用一些

6、簡單的功能代替或者替換掉那些用目前的水平所不能實(shí)現(xiàn)的功能,再者就是對目前所需求的不是很明確,比如要做出一個(gè)請假管理如何去設(shè)置友好界面讓大家都喜歡適應(yīng)去使用,如何把系統(tǒng)做到什么程度才能夠投入使用,這些都是所面臨的棘手問題。1.2 技術(shù)分析該系統(tǒng)用到 MVC 設(shè)計(jì)模式,總共建立了五個(gè)包,界面 View、數(shù)據(jù)對象 DO、數(shù)據(jù)庫連接 DB、數(shù)據(jù)庫操作 DAO、控制層 Control、業(yè)務(wù)層 BO;DO 層是對數(shù)據(jù)對象的封裝,DB 層是連接數(shù)據(jù)庫,DAO 層是包含對數(shù)據(jù)標(biāo)的基本操作,BO 層是所有和業(yè)務(wù)相關(guān)的關(guān)于對數(shù)據(jù)的判斷等,調(diào)用的是 DAO 層然后返回一個(gè)結(jié)果,Control 層是為了獲取用戶參數(shù)并

7、封裝,同時(shí)調(diào)用 BO 層,再根據(jù)調(diào)用得到的不同的結(jié)果在調(diào)用不同的View 層,將處理結(jié)果顯示給用戶。文檔可自由編輯圖 1.1 包圖1.3 工程進(jìn)度計(jì)劃實(shí)際開發(fā)過程中,開發(fā)周期可以分為三個(gè)階段: 第一階段:成果:(1)需求分析(2)對數(shù)據(jù)庫進(jìn)行設(shè)計(jì)目標(biāo):設(shè)計(jì)出適合學(xué)生請假管理系統(tǒng)的數(shù)據(jù)庫;完成數(shù)據(jù)庫的連接時(shí)間:一周第二階段:成果:完成 JSP 頁面和系統(tǒng)代碼目標(biāo):能在編譯器中有效正確運(yùn)行。時(shí)間:一周第三階段:42 / 48文檔可自由編輯成果:寫報(bào)告;目標(biāo):完成系統(tǒng)報(bào)告。時(shí)間:一周第 2 章 系統(tǒng)分析與設(shè)計(jì)學(xué)生請假管理系統(tǒng)必須通過正確的用戶名的密碼方能進(jìn)入系 統(tǒng),系統(tǒng)分為兩大模塊,學(xué)生端和教師端,

8、學(xué)生端和教師端分別有三個(gè)模塊,學(xué)生端分為請假申請、銷假申請、個(gè)人請假記錄查詢, 教師端分為請假審批、銷假審批和學(xué)生請假記錄查詢;學(xué)生提交的請假申請需要教師的審批,只有批準(zhǔn)之后學(xué)生方可提出銷假申請。2.1 系統(tǒng)分析該系統(tǒng)有兩個(gè)參與者,分別為學(xué)生和教師,學(xué)生請假需首先得到教師的批準(zhǔn)方可奏效,學(xué)生與教師都需使用自己的工號(hào)作為用戶名和密碼進(jìn)行登錄。2.1.1 參與者學(xué)生、教師2.1.2 用例圖學(xué)生圖 2.1 用例圖2.1.3 用例及用例規(guī)約請假管理系統(tǒng)學(xué)生端共包含 1 個(gè)參與者、4 個(gè)用例。用例的編號(hào)及名稱如表 1 所示:表 2.1 用例列表用例編號(hào)用例名稱參與者UC-001登錄學(xué)生UC-002申請請

9、假學(xué)生UC-003申請銷假學(xué)生UC-004查詢請假記錄學(xué)生 UC001 登錄參與者學(xué)生需要用戶名和密碼登錄到系統(tǒng),才能進(jìn)行相應(yīng)的操作,系統(tǒng)中設(shè)置學(xué)生的登錄用戶名為學(xué)號(hào),初始化密碼為學(xué)號(hào).表 2.2功能編號(hào)前置條件基本事件流UC-001功能名稱登錄參與者通過瀏覽器打開請假管理系統(tǒng)的登錄頁面1. 系統(tǒng)要求參與者填寫用戶名和密碼。2. 參與者填寫相應(yīng)信息,學(xué)生輸入學(xué)號(hào)作為用戶名, 密碼初始值為學(xué)號(hào)。3. 系統(tǒng)驗(yàn)證用戶輸入信息是否正確備選流 1.用戶名和密碼輸入錯(cuò)誤如果系統(tǒng)檢測到用戶輸入的用戶名和密碼與數(shù)據(jù)庫中不一致,給予用戶“用戶名和密碼不正確”的錯(cuò)誤提示,并要求用戶重新輸入。后置條件

10、界面原型如果用例成功,系統(tǒng)進(jìn)入相應(yīng)權(quán)限頁面參與者學(xué)生 UC002 申請請假該用例的主要參與者為學(xué)生,學(xué)生通過系統(tǒng)填寫請假申請單,請假申請單將會(huì)提交給輔導(dǎo)員審批。表 2.3功能編號(hào)UC-002功能名稱申請請假用 例 描述前置條件基本事件流學(xué)生創(chuàng)建新的請假申請單,錄入請假資料,創(chuàng)建一個(gè)請假申請流程學(xué)生正常登錄到系統(tǒng)中,并打開請假管理頁面1、 學(xué)生選擇創(chuàng)建請假申請單,系統(tǒng)自動(dòng)查詢當(dāng)前的學(xué)生是否存在沒有銷假的記錄,如果存在沒有銷假的請假記錄,執(zhí)行異常流 1.1,如果不存在未銷假記錄,執(zhí)行基本事件流 22、 系統(tǒng)展示申請單錄入界面3、 學(xué)生錄入學(xué)生學(xué)號(hào)、姓名、請假事由(原因、去向),開始時(shí)

11、間、結(jié)束時(shí)間,聯(lián)系方式(個(gè)人聯(lián)系方式、家長聯(lián)系方式)4、 學(xué)生提交申請單,系統(tǒng)進(jìn)行數(shù)據(jù)校驗(yàn),依據(jù)業(yè)務(wù)規(guī)則C,如果數(shù)據(jù)校驗(yàn)不合法,執(zhí)行分支流 4.1,如果數(shù)據(jù)校驗(yàn)合法,執(zhí)行基本事件流 55、 系統(tǒng)為當(dāng)前的請假申請單生成唯一的編號(hào),保存該請假申請單6、 將該流程推進(jìn)到下一環(huán)節(jié)系統(tǒng)應(yīng)該向?qū)W生展現(xiàn)請假申請單的最終頁面,用例結(jié)束分支流4.1 請假信息填寫有誤,顯示填寫不正確的信息提示,并要求學(xué)生重新填寫,顯示填寫請假申請單的頁面。異常流1.1 系統(tǒng)顯示學(xué)生沒有銷假的記錄詳情1.1 學(xué)生確認(rèn)自己的請假記錄是否屬實(shí),用例終止后置條件界面原型業(yè)務(wù)規(guī)則1、 系統(tǒng)將保存該條請假記錄。2、 創(chuàng)建新的請假單并生成唯一

12、的申請編號(hào)3、 創(chuàng)建新的請假申請流程實(shí)例4、 記錄提交后不能夠再修改無A、 包括學(xué)生姓名、輔導(dǎo)員姓名、請假開始時(shí)間(必須選擇當(dāng)天及當(dāng)天之后的時(shí)間)、請假結(jié)束時(shí)間(大于請假開始時(shí)間),請假理由,家長聯(lián)系電話B、系統(tǒng)首先判斷是否存在沒有銷假的記錄,存在的話,將該記錄顯示給當(dāng)前學(xué)生學(xué)生進(jìn)行確認(rèn),如果確認(rèn)是沒有銷假,學(xué)生繼續(xù)執(zhí)行銷假流程,否則, 輔導(dǎo)員進(jìn)行異常處理C、學(xué)生姓名、輔導(dǎo)員姓名、請假開始時(shí)間(必須選擇當(dāng)天及當(dāng)天之后的時(shí)間)、請假結(jié)束時(shí)間(大于請假開始時(shí)間),請假理由,家長聯(lián)系電話信息為必填,不能為空。聯(lián)系方式是否合法,請假開始時(shí)間是否在請假結(jié)束時(shí)間之前。執(zhí)行者學(xué)生涉及的實(shí)體1、 學(xué)生屬性:學(xué)

13、號(hào)、姓名、班級(jí)、性別、聯(lián)系方式、宿舍、標(biāo)志變量(tag=1)2、 請假申請單屬性:學(xué)生(學(xué)號(hào)、姓名),請假事由(原因、去 向),開始時(shí)間、結(jié)束時(shí)間,聯(lián)系方式(個(gè)人聯(lián)系方式、家長聯(lián)系方式)、操作 1(已批準(zhǔn)、待批準(zhǔn))、操作 2(申請銷假、已銷假、未銷假) UC003 申請銷假該用例的主要參與者為學(xué)生,學(xué)生通過系統(tǒng)提出銷假申請, 若申請成功,此時(shí)請假信息中操作 2 的狀態(tài)將修改為申請銷假, 否則提示申請銷假失敗。表 .4 UC004 查詢請假記錄該用例的參與者為學(xué)生,學(xué)生通過系統(tǒng)提出請假記錄查詢, 若查詢成功,學(xué)生請假的記錄將會(huì)顯示在頁面上。表 2.5功能編號(hào)前置條件

14、基本事件流備選流后置條件界面原型參與者UC-004功能名稱查詢請假記錄參與者通過瀏覽器打開請假管理系統(tǒng)的登錄頁面成功登錄進(jìn)入系統(tǒng)主頁面1. 學(xué)生發(fā)出查詢請假記錄,并等待系統(tǒng)驗(yàn)證2. 如果提示驗(yàn)證成功,執(zhí)行基本事件流 33. 顯示請假記錄4. 如果提示驗(yàn)證失敗,執(zhí)行基本事件流 55. 提示查詢失敗或者無請假記錄,請重新申請無如果用例成功,系統(tǒng)進(jìn)入相應(yīng)權(quán)限頁面無 學(xué)生2.2 系統(tǒng)設(shè)計(jì)該系統(tǒng)分為 3 個(gè)部分,第一部分是登錄,學(xué)生和教師都需要登錄,第二部分是學(xué)生端,學(xué)生端 3 個(gè)功能學(xué)生申請請假、學(xué)生申請銷假、查詢個(gè)人請假記錄,第三個(gè)部分是教師端,教師端3 個(gè)功能教師批準(zhǔn)請假申請、教師批準(zhǔn)銷假申請、教

15、師查詢學(xué)生請假記錄。2.2.1 順序圖圖 2.2 登錄時(shí)序圖<<entity>>: 學(xué)生<<boundary>>: 請假申請邊界類<<control>>: 請假申請控制類<<entity>>: 請假記錄信息1 : 發(fā)送請假申請()2 : 檢驗(yàn)該學(xué)生是否可以申請()圖 2.3 學(xué)生請假申請時(shí)序圖<<entity>><<boundary>><<control>>: 學(xué)生: 銷假申請邊界類: 銷假申請控制類1 : 發(fā)出銷假申請()2

16、: 判斷是否異常()seq正常3 : 顯示申請銷假成功()異常4 : 顯示申請失敗,并提示重新申請()圖 2.4 學(xué)生銷假申請時(shí)序圖圖 2.5 學(xué)生請假查詢時(shí)序圖2.2.2 類圖圖 2.6 類圖2.2.3 系統(tǒng)體系結(jié)構(gòu)設(shè)學(xué)學(xué)學(xué)教教教生生生師師師申申查審審查請請?jiān)兣冋堜N請請銷請假假假假假假圖 2.7 體系結(jié)構(gòu)圖該系統(tǒng)包括基本的 3 各模塊,登錄、學(xué)生端、教師端。學(xué)生和教師在登錄成功時(shí)分別進(jìn)入不同的頁面進(jìn)行操作,學(xué)生端進(jìn)行請假申請、銷假申請、查詢個(gè)人請假;教師審批請假、審批銷 假、查詢學(xué)生請假記錄。2.2.4 設(shè)計(jì)時(shí)序圖圖 2.8 登錄設(shè)計(jì)時(shí)序圖該圖是學(xué)生端登錄設(shè)計(jì)時(shí)序圖,首先學(xué)生發(fā)送請求到控

17、制類, 然后跳出登錄頁面,學(xué)生填寫登錄信息并提交到控制類,控制類封裝數(shù)據(jù)創(chuàng)建對象調(diào)用邏輯層進(jìn)行數(shù)據(jù)校驗(yàn)并返回結(jié)果,邏輯層調(diào)用DAO 層最終根據(jù)結(jié)果判斷如果登錄成功將跳轉(zhuǎn)到學(xué)生端主頁,如果登錄失敗將給以提示信息并請重新登錄。圖 2.9 請假申請?jiān)O(shè)計(jì)時(shí)序圖該圖是學(xué)生請假申請?jiān)O(shè)計(jì)時(shí)序圖,首先學(xué)生需要成功登錄,發(fā)出請假申請,這時(shí)候控制類會(huì)自發(fā)調(diào)用邏輯層,邏輯層調(diào)用DAO 層,如果該學(xué)生之前請過假并且未曾銷假,這時(shí)該學(xué)生是不能夠再請假的,倘若該學(xué)生發(fā)出請假申請,系統(tǒng)將會(huì)把該學(xué)生之前的請假未銷假記錄顯示出來,如果沒有未銷假記錄,將會(huì)顯示請假申請頁面,學(xué)生需要填寫請假申請單將請假詳細(xì)信息填寫并提交倘若正確無

18、誤,系統(tǒng)將會(huì)提示請假申請成功。圖 2.10 學(xué)生銷假申請?jiān)O(shè)計(jì)時(shí)序圖該圖是學(xué)生銷假申請?jiān)O(shè)計(jì)時(shí)序圖,在學(xué)生成功登錄之后,學(xué)生在申請請假時(shí)候必須不存在未銷假記錄,所以在學(xué)生請假完成到校報(bào)到后必須進(jìn)行銷假,然而這時(shí)需要發(fā)出銷假申請,這時(shí)候在業(yè)務(wù)邏輯層將會(huì)給予判斷,如果銷假申請成功將會(huì)提示申請成功,如果有錯(cuò)誤將會(huì)提示申請失敗或者不存在未銷假記錄。2.3 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫在該系統(tǒng)中是為了存儲(chǔ)數(shù)據(jù),學(xué)生所提交的請假記錄是通過保存到數(shù)據(jù)庫中來實(shí)現(xiàn)申請請假、銷假等功能的,在我們目前所學(xué)的有限的知識(shí)內(nèi),沒有數(shù)據(jù)庫該系統(tǒng)是沒法運(yùn)行和實(shí)現(xiàn)的。2.3.1 關(guān)系模式(1) 學(xué)生信息:(學(xué)號(hào)、姓名、班級(jí)、性別、宿舍、聯(lián)系方

19、式、tag)(2) 教師信息:(工號(hào)、姓名、聯(lián)系方式、性別、年級(jí)、tag) (3)登錄:(用戶名(學(xué)號(hào)、工號(hào)),密碼)(4)請假信息:(學(xué)號(hào)、姓名、事由、請假開始時(shí)間、請假結(jié)束時(shí)間、聯(lián)系方式)2.3.2 E-R 圖E-R 圖在數(shù)據(jù)庫設(shè)計(jì)里面是至關(guān)重要的一步,它是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵,下面使用實(shí)體聯(lián)系(E-R)模型來描述系統(tǒng)的概念結(jié)構(gòu),設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系,為后面的邏輯設(shè)計(jì)打下基礎(chǔ)。圖 2.11 E-R 圖2.3.3 表的設(shè)計(jì)表 2.6 用戶登錄信息表(login)編號(hào)字段名稱數(shù)據(jù)類型約束條件說明1useridVarchar(14)無學(xué)號(hào)、工號(hào)2passwordV

20、archar(12)無密碼3TagVarchar(2)無標(biāo)志該表是用戶登錄信息表,表中包括 3 個(gè)屬性,用戶名和密碼、還有標(biāo)志變量tag,tag 是為了控制學(xué)生端和教師端,用戶名分別為學(xué)號(hào)和教師的工號(hào);表 2.7學(xué)生信息表(Student)編號(hào)字段名稱數(shù)據(jù)類型約束條件說明1sidVarchar(14)無學(xué)號(hào)2SnameVarchar(20)無姓名3ClassesVarchar(20)無班級(jí)4SsexVarchar(6)無性別5SphoneVarchar(12)無聯(lián)系電話6DormitoryVarchar(6)無宿舍7TagVarchar(2)1標(biāo)志該表是學(xué)生信息表,表中包括 7 個(gè)屬性,都是字

21、符串類型,其中tag 標(biāo)志變量默認(rèn)為 1,并且不可修改;表 2.8教師信息表(teacher)編號(hào)字段名稱數(shù)據(jù)類型約束條件說明1tidVarchar(14)無工號(hào)2tnameVarchar(16)無姓名3tsexVarchar(4)無性別該表是教師信息表,表中包括 6 個(gè)屬性,都是字符串類型,教師也包括一個(gè)標(biāo)志變量tag,也存在一個(gè)默認(rèn)值為 2 ,并且不能修改;表 2.8 請假信息表(leaverecords)編號(hào)字段名稱數(shù)據(jù)類型約束條件說明1sidVarchar(14)無學(xué)號(hào)2SnameVarchar(16)無姓名3Starttimedate無開始時(shí)間4endtimedate無截止時(shí)間5Sp

22、honeVarchar(12)無聯(lián)系電話6Operate1Varchar(20)操作 17Operate2Varchar(20)操作 28reasonVarchar(255)無理由該表示請假信息表,包括 8 個(gè)屬性,其中有字符串和日期類型,操作 1 和操作 2 分別是默認(rèn)值,其值是根據(jù)學(xué)生的請假申請成功,銷假以及教師的審批有關(guān)。第 3 章 實(shí)現(xiàn)與測試每一個(gè)項(xiàng)目的核心部分都是功能的實(shí)現(xiàn),功能的完成標(biāo)志著一個(gè)系統(tǒng)的完成,然而這些結(jié)果都需要一個(gè)需求和設(shè)計(jì)來作為基本的要求,以下就是該系統(tǒng)詳細(xì)功能的實(shí)現(xiàn)過程:需求分析:需求分析階段我采用了StarUML 工具做了詳細(xì)的分析,根據(jù)自己的需要畫出了包圖、時(shí)序

23、圖、用例圖、類圖、活動(dòng) 圖、設(shè)計(jì)時(shí)序圖等所需要的幾類基本圖,項(xiàng)目的框架是根據(jù)包圖來創(chuàng)建的,時(shí)序圖主要就是項(xiàng)目的每一個(gè)功能所要求的基本流程,設(shè)計(jì)時(shí)序圖就是將時(shí)序圖給詳細(xì)化,具體到每一步所走的流程返回什么樣的數(shù)據(jù)或者類型,也就是說畫設(shè)計(jì)時(shí)序圖時(shí)基本上已經(jīng)把代碼在腦子里有了型,用例圖其實(shí)就是項(xiàng)目所有的功能,每一個(gè)用例就代表一個(gè)基本的功能,數(shù)據(jù)庫的設(shè)計(jì)是根據(jù)類圖來實(shí)現(xiàn)的,類圖就表示了數(shù)據(jù)庫中的表以及各表之間的關(guān)系。界面設(shè)計(jì):用戶界面設(shè)計(jì)要求友好合理,要充分考慮到用戶的操作習(xí)慣,而且要有良好的顯示效果。此外界面的配色方案要協(xié) 調(diào),使用的主色,背景色,前景色,按鈕大小,文字,格式,表格等要統(tǒng)一標(biāo)準(zhǔn)。由于該

24、系統(tǒng)主要用于公司人員管理的,所以界面框架的主色采用較為嚴(yán)肅的淺藍(lán)色,在此基礎(chǔ)上用到了 PhotoShop 技術(shù),dreamweaver 以及 css 和 Java script 等,里面的登錄那個(gè)信息是一個(gè)圖片用ps 加工修改寫上了藝術(shù)字,界面的代碼是在dreamweaver 里面直接設(shè)計(jì)好的,然后將代碼復(fù)制粘貼過去,因?yàn)樵?dreamweaver 里面設(shè)計(jì)的界面在 MyEclipse 里面是不能運(yùn)行的, 需要一個(gè)腳本來支持,所以只需要在 MyEclipse 里面建好 jsp 頁面只需將 dreamweaver 里面 body 里面的東西復(fù)制粘貼到 MyEclipse 里面就可以運(yùn)行了;每一個(gè)

25、界面里面都有一個(gè)表格,表格里面有許多其他的元素之類,比如:按鈕,標(biāo)題,下拉框等許多細(xì)小的知識(shí), 外面有一個(gè)表單,這個(gè)表單是必須有的,他是為了在前臺(tái)與后連接時(shí)候提交一個(gè)數(shù)據(jù)來運(yùn)行這個(gè)項(xiàng)目的;在這些界面里面,時(shí)間是用js 來完成的,統(tǒng)一的 css 樣式表;還有就是在查詢過程中將所顯示的數(shù)據(jù)設(shè)置為某一屬性他將無法在查詢顯示這個(gè)頁面來任意修改一些信息功能描述:首先這個(gè)系統(tǒng)除了界面其他的代碼分別寫在 5 個(gè)包中,第一個(gè) DO 包,它里面從某種意義上說在這個(gè)包里面的每一個(gè)類都是創(chuàng)建某一個(gè)實(shí)例的方法,它里面定義了相對屬性,以及 get()和 set()方法;第二個(gè)是 DAO 包,它里面是對于每一個(gè)管理模塊的

26、一些基本小的功能的實(shí)現(xiàn),說白了主要就是增刪改查之類的它是對數(shù)據(jù)庫語句的一個(gè)應(yīng)用;第三個(gè)包是 DB 包,這個(gè)包可以說是只為了一件事,就是數(shù)據(jù)庫的連接,之所以這樣寫專門用一個(gè)包來寫關(guān)于數(shù)據(jù)庫的連接目的只是為了看到數(shù)據(jù)與的封裝,體現(xiàn)一個(gè)面向?qū)ο蟮乃伎迹瑥亩谀承┓矫嬉材軌驕p少代碼的重復(fù)率,提高代碼的可讀性;第四個(gè)包是 control 包,這個(gè)包是最重要的,因?yàn)樵趙eb 應(yīng)用開發(fā)的過程中每一個(gè)項(xiàng)目要想與前臺(tái)數(shù)據(jù)連接并能夠成功把數(shù)據(jù)相互傳遞,servelet 里面有兩個(gè)方法,一個(gè)是 doGet(),一個(gè)是 doPost(),兩者最大的區(qū)別就是前者對數(shù)據(jù)沒有保密,就是隨時(shí)都會(huì)泄露一些重要的信息,因?yàn)槊恳惶?/p>

27、交的表單都會(huì)隨著瀏覽器的瀏覽網(wǎng)址顯示出來,然而要想從前臺(tái)獲得數(shù)據(jù),就好比添加員工就得用到客戶端所發(fā)出的請求 request.getParameter()得到。第五個(gè)包是 BO 包,這個(gè)是業(yè)務(wù)邏輯層,主要是調(diào)用 DAO 包里面的方法, 數(shù)據(jù)校驗(yàn)等功能。在該系統(tǒng)中我主要完成的是學(xué)生端的功能,以下為學(xué)生端的功能:3.1 請假申請功能在學(xué)生請假申請這個(gè)功能里面其實(shí)所做的就是對數(shù)據(jù)的添加, 界面是簡單采用了CSS 樣式的界面,如果學(xué)生登錄成功點(diǎn)擊申請請假,如果該學(xué)生存在未銷假記錄系統(tǒng)將會(huì)把該學(xué)生的未銷假記錄顯示出來,如果不存在未銷假記錄,此時(shí)學(xué)生請假信息界面會(huì)顯示出來,在學(xué)生填寫完請假信息出發(fā)右下方的一

28、個(gè)提交按鈕,倘若提交成功會(huì)提示申請成功,如果失敗會(huì)跳轉(zhuǎn)到信息填寫頁面并提示錯(cuò)誤信息。3.1.1 活動(dòng)圖圖 3.1 學(xué)生申請請假活動(dòng)圖3.1.2 界面圖 3.2 學(xué)生請假申請頁面3.1.3 代碼public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;ch

29、arset=UTF-8");String str="已銷假"String type=request.getParameter("type"); LeaveRecordDO ld=null;LeaveRecordDO lrd=new LeaveRecordDO(); StudentBO sb=new StudentBO(); if(type.equals("add")lrd.setSname(request.getParameter("sname");lrd.setSid(request.getParame

30、ter("sid");lrd.setSphone(request.getParameter("sphone"); lrd.setStarttime(Date.valueOf(request.getParameter("starttime");lrd.setEndtime(Date.valueOf(request.getParameter("endtime");lrd.setReason(request.getParameter("reason");String results=sb.valida

31、te(lrd); if(results=null)Stringid=request.getParameter("sid"); ld=sb.queryrecords(str,id);if(ld=null) sb.save(lrd);request.getRequestDispatcher("./success.jsp").forward(requ est, response);return;else request.setAttribute("ld", ld);request.getRequestDispatcher("./d

32、eleteleave.jsp").forward( request, response);elsereturn;request.setAttribute("message",results);request.getRequestDispatcher("./askforleave.jsp").forward( request, response);return;3.1.4 測試用例表 3.13.2 請假記錄查詢在學(xué)生請假記錄查詢里面和學(xué)生請假申請基本是一樣的,這個(gè)實(shí)際上的就是對數(shù)據(jù)庫里面的數(shù)據(jù)的一個(gè)查詢,并將查詢記錄顯示到網(wǎng)頁上,如果不存在請假記

33、錄,將不會(huì)顯示任何記錄。3.2.1 界面圖 3.3 請假記錄3.2.2 代碼HttpSession session=request.getSession();session.setAttribute("username", request.getParameter("sid");ArrayList<LeaveRecordDO> list=(ArrayList<LeaveRecordDO>) sb.getrecords(request.getParameter("sid");request.setAttribut

34、e("list", list); request.getRequestDispatcher("./SseclectDisplay.jsp").forw ard(request, response);return;3.2.3 測試用例序號(hào)功能模塊測試數(shù)據(jù)預(yù)期結(jié)果1請假查詢學(xué)號(hào):123查詢成功3.4 登錄功能登錄是該項(xiàng)目最基本的一個(gè)功能,這其實(shí)也是一個(gè)查詢,只不過是根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)和從網(wǎng)頁中得到的數(shù)據(jù)進(jìn)行對比,如果匹配成功將會(huì)進(jìn)入到另外一個(gè)頁面,如果登錄失敗將會(huì)進(jìn)行提示并重新登錄,登錄過程中在后臺(tái)數(shù)據(jù)中定義了標(biāo)志變量來表示學(xué)生和教師,所以在登錄時(shí)候根據(jù)這個(gè)

35、屬性來判斷登錄成功后跳轉(zhuǎn)到學(xué)生端還是教師端。登錄過程中進(jìn)行了簡單的數(shù)據(jù)校驗(yàn),就是說用戶名和密碼不能為空,倘若為空將會(huì)提示錯(cuò)誤信息并提醒重新登錄。3.4.1 代碼public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"

36、;);LoginDO ld=new LoginDO(); LoginBO lb=new LoginBO(); int tags;String userid=request.getParameter("username"); String passwd=request.getParameter("password"); ld.setUserid(userid);ld.setPasswd(passwd);String message=lb.validate(ld); if(message!=null)request.setAttribute("me

37、ssage", message); request.getRequestDispatcher("./loginerror.jsp").forward(r equest, response);elsetags=lb.login(ld);if(tags=1)HttpSession session=request.getSession();session.setAttribute("username",ld.getUserid();request.getRequestDispatcher("./smain.jsp").forwar

38、d(r equest, response);return;else if(tags=2)HttpSession session=request.getSession();session.setAttribute("username",ld.getUserid(); request.getRequestDispatcher("./tmain.jsp").forward(reques t, response);return;elserequest.getRequestDispatcher("./error.jsp").forward(re

39、ques t, response);return;3.4.2 界面圖 3.4登錄界面3.4.1 活動(dòng)圖圖 3.5 登錄活動(dòng)圖3.5.4 測試用例第 4 章 結(jié)束語這次的課題我用的 web 開發(fā)來完成的,從我對這三個(gè)字母的不理解到學(xué)習(xí)它再到用它們來完成我的課題,這個(gè)過程并不是想象的那么容易,今天終于完成了,長呼了一口氣,同時(shí)在內(nèi)心深處,也默默地為接下來的學(xué)習(xí),做一個(gè)前段時(shí)間的項(xiàng)目總結(jié),也是學(xué)習(xí)的總結(jié),吸取之前的經(jīng)驗(yàn)教訓(xùn),錯(cuò)誤并不可怕,可怕的是再在同一個(gè)地方犯同樣錯(cuò)誤,所以對于我來說,更多的去自我認(rèn)知,知我批評要比表揚(yáng)和贊許來的更加深刻 ,非常有必要做一個(gè)總結(jié)。雖然時(shí)間略顯倉促,但在項(xiàng)目開發(fā)過程中

40、我學(xué)習(xí)到了很多之前沒有接觸過的內(nèi)容,也發(fā)現(xiàn)了自己的很多不足,感悟頗深。主要包括以下幾個(gè)方面:1. 在需求分析階段,由于對學(xué)生請假管理系統(tǒng)真正的需求并不了解,還有就是自己在做這個(gè)需求的過程當(dāng)中總覺得想到了自己做不出來,就好比沒想到一個(gè)需求的功能腦子里就會(huì)閃現(xiàn)出一個(gè)畫 面,我該如何去實(shí)現(xiàn)它,正是因?yàn)檫@些錯(cuò)誤的想法導(dǎo)致了這次課題實(shí)踐的進(jìn)度,因此我覺得在做需求時(shí)我們應(yīng)該根據(jù)實(shí)際不必考慮怎么做怎么實(shí)現(xiàn)。2. 數(shù)據(jù)庫采用的是 Mysql,在編寫 sql 語句經(jīng)常會(huì)出現(xiàn)一些語法錯(cuò)誤,例如 sql 語句不之一次的出錯(cuò),在修改的過程當(dāng)中我發(fā)現(xiàn)了自己知識(shí)的欠缺,或者說對過去所學(xué)的東西并沒有完全理解甚至吸收;尤其是

41、數(shù)據(jù)庫中的亂碼問題,我從一開始數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)我就一直被亂碼問題糾結(jié)著,我先上網(wǎng)查閱相關(guān)資料,看書尋找改變亂碼的方法,甚至解決不了向同學(xué)請教,但是最終我都沒有解決, 最后在老師的幫助下檢測出亂碼不是編碼的問題而是我的數(shù)據(jù)庫安裝過程中字符編碼選擇錯(cuò)誤,所以一直回出現(xiàn)亂碼問題,而且解決之后再將自己遇到的問題記錄下來,使得以后出現(xiàn)同樣的問題時(shí)能夠快速解決。3. 由于該系統(tǒng)在學(xué)生申請成功后需要教師端的批準(zhǔn),在學(xué)生端才能進(jìn)行下一次的操作,這些之前很少用到,通過這次實(shí)習(xí)也將自己在課本上學(xué)到的內(nèi)容用到了實(shí)際項(xiàng)目中;感受最深的就是 MVC 模式和在兩個(gè)客戶端操作。4. 團(tuán)隊(duì)合作。我們完成一個(gè)項(xiàng)目總是需要一個(gè)團(tuán)

42、隊(duì)的,而不是個(gè)人,在開發(fā)過程中小組之間的溝通非常重要。如果組內(nèi)成員沒有很好的交流,則在項(xiàng)目后期各模塊合并時(shí),會(huì)出現(xiàn)許多意想不到的錯(cuò)誤,例如路徑問題、頁面間跳轉(zhuǎn)等。所以我們完成系統(tǒng)時(shí),小組間要定期開例會(huì),相互交流,對于有分歧的地方,一定要及時(shí)討 論,采取一致措施,這樣才有利于團(tuán)隊(duì)工作??傊?,這次的課題真的使我受益匪淺。在這個(gè)過程中,我學(xué)習(xí)到的不僅僅是以上技術(shù)上的收獲,更還有生活中的的人際交往以及其他的許多經(jīng)驗(yàn)。而這些,都將作為我邁入社會(huì)的根本,我將以此為我的基礎(chǔ),盡量將學(xué)到的知識(shí)運(yùn)用到實(shí)際工作中,去迎接一個(gè)又一個(gè)的挑戰(zhàn)?;叵朐谶@不到一個(gè)月的學(xué)習(xí)時(shí)間里,我學(xué)到了許許多多讓我感覺比較充實(shí)的知識(shí),掌握

43、了更多的學(xué)習(xí)的方法,作為一個(gè)程序員, 我們更需要信心,面對項(xiàng)目時(shí)我們要仔細(xì)分析,想法嘗試,想法去實(shí)現(xiàn),這樣才能進(jìn)步,才能找到自己的不足。同樣在職場中,工作需要自信心,不相信自己,任何工作都做不好。沒有信心,成功的機(jī)會(huì)就會(huì)少些。自信心能讓你做什么都不難。生活需要自信心?,F(xiàn)實(shí)是殘酷的,沒有自信心是難以生存的。道路是坎坷的,自信心能幫你順利地走過。有時(shí)希望是渺茫的,但是自信心能讓你看到美好明天。在寫程序時(shí),總是在看到功能后,立即投入到代碼編寫工作 中。后期出現(xiàn)的錯(cuò)誤總是很多很多,經(jīng)常返回重新修改。經(jīng)過這次旳實(shí)踐,又對軟件這個(gè)東西有了新的認(rèn)識(shí),新的收獲,而且我對軟件工程又有了新的理解,說白了軟件工程就

44、是在為這個(gè)軟件做鋪 墊,也就是說需求分析就是軟件工程,而我在做需求分析階段能順利完成,我十分的感激我的老師郭麗,如果不是在課堂上老師讓我在同學(xué)們面前或那個(gè)設(shè)計(jì)時(shí)序圖,我想我現(xiàn)在仍然不會(huì)明白軟件工程怎么去做需求,不是老師一步步的教導(dǎo),我根本不可能完成今天這么簡單的并且不完善的項(xiàng)目,所以在此我對老師表示深深的敬意與感激!參考文獻(xiàn)01李明.java 程序設(shè)計(jì)與應(yīng)用M:北京.交通大學(xué)出版社. 2010.3 02葉和亞.陳立.java2 程序設(shè)計(jì)實(shí)用教程例M北京:電子工業(yè)出版社. 2003.503李兆峰.龐永慶.java 程序設(shè)計(jì)與項(xiàng)目實(shí)踐M北京:電子工業(yè)出版社.2011.604Y.Daniel Lia

45、ng.java 語言程序設(shè)計(jì)M西安;機(jī)械工業(yè)出版社.2011.5050607 劉京華.JavaWeb 整合開發(fā)王者歸來M:清華大學(xué)出版社.2010.108 何富貴.DreamweaverCS4 網(wǎng)頁設(shè)計(jì)與制作M:機(jī)械工業(yè)出版社.2010.309 鄭阿奇MySQL 實(shí)用教程M:電子工業(yè)出版社.2012.510葉和亞.陳立.java2 程序設(shè)計(jì)實(shí)用教程例M北京:電子工業(yè)出版社.2003.5指導(dǎo)教師評語成績:指導(dǎo)教師簽名:年月日附錄A: 附加圖、表圖 1 學(xué)生端主頁面圖 2 教師端學(xué)生請假信息頁面附錄B: 主要源程序DAO包/* 請假審批*/public boolean LeaveAllow(Str

46、ing sid)/獲取數(shù)據(jù)庫連接Connection connection=DButils.getConnection();/創(chuàng)建sql執(zhí)行環(huán)境PreparedStatement ps=null;/創(chuàng)建sql語句String s="已批準(zhǔn)"Stringsql="updateleaverecordssetoperate1=? where sid=?"/執(zhí)行sql語句try ps= connection.prepareStatement(sql); ps.setString(1,s);ps.setString(2, sid);int count = ps.e

47、xecuteUpdate(); if(count=1)return true; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();finallyDButils.release(connection, ps, null);return false;/* 銷假審批*/public boolean XJallow(String s,String sid)/獲取數(shù)據(jù)庫連接Connection connection=DButils.getConnection();/創(chuàng)建sql執(zhí)行環(huán)境PreparedS

48、tatement ps=null;/創(chuàng)建sql語句s="已銷假"Stringsql="updateleaverecordssetoperate2=?where sid=?"/執(zhí)行sql語句try ps= connection.prepareStatement(sql); ps.setString(1, s);ps.setString(2, sid);int count = ps.executeUpdate(); if(count=1)return true; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();finallyDButils.release(connection, ps, null);return false;/* 查詢請假記錄*/public ArrayList<LeaveRecordDO> selectAll() ArrayList<LeaveRecordDO>list=newArrayList<LeaveRecordDO>();/1、獲取數(shù)據(jù)庫連接Connection conn =DButils.getConne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論