實(shí)訓(xùn)(軟件綜合應(yīng)用開(kāi)發(fā))任務(wù)書(_第1頁(yè)
實(shí)訓(xùn)(軟件綜合應(yīng)用開(kāi)發(fā))任務(wù)書(_第2頁(yè)
實(shí)訓(xùn)(軟件綜合應(yīng)用開(kāi)發(fā))任務(wù)書(_第3頁(yè)
實(shí)訓(xùn)(軟件綜合應(yīng)用開(kāi)發(fā))任務(wù)書(_第4頁(yè)
實(shí)訓(xùn)(軟件綜合應(yīng)用開(kāi)發(fā))任務(wù)書(_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)訓(xùn)(綜合應(yīng)用開(kāi)發(fā))任務(wù)書(第二版)長(zhǎng)江大學(xué)工程技術(shù)學(xué)院信息編撰:盧東方2011年10月目 錄1. 設(shè)計(jì)題目12. 設(shè)計(jì)目的13. 設(shè)計(jì)任務(wù)13.1 應(yīng)用背景13.2 系統(tǒng)目標(biāo)14. 設(shè)計(jì)指導(dǎo)24.1 功能設(shè)計(jì)24.1.1 圖書管理部分24.1.2 讀者管理部分24.1.3 借閱管理部分34.1.4 數(shù)據(jù)統(tǒng)計(jì)部分34.1.5 系統(tǒng)管理部分44.1.6 讀者部分44.2 界面設(shè)計(jì)54.2.1 登錄窗口54.2.2 主界面54.2.3 角色權(quán)限64.2.4 查詢圖書信息64.2.5 添加圖書信息74.2.6 查詢讀者信息84.2.7 添加讀者信息94.2.8 讀者類別管理104.2.9 借書104

2、.2.10 還書114.2.11 查詢借閱記錄124.2.12 按借閱統(tǒng)計(jì)信息134.2.13 按圖書信息統(tǒng)計(jì)信息134.2.14 收繳罰款144.2.15 修改個(gè)人資料154.2.16 查詢個(gè)人借閱信息154.2.17 用戶管理164.3 數(shù)據(jù)庫(kù)設(shè)計(jì)164.3.1 讀者類別表(readertype)164.3.2 讀者信息表(reader)174.3.3 圖書信息表(books)174.3.4 借閱信息表(borrow)174.3.5 用戶表(users)174.3.6 罰款繳納表(capturefine)184.3.7 權(quán)限表(userpriv)185 部分功能演示185.1 數(shù)據(jù)庫(kù)設(shè)計(jì)演

3、示185.1.1 創(chuàng)建數(shù)據(jù)庫(kù)185.1.2 創(chuàng)建表195.2 數(shù)據(jù)庫(kù)連接195.3 登錄界面設(shè)計(jì)225.3.1 界面設(shè)計(jì)225.3.2 代碼設(shè)計(jì)225.4 主窗口設(shè)計(jì)245.4.1 界面設(shè)計(jì)245.4.2 代碼設(shè)計(jì)256 進(jìn)度安排327 成績(jī)?cè)u(píng)定328 實(shí)訓(xùn)報(bào)告338.1 主要內(nèi)容338.2 格式要求339 主要參考資料3410 需要考慮的問(wèn)題34i10 需要考慮的問(wèn)題實(shí)訓(xùn)(軟件綜合應(yīng)用開(kāi)發(fā))任務(wù)書1. 設(shè)計(jì)題目圖書管管理信息系統(tǒng)2. 設(shè)計(jì)目的通過(guò)對(duì)圖書管理信息系統(tǒng)的系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、編碼、調(diào)試等工作的實(shí)踐,了解管理信息系統(tǒng)的一般設(shè)計(jì)和實(shí)現(xiàn)思路,從windows或web兩個(gè)不同切入點(diǎn)熟悉和掌

4、握軟件設(shè)計(jì)和實(shí)現(xiàn)的一般方法,深入了解sql server 2005數(shù)據(jù)庫(kù)設(shè)計(jì)的基本理論及方法。該軟件系統(tǒng)的編寫要求學(xué)生具備c#、sql server、xml、ado.net等多種程序設(shè)計(jì)工具和技術(shù),并能熟練地加以綜合應(yīng)用。該實(shí)習(xí)采用較復(fù)雜的真實(shí)案例來(lái)供學(xué)生進(jìn)行練習(xí),讓學(xué)生從軟件設(shè)計(jì)最初的需求分析開(kāi)始,全面地了解軟件工程和程序設(shè)計(jì)的方法。本實(shí)習(xí)相對(duì)單門課程的實(shí)習(xí)更具有系統(tǒng)性、和綜合性,能以軟件工程的標(biāo)準(zhǔn)來(lái)規(guī)范學(xué)生的編程行為。實(shí)習(xí)過(guò)程中需要學(xué)生掌握多種開(kāi)發(fā)和測(cè)試工具,能讓學(xué)生靈活、熟練地應(yīng)用所學(xué)的知識(shí),為將來(lái)走向社會(huì)打下良好的基礎(chǔ)。3. 設(shè)計(jì)任務(wù)3.1 應(yīng)用背景1. 圖書館有各種圖書10萬(wàn)多冊(cè),每

5、天的借書/歸還的流量1000人。2. 圖書信息包括:每種圖書都有圖書編號(hào)、書名、書號(hào)(isbn)、一名或多名作者(譯者)、出版社、定價(jià)和內(nèi)容簡(jiǎn)介。3. 讀者信息包括:借書證記錄有借閱者的姓名、所在單位、職業(yè)等。4. 讀者憑借書證借書,教師最多借書15本,借書期限最長(zhǎng)為90天,學(xué)生最多借書8本,借書期限最長(zhǎng)為30天。對(duì)于超期未還或有超期欠費(fèi)的讀者只能還書不能繼續(xù)借書或續(xù)借,每本書每超期一天罰款0.05元。根據(jù)所學(xué)課程的內(nèi)容,完成對(duì)圖書管理系統(tǒng)的系統(tǒng)分析、程序設(shè)計(jì)、上機(jī)調(diào)試等工作。要求所構(gòu)成的系統(tǒng)和設(shè)計(jì)的軟件能夠滿足課程設(shè)計(jì)任務(wù)書提出的各項(xiàng)要求。3.2 系統(tǒng)目標(biāo)1. 實(shí)現(xiàn)讀者的借閱/歸還/續(xù)借圖書

6、功能,包含超期罰款,考慮軟件的負(fù)荷要求操作簡(jiǎn)便。2. 實(shí)現(xiàn)圖書信息管理(書號(hào)、圖書編號(hào)、書名、作者、出版社等)。3. 實(shí)現(xiàn)用戶管理,包括系統(tǒng)管理員、圖書管理員、借閱管理員、讀者等??紤]不同類別用戶的權(quán)限管理。4. 實(shí)現(xiàn)信息瀏覽,管理員的查詢功能和用戶的查詢功能,不同的身份查詢的內(nèi)容應(yīng)該有所差異。5. 讀者的簡(jiǎn)單管理功能,讀者查詢、修改個(gè)人信息的功能。6. 實(shí)現(xiàn)統(tǒng)計(jì)功能,按不同分類對(duì)圖書館書籍流動(dòng)進(jìn)行統(tǒng)計(jì)。7. 開(kāi)發(fā)時(shí)盡可能考慮使用多層構(gòu)架。4. 設(shè)計(jì)指導(dǎo)4.1 功能設(shè)計(jì)該系統(tǒng)的總體任務(wù)是實(shí)現(xiàn)一個(gè)簡(jiǎn)易的圖書管理系統(tǒng),主要完成以下幾個(gè)功能。4.1.1 圖書管理部分添加圖書信息:圖書管理員可以將新書

7、添加到數(shù)據(jù)庫(kù)中,不考慮書架號(hào)。查詢圖書信息:所有用戶可以按指定的組合條件查詢圖書,查詢結(jié)果可以顯示、預(yù)覽、打印、導(dǎo)出到excel文件,對(duì)于圖書管理員,可以刪除圖書和修改部分字段的內(nèi)容。功能框圖如圖1。圖1 圖書管理部分的結(jié)構(gòu)圖4.1.2 讀者管理部分圖書管理員可以添加讀者類別和修改讀者類別。圖書管理員可以添加讀者信息,可以按指定的組合條件查詢讀者,查詢結(jié)果可以顯示、預(yù)覽、打印和導(dǎo)出到excel文件,還可以刪除讀者和修改部分字段的內(nèi)容。功能框圖如圖2。圖2 讀者管理部分的結(jié)構(gòu)圖4.1.3 借閱管理部分借閱管理員可以給讀者借書和還書,還書時(shí)如果圖書超期,提示超期的天數(shù),并計(jì)算罰款,記錄歸還相關(guān)信息

8、。借閱管理員還可按讀者信息查詢指定期間內(nèi)的歷史借閱信息和當(dāng)前未還信息,按圖書信息查詢指定期間內(nèi)的歷史借閱信息和當(dāng)前借閱讀者信息。查詢結(jié)果可以顯示、預(yù)覽、打印和導(dǎo)出到excel文件。功能框圖如圖3。圖3 借閱管理部分的結(jié)構(gòu)圖4.1.4 數(shù)據(jù)統(tǒng)計(jì)部分系統(tǒng)管理員和圖書管理員可以做如下統(tǒng)計(jì):按圖書的個(gè)別屬性進(jìn)行分類統(tǒng)計(jì)(如:圖書編號(hào)前幾位、出版社、出版年、入館日期年、是否在館等);按借閱的個(gè)別屬性進(jìn)行分類統(tǒng)計(jì)(如:讀者類型、單位代碼、借閱天數(shù)等);統(tǒng)計(jì)結(jié)果可以顯示、預(yù)覽、打印和導(dǎo)出到excel文件。圖4 數(shù)據(jù)統(tǒng)計(jì)部分結(jié)構(gòu)圖4.1.5 系統(tǒng)管理部分系統(tǒng)管理員和讀者管理員可以瀏覽、添加、修改和刪除用戶信息

9、。圖5 系統(tǒng)管理部分結(jié)構(gòu)圖4.1.6 讀者部分讀者可以修改部分個(gè)人信息、密碼和查閱本人的借閱信息。圖6 讀者部分結(jié)構(gòu)圖4.2 界面設(shè)計(jì)4.2.1 登錄窗口所有用戶只有正確登錄后,才可進(jìn)入該系統(tǒng),登錄窗口如下。圖7 登錄界面示例Ø 證號(hào)指“用戶信息表”中的用戶號(hào)或“讀者信息表”中的讀者證號(hào)。4.2.2 主界面用戶進(jìn)入系統(tǒng)后,主界面如下,左邊是菜單欄,右邊是處理窗口。如圖8所示。圖8 程序主界面示例4.2.3 角色權(quán)限不同角色的用戶登錄后,有不同的菜單,每個(gè)菜單對(duì)應(yīng)不同的功能。不同角色的菜單設(shè)計(jì)如下。系統(tǒng)功能角 色系統(tǒng)管理員借閱管理員圖書管理員讀者管理員讀者借書還書借閱查詢添加圖書查詢圖

10、書個(gè)人信息修改查詢讀者讀者管理讀者類型管理按圖書分類統(tǒng)計(jì)按讀者分類統(tǒng)計(jì)收繳罰款4.2.4 查詢圖書信息所有用戶均可查詢圖書信息,如下圖。圖9 查詢圖書界面示例Ø 輸入查詢條件:圖書編號(hào)、圖書書號(hào)、分類號(hào)采用完全匹配;圖書名稱、作者采用模糊匹配。Ø 輸入文本若為空,表示沒(méi)有約束條件。Ø 按下“查詢”按鈕后,將滿足各個(gè)輸入框中的條件相與的記錄顯示到網(wǎng)格中。Ø 選中一條信息后彈出“圖書管理”窗口。圖10 圖書管理界面示例Ø 若用戶角色為系統(tǒng)管理員或圖書管理員,可以使用“修改圖書”或“刪除圖書”按鈕。Ø 按下“修改圖書”按鈕,可以修改除“圖書

11、編號(hào)”外的所有圖書信息,如下圖。Ø 按下“刪除圖書”按鈕,可以刪除選擇的圖書。4.2.5 添加圖書信息系統(tǒng)管理員和圖書管理員可以添加圖書信息,如下圖。圖11 添加圖書界面示例Ø 輸入或選擇相關(guān)圖書的信息。Ø 圖書封面從掃描的文件得到,上傳后存儲(chǔ)到數(shù)據(jù)庫(kù)相應(yīng)記錄中。圖片的選取應(yīng)該有打開(kāi)文件對(duì)話框,對(duì)磁盤上的圖片文件進(jìn)行選取。4.2.6 查詢讀者信息系統(tǒng)管理員、圖書管理員、借閱管理員和讀者管理員均可查詢讀者信息,如下圖。圖12 查詢讀者信息界面示例Ø 輸入查詢條件:讀者證號(hào)采用完全匹配,獨(dú)立使用;讀者姓名采用模糊匹配,與其它字段組合。Ø 輸入文本若

12、為空,表示沒(méi)有約束條件。Ø 按下“查詢”按鈕后,將滿足各個(gè)輸入框中的條件相與的記錄顯示到網(wǎng)格中。Ø 雙擊網(wǎng)格中的某一行則顯示改行所對(duì)應(yīng)讀者的明細(xì),如下圖所示。圖13 讀者明細(xì)界面示例Ø 若用戶角色為系統(tǒng)管理員或讀者管理員,可以按下“修改讀者”或“刪除讀者”按鈕,其它用戶則這兩按鈕無(wú)效。Ø 按下“修改讀者”按鈕時(shí),“讀者證號(hào)”不允許被修改。4.2.7 添加讀者信息只有系統(tǒng)管理員和讀者管理員可以添加讀者信息,如下圖。圖14 添加讀者界面示例Ø 輸入或選擇相關(guān)讀者的信息。Ø 按下“添加讀者”按鈕,向“讀者信息表”中添加1條記錄。成功添加后,

13、顯示提示信息,不成功給以準(zhǔn)確提示。4.2.8 讀者類別管理只有系統(tǒng)管理員和讀者管理員可以添加、刪除、修改讀者類別信息,如下圖。圖15 讀者類別管理界面示例Ø 窗口啟動(dòng)時(shí),自動(dòng)讀取“讀者類別信息表”填充到網(wǎng)格內(nèi)Ø 輸入讀者類別的信息。Ø 按下“添加讀者類別”按鈕,向“讀者類別信息表”中添加1條記錄。成功添加后,顯示提示信息。Ø 從網(wǎng)格內(nèi)選取一個(gè)讀者類別,按下“修改讀者類別”按鈕,修改“讀者類別信息表”中相應(yīng)的記錄。成功修改后,顯示提示信息。Ø 從網(wǎng)格內(nèi)選取一個(gè)讀者類別,按下“刪除讀者類別”按鈕,刪除“讀者類別信息表”中相應(yīng)的記錄。刪除修改后,顯示

14、提示信息。4.2.9 借書系統(tǒng)管理員和借閱管理員可以借出書籍,如下圖。圖16圖書借閱界面示例Ø 輸入讀者序號(hào)后,系統(tǒng)自動(dòng)顯示讀者基本信息,在網(wǎng)格中顯示該讀者已經(jīng)借閱的所有書籍。Ø 輸入圖書序號(hào),系統(tǒng)自動(dòng)將該圖書借給前面的讀者,并在網(wǎng)格中顯示該讀者。Ø * 借書時(shí)如果存在超期、存在罰款、超過(guò)最大借閱數(shù)則借閱失敗。Ø * 若圖書已經(jīng)存在于讀者的借閱表中,則自動(dòng)判定為續(xù)借,根據(jù)讀者類別規(guī)定的續(xù)借次數(shù)對(duì)該圖書進(jìn)行操作,滿足條件的才允許借出。4.2.10 還書系統(tǒng)管理員和借閱管理員可以還書,如下圖。圖17圖書歸還界面示例Ø 還書不需要讀者證號(hào),只需輸入歸

15、還圖書的“圖書編號(hào)”自動(dòng)將借該書的讀者的所有借閱圖書顯示在“未還圖書”中,將當(dāng)天已經(jīng)歸還的圖書顯示在“已還圖書”中。Ø 修改“借閱信息表”中對(duì)應(yīng)記錄(實(shí)際還書日期為當(dāng)前系統(tǒng)日期,是否已經(jīng)還書為1,超期金額,罰款金額,還書操作員)。成功還書后,顯示提示信息。Ø 如果存在超期則記錄超期則在罰款繳納表中添加罰款信息,置“是否繳納”字段為0。4.2.11 查詢借閱記錄管理員均可查詢借閱信息,如下圖。圖18 查詢圖書借閱記錄界面示例Ø 輸入查詢條件:讀者證號(hào)、讀者單位、讀者類、圖書編號(hào)分別采用完全匹配;讀者姓名、圖書名稱采用模糊匹配;借書日期、還書日期區(qū)間條件,設(shè)置區(qū)間后有

16、效,不設(shè)置則無(wú)效。Ø 輸入文本若為空,表示沒(méi)有約束條件。4.2.12 按借閱統(tǒng)計(jì)信息管理員可以按借閱統(tǒng)計(jì)信息,如下圖。圖19 按借閱統(tǒng)計(jì)界面示例Ø “借書日期”的范圍不加限制則統(tǒng)計(jì)所有借書記錄,否則只統(tǒng)計(jì)某個(gè)時(shí)間段內(nèi)的記錄。,統(tǒng)計(jì)結(jié)果可以預(yù)覽、打印、導(dǎo)出到excel文件,還可以顯示統(tǒng)計(jì)柱狀圖。4.2.13 按圖書信息統(tǒng)計(jì)信息管理員可以按圖書信息統(tǒng)計(jì)信息,如下圖。圖20 按圖示信息統(tǒng)計(jì)界面示例Ø 按圖書類型(分類號(hào))統(tǒng)計(jì)借閱情況,統(tǒng)計(jì)結(jié)果可以預(yù)覽、打印、導(dǎo)出到excel文件,還可以顯示統(tǒng)計(jì)柱狀圖。Ø 按出版社統(tǒng)計(jì)借閱情況,統(tǒng)計(jì)結(jié)果可以預(yù)覽、打印、導(dǎo)出到ex

17、cel文件,還可以顯示統(tǒng)計(jì)柱狀圖。Ø 借書時(shí)間為配套限制條件,無(wú)輸入則統(tǒng)計(jì)全部。4.2.14 收繳罰款系統(tǒng)管理員、借閱管理員和讀者管理員可以收繳罰款。圖21 收繳罰款界面示例Ø 收繳罰款前先輸入讀者證號(hào)進(jìn)行罰款查詢,對(duì)查詢結(jié)果顯示在網(wǎng)格中,并進(jìn)行統(tǒng)計(jì)。Ø 罰款繳納后按收繳罰款按鈕,將“罰款繳納表”中的“是否繳納”字段設(shè)置為1,記錄下罰款時(shí)間和操作員。4.2.15 修改個(gè)人資料所有用戶都可以修改密碼,如下圖。圖21 修改個(gè)人資料界面示例Ø 修改密碼前必須匹配舊密碼,并確?!靶旅艽a”和“確認(rèn)新密碼”中輸入的密碼一致,密碼輸入窗口一律將輸入內(nèi)容置為“*”。&#

18、216; 按下“修改”按鈕,根據(jù)用戶類別修改“用戶表”或“讀者信息表”中對(duì)應(yīng)記錄的密碼,密碼采用md5算法加密存儲(chǔ)。4.2.16 查詢個(gè)人借閱信息讀者可以查詢本人的借閱信息,如下圖。圖22 查詢個(gè)人借閱信息界面示例Ø 讀者可以輸入借書或還書時(shí)間段來(lái)限制查詢結(jié)果。Ø 不輸入日期則不加限制,顯示所有借閱。4.2.17 用戶管理系統(tǒng)管理員可以進(jìn)行用戶管理,首先在網(wǎng)格中顯示全部用戶信息,如下圖。圖23 用戶管理界面示例Ø 按下“添加”按鈕,在“用戶信息表”中添加一條記錄并更新網(wǎng)格內(nèi)容。Ø 在網(wǎng)格中選擇需要修改的用戶,按下“修改”按鈕,修改對(duì)應(yīng)用戶信息。Ø

19、; 在網(wǎng)格中選擇需要修改的用戶,按下“刪除”按鈕,刪除“用戶信息表”中對(duì)應(yīng)記錄。網(wǎng)格內(nèi)容同步更新。4.3 數(shù)據(jù)庫(kù)設(shè)計(jì)4.3.1 讀者類別表(readertype)字段名數(shù)據(jù)類型約束說(shuō)明typenamenvarchar(10)p讀者類別名稱canlendqtyintnot null可借書數(shù)量canlendmonthintnot null可借書月數(shù)cancontinuetimesintnot null可續(xù)借的次數(shù)fineratenumeric(10,2)not null罰款率(分/天/本)datevalidsmallintnot null證件有效時(shí)間(年)4.3.2 讀者信息表(reader)字段

20、名數(shù)據(jù)類型約束說(shuō)明rdidchar(8)p讀者證號(hào)rdnamenvarchar(20)not null讀者姓名rdpwdchar(32)default(*)讀者密碼,初值“123456”,md5加密rdsexnchardefault(男)性別,男、女rdtypenvarchar(8)not null讀者類別rddeptnvarchar(20)not null單位代碼rddateregsmalldatetimenot null讀者登記日期isvalidbitdefault(0)是否過(guò)期,0-過(guò)期、1-未過(guò)期4.3.3 圖書信息表(books)字段名數(shù)據(jù)類型約束說(shuō)明bkcodechar(10)p圖

21、書編號(hào)(條碼),唯一確定一本書bkisbnchar(16)not null書號(hào)bknamenvarchar(50)not null書名bkclassvarchar(20)not null分類號(hào),區(qū)別圖書種類bklanguagesmallint語(yǔ)言,0-中文,1-英文,2-日文,3-俄文,4-德文,5-法文bkauthornvarchar(30)not null作者bkpressnvarchar(50)not null出版社bkdatepresssmalldatetime出版日期bkpagesint頁(yè)數(shù)bkpricenumeric(10, 2)not null價(jià)格bkdateinsmalldat

22、etimedefault(getdate()入館日期bkcoverimage圖書封面照片bkbrieftext內(nèi)容簡(jiǎn)介isexistbitdefault(1)是否在館,0-不在、1-在館4.3.4 借閱信息表(borrow)字段名數(shù)據(jù)類型約束說(shuō)明rdidchar(8)p,f讀者證號(hào),讀者信息表外鍵bkcodechar(10)p,f圖書編號(hào),圖書信息表外鍵continuetimesintdefault(0)續(xù)借次數(shù)datelendsmalldatetimedefault(getdate()借書日期datereturnsmalldatetime還書日期overdaysintdefault(0)超期

23、天數(shù)finemoneynumeric(10, 2)default(0)罰款金額isreturnbitdefault(0)是否已經(jīng)還書,0-未還、1-已還operatorlendnvarchar(20)借書操作員operatorretnvarchar(20)還書操作員4.3.5 用戶表(users)字段名數(shù)據(jù)類型約束說(shuō)明useridchar(8)p用戶號(hào)usernamenvarchar(20)not null用戶名userpwdchar(32)not null用戶密碼,md5加密userrolenvarchar(20)not null用戶角色,系統(tǒng)管理員、借閱管理員、讀者管理員、圖書管理員4.3

24、.6 罰款繳納表(capturefine)字段名數(shù)據(jù)類型約束說(shuō)明datereturnsmalldatetimep還書日期rdidchar(8)p讀者證號(hào)bkcodechar(10)p圖書編號(hào)bknamenvarchar(50)not null書名overdaysintnot null超期天數(shù)finemoneynumeric(10, 2)not null罰款金額datecapturesmalldatetime繳納日期operatorfinenvarchar(20)罰款操作員iscapturebitdefault(0)是否繳納,0-未繳納、1-已繳納4.3.7 權(quán)限表(userpriv)字段名數(shù)據(jù)

25、類型約束說(shuō)明userrolenvarchar(20)p用戶角色,系統(tǒng)管理員、借閱管理員、讀者管理員、圖書管理員userprivvarchar(100)權(quán)限,系統(tǒng)管理員:11,12,13,14,21,22,31,321,322,323,33,41,42;借閱管理員:11,12,13,14,31,321,41,42;圖書管理員:11,12,13,14,21,22,31,321,41,42;讀者管理員:14,31,321,322,323,41,42;讀者: 13,22,315 部分功能演示5.1 數(shù)據(jù)庫(kù)設(shè)計(jì)演示5.1.1 創(chuàng)建數(shù)據(jù)庫(kù)5.1.- =- 創(chuàng)建數(shù)據(jù)庫(kù)dblibrary- 該數(shù)據(jù)庫(kù)具有主數(shù)據(jù)

26、文件、日志文件各一個(gè),自定義存儲(chǔ)位置- =create database dblibraryon primary (name = 'library',filename = 'x:.dblibrary.mdf',size = 1024kb,filegrowth = 1024kb)log on (name = 'library_log',filename = 'x:.dblibrary_log.ldf',size = 1024kb,filegrowth = 10%)go2 創(chuàng)建表下文中代碼演示的是books、readers、borro

27、w表的創(chuàng)建腳本,該腳本除了創(chuàng)建表,還建立了表與表之間的關(guān)系。其它數(shù)據(jù)表的創(chuàng)建請(qǐng)參考這3個(gè)表的創(chuàng)建方式。- =- 創(chuàng)建圖書信息表books- =create table books ( bkcode char(10) not null, bkisbn char(16) not null, bknamenvarchar(50) not null, bkclassvarchar(20) not null, bklanguagesmallint null, bkauthornvarchar(50) not null, bkpress nvarchar(50) not null, bkdatepress

28、smalldatetime null, bkpages int null, bkprice numeric(10,2) not null, bkdatein smalldatetime not null default getdate(), bkcover image null, bkbrief text null, isexist bit null default 1, primary key (bkcode)go- =- 創(chuàng)建讀者信息表readers- =create table readers ( rdid char(8) not null, rdname nvarchar(20) no

29、t null, rdpwd char(32) not null default 'e10adc3949ba59abbe56e057f20f883e', rdsex nchar(1) not null default '男', rdtype nvarchar(8) not null, rddept nvarchar(20) not null, rddateregsmalldatetime not null, isvalid bit not null default 0, primary key (rdid)go- =- 創(chuàng)建借閱信息表borrow- =create

30、 table borrow ( rdidchar(8) not null, bkcode char(10) not null, continuetimessmallint null default 0, datelendsmalldatetime null default getdate(), datereturnsmalldatetime null, overdaysint null default 0, finemoneynumeric(10,2) null default 0, isreturnbit null default 0, operatorlendnvarchar(20) nu

31、ll, operatorretnvarchar(20) null, - 組合主鍵 primary key (rdid, bkcode), - bkcode字段為books表中bkcode字段的外鍵 foreign key (bkcode) references books (bkcode), - rdid字段為readers表中rdid字段的外鍵 foreign key (rdid) references readers (rdid)go.5.2 數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)在使用前必須先建立數(shù)據(jù)連接。創(chuàng)建sql server數(shù)據(jù)庫(kù)連接的.net組件是sqlconnection,該組件是如何連接一個(gè)指定的

32、數(shù)據(jù)的呢?在使用該組件前必須先通知sqlconnection連接的是哪個(gè)數(shù)據(jù)庫(kù)服務(wù)器,以及該服務(wù)器上的哪個(gè)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)應(yīng)的密碼。sqlconnection組件為我們提供了一個(gè)connectionstring屬性,該屬性的值就是對(duì)數(shù)據(jù)庫(kù)的指定。如要連接網(wǎng)絡(luò)中ip地址為的服務(wù)器上的dblibrary數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)的訪問(wèn)用戶名和密碼分別為“sa”和“pwd”,則sqlconnection組件的connectionstring屬性值就可以設(shè)置為“persist security info=true; data source=; initial cata

33、log=dblibrary; user id=sa; password=pwd”。在這個(gè)屬性值中“user id”指數(shù)據(jù)庫(kù)用戶名;“data source”指數(shù)據(jù)庫(kù)服務(wù)器,其值可以是ip地址或主機(jī)名;“initial catalog”指數(shù)據(jù)庫(kù)名稱;“password”指數(shù)據(jù)庫(kù)密碼。在.net環(huán)境中使用sqlconnection組件時(shí)必須加載該組件所屬的命名空間-system.data.sqlclient。示例代碼如下:using system.data.sqlclient;sqlconnection conn = new sqlconnection();conn.connectionstrin

34、g = "persist security info=true; data source=.; initial catalog=dblibrary; user id=sa; password=pwd"或者sqlconnection conn = new sqlconnection("persist security info=true; data source=.; initial catalog=dblibrary; user id=sa; password=pwd");通常,數(shù)據(jù)服務(wù)器的地址會(huì)發(fā)生變化,一旦改變發(fā)生數(shù)據(jù)庫(kù)連接就需要重新設(shè)置,設(shè)置完畢后

35、還需要重新編譯應(yīng)用程序,這個(gè)改變才會(huì)被程序接受。我們可以采用讀取配置文件的方式來(lái)避免這種程序的反復(fù)編譯,將數(shù)據(jù)庫(kù)連接字符串保存在配置文件中,如果數(shù)據(jù)庫(kù)發(fā)生了變化,只需要修改配置文件即可,不需要重新編譯程序,這樣可以極大降低程序的維護(hù)成本,提高工作效率。首先,在項(xiàng)目中添加新項(xiàng)“應(yīng)用程序配置文件”。如果是windowsform應(yīng)用程序該文件名稱默認(rèn)為app.config;如果是webform應(yīng)用程序該文件名稱默認(rèn)為web.config。該文件的格式為xml格式,在“configuration”節(jié)點(diǎn)中添加子節(jié)點(diǎn)“appsettings”,并進(jìn)行配置,如下所示。<?xml version=&qu

36、ot;1.0" encoding="utf-8" ?><configuration> <appsettings> <add key="connstr" value="persist security info=true; data source=.; initial catalog=dblibrary; user id=sa; password=pwd"/> </appsettings></configuration>鍵“connstr”所對(duì)應(yīng)的值即為數(shù)據(jù)庫(kù)連

37、接字符串。配置好后就可在程序中進(jìn)行調(diào)用。使用system.configuration命名空間的configurationsettings.appsettings索引器來(lái)讀取該值,改寫前面的代碼如下。sqlconnection conn = new sqlconnection(system.configuration.configurationsettings.appsettings"connstr");5.3 登錄界面設(shè)計(jì)5.3.1 界面設(shè)計(jì)登錄界面內(nèi)容參考圖7。首先,在項(xiàng)目中添加窗體同時(shí)設(shè)置窗體名稱為librarylogon,窗體創(chuàng)建好后修改窗體的text屬性為“圖書館管

38、理系統(tǒng)登錄”;設(shè)置窗體的size屬性為“370, 230”,即寬370像素,高230像素;設(shè)置窗體的startposition屬性為“centerscreen”,讓窗體運(yùn)行的時(shí)候顯示在計(jì)算機(jī)屏幕的正中央位置。從“工具箱”中拖放兩個(gè)label、兩個(gè)textbox、兩個(gè)button控件到窗體中,并編排好位置。分別設(shè)置兩個(gè)label控件的text屬性為“證號(hào)”和“密碼”。修改上面一個(gè)textbox的name屬性為“txtuserid”。修改下面一個(gè)textbox的name屬性為“txtuserpwd”,設(shè)置其passwordchar屬性為“*”,這樣輸入的密碼將顯示為*。修改左邊的button控件的

39、name屬性為“btnlogon”,設(shè)置其text屬性為“登錄”。修改右邊的button控件的name屬性為“btnexist”,設(shè)置其text屬性為“退出”。至此登錄界面設(shè)計(jì)完成,可以根據(jù)個(gè)人喜好修改窗體背景、控件文字大小、控件文字字體等制作個(gè)性化的界面。* 設(shè)計(jì)webform的同學(xué)參考該設(shè)計(jì),控件名稱和屬性均相同,外觀略有變化。5.3.2 代碼設(shè)計(jì)登錄界面的作用就是驗(yàn)證用戶名和密碼,本程序使用的用戶分為兩個(gè)大的類,圖書館工作人員和讀者,這兩種用戶分別存放users和readers表中,如果是圖書館工作人員還需要獲取系統(tǒng)權(quán)限。讀取數(shù)據(jù)需要分別從兩張表中進(jìn)行判斷,故用無(wú)法使用簡(jiǎn)單的查詢語(yǔ)句從數(shù)

40、據(jù)庫(kù)中讀取數(shù)據(jù),這里使用存儲(chǔ)過(guò)程進(jìn)行處理,存儲(chǔ)過(guò)程設(shè)計(jì)如下。- =- 用戶登錄- =create procedure usp_userlogonuseridnvarchar(20),- 登錄號(hào)碼userpwdchar(32),- 登錄密碼userrolenvarchar(20) out,- 權(quán)限,僅圖書館工作人員具有strerrornvarchar(50) out- 錯(cuò)誤as- 查詢用戶表,并獲取權(quán)限select userrole = userrole from users where userid = userid and userpwd = userpwd- 存在該用戶則立即返回if ro

41、wcount <> 0 beginset strerror = ''returnend- 用戶不存在于用戶表中則繼續(xù)判斷讀者表select * from reader where rdid = userid and rdpwd = userpwd- 存在則設(shè)置返回,不存在提示錯(cuò)誤if rowcount <> 0 beginset strerror = ''endelse beginset strerror = '用戶名和密碼不匹配,登錄失?。?#39;endgo在窗體中雙擊“登錄”按鈕,進(jìn)入代碼編輯界面,調(diào)用存儲(chǔ)過(guò)程進(jìn)行登錄驗(yàn)證。

42、 private void librarylogon_load(object sender, eventargs e) / 創(chuàng)建數(shù)據(jù)庫(kù)連接 sqlconnection conn = new sqlconnection(system.configuration.configurationsettings.appsettings"connstr"); / 創(chuàng)建命令對(duì)象,設(shè)置查詢語(yǔ)句為登錄存儲(chǔ)過(guò)程名稱 sqlcommand cmd = new sqlcommand("usp_userlogon", conn); / 指定命令對(duì)象的命令類型為存儲(chǔ)過(guò)程 cmd.c

43、ommandtype = commandtype.storedprocedure; / 依次添加存儲(chǔ)過(guò)程的4個(gè)參數(shù) cmd.parameters.add("userid", sqldbtype.char, 8); cmd.parameters.add("userpwd", sqldbtype.char, 32); cmd.parameters.add("userrole", sqldbtype.nvarchar, 20); cmd.parameters.add("strerror", sqldbtype.nvarc

44、har, 50); / 依次為參數(shù)賦值 cmd.parameters"userid".value = txtuserid.text.trim(); cmd.parameters"userpwd".value = txtuserpwd.text.trim(); / 參數(shù)userrole和strerror為輸出參數(shù),必須明確指定 cmd.parameters"userrole".direction = parameterdirection.output; cmd.parameters"strerror".directi

45、on = parameterdirection.output; try / 打開(kāi)數(shù)據(jù)連接 conn.open(); / 執(zhí)行命令 cmd.executenonquery(); catch (exception ex) messagebox.show(ex.message); return; finally conn.close(); / 讀取返回錯(cuò)誤 string strerror = cmd.parameters"strerror".value.tostring(); / 判斷存儲(chǔ)過(guò)程執(zhí)行結(jié)果 if (strerror = "") / 讀取權(quán)限 str

46、ing role = cmd.parameters"strrole".value.tostring(); / 創(chuàng)建程序主窗口 librarymain frm = new librarymain(); / 顯示程序主窗口 frm.show(); / 傳遞權(quán)限 frm.role = role; / 隱藏登錄窗口 this.hide(); else messagebox.show(strerror); 以上是windowsform代碼,如果是webform程序則應(yīng)當(dāng)在對(duì)應(yīng)的創(chuàng)建主窗口部分置換為主頁(yè)面的跳轉(zhuǎn)代碼,權(quán)限參數(shù)的傳遞采用session或post方式傳遞。“退出”按鈕的代碼

47、相對(duì)簡(jiǎn)單,代碼如下。 private void btnexist_click(object sender, eventargs e) application.exit(); * 驗(yàn)證登錄時(shí)最好能加入對(duì)證號(hào)和密碼的非空判斷,請(qǐng)同學(xué)們自行添加。5.4 主窗口設(shè)計(jì)5.4.1 界面設(shè)計(jì)主界面內(nèi)容參考圖8。首先,在項(xiàng)目中添加窗體同時(shí)設(shè)置窗體名稱為librarymain,窗體創(chuàng)建好后修改窗體的text屬性為“圖書館管理系統(tǒng)”。設(shè)置窗體的windowsstate屬性為“maximized”,即最大化。設(shè)置窗體的ismdicontainer為“true”,讓該窗體成為多文檔窗口容器,即程序的主窗體,其它窗體都

48、運(yùn)行在該窗體框架內(nèi)。設(shè)置窗體的startposition屬性為“centerscreen”,讓窗體運(yùn)行的時(shí)候顯示在計(jì)算機(jī)屏幕的正中央位置。添加菜單,拖放一個(gè)menustrip控件到窗體內(nèi),根據(jù)功能需求在該控件中依次添加“借閱管理”、“圖書管理”、“用戶管理”、“數(shù)據(jù)統(tǒng)計(jì)”等欄目,并為每個(gè)欄目添加子項(xiàng)。為窗體設(shè)計(jì)快捷按鈕,分別為“借書”、“還書”、“罰款”、“圖書查詢”等常用功能準(zhǔn)備4張圖標(biāo)圖片。向窗體中添加一個(gè)toolstrip控件,選擇該控件的items屬性,打開(kāi)“項(xiàng)集合編輯器”。在“項(xiàng)集合編輯器”的左側(cè)選擇“button”欄目,按“添加”按鈕添加4個(gè)toolstripbutton控件,依次設(shè)置這4個(gè)控件的name屬性為“tsbtnlendbook”、“tsbtnreturnbook”、“tsbtnfine”、“tsbtnqrybook”,依次設(shè)置這4個(gè)控件的text屬性為“借書”、“還書”

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論