數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--圖書館管理信息系統(tǒng)_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告</b></p><p>  -------圖書館管理信息系統(tǒng)</p><p><b>  目 錄</b></p><p>  一、系統(tǒng)開發(fā)平臺(tái)1</p><p><b>  二、數(shù)據(jù)庫規(guī)劃2</b></p>&

2、lt;p>  2.1 任務(wù)陳述2</p><p>  2.2 任務(wù)目標(biāo)2</p><p><b>  三、系統(tǒng)定義2</b></p><p>  3.1 系統(tǒng)邊界2</p><p>  3.2 用戶視圖2</p><p><b>  四、需求分析2</b>&

3、lt;/p><p>  4.1 用戶需求說明2</p><p>  4.1.1 數(shù)據(jù)需求2</p><p>  4.1.2 事務(wù)需求2</p><p>  4.2 系統(tǒng)需求說明2</p><p>  五、數(shù)據(jù)庫邏輯設(shè)計(jì)2</p><p><b>  5.1 ER圖2</b

4、></p><p>  5.2 數(shù)據(jù)字典2</p><p><b>  5.3 關(guān)系表2</b></p><p>  六、數(shù)據(jù)庫物理設(shè)計(jì)3</p><p><b>  6.1 索引3</b></p><p><b>  6.2 視圖3</b&g

5、t;</p><p>  6.3 安全機(jī)制3</p><p><b>  6.4 其他3</b></p><p>  七、應(yīng)用程序設(shè)計(jì)3</p><p>  7.1 功能模塊3</p><p>  7.2 界面設(shè)計(jì)3</p><p>  7.3 事務(wù)設(shè)計(jì)3<

6、;/p><p><b>  八、測(cè)試和運(yùn)行3</b></p><p><b>  九、總結(jié)4</b></p><p><b>  附. 參考文獻(xiàn)4</b></p><p><b>  一、系統(tǒng)開發(fā)平臺(tái)</b></p><p>&l

7、t;b>  題目:圖書管理系統(tǒng)</b></p><p>  開發(fā)工具:EasyEclipse Desktop Java 1.3.1.1</p><p>  數(shù)據(jù)庫:MySQL Server 5.1</p><p>  數(shù)據(jù)庫管理工具:SQLyog</p><p><b>  操作系統(tǒng):win7</b>&

8、lt;/p><p><b>  二、數(shù)據(jù)庫規(guī)劃</b></p><p><b>  2.1 任務(wù)陳述</b></p><p>  圖書館在正常運(yùn)營中面對(duì)大量書籍、讀者信息以及兩者間相互聯(lián)系產(chǎn)生的借書信息、還書信息。單純靠管理員人工記錄不僅耗時(shí)耗力而且信息不完整,易出錯(cuò)。因此需要對(duì)書籍資源、讀者資源、借書信息、還書信息進(jìn)行管理,

9、及時(shí)了解各個(gè)環(huán)節(jié)中信息的變更 ,收集并保存各個(gè)環(huán)節(jié)中產(chǎn)生的信息,然后以適當(dāng)?shù)男问较褡x者和管理員顯示,以保證圖書管理的高效。</p><p><b>  2.2 任務(wù)目標(biāo)</b></p><p><b>  三、系統(tǒng)定義</b></p><p><b>  3.1 系統(tǒng)邊界</b></p>

10、<p>  本系統(tǒng)用于圖書管理員對(duì)書籍信息,讀者信息,及兩者間聯(lián)系產(chǎn)生的借閱歸還信息進(jìn)行管理。用于讀者對(duì)自己的個(gè)人信息,借閱信息的管理。所以,系統(tǒng)的邊界在書籍信息,讀者信息,和管理員信息的輸入。</p><p><b>  書籍信息</b></p><p>  isbn:同一種書籍的類編號(hào),相同isbn的書籍有0到n本(n大于0)。</p>

11、<p>  id:唯一指明具體一本書的編號(hào),用于定位是哪一本書。</p><p><b>  書名:書的全名</b></p><p>  作者:書籍的作者姓名</p><p>  入庫日期:書籍進(jìn)入圖書館的時(shí)間</p><p>  入庫數(shù):進(jìn)入圖書館的同一isbn的書籍的數(shù)目。用于自動(dòng)生成書籍id</p&

12、gt;<p>  簡介:簡要介紹書籍的信息,以方便讀者查看,檢索。</p><p><b>  讀者信息:</b></p><p>  id:唯一指明具體一個(gè)讀者的編號(hào),用于定位是哪一個(gè)讀者</p><p>  密碼:用于匹配確認(rèn)輸入的id是否是本館的讀者</p><p><b>  姓名:讀者的

13、姓名</b></p><p><b>  性別:讀者的性別</b></p><p><b>  年齡:讀者的年齡</b></p><p>  借書數(shù):讀者已經(jīng)借的書籍?dāng)?shù)量,達(dá)到一定數(shù)量后不允許借書</p><p><b>  管理員信息</b></p>

14、<p>  id:唯一指明具體一個(gè)管理員的編號(hào),用于定位是哪一個(gè)管理員</p><p>  密碼:用于匹配確認(rèn)輸入的id是本館的管理員</p><p><b>  姓名:管理員姓名</b></p><p><b>  性別:管理員性別</b></p><p><b>  年齡:

15、管理員年齡</b></p><p><b>  3.2 用戶視圖 </b></p><p>  用戶視圖是從系統(tǒng)用戶的角度分析系統(tǒng)所要實(shí)現(xiàn)的功能,是系統(tǒng)數(shù)據(jù)在用戶層面上的映射。本系統(tǒng)的用戶有管理員和讀者兩部分。根據(jù)我從實(shí)際經(jīng)驗(yàn)以及從網(wǎng)上查找的資料分析以后,對(duì)用戶角度的視圖進(jìn)行如下定義。</p><p>  管理員視圖:管理員具有系統(tǒng)

16、的最高權(quán)限,可以對(duì)數(shù)據(jù)庫內(nèi)所有信息進(jìn)行增刪改查操作。負(fù)責(zé)對(duì)圖書,讀者及管理員自己個(gè)人信息的管理。他的視圖如下:</p><p>  1、圖書管理:包括圖書的錄入、查詢、修改和刪除。</p><p>  2、管理員信息管理:添加、查詢、修改,刪除所有管理員的信息。</p><p>  3、讀者管理:包括讀者信息的添加、查詢、修改、刪除等。</p><

17、;p>  4、系統(tǒng)數(shù)據(jù)處理:數(shù)據(jù)查詢,包括查看當(dāng)前在館書籍信息、當(dāng)前所有違章</p><p>  罰款信息、所有被預(yù)約圖書信息等。</p><p>  5、管理員的個(gè)人功能:包括查看個(gè)人信息、修改密碼、重新登陸、退出系</p><p><b>  統(tǒng)等。</b></p><p>  6、圖書流通中的借書操作:借書時(shí)

18、需要輸入用戶號(hào)和圖書 ISBN。如果該圖</p><p>  書可借,則正常借書,提示“借閱成功”;如果該書不可借,則彈出窗口提示。</p><p>  7、圖書流通中的還書操作:還書時(shí)需要輸入用戶號(hào)和圖書 ISBN。若正常還</p><p>  書,點(diǎn)擊確定即可;若讀者違章,可填寫違章記錄,并處以罰款。</p><p><b> 

19、 讀者視圖:</b></p><p>  1、圖書檢索功能(包括簡單檢索和高級(jí)檢索):可以檢索所有書籍信息和特定輸入要求的書籍,點(diǎn)擊搜索到的信息后可以顯示該書的詳細(xì)信息。然后進(jìn)行預(yù)訂操作。被預(yù)訂和借閱的書籍顯示不可借閱。</p><p>  2、查看個(gè)人信息、修改密碼等個(gè)人信息。</p><p>  3、查看個(gè)人借閱歷史。</p><

20、p>  4、續(xù)借已借圖書:在查看個(gè)人借閱歷史模塊里實(shí)現(xiàn),當(dāng)前已借未還未續(xù)借</p><p>  的每本書后面都有一個(gè)續(xù)借按鈕,選中后點(diǎn)擊可以實(shí)現(xiàn)該書的續(xù)借。</p><p>  5、圖書預(yù)約:可查看自己的預(yù)約信息及處理情況,也可以取消已有的預(yù)約,表示不再預(yù)約本書。</p><p>  6、查看違章欠款記錄。</p><p><b&

21、gt;  四、需求分析</b></p><p>  4.1 用戶需求說明</p><p>  4.1.1 數(shù)據(jù)需求</p><p>  系統(tǒng)可以瀏覽、操作、管理各個(gè)分館的圖書信息。對(duì)應(yīng)書籍實(shí)體的圖書信息包括圖書的編號(hào),ISBN ,名稱,作者,書名,內(nèi)容簡介,入庫時(shí),圖書館購進(jìn)圖書總數(shù),書籍當(dāng)前在庫數(shù)目等。除了如入庫時(shí)間等一些從服務(wù)器自動(dòng)獲取的信息外,

22、其他的信息都要根據(jù)管理員和讀者的操作來修改數(shù)據(jù)庫,以便及時(shí)修改圖書的信息。</p><p>  此外管理員還需要維護(hù)圖書館管理員信息、讀者信息、不良記錄信息。</p><p>  圖書館管理員信息和讀者信息包括:用戶編號(hào)、用戶密碼、用戶名字、用戶年齡、用戶性別。其中讀者可以修改除編號(hào)外的其他信息。管理員不能添加讀者,讀者只能自己注冊(cè)。讀者只有在注冊(cè)后才可進(jìn)行借書、還書、留言等一系列操作。&

23、lt;/p><p>  借書信息有管理員錄入,讀者只能查看自己的借書信息。管理員可以查看所有讀者的借書信息。借書信息包括讀者的id,書籍的id,借閱日期,和書籍的isbn。其中讀者id,書籍id,書籍isbn有管理員輸入,日期由系統(tǒng)自動(dòng)生成。</p><p>  還書信息由管理員錄入。管理員可以查看所有還書信息。還書信息包括讀者id,書籍id,書籍isbn,還書日期,違章信息。其中讀者id,書

24、籍id,由管理員輸入且不能為空,日期由系統(tǒng)自動(dòng)生成。違章信息由管理員輸入,可以為空,為空表示讀者借書期間沒有違章,則讀者還書后不會(huì)再看到該書的違章信息。</p><p>  借書信息包括借書記錄號(hào)、用戶號(hào)書籍編號(hào)、借閱日期、是否續(xù)借、是否歸還等信息。對(duì)于讀者的不良記錄,系統(tǒng)將予以存儲(chǔ)。存儲(chǔ)的信息有不良記錄編號(hào)、借閱編號(hào)、不良記錄描述。對(duì)應(yīng)于用戶請(qǐng)求記錄實(shí)體的請(qǐng)求信息包括請(qǐng)求信息編號(hào)、用戶編號(hào)、請(qǐng)求描述、請(qǐng)求發(fā)出時(shí)

25、間、該請(qǐng)求是否實(shí)現(xiàn)等內(nèi)容。</p><p>  4.1.2 事務(wù)需求</p><p><b>  1數(shù)據(jù)錄入</b></p><p>  讀者注冊(cè)時(shí)錄入自己的詳細(xì)情況;</p><p>  錄入新進(jìn)圖書的各項(xiàng)信息;</p><p>  管理員錄入書籍借閱信息</p><p>

26、;  管理員錄入用戶的不良記錄</p><p>  讀者預(yù)約時(shí)添加預(yù)約信息</p><p><b>  2數(shù)據(jù)更新/刪除</b></p><p>  更新/刪除管理員的個(gè)人信息;</p><p>  更新/刪除用戶的個(gè)人信息;</p><p>  更新/刪除圖書的基本信息;</p>

27、<p>  更新/刪除圖書的借閱信息;</p><p>  更新/刪除圖書的預(yù)約信息;</p><p>  更新/刪除違章信息;</p><p><b>  3數(shù)據(jù)查詢</b></p><p>  查詢用戶的個(gè)人信息;</p><p>  查詢管理員的個(gè)人信息;</p>&

28、lt;p>  查詢圖書的基本信息;</p><p>  查詢圖書的完整信息;</p><p>  查詢圖書的借閱信息;</p><p>  查詢用戶的預(yù)約信息;</p><p>  查詢用戶的不良記錄信息;</p><p><b>  4.1.3系統(tǒng)用例</b></p><

29、;p><b>  參與者</b></p><p><b>  系統(tǒng)用例:</b></p><p><b>  用例總圖:</b></p><p>  4.2 系統(tǒng)需求說明 </p><p>  4.2.1 性能: </p><p>  單個(gè)記錄查詢

30、時(shí)間少于 2 秒</p><p>  多個(gè)記錄查詢時(shí)間少于 3 秒</p><p>  更新/保存記錄時(shí)間少于 2 秒</p><p><b>  4.2.2安全性:</b></p><p><b>  輸入錯(cuò)誤要有提示</b></p><p>  刪除信息是要保證詢問是否刪

31、除相關(guān)信息</p><p><b>  4.2.3運(yùn)行需求</b></p><p>  4.2.5.1 用戶界面</p><p>  用戶界面要大方,易于操作</p><p>  4.2.5.2 接口</p><p>  運(yùn)行于Windows 操作系統(tǒng)之上</p><p>

32、  4.2.53 故障處理</p><p>  正常使用時(shí)不應(yīng)出錯(cuò),</p><p>  用戶輸入錯(cuò)誤需要給出提示和必要的指導(dǎo)</p><p>  保證數(shù)據(jù)庫的事務(wù)性,在遇到不可恢復(fù)的錯(cuò)誤時(shí)要回滾之前的操作</p><p><b>  五、數(shù)據(jù)庫邏輯設(shè)計(jì)</b></p><p><b>

33、  5.1 ER圖</b></p><p><b>  實(shí)體1書籍</b></p><p>  實(shí)體2用戶(讀者和管理員)</p><p><b>  聯(lián)系1歸還</b></p><p><b>  聯(lián)系2預(yù)約</b></p><p><

34、;b>  聯(lián)系3借閱</b></p><p><b>  5.2 數(shù)據(jù)字典</b></p><p>  根據(jù)以上的E-R圖進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì),用表格的形式顯示表的名稱,數(shù)據(jù)類型和說明</p><p><b>  實(shí)體1書籍</b></p><p><b>  實(shí)體2讀者

35、</b></p><p><b>  聯(lián)系1歸還</b></p><p><b>  聯(lián)系2預(yù)約</b></p><p><b>  聯(lián)系3借閱</b></p><p><b>  5.3 關(guān)系表</b></p><p>

36、; ?。?)book(book_id,book_isbn,book_name,book_author, book_introduction , book_date ,book_amount,book_in)</p><p>  主鍵:book_id</p><p> ?。?)reader(reader_id,reader _password,reader _name, reader _ag

37、e,reader _sex,pre_num,borrow_num)</p><p>  主鍵:user_id</p><p> ?。?)admin(admin_name,admin_age,admin_sex,admin_id,admin_password)</p><p>  主鍵:admin_id</p><p>  (4)borrow(

38、reader_id , book_id , bor_date , book_isbn)</p><p>  主鍵:book_id,reader_id</p><p>  (5)pre(reader_id,book_id,book_isbn,book_name,pre_date)</p><p>  主鍵:reader_id,book_id</p>&l

39、t;p>  (6)ret(reader_id,book_id,ret_date,violate_info)</p><p>  主鍵:reader_id,book_id</p><p><b>  六、數(shù)據(jù)庫物理設(shè)計(jì)</b></p><p><b>  6.1 索引</b></p><p> 

40、 由于系統(tǒng)所使用的數(shù)據(jù)不是很多,在已有的測(cè)試數(shù)據(jù)下對(duì)書籍,讀者信息的搜索排序的性能能夠滿足系統(tǒng)的要求。所以雖然建立索引可以改善系統(tǒng)的性能,但是在這個(gè)系統(tǒng)條件下建立索引對(duì)性能的改進(jìn)不是很大。所以本系統(tǒng)未建立索引。</p><p><b>  6.2 安全機(jī)制</b></p><p><b>  系統(tǒng)安全</b></p><p&g

41、t;  登錄的只能是本館的讀者或者管理員,且登錄需要有登錄密碼用于確認(rèn),如果不是本館用戶將無法進(jìn)入操作界面。</p><p>  有些操作需要用戶選擇才能進(jìn)行,如果用戶輸入有誤不能進(jìn)行操作且要提示用戶。</p><p><b>  數(shù)據(jù)安全</b></p><p>  在操作過程中如果出錯(cuò)則已經(jīng)進(jìn)行的數(shù)據(jù)庫操作需要回滾,保證回到錯(cuò)誤操作之前的狀

42、態(tài)。</p><p><b>  七、應(yīng)用程序設(shè)計(jì)</b></p><p><b>  7.1 功能模塊</b></p><p><b>  讀者部分:</b></p><p>  用戶注冊(cè)登錄:連接數(shù)據(jù)庫,判斷用戶信息,向數(shù)據(jù)庫添加新的用戶 </p><p

43、>  ?主界面:提供登錄后進(jìn)入各個(gè)功能模塊的入口</p><p>  ?個(gè)人信息:用于顯示服務(wù)器對(duì)用戶的提示及相關(guān)個(gè)人信息</p><p>  借閱信息:顯示讀者的借閱信息</p><p>  ?搜索模塊:用于顯示符合用戶需求的書籍信息,對(duì)讀者選中的書籍進(jìn)行預(yù)訂</p><p>  ?違章信息:在顯示讀者的違章信息</p&

44、gt;<p>  ?預(yù)定模塊:顯示讀者的預(yù)定信息</p><p><b>  管理員部分:</b></p><p>  用戶注冊(cè)登錄:連接數(shù)據(jù)庫,判斷用戶信息,向數(shù)據(jù)庫添加新的用戶 </p><p>  ?主界面:提供登錄后進(jìn)入各個(gè)功能模塊的入口</p><p>  ?用戶管理:用于查找顯示,刪除,修

45、改讀者和管理員信息</p><p>  借閱管理:顯示所有讀者的借閱信息,用于進(jìn)行借書還書的操作界面</p><p>  ?書籍管理:用于顯示館內(nèi)所有書籍信息,并可進(jìn)行搜索,按條件刪除操作</p><p>  ?違章管理:顯示/搜索所有讀者的違章信息,并能進(jìn)行刪除修改等操作</p><p><b>  7.2 界面設(shè)計(jì)</

46、b></p><p>  登錄界面:可以選擇讀者還是管理員登錄,如果登錄用戶不存在或者密碼錯(cuò)誤會(huì)彈出窗口提示用戶重新輸入</p><p>  可以點(diǎn)擊注冊(cè)按鈕注冊(cè)新的讀者,但是不能注冊(cè)新管理員。</p><p><b>  讀者個(gè)人信息</b></p><p>  讀者登錄后的界面,顯示讀者的所有個(gè)人信息,個(gè)人信息

47、可以修改</p><p>  讀者搜索:根據(jù)讀者輸入和選擇的搜索條件把符合條件的書籍在書籍信息內(nèi)顯示出來,然后點(diǎn)擊具體一本書可以顯示書籍的詳細(xì)信息,并決定是否要預(yù)定。預(yù)定成功和失敗都要提示用戶</p><p>  管理員書籍管理:管理員登陸后這里顯示所有書籍的詳細(xì)信息,可以在書名和isbn后輸入搜索條件進(jìn)行輸入,若沒有輸入條件則默認(rèn)搜索所有書籍信息.選中書籍后可以刪除,刪除可以根據(jù)選擇刪除

48、</p><p>  相同isbn,相同作者或相同書名等的書籍</p><p>  管理員標(biāo)題欄工具欄和菜單欄:</p><p>  在標(biāo)題欄根據(jù)管理員輸入id顯示管理員名字和登陸時(shí)間,可以在工具欄選擇重新登陸或退出,在菜單欄進(jìn)行各個(gè)操作界面的替換.</p><p>  管理員借書和還書操作界面:</p><p>  

49、管理員在這里輸入借書和還書的信息,借書還書失敗會(huì)給出提示.</p><p><b>  7.3 事務(wù)設(shè)計(jì)</b></p><p>  事物設(shè)計(jì)的函數(shù)代碼和sql語句</p><p>  7.3.1管理員刪除書籍:</p><p>  if(getJCheckBox().isSelected()){</p>

50、<p>  sql="delete from book where book_isbn='"+isbn+"'";</p><p>  bookdb.Chuli(sql);</p><p><b>  }</b></p><p>  if(getJCheckBox1().isSel

51、ected()){</p><p>  sql="delete from book where book_author='"+author+"'";</p><p>  bookdb.Chuli(sql);</p><p><b>  }</b></p><p> 

52、 if(getJCheckBox2().isSelected()){</p><p>  sql="delete from book where book_press='"+press+"'";</p><p>  bookdb.Chuli(sql);</p><p><b>  }</b>

53、;</p><p>  if(getJCheckBox3().isSelected()){</p><p>  sql="delete from book where book_name='"+bookname+"'";</p><p>  bookdb.Chuli(sql);</p><p

54、><b>  }</b></p><p>  說明:設(shè)置四個(gè)JCheckBox,根據(jù)管理員的選擇來生成sql語句,然后將sql語句作為一個(gè)數(shù)據(jù)庫處理類BookDB的方法Chuli()的參數(shù)傳遞過去進(jìn)行數(shù)據(jù)庫操作。</p><p>  7.3.2讀者的書籍搜索代碼和sql語句</p><p><b>  /*</b>&

55、lt;/p><p>  * 這個(gè)方法用于根據(jù)用戶的輸入獲得查詢語句</p><p><b>  */</b></p><p>  public String getSql(){</p><p>  String sql="";</p><p>  String input=getJ

56、TextField().getText();</p><p>  String searchtype;</p><p>  String resulttype = null;</p><p>  String ordertype = null;</p><p>  int index1=getJComboBox().getSelectedIn

57、dex();</p><p>  int index2=getJComboBox1().getSelectedIndex();</p><p>  if(getJRadioButton().isSelected()){</p><p>  ordertype="asc";</p><p><b>  }</

58、b></p><p>  if(getJRadioButton1().isSelected()){</p><p>  ordertype="desc";</p><p><b>  }</b></p><p>  if(index2==0){</p><p>  //根

59、據(jù)isbn排序</p><p>  resulttype="book_isbn";</p><p><b>  }</b></p><p>  if(index2==1){</p><p>  resulttype="book_date";</p><p>

60、<b>  }</b></p><p>  if(index2==2){</p><p>  resulttype="book_in";</p><p><b>  }</b></p><p>  System.out.println("輸入框的輸入為"+in

61、put);</p><p>  if(index1==0){</p><p>  //根據(jù)isbn來查找</p><p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subable from book w

62、here book_isbn='"+input+"' order by "</p><p>  +resulttype+" "+ordertype;</p><p><b>  }</b></p><p>  if(index1==1){</p><p>

63、<b>  //根據(jù)書名來查找</b></p><p>  if(getJRadioButton3().isSelected()){</p><p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subabl

64、e from book where book_name like '%"+input+"%' order by "+</p><p>  resulttype+" "+ordertype;</p><p>  System.out.println("根據(jù)書名精確:"+sql);</p>&l

65、t;p><b>  }</b></p><p>  if(getJRadioButton2().isSelected()){</p><p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subable

66、 from book where book_name='"+input+"' order by "</p><p>  +resulttype+" "+ordertype;</p><p>  System.out.println("根據(jù)書名模糊:"+sql);</p><p>&

67、lt;b>  }</b></p><p><b>  }</b></p><p>  if(index1==2){</p><p><b>  //根據(jù)作者來查找</b></p><p>  if(getJRadioButton3().isSelected()){</p>

68、;<p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subable from book where book_author like '%"+input+"%' order by "</p><

69、p>  +resulttype+" "+ordertype;</p><p>  System.out.println("根據(jù)作者模糊:"+sql);</p><p><b>  }</b></p><p>  if(getJRadioButton2().isSelected()){</p&g

70、t;<p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subable from book where book_author='"+input+"' order by "</p><p> 

71、 +resulttype+" "+ordertype;</p><p>  System.out.println("根據(jù)作者精確:"+sql);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(inde

72、x1==3){</p><p>  if(getJRadioButton3().isSelected()){</p><p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subable from book where book_

73、press like '%"+input+"%' order by "</p><p>  +resulttype+" "+ordertype;</p><p><b>  }</b></p><p>  if(getJRadioButton2().isSelected()){&

74、lt;/p><p>  sql="select book_id,book_name,book_author,book_introduction" +</p><p>  ",subable from book where book_press ='"+input+"' order by "</p><

75、;p>  +resulttype+" "+ordertype;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return sql;</p><p><b>  }</b></p>&

76、lt;p><b>  /*</b></p><p>  * 用用戶數(shù)據(jù)庫類來獲得書籍信息,輸入為從頁面得到的查詢語句,輸出為在列表中顯示的書籍信息</p><p><b>  */</b></p><p>  public Vector executeSql(String sql){</p><p

77、>  Vector<Vector<String>> info=new Vector();</p><p>  Vector<String> ainfo=new Vector();</p><p><b>  try {</b></p><p>  statement=connection.createS

78、tatement();</p><p>  resultset=statement.executeQuery(sql);</p><p>  while(resultset.next()){</p><p>  ainfo.add(resultset.getString(1));</p><p>  ainfo.add(resultset.g

79、etString(2));</p><p>  ainfo.add(resultset.getString(3));</p><p>  ainfo.add(resultset.getString(4));</p><p>  ainfo.add(resultset.getString(5));</p><p>  info.add(ainf

80、o);</p><p>  ainfo=new Vector();</p><p><b>  }</b></p><p>  說明:在讀者界面類里面用getSql()方法獲得根據(jù)讀者選擇的搜索條件產(chǎn)生的搜索語句,然后將產(chǎn)生的搜索語句作為數(shù)據(jù)庫操作類ReaderDB中的executeSql()方法的參數(shù)來獲得符合搜索條件的結(jié)果保存在一個(gè)Vect

81、or類型變量中,返回給讀者的搜索界面。</p><p>  7.3.3管理員還書操作:</p><p>  public void returnBook(String reader,String book,Date date,String info){</p><p>  if(info.equals("")){</p><p

82、>  info="(NULL)";</p><p><b>  }</b></p><p>  System.out.println("還書時(shí)的違規(guī)信息"+info);</p><p>  sql="insert into ret(reader_id,book_id,ret_date,vi

83、olate_info) values('"+reader+"','"</p><p>  +book+"','"+date+"','"+info+"')";</p><p>  sql1="update book set boo

84、k_in=book_in+1 where book_isbn='"+book+"'";</p><p>  String sql2="delete from borrow where reader_id='"+reader+"' and book_id='"+book+"'";

85、</p><p>  String sql3="update book set borrowable='是' where book_id='"+book+"'";</p><p>  String sql4="update reader set borrow_num=borrow_num-1 where re

86、ader_id='"+reader+"'";</p><p><b>  try {</b></p><p>  statement=connection.createStatement();</p><p>  statement.executeUpdate(sql1);</p>&

87、lt;p>  statement.executeUpdate(sql);</p><p>  statement.executeUpdate(sql2);</p><p>  statement.executeUpdate(sql3);</p><p>  statement.executeUpdate(sql4);</p><p> 

88、 System.out.println("還書失敗的地方"+sql4);</p><p>  JOptionPane.showMessageDialog(null,"還書成功");</p><p>  System.out.println("更新完畢");</p><p>  } catch (SQLExc

89、eption e) {</p><p>  JOptionPane.showMessageDialog(null,"還書失敗,該書已被歸還");</p><p>  // TODO Auto-generated catch block</p><p>  說明:管理員在進(jìn)行還書操作時(shí)調(diào)用的數(shù)據(jù)庫操作類BookDB中的returnBook()方法,

90、由于還書操作要涉及到很多表的信息修改所以需要執(zhí)行多個(gè)sql語句。若其中的一個(gè)語句執(zhí)行失敗則所有操作都不能被執(zhí)行。</p><p>  此外所有的事物操作都定義為在三個(gè)數(shù)據(jù)庫操作類(ReaderDB,DBHandler,BookDB)中的方法。三個(gè)操作類分別用來處理讀者,管理員,書籍的有關(guān)操作。每個(gè)類都有各自的數(shù)據(jù)庫連接方法,關(guān)閉方法,便于調(diào)用。</p><p><b>  八、測(cè)

91、試和運(yùn)行</b></p><p><b>  測(cè)試要點(diǎn):</b></p><p>  在所有代碼編寫完成之后進(jìn)行系統(tǒng)測(cè)試工作。測(cè)試的主要工作在于:</p><p>  1.是否完成所要求的增刪改查功能</p><p>  2.界面組件的操作是否可以正常執(zhí)行</p><p>  3.數(shù)據(jù)

92、庫的操作是否正確運(yùn)行</p><p><b>  測(cè)試步驟:</b></p><p>  1.注冊(cè)三個(gè)讀者,id分別為001,002,003</p><p>  2.讀者和管理員的登錄操作,檢測(cè)輸入錯(cuò)誤提示</p><p>  3.管理員登錄進(jìn)行借閱,圖書搜索添加等操作。查看讀者,管理員信息,查看所有讀者的借閱記錄。&l

93、t;/p><p>  4.讀者登錄,修改個(gè)人信息,查看借閱記錄,搜索圖書,預(yù)定操作等</p><p>  5.管理員登錄,進(jìn)行讀者刪除,讀者信息修改,圖書刪除,預(yù)定信息查看,刪除,還書,違章信息查看等操作。</p><p><b>  測(cè)試結(jié)果:</b></p><p>  1.到系統(tǒng)提交時(shí),題目所要求的基本功能都實(shí)現(xiàn)了,包

94、括讀者信息,圖書信息,讀者和書籍間聯(lián)系信息如借閱,歸還,預(yù)定等操作的功能。</p><p>  2.界面設(shè)計(jì)沒有改善,不夠大方和明了,操作起來繁瑣</p><p>  3.輸入檢測(cè)不完整,例如用戶在修改信息時(shí)若輸入空時(shí)沒有提示輸入錯(cuò)誤信息,且會(huì)進(jìn)行錯(cuò)誤的數(shù)據(jù)庫操作</p><p><b>  九、總結(jié)</b></p><p&

95、gt;  至此,我的整個(gè)課程設(shè)計(jì)全部完成了。期間幾乎天天都在為完成設(shè)計(jì)進(jìn)行各種工作。感覺作為一個(gè)程序員真的很麻煩也很累,但是獨(dú)立完成工作后很有成就感。收獲有如下幾點(diǎn):</p><p>  1.在寫代碼前進(jìn)行規(guī)劃和估計(jì),這樣能夠指導(dǎo)代碼編寫的步驟和進(jìn)度,比憑感覺去編寫代碼提高了很大的效率。</p><p>  2.第一次數(shù)據(jù)庫設(shè)計(jì)時(shí)沒有充分考慮需求,導(dǎo)致程序?qū)懙揭话氩虐l(fā)現(xiàn)功能太過簡單,然后重

96、新進(jìn)行設(shè)計(jì)和修改花了很多時(shí)間。以后設(shè)計(jì)數(shù)據(jù)庫要盡量考慮充分所有可能的需求,詳細(xì)設(shè)計(jì)才能磨刀不誤砍柴工。</p><p>  3.在課程設(shè)計(jì)提交時(shí),實(shí)驗(yàn)老師說了很多界面設(shè)計(jì)方面的意見和建議,這些都是在寫代碼時(shí)沒有考慮到的但是很基礎(chǔ)的問題,這些給我很多提示。</p><p>  4.這次課程設(shè)計(jì)寫了四千七百多行的代碼,是我到目前為止所有個(gè)人完成的編程工作中最大的一次。還是很有成就感的。<

97、/p><p>  當(dāng)然這次課程設(shè)計(jì)也有很多不足的地方,主要有下面幾個(gè)方面:</p><p>  1.規(guī)劃時(shí)低估了需求,然后需要在數(shù)據(jù)庫中加進(jìn)很多新的東西,導(dǎo)致最后功能不完善,而且拖延了進(jìn)度。</p><p>  2.編寫代碼時(shí)的類劃分不清晰,有些方法已經(jīng)重復(fù)了,而且很多方法沒法重用??梢越梃b同學(xué)的編程方法。</p><p><b>  

98、附. 參考文獻(xiàn)</b></p><p>  1.《java基礎(chǔ)應(yīng)用案例開發(fā)》 李剛生,王燚,焦玲 清華大學(xué)出版社</p><p>  2.《java課程設(shè)計(jì)教程》 機(jī)械工業(yè)出版社</p><p>  3.sql語句基礎(chǔ)教程 </p><p>  4.java數(shù)據(jù)庫連接方法CSDN博

溫馨提示

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