軟件工程課程設計報告范例 (2)
《軟件工程課程設計報告范例 (2)》由會員分享,可在線閱讀,更多相關(guān)《軟件工程課程設計報告范例 (2)(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 西安科技大學 軟件工程課程設計報告 題目: 圖書館管理系統(tǒng) 班級: 軟件工程** 學號: ********** 姓名: ******* 2013年1月 目 錄 1 緒論…………………………………………………………………………1 2 可行性研究報告……………………………………………………………1 3 需求規(guī)格說明書……………………………………………………………4 4 總體設計說明書……………………………………………………………7 5 數(shù)據(jù)庫設計說明書…………………………
2、………………………………8 6 詳細設計說明書……………………………………………………………9 7 系統(tǒng)實現(xiàn)……………………………………………………………………11 8測試分析報告………………………………………………………………23 參考文獻 1.緒論 1.1 選題目的及意義 隨著計算機技術(shù)的快速發(fā)展,人們對用計算機代替手工管理信息的需求越來越強烈,越來越多的計算機軟件如雨后春筍般的應用于人們生產(chǎn)生活的各個領域,為人們提供各種各樣的便利。本圖書館管理系統(tǒng)應用軟件可以有效地解決高等院校、中小學圖書館由于藏書量增大而帶來的管理問
3、題,圖書館管理員可以更好地管理學校圖書館藏書信息,學生可以更方便地享受借書還書的服務,為更有效地學習知識提供有利的保證。 對于我來說,選擇這個題目作為課程設計的題目有以下兩個原因:一是因為自從上大學以來,每當在圖書館借書的時候,我都會留心觀察一下圖書館管理員的那臺計算機上顯示的內(nèi)容,久而久之,就對本系統(tǒng)的基本流程越來越了解,做好一個軟件的前提是必須對這個軟件的功能和原理非常熟悉,相比別的題目,我對這個題目更加了解;二是本學期通過學習Java程序設計和Oracle數(shù)據(jù)庫課程,我覺得這個題目雖然沒有那么難(涉及算法的內(nèi)容很少),但也不是輕而易舉就能完成的,所以我想挑戰(zhàn)一下自己,看看自己的實現(xiàn)能力
4、到底怎么樣,因此決定用面向?qū)ο蠓椒▽W的思想,前臺用Java程序設計語言編寫界面,訪問Oracle數(shù)據(jù)庫中的數(shù)據(jù),完成本系統(tǒng)。 1.2 系統(tǒng)概述 本系統(tǒng)通過JDBC-ODBC橋?qū)崿F(xiàn)前后臺數(shù)據(jù)的聯(lián)系,基本上實現(xiàn)了一個圖書館管理系統(tǒng)所具備的基本功能,本系統(tǒng)把使用者分為三類:超級管理員、普通管理員、讀者,對三種用戶分別設計了各自的主界面,以便更好的實現(xiàn)信息的隱藏性,超級管理員可以進行這個系統(tǒng)所有操作;管理員只能執(zhí)行超級管理員的基本功能,查看自己的信息;讀者只能查看自己的信息,對自己當前借書進行掛失和續(xù)借兩種操作,查詢圖書館的藏書。 2.可行性研究報告 2.1 編寫目的 本報告編寫目的在于研究
5、圖書館管理系統(tǒng)應用軟件是否可行,指出本軟件開發(fā)所使用的方法和手段,并對該軟件前景進行分析。 本報告的預期讀者是:高等院校、中小學圖書館管理人員、程序設計人員、以及對圖書館管理系統(tǒng)感興趣的愛好者。 2.2 相關(guān)背景 工程名稱:圖書館管理應用軟件 工程產(chǎn)品名稱:高校圖書館管理系統(tǒng)應用軟件 工程的組織者:西安科技大學計算機學院軟件工程系 產(chǎn)品用戶:高校圖書館、中小學圖書館; 產(chǎn)品的生產(chǎn)者:西安科技大學計算機學院軟件工程062班袁震; 產(chǎn)品設計者:西安科技大學計算機學院軟件工程062班袁震; 2.3 可行性研究的前提 本圖書管理系統(tǒng)在功能上要求完
6、成以下基本功能: a).讀者、管理員登陸; b).借書; c).還書; d).續(xù)借; e).圖書掛失; f).歷史記錄查詢; g).新書入庫; h).讀者登記及修改個人信息; 本系統(tǒng)在性能上力爭達到響應時間短,具有一定的容錯能力,力爭減少由用戶直接輸入數(shù)據(jù),絕大多數(shù)據(jù)的輸入都用可以選擇的形式讓用戶進行選擇。 本系統(tǒng)預計有如下輸出: a).登陸成功顯示:成功則進入主界面;失敗則重新輸入;都要給出相應的提示; b).借書成功顯示:顯示借書是否成功,如成功,記錄插入數(shù)據(jù)庫,失敗說明錯誤原因,返回借書界面; c).還書成功顯示:顯示還書是否成功,如成功,修改數(shù)據(jù)庫多項記錄,
7、失敗說明錯誤原因,返回主界面; d).續(xù)借成功顯示:顯示續(xù)借是否成功,如成功,修改數(shù)據(jù)庫記錄,失敗則說明錯誤原因,返回主界面; e).圖書掛失成功顯示:成功則提示用戶需要賠償?shù)膬r錢,并禁止該用戶再借書,直到交了罰款為止; f).歷史記錄查詢:管理員可以查詢所有記錄,用戶只能查詢自己的借還書記錄;顯示這些記錄; g).新書入庫成功顯示:顯示新書入庫是否成功,成功則向數(shù)庫插入數(shù)據(jù),失敗給出錯誤提示,返回主界面; h).讀者登記成功顯示:顯示讀者是否成功注冊,成功則向數(shù)據(jù)庫插入數(shù)據(jù),失敗給出提示,返回主界面; i).修改個人信息成功顯示:顯示個人信息是否成功修改,成功則修改數(shù)據(jù)庫中的數(shù)據(jù)
8、,失敗則給出錯誤提示,返回主界面; 本系統(tǒng)預計有如下數(shù)據(jù)輸入: a).登陸系統(tǒng)時需要輸入用戶名和密碼,選擇用戶類型;用戶名、密碼、和用戶類型均為字符型; b).借書時需要選擇用戶編號和書的編號,均為字符型; c).還書時需要選擇用戶名和書的名字,均為字符型; d).續(xù)借時,需要選擇書的編號,為字符型; e).掛失時,需要選擇書的編號,為字符型; f).新書入庫時,需要輸入書的編號、名字、類別、價格、當前剩余藏書量、入庫日期;其中入庫時期為系統(tǒng)當前時間,價格為雙精度浮點型,當前剩余藏書量為整型,其余均為字符型; g).讀者登記時,需要輸入讀者的編號、名字、密碼、當前最大可借書量,
9、當前狀態(tài)(0或1),0為未激活,1為激活;其中當前最大可借書量為整型,其余為字符型; h).修改個人密碼時,需要提供一次原密碼和兩次新密碼;均為字符型; 本系統(tǒng)基本系統(tǒng)模型如圖2-1所示: 圖1-1圖書管理系統(tǒng)基本系統(tǒng)模型 通過圖1-1.,我們可以發(fā)現(xiàn)該系統(tǒng)的數(shù)據(jù)源是讀者和圖書館管理員;讀者處理的事務只有修改個人密碼、續(xù)借、圖書掛失,其余事務均由圖書館管理員來處理;數(shù)據(jù)終點是讀者,意味著所有處理最后都要由讀者確認,這種確認可以是某種操作,也可以是管理員的一句提示。 本系統(tǒng)的完成期限為16天(即2008年12月22日到2009年1月7日)。 2.4 目標 本圖書管理系統(tǒng)的主要開
10、發(fā)目標為: a).實現(xiàn)圖書管理的便捷程度; b).在完成數(shù)據(jù)庫連接的基礎上,適當提高查詢速度和訪問效率; c).在完成基本功能的基礎上,減少代碼量,提高工作效率; 2.5 進行可行性研究的方法 本系統(tǒng)可行性研究是通過走訪大學圖書館的方式進行的,通過走訪西安科技大學圖書館和陜西航天職工大學圖書館,對兩?,F(xiàn)有圖書管理系統(tǒng)進行調(diào)查、了解,分析得出本系統(tǒng)應實現(xiàn)的基本功能,本系統(tǒng)根據(jù)兩校圖書館管理系統(tǒng)進行相應的模仿的基礎上,添加了一些自己的功能。 2.6 評價尺度 本系統(tǒng)在評價時應從以下幾個方面進行分析: 開發(fā)時間要盡量短; 各個功能實現(xiàn)代碼要盡量少; 訪問數(shù)據(jù)庫的效率要盡量高;
11、用戶使用過程中容錯能力要很強; 2.7 對現(xiàn)有系統(tǒng)的分析 通過對西安科技大學圖書館管理系統(tǒng)的分析,由于該系統(tǒng)是專業(yè)軟件公司所為,基本上沒有什么太大的問題,就是有時候會出現(xiàn)響應時間過長的問題,原因可能是訪問數(shù)據(jù)庫效率過低,所以本系統(tǒng)著重提高訪問數(shù)據(jù)庫效率的問題,在功能上盡量模仿上述系統(tǒng)。 因此有必要對現(xiàn)有系統(tǒng)進行修改。 現(xiàn)有系統(tǒng)的主要工作為處理借還書,新書入庫,讀者登記,讀者信息修改,讀者掛失等業(yè)務。 現(xiàn)有系統(tǒng)最大局限性就是響應時間過慢,數(shù)據(jù)存儲能力不足,由于使用時間很長,源代碼無法找到,所以需要對該系統(tǒng)進行重新設計,以適應社會的需要。 2.8 所建議使用的系統(tǒng) 本圖書管理系統(tǒng)采用
12、面向?qū)ο蟮姆治龇椒ㄟM行分析,然后用面向?qū)ο蟮脑O計方法進行設計,最后用面向?qū)ο笳Z言Java進行實現(xiàn),后臺數(shù)據(jù)庫使用Oracle,連接方式為JDBC-ODBC。 Java中GUI程序設計本身就是界面程序設計,用它設計出來的界面不但美觀,而且使用方便,使用者只需點幾次鼠標,就能根據(jù)提示進行正確的操作,實現(xiàn)了圖書管理的便捷程度; 由于Java代碼重用性非常好,加上本系統(tǒng)部分代碼我可以用別的程序代碼稍微做一些修改就可以實現(xiàn)功能,因此可以實現(xiàn)降低代碼量的目的; Oracle數(shù)據(jù)庫是目前市場上通用數(shù)據(jù)庫之一,查詢速度本身就非常多,再加上我會在代碼中盡量避免多表連接查詢和處理語句的使用,所以可以真正起到
13、提高查詢效率的目的。 本系統(tǒng)局限性可能來自以下幾個方面: a).界面不美觀; b).部分功能無法實現(xiàn); c).訪問效率很低; d).容錯性不夠; 對于a),我覺得我們應該注意力放在功能及代碼的效率上,而不是去追求一個優(yōu)秀的界面,對于界面,只要能看得過去就行; 對于b),我盡量避免這個的發(fā)生,因為它是一個程序員水平的標尺,盡可能的用自己最大努力做出盡可能多的功能是我的目標; 對于c),盡量減少多表連接操作的次數(shù),應該就可以盡可能的提高訪問效率了。 對于d),這個是需要大量測試才能發(fā)現(xiàn)的,由于時間關(guān)系,不可能把所有的情況考慮完全,只能盡可能多地去考慮周全點,盡可能的把所有問題都考
14、慮到。 2.9 技術(shù)條件方面的可行性 按照目前的技術(shù)水平,本系統(tǒng)的功能目標是可以達到的,該系統(tǒng)的功能是可以實現(xiàn)的,在規(guī)定的期限內(nèi),本系統(tǒng)可以開發(fā)完成。 2.10 法律方面的可行性 由于這個系統(tǒng)只供學習研究使用,不涉及任何商業(yè)行為,因此,該系統(tǒng)從法律方面是可行的。 2.11 使用方面的可行性 本圖書管理系統(tǒng)是為學校圖書館開發(fā)的,從學校圖書館日常流程的角度來看,是可以使用該軟件系統(tǒng)的;經(jīng)過我們的調(diào)查,我們發(fā)現(xiàn)學校圖書館管理人員是有一定的計算機操作水平的,經(jīng)過短期的培訓,是可以熟練掌握本系統(tǒng)的使用細則的。 2.12 結(jié)論 由上面的內(nèi)容我們可以得到如下研究結(jié)論: 本圖書館管理系統(tǒng)可以
15、立即開始進行。 3.需求規(guī)格說明書 對軟件需求完全理解對于軟件開發(fā)工作的成功是至關(guān)重要的,需求說明的任務是發(fā)現(xiàn)、規(guī)范的過程,有益于提高軟件開發(fā)過程中的能見度,便于對軟件開發(fā)過程中的控制與管理,便于采用工程方法開發(fā)軟件,提高軟件的質(zhì)量,便于開發(fā)人員、維護人員、管理人員之間的交流、協(xié)作,并作為工作成果的原始依據(jù),并且在向潛在用戶傳遞軟件功能、性能需求,使其能夠判斷該軟件是否與自己的需求相關(guān)。 3.1 編寫目的 為開發(fā)人員,維護人員,客戶之間提供共同的協(xié)議而創(chuàng)立基礎,對圖書館管理系統(tǒng)軟件功能的實現(xiàn)做一全面的描述; 本說明書預期讀者為客戶、業(yè)務或需求分析人員、測試人員、文檔編寫者、項目管理人
16、員; 3.2 任務概述 本圖書管理系統(tǒng)僅供學習、研究之用,應用目標是讓使用該軟件的用戶感覺輕松、愉快的完成本系統(tǒng)的各個功能模塊,給以客觀公正的評價。本軟件的靈感來源于本人長期使用本校的圖書館管理系統(tǒng),對其結(jié)構(gòu)和功能有了一定的了解,所以就產(chǎn)生了自己模仿一個的想法。由于本軟件是模仿其他類似軟件開發(fā)的,所以只能供學習、研究之用。| 本軟件終端用戶應該是圖書館管理人員,各個年齡層次的讀者。對于圖書館管理人員來說,應該對這個軟件的流程很熟悉,所以本軟件在設計時盡量追求可操作性和簡潔大方的人機界面的設計,力求盡量減少用戶直接輸入性東西,大量使用可選框。對于讀者,本軟件將為其設計更加方便的界面,盡量不
17、使用直接輸入性信息,追求操作的最簡單化。由于本軟件只供學習和研究之用,所以不存在預期使用周期。 3.3 需求規(guī)定 通過對學校圖書館管理系統(tǒng)的使用和跟有關(guān)人員的訪談,我初步認為該系統(tǒng)應該有以下功能約定: 1).每個讀者最多在借數(shù)目為5; 2).每種書只剩一本時,禁止外借; 3).讀者編號是10位數(shù)字,初始密碼和編號相同,提示讀者修改密碼; 4).管理員編號是5位數(shù)字,初始密碼和編號相同,提示管理員修改密碼; 5).當讀者掛失圖書且未繳納罰款時,禁止該讀者借閱續(xù)借和掛失其他圖書,直到罰款交齊為止; 6).盡可能多的用可選項代替文本框,減少人為輸入錯誤發(fā)生的概率; 7).當可選項為
18、編號時,為了方便查閱詳細信息,設置按鈕顯示其詳細信息; 8).讀者界面應該顯示讀者當前在借圖書的詳細信息; 9).為了方便讀者查詢,應該提供多種查詢圖書的方式; 10).圖書掛失后,讀者應該繳納三倍書價的罰款作為賠償; 11).修改密碼時,應提供原密碼作為驗證,兩次輸入新密碼; 12).用戶登陸時,需根據(jù)用戶身份,進入各自的主界面; 通過對以上功能約定的分析,我將這個系統(tǒng)分為以下11個模塊,它們分別是登陸模塊、添加管理員、讀者、書籍信息模塊、借書模塊、還書模塊、續(xù)借模塊、圖書掛失模塊、掛失處理模塊、修改個人密碼模塊、刪除操作記錄、讀者信息模塊,查詢圖書模塊等等。 下面用IPO表分
19、別寫出對上述模塊的功能要求進行定性和定量的敘述: 1、登陸模塊: 模塊名稱 登陸模塊 輸入數(shù)據(jù) 用戶編號,密碼,級別 處理過程 調(diào)用數(shù)據(jù)庫數(shù)據(jù)進行驗證 輸出數(shù)據(jù) 無 表3-1 登陸模塊IPO表 2、添加管理員與讀者模塊 模塊名稱 添加管理員和讀者模塊 輸入數(shù)據(jù) 新管理員編號和姓名 處理過程 編號唯一性驗證,向數(shù)據(jù)庫添加數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-2 添加管理員和讀者模塊IPO表 3、添加書籍信息模塊 模塊名稱 添加書籍信息模塊 輸入數(shù)據(jù) 書條形
20、碼號,書名,作者,分類,價格,數(shù)目 處理過程 編號唯一性驗證,向數(shù)據(jù)庫添加數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-3 添加書籍信息模塊IPO表 4、借書模塊 模塊名稱 借書模塊 輸入數(shù)據(jù) 讀者編號、書條形碼號 處理過程 驗證編號,向數(shù)據(jù)庫添加數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-4 借書模塊IPO表 5、還書模塊 模塊名稱 借書模塊 輸入數(shù)據(jù) 讀者編號、書條形碼號 處理過程 驗證編號,修改數(shù)據(jù)庫數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-5 還書模
21、塊IPO表 6、續(xù)借模塊 模塊名稱 續(xù)借模塊 輸入數(shù)據(jù) 讀者編號、書條形碼號 處理過程 驗證編號,修改數(shù)據(jù)庫數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-6 續(xù)借模塊IPO表 7、圖書掛失模塊 模塊名稱 圖書掛失模塊 輸入數(shù)據(jù) 讀者編號、書條形碼號 處理過程 驗證編號,修改數(shù)據(jù)庫數(shù)據(jù) 輸出數(shù)據(jù) 書名、應繳納的罰款數(shù)額 表3-7 圖書掛失模塊IPO表 8、圖書掛失處理模塊 模塊名稱 圖書掛失處理模塊 輸入數(shù)據(jù) 讀者編號 處理過程 查詢掛失信息 輸出數(shù)據(jù) 書名,罰款數(shù)額
22、 表3-8 圖書掛失處理模塊IPO表 9、修改個人密碼模塊 模塊名稱 修改個人密碼模塊 輸入數(shù)據(jù) 讀者編號,舊密碼,新密碼 處理過程 驗證舊密碼正確性,修改數(shù)據(jù)庫數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-9 修改個人密碼模塊IPO表 10、刪除操作記錄模塊 模塊名稱 刪除操作記錄模塊 輸入數(shù)據(jù) 無 處理過程 刪除數(shù)據(jù)庫中操作記錄表的信息 輸出數(shù)據(jù) 無 表3-10 刪除操作記錄模塊IPO表 11、刪除讀者信息模塊 模塊名稱 刪除讀者信息模
23、塊 輸入數(shù)據(jù) 讀者編號 處理過程 驗證能否刪除,刪除數(shù)據(jù)庫數(shù)據(jù) 輸出數(shù)據(jù) 無 表3-11 刪除讀者信息模塊IPO表 12、查詢圖書信息模塊 模塊名稱 查詢圖書信息模塊 輸入數(shù)據(jù) 圖書編號或分類信息或書名關(guān)鍵字 處理過程 查詢圖書表 輸出數(shù)據(jù) 相關(guān)圖書信息 表3-12 刪除讀者信息模塊IPO表 3.4 性能需求 該軟件對輸入數(shù)據(jù)、輸出數(shù)據(jù)精度的要求如下表所示: 數(shù)據(jù)類型 方向 格式 字符型 輸入輸出 avcAaaa 浮點型 輸入輸出 123.65 日期型
24、 輸出 YYYY-MM-DD 時間型 輸出 HH24:MM:SS 表3-13 數(shù)據(jù)精度要求表 本圖書管理系統(tǒng)要求響應時間低于1秒,更新處理時間、數(shù)據(jù)的轉(zhuǎn)換和傳送時間短,用戶等待時間盡可能為0. 本系統(tǒng)主要任務是訪問后臺數(shù)據(jù)庫的數(shù)據(jù),并做出相應的處理,所以對數(shù)據(jù)庫的容量要求很高,因此建議設置變長的表空間,這樣就可以避免出現(xiàn)分配的空間不夠而給用戶管理帶來麻煩的情況。初始化表空間容量為5M,每次增長的空間為5M。 本系統(tǒng)運行過程中可能出現(xiàn)的問題是數(shù)據(jù)庫故障,處理方法是建議用戶每天對數(shù)據(jù)庫中的做一次備份,這樣如果數(shù)據(jù)庫出現(xiàn)問題,可以立即還原數(shù)據(jù),而不造成大的損失 3.5 事件跟
25、蹤圖 由于這個系統(tǒng)模塊很多,如果畫出每個模塊的事件跟蹤圖,會占用很大的篇幅,何況很多模塊的事件跟蹤圖大同小異,所以我決定畫出正常情況下讀者掛失圖書模塊、管理員新增圖書信息模塊、超級管理員查看操作記錄模塊的事件跟蹤圖。 讀者掛失圖書模塊的事件跟蹤圖如圖3-1所示: 圖3-1 讀者掛失模塊的事件跟蹤圖 管理員新增圖書信息模塊的事件跟蹤圖如圖3-2所示: 圖3-2管理員新增圖書信息模塊事件跟蹤圖 超級管理員查看操作記錄模塊的事件跟蹤圖如圖3-3所示: 圖3-3超級管理管理員新增圖書信息模塊事件跟蹤圖 4.總體設計說明書 4.1 編寫目的 總體設計的目的就是回答“概括地
26、說,系統(tǒng)應該如何實現(xiàn)?”這個問題。也就是說這個說明書的編寫目的也就是告訴程序員和軟件設計人員本圖書館管理系統(tǒng)系統(tǒng)的系統(tǒng)結(jié)構(gòu)和軟件結(jié)構(gòu)。 本報告的預期讀者是:編寫該軟件的程序員、其他軟件設計人員、系統(tǒng)分析員。 4.2 圖書管理系統(tǒng)的系統(tǒng)層次結(jié)構(gòu)圖 圖4-1 是該圖書管理系統(tǒng)的系統(tǒng)層次結(jié)構(gòu)圖。 4.3 圖書管理系統(tǒng)的軟件結(jié)構(gòu)圖 圖4-2 是圖書管理系統(tǒng)的軟件結(jié)構(gòu)圖 5.數(shù)據(jù)庫設計說明書 5.1 概念結(jié)構(gòu)設計 本課程設計連接數(shù)據(jù)庫是Oracle9i,用的方式是JDBC橋,因此數(shù)據(jù)庫設計尤為重要;本系統(tǒng)E-R圖如 圖3-4 圖書管理系統(tǒng)的系統(tǒng)層次結(jié)構(gòu)圖 圖3-5 圖書管理系
27、統(tǒng)的軟件結(jié)構(gòu)圖 下: 圖5-1讀者表和書表的E-R圖 圖5-2 管理員表和操作記錄表的E-R圖 5.2邏輯結(jié)構(gòu)設計 根據(jù)上述E-R模型,我們可以得到該系統(tǒng)的數(shù)據(jù)庫應該包括五個表,分別是:讀者信息表、書籍信息表、借閱信息表、管理員表、操作記錄表;下面是這五個表的詳細屬性信息(下劃線的是該表的主鍵): 讀者信息表:讀者編號、姓名、密碼、當前可借書冊數(shù)、當前狀態(tài) 書籍信息表:書編號、書名、出版社、類別、單價、現(xiàn)有藏書量 借閱信息表:借閱編號、讀者編號、書編號、借書時間、預計還書時間、標識位、還書時間 管理員表:管理員編號、姓名、密碼、級別 操作記錄表:操作時間、發(fā)生事件
28、 5.3 物理結(jié)構(gòu)設計 一般數(shù)據(jù)庫的物理結(jié)構(gòu)設計包括兩個方面:為關(guān)系模式選擇存取方法和設計關(guān)系、索引等數(shù)據(jù)庫文件的物理存儲結(jié)構(gòu)。本系統(tǒng)沒有建立任何索引。 6.詳細設計說明書 6.1 編寫目的 詳細設計階段的根本目標是確定應該怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種設計語言書寫的程序。本說明書是為了給程序員提供出一個程序的“藍圖”,指導他們更好地完成編碼任務。 本說明書目標讀者是:軟件設計師、所有參與這個項目的編碼人員和測試人員。 6.2 界面設計 從需求規(guī)格說明書中,我們已經(jīng)知道本系
29、統(tǒng)將使用者分為三類:超級管理員、一般管理員和讀者。而且他們的權(quán)限各不相同,故需要為他們各自設計主界面,本節(jié)將用三個參考模型詳細說明三個主界面應如何設計。 圖6-1是超級管理員主界面設計參考模型。 圖6-2是一般管理員主界面設計參考模型。 圖6-3是讀者主界面設計參考模型。 圖6-1 超級管理員主界面設計模型 圖6-2 一般管理員主界面設計模型 圖6-3 讀者主界面設計模型 6.3 一點說明 由于本系統(tǒng)模塊過多,如果把所有模塊的詳細設計過程全部寫出,實驗報告的篇幅將會很長,所以我只寫出“添加書的信息”模塊詳細設計過程,其余模塊類似。 6.4 “添加書的信息”模塊界面
30、設計 從需求規(guī)格說明書和數(shù)據(jù)庫設計中,我們可以看出,書表的屬性有:編號、書名、類別、當前在館冊數(shù)、價格和出版社;而為了節(jié)省字段,我把書名定義為書名和作者;當前在館冊數(shù)初始狀態(tài)下就是藏書量,一般的圖書館一種書籍的藏書量不會超過5本,所以該項可設計為可選項;由于管理員的工作是很忙的,不可能不出現(xiàn)錯誤,尤其長時間做同一工作,所以出版社那一欄中我建議初始化為“出版社”,按鈕設置方面,“提交”和“取消”是不可缺少的,但考慮到管理員的工作需要,我又設置了一個“重置”的按鈕,單擊這個按鈕后,所有輸入欄都將會回到剛打開窗口時的狀態(tài);因此,其界面設計參考模型如圖6-4所示。 圖6-4 “添加書的信息”模
31、塊界面設計參考模型 6.5 “添加書的信息”模塊參考方法設計 表6-1和表6-2是“添加圖書信息”模塊參考方法設計 方法名稱 checkID 方法返回類型 boolean 方法形參名稱 String id 前置條件 單擊“提交” SQL語句 select * from book where b_no=id 處理結(jié)果 如果沒有這個號碼,返回false,反之返回true 表6-1 “添加圖書信息”模塊參考方法1 方法名稱 insertBook 方法返回類型 boolean 方法形參名稱 Book b 前置條件 所有驗證都已完畢,且沒有異常 SQL語句
32、 insert into book values(id ,name,puname,leibie,price,lsnum ) 處理結(jié)果 如果插入成功,返回true,失敗,返回false 表6-2 “添加圖書信息”模塊參考方法2 7.系統(tǒng)實現(xiàn) 7.1 開發(fā)環(huán)境 中央處理器:Core(TM)2 CPU T5600; 內(nèi)存:512MB; 主頻:1.83GHz; 開發(fā)平臺:JBuider2006; 數(shù)據(jù)庫:Oracle 9i; 運行平臺:Windows XP 7.2 關(guān)鍵技術(shù) 本圖書管理系統(tǒng)所使用的關(guān)鍵技術(shù)有:JDBC-ODBC橋,JavaGUI程序設計基本技術(shù)
33、,數(shù)據(jù)庫增刪改查技術(shù),面向?qū)ο蟪绦蛟O計技術(shù)(類的繼承和派生技術(shù))。 7.3 運行結(jié)果 7.3.1訪問數(shù)據(jù)庫模塊 該系統(tǒng)訪問數(shù)據(jù)庫使用的是JDBC-ODBC橋的方式,為了節(jié)省工作量,需要編寫一個類專門用戶訪問Oracle數(shù)據(jù)庫,這個類的代碼如下: package librarysystem.tools; import java.sql.ResultSet; import java.sql.*; public class DBClass implements DBinterface { public DBClass() { } Connection co
34、nn=null; Statement stmt=null; ResultSet rs=null; protected static final String DRIVER="oracle.jdbc.driver.OracleDriver"; protected static final String URL="jdbc:oracle:thin:@localhost:1521:ora9i"; public boolean createConnect(){ try{ Class.forName(DRIVER);
35、 conn=DriverManager.getConnection(URL,"lmsm","1234"); return true; }catch(Exception e){ e.printStackTrace(); return false; } } public int getExecuteUpdate(String sql){ try{ stmt=conn.createStatement(); int n
36、=stmt.executeUpdate(sql); return n; }catch(Exception e){ e.printStackTrace(); return -1; } } public ResultSet getExecuteQuery(String sql){ try{ stmt = conn.createStatement(); rs = stmt.executeQuery(sql);
37、 return rs; }catch(Exception e){ e.printStackTrace(); return null; } } public void closeConnect1(){ try{ if(rs!=null) rs.close(); }catch(Exception e) { e.printStackT
38、race(); } } public void closeConnect2() { try{ if(stmt!=null){ stmt.close(); } }catch(Exception e){ e.printStackTrace(); } } public void closeConnect3(){ try{
39、if(conn!=null){ conn.close(); } }catch(Exception e){ e.printStackTrace(); } } } 有了這個類,再訪問數(shù)據(jù)庫時,只需創(chuàng)建該類的對象,調(diào)用方法就可以了,不必在每次訪問數(shù)據(jù)時都要設置很多參數(shù)變量。 7.3.2 登陸模塊 由于這個系統(tǒng)是用JBuider2006開發(fā)的,界面設計代碼不用自己寫,只需要將所需的控件拖到合適的位置就大功告成了,所以我省去那些系統(tǒng)生成的代碼,如果代碼是自己寫的,
40、就把代碼寫在實驗報告中吧!圖7-1是登陸模塊的界面。 在這個系統(tǒng)實現(xiàn)中,主要代碼是消息響應方法,對于每個模塊我都把它消息響應代碼寫在實驗報告中,重復的就不再寫了。 public void actionPerformed(ActionEvent e) { //讀取界面輸入數(shù)據(jù)…. if (e.getActionCommand().equals("登陸")) { //驗證信息,詳見源代碼 //… //驗證成功 if (flag) {//判斷用戶類型 i
41、f (jibie.equals("管理員")) { //控制信息詳見源代碼 //…. lc = new LoginControl();//驗證用戶名和密碼與數(shù)據(jù)庫中是否一致 if (lc.checkManager(manager)) { //控制信息...詳見源代碼 if (grade == 1) { //顯示超級管理員登陸成功 this.showIn
42、formation("超級管理員登陸成功"); //操作記錄表中添加記錄 record = "超級管理員" + manager.getName() + "登陸成功!"; //控制信息… //詳見源代碼 //進入超級管理員界面 this.setVisible(false); new SuperManagerWindow
43、(); } else { //… this.showInformation("管理員登陸成功"); record = "一般管理員" + manager.getName() + "登陸成功!"; //提示改密碼 if (manager.getId().equals(manager.getPwd()))
44、{ this.showInformation("為了您信息安全,請盡快修改密碼!"); }//進入管理員界面 new ManagerWindow(); } } else {//顯示登陸失敗信息 this.showError("用戶名或密碼錯誤,請查驗!");
45、 record = "某管理員登陸失?。?;} } else {//讀者登陸驗證代碼省略 } //向操作記錄表中添加信息 rc = new RecordControl(); rc.InsertRecord(record); } } else {//響應退出按鈕 this.setVisible(false);} } } 7.3.3 添加管理員、讀者、書籍信息模塊 這
46、三個模塊在設計思路上大同小異,故放在一起分析,以添加書籍模塊為例,設計界面如圖7-2所示,其余兩個詳見系統(tǒng)測試部分,下面是消息響應方法的思路及關(guān)鍵代碼; 圖7-1登陸界面 圖7-2 添加圖書信息 public void actionPerformed(ActionEvent e) { //得到文本框中輸入的內(nèi)容 if (e.getActionCommand().equals("提交")) { //控制驗證…詳見源代碼 //進行主鍵唯一性驗證 if(ibc.checkID(id)){
47、 flag=false; this.showError("條形碼已經(jīng)被使用,請更換!"); } if(flag){ //設置Book對象中的內(nèi)容…. //插入數(shù)據(jù)庫 if(ibc.InsertBook(book)){ //向操作記錄表中添加信息 } else{ this.showErr
48、or("價格出現(xiàn)問題,請核實!"); }} }else if(e.getActionCommand().equals("重置")){ //將五個文本框恢復到初始狀態(tài)下 } else{//響應取消按鈕 this.dispose();} } 7.3.4 借書模塊 借書模塊的設計充分體現(xiàn)了減少鍵盤輸入的思想,用戶只需選擇就可以完成操作,但如果書很多,或讀者很多時,選擇速度會很慢,現(xiàn)在大部分都用模式識別技術(shù),直接去掃描條形碼,所以這個設計有點落伍。圖7-3是借書模塊界面的圖。 圖7-3 添加
49、借閱記錄(借書模塊)界面 消息響應方法思路如下: public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("顯示讀者信息")) { String id = (String) cbx1.getSelectedItem(); Reader r = imco.showReader(id); ShowReaderView srv = new ShowReaderView(r);
50、 } else if (e.getActionCommand().equals("關(guān)于該書")) { //顯示書的信息,和讀者信息一致,省去 } else if (e.getActionCommand().equals("提交")) { //得到文本框的內(nèi)容 //取得該編號的所有信息 Reader r=imco.showReader(r_id); Book b=imco.showBook(b_id); //如果讀者不能借書 if(r.getBooknum()==0
51、){ flag=false; this.showError("讀者已不能再借書,已經(jīng)借滿了!"); } //如果讀者掛失圖書未繳納罰款 if(r.getIsUse()==0){ flag=false; this.showError("該讀者未交掛失書罰款,已不能再借書了!"); } //如果書只剩一本 if(b.getLsnum()==1)
52、{ flag=false; this.showError("該書不能借出,只有一本了?。?); } if(flag){ //插入信息 if (imco.InsertMessage(r_id, b_id)) { //控制代碼… //插入操作記錄表對應信息 } else {this.showError("借書操作失??!請查驗!");}}}} 7.3.5還
53、書模塊 還書模塊我設計了兩個界面,第一個界面得到還書人的編號,然后用它去數(shù)據(jù)庫查詢該讀者未還的書,把未還的書的編號顯示在第二個界面的可選框中,然后選擇就可以完成操作了。圖7-4是第一個界面,圖7-5是第二個界面。 圖7-4還書界面A 圖7-5還書界面B 還書界面A的消息響應框架: public void actionPerformed(ActionEvent e) { String id=(String)cmb.getSelectedItem(); if(e.getActionCommand().equals("讀者詳細信息")){
54、 Reader r=imco.showReader(id); new ShowReaderView(r); } else {//響應下一步按鈕 this.setVisible(false); ReturnBookA_r_id=id;//進入界面B new ReturnViewB(); } } 還書界面B的消息響應方法框架: public void actionPerformed(Action
55、Event e) { //得到輸入信息 if (e.getActionCommand().equals("查看書的信息")) { //顯示書的詳細信息 }else if(e.getActionCommand().equals("取消")) {this.setVisible(false);} else {//得到讀者和書在表中的所有信息 //修改借閱信息表的數(shù)據(jù) if(rbco.upDateMessage(b_id,r_id)){ //修改讀者信息表
56、和書籍信息表的信息 imco.updateReaderBook(r,b); //插入操作記錄 //給出相關(guān)提示} else {//錯誤信息提示n }}} 7.3.6 續(xù)借和掛失模塊 經(jīng)分析,這兩個模塊初始條件是一樣的,因此用同一個界面設計,處理過程方面都是去修改借閱信息表中的標識位的具體數(shù)值,0代表借書沒有續(xù)借;1代表借書已經(jīng)續(xù)借;2代表書已經(jīng)還了;3代表掛失沒有交罰款;4代表掛失已繳納罰款。如果該書續(xù)借過了,給出提示;圖7-6是這兩個模塊的界面。 圖7
57、-6 續(xù)借掛失界面 續(xù)借掛失界面的消息響應方法框架是: public void actionPerformed(ActionEvent e) { //得到Book Reader 的對象 //得到選擇框內(nèi)容 if (e.getSource() == btn2) {//響應續(xù)借按鈕 //驗證代碼…. if (flag) { //修改借閱信息表的信息 if (rco.updateConMessage(b_id)) { //插入操作記錄
58、表的信息 } } } else if (e.getSource() == btn1) {//查看書的信息 } else if (e.getSource() == btn3) {.//響應掛失的按鈕 if (rco.updateLose(b_id)) { //向操作記錄表中插入信息,并提示讀者盡快繳納罰款} }else {//響應取消按鈕,回到讀者主界面 } } 7.3.7處理掛失信息模塊
59、 該模塊是管理員在讀者前來繳納罰款時使用的,如果沒有掛失信息,給出管理員提示;有掛失信息,給出掛失的讀者的編號,管理員選擇合適的編號后進入第二個界面,顯示掛失的書名和應該繳納的罰款數(shù),讀者繳納罰款后,管理員將單擊繳納罰款按鈕,完成處理掛失的操作;第一個界面初始化是我自己寫的,現(xiàn)將代碼寫入實驗報告: private void jbInit() throws Exception { panel.setLayout(borderLayout1); this.getContentPane().add(panel, java.awt.BorderLayout
60、.CENTER); //分別初始化有無掛失信息的處理界面 if (this.getNum() == 0) { lbl.setText("目前沒有讀者掛失圖書!"); panel.add(lbl, BorderLayout.NORTH); btn = new JButton("返回"); panel.add(btn, BorderLayout.SOUTH); this.setSize(100, 200); this.s
61、etLocation(100, 100); this.setVisible(true); } else { String text = "有" + this.getNum() + "位讀者掛失圖書"; lbl.setText(text); cmb = new JComboBox(this.getNo()); btn = new JButton("處理"); panel.add(lbl, BorderLayout.NORTH
62、); panel.add(cmb, BorderLayout.CENTER); panel.add(btn, BorderLayout.SOUTH); this.setSize(200, 200); this.setLocation(100, 100); this.setVisible(true); } btn.addActionListener(this); } JPanel panel = new JPanel();
63、 JLabel lbl = new JLabel(); JComboBox cmb = null; JButton btn = null; BorderLayout borderLayout1 = new BorderLayout(); 圖7-7處理掛失記錄1 圖7-8處理掛失記錄2 圖7-8中如果單擊處理按鈕會出現(xiàn)以下界面: 圖7-9顯示繳納罰款界面 顯示繳納罰款界面中繳納罰款的消息響應代碼如下: //將該用戶的狀態(tài)改為可用,然后向操作記錄表中添加信息 if (lbico.updateReaderUse())
64、 { RecordControl rc = new RecordControl(); InsertMessageControl imco = new InsertMessageControl(); Reader r = imco.showReader(lbico.getR_id()); String message = r.getName() + "已交納罰款" + tfd2.getText() +
65、 " 操作員:" + LoginView.name; rc.InsertRecord(message);} else { this.showError("出現(xiàn)問題,請查驗!");} 7.3.8 修改個人密碼模塊 該模塊首先需要輸入一次舊密碼,然后需要輸入兩次新密碼,如果修改成功,向操作信息表中添加記錄。圖7-10是該模塊的界面; 圖7-10修改個人密碼 提交按鈕的消息處理代碼: //取三個密碼框中輸入的數(shù)據(jù),分別存入pwd1,pwd2,pwd
66、3中 //驗證是否為空 if ((pwd1.length() == 0) || (pwd2.length() == 0) || (pwd3.length() == 0)) { flag = false; this.showError("密碼長度不能為空!請查驗!"); }//驗證首字母是否為空格 if (((pwd1.length() != 0) && (pwd1.charAt(0) == ' ')) || ((pwd2.length() != 0) && (pwd2.charAt(0) == ' ')) || ((pwd3.length() != 0) && (pwd3.charAt(0) == ' '))) { flag = false; this.showEr
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲成本核算與控制培訓課件
- 新員工入職培訓思想修養(yǎng)篇(ppt47)
- 同步電機的工作原理及結(jié)構(gòu)特點
- 電影敘事結(jié)構(gòu)模式完整版
- 南州六月荔枝丹課件分析說明方法
- 人教版小學音樂六下《愛我中華》課件
- ××空調(diào)設備有限公司整體發(fā)展戰(zhàn)略診斷(PPT 50頁)
- 《酒店培訓體系建設》課件
- 細胞膜系統(tǒng)的結(jié)構(gòu)
- 觸發(fā)器及其應用
- 柱體、錐體、臺體的表面積與體積
- 萬能險銷售流程和話術(shù)0
- 紅外光譜基本原理
- 3技術(shù)創(chuàng)新管理-(9)
- 函數(shù)的零點(精品)