圖書館書籍管理系統(tǒng)說明書(附代碼)_第1頁
圖書館書籍管理系統(tǒng)說明書(附代碼)_第2頁
圖書館書籍管理系統(tǒng)說明書(附代碼)_第3頁
圖書館書籍管理系統(tǒng)說明書(附代碼)_第4頁
圖書館書籍管理系統(tǒng)說明書(附代碼)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、大型數(shù)據(jù)庫應(yīng)用課程設(shè)計課程設(shè)計說明書圖書館書籍管理系統(tǒng)起止日期: 2014 年 12 月 1 日 至 2014 年 12 月 7 日學(xué)生姓名肖魁班級計算機1102班學(xué)號11408100214成績指導(dǎo)教師(簽字)計算機與通信學(xué)院 2012年12月 7 日圖書館書籍管理系統(tǒng)一、 課題的介紹和課題的任務(wù) 圖書館書籍管理系統(tǒng)主要對圖書館中書籍進行管理,包括對書籍的添加,刪除,修改,各種方式的查詢等操作,用于管理員對圖書館書籍庫的管理;采用Oracle作為數(shù)據(jù)庫,應(yīng)用了Java,Jsp,JavaScript,SQL等編程語言以及 Struts2,JDBC等等技術(shù),另外系統(tǒng)采用B/S結(jié)構(gòu),MVC的設(shè)計模式

2、進行設(shè)計,在數(shù)據(jù)庫方面,多處應(yīng)用了存儲過程和觸發(fā)器;二、課程設(shè)計的要求1、書籍的添加:通過觸發(fā)器和索引,使圖書的編號按照自動增長的方式進行添加,其他字段還有:書籍名稱,作者,出版社,頁數(shù),藏書地址等;并且通過定義觸發(fā)器,使每增加一條圖書信息,在圖書狀態(tài)表中給其增加對應(yīng)的圖書狀態(tài)信息;2、書籍的刪除:通過存儲過程來實現(xiàn),如果該書的狀態(tài)為已借出,就不能刪除書籍,并發(fā)出提示信息;書籍的刪除,通過定義before觸發(fā)器,假如該書籍能夠刪除,就在其刪除之前,刪掉該書籍的狀態(tài)信息;3、書籍的修改:修改除了書籍主鍵外的其他信息;4、書籍的查詢:可根據(jù)圖書的索引號進行精確查詢,可以根據(jù)圖書的書名,作者,出版社

3、,藏書地址等進行模糊查詢,基于系統(tǒng)的需求,還提供系統(tǒng)中以所有字段作為關(guān)鍵字的模糊查詢;5、用戶身份驗證,管理員通過用戶登錄,輸入驗證信息,若經(jīng)過系統(tǒng)驗證后,若正確,則進入圖書管理主頁,若出現(xiàn)錯誤,則跳到登錄界面,并返回相應(yīng)的友好的錯誤提示信息;三、系統(tǒng)的分析和系統(tǒng)中數(shù)據(jù)庫的分析(ER圖等) 1、 系統(tǒng)設(shè)計11.系統(tǒng)概要設(shè)計-流程圖系統(tǒng)總體設(shè)計如圖1.1所示 圖1-1 實現(xiàn)用戶的登錄,管理員登錄后對圖書進行書籍的添加,書籍各種方式的查詢,書籍的修改,書籍的刪除;12.系統(tǒng)的詳細(xì)設(shè)計1.2.1.用戶的登錄 圖書管理員通過輸入管理員和密碼進行驗證,若驗證正確,則進入系統(tǒng)。 圖.書籍的

4、添加書籍的添加,用戶在表單中輸入書籍的信息,點擊錄入,數(shù)據(jù)通過Struts2 的過濾器,自動提交數(shù)據(jù),在Struts的Action類中進行獲取數(shù)據(jù),然后進行檢測,如果檢測輸入信息有誤,則跳轉(zhuǎn)到添加頁面,并返回相應(yīng)的錯誤提示;如果信息正確,則調(diào)用添加數(shù)據(jù)存儲過程進行數(shù)據(jù)的持久化;具體流程如圖1-3所示; 圖.書籍的修改書籍的修改,首先查詢出需要修改的書籍,點擊修改,跳轉(zhuǎn)到書籍修改頁面,順便通過session對象,將原有的書籍對象帶過去;在書籍修改頁面表單中修改相應(yīng)屬性,提交到Struts2 的Action類中,首先進行數(shù)據(jù)的校驗,校驗失敗,跳轉(zhuǎn)到修改頁面,返回相應(yīng)的出錯信息,校驗

5、成功,則進行書籍的更新處理;具體流程如圖1.4所示; 圖書籍的刪除書籍的刪除,首先查詢出需要修改的書籍,點擊刪除,提交到Struts2中的Action類,順便傳入書籍編號這個值(主鍵,唯一),首先訪問書籍庫進行查詢該書籍的狀態(tài)是否是“在館”,是則返回true,進入書籍的刪除環(huán)節(jié);調(diào)用數(shù)據(jù)庫中的存儲過程和觸發(fā)器,進行書籍的刪除,確保系統(tǒng)數(shù)據(jù)的一致性;具體流程如圖1.5所示 圖書籍的查詢書籍的查詢,本系統(tǒng)中書籍的查詢設(shè)定了多種方式,包括按索書號查詢,按書名查詢,按書籍作者查詢,按出版社查詢,還有按所有字段進行查詢;先選擇查詢的方式,輸入關(guān)鍵字,然后進行數(shù)據(jù)的提交,經(jīng)

6、數(shù)據(jù)過濾校驗后,進入控制層,通過判斷其查詢類型,進行數(shù)據(jù)的查詢,將符合條件的數(shù)據(jù)查詢出來,裝入集合框架ArrayList中,傳入顯示層進行數(shù)據(jù)的顯示,具體流程如圖1.6所示; 圖1.62數(shù)據(jù)庫的設(shè)計 2.1數(shù)據(jù)庫建模 2.1.1E-R圖 圖書信息建模 系統(tǒng)中書籍信息建模如E-R圖2.1所示: 圖.2用戶信息的建模用戶信息的建模如圖2.2所示: 圖2.23系統(tǒng)前臺的設(shè)計3.1、系統(tǒng)的結(jié)構(gòu) 本系統(tǒng)使用MVC模式作為系統(tǒng)的設(shè)計結(jié)構(gòu),以JSP作為視圖層;采用struts2框架,以其Acation類作為其控制層,以各種JavaBean,F(xiàn)ormBean作為模型層;3.2、界

7、面的設(shè)計和布局3.2.1登錄界面如圖3.1所示 圖圖書管理界面圖書管理主頁中提供了集書籍添加,書籍修改,書籍刪除,書籍詳情查詢 及多功能的圖書檢索功能,使用方便,操作簡單,并設(shè)有完善友好的錯誤提示功能,具體展示如圖3.2所示; 圖圖書修改界面書籍修改界面如圖3.3所示; 圖.圖書詳情界面由于數(shù)據(jù)量比較大,在查詢主頁中不便顯示,通過圖書詳情界面,將對應(yīng)圖書信息進行顯示;其界面及運行結(jié)果如圖3.4所示; 圖3.4四、系統(tǒng)的數(shù)據(jù)庫實現(xiàn)1.1.書籍信息表和書籍狀態(tài)表的設(shè)計書籍信息表中包括書籍編號,書籍名稱,作者,出版社,頁數(shù),藏書地址等字段,書籍編號通過

8、觸發(fā)器的方式,以自動增長的方式進行添加;頁數(shù)為Number類型,其他的都為字符串行;圖書館中書籍的各個字段的設(shè)計如圖4.1所示分為圖書表(book)和圖書狀態(tài)表(bookstate); 圖4.1 表4-1 book表的設(shè)計bnumNumberNot null,自動生成,主鍵bnameCharacter(256)Not nullwriterCharacter(256)Not nullpublishCharacter(256)Not nullpageNumberNot nullplaceCharacter(256)Not null 表4-2 bookstate表的設(shè)計bnumNumberNot n

9、ull 外鍵,主鍵stateCharacter(256)Not null default waitcardidCharacter(256)nullborrowDatenull1.2.管理員驗證信息的設(shè)計如圖4.2所示Create table Manager(Username varchar2(20),Pwd varchar2(20); 圖4.2 表4-3 manage表的設(shè)計usernameCharacter(256)Not null 主鍵pwdCharacter(256)Not null1.3. 觸發(fā)器,存儲過程的設(shè)計1.3.1.圖書信息添加觸發(fā)器的設(shè)計 先創(chuàng)建一個索引,計算出前一個字段的最

10、大值,然后創(chuàng)建before觸發(fā)器,每增加一項書籍記錄,給書籍編號這一字段賦值;圖書的管理-創(chuàng)建圖書表:Create table book(bnum number(11),bname varchar2(20),writer varchar2(20),publish varchar2(50),page number(11),place varchar2(20),);-創(chuàng)建序列:create sequence book_seqincrement by 1 start with 1maxvalue 1.0E28minvalue 1 nocache -創(chuàng)建觸發(fā)器create or replace tri

11、gger tr_bookbefore insert bookfor each rowbeginselect book_seq.nextval into :new.bnum from dual;end tr_book;-測試,插入數(shù)據(jù)Insert into book( bname , writer , publish , page , place ) values ( 'compute','liusi','China',342,'一樓庫'); insert into book ( bname , writer , publish ,

12、 page , place) values ('computerr','liusi','湖工大',842,'二樓庫');1.3.2.添加書籍狀態(tài)信息觸發(fā)器trigger_state每創(chuàng)建一項書籍記錄后,自動在圖書狀態(tài)信息表中,添加一條對應(yīng)的圖書狀態(tài)信息;創(chuàng)初始觸發(fā)器create or replace trigger_stateafter insert bookfor each rowbegin -如何用到bnum的值-> insert into bookstate(bnum) values( )end ;1.3.3.刪除存儲

13、過程的創(chuàng)建pro_del先判斷圖書狀態(tài)State是否為”已借出”,如果是,則不能進行刪除操作,與此同時,發(fā)出提示信息;如果不是,則先刪除bookstate表中對應(yīng)的那條記錄,再將相應(yīng)的圖書信息記錄刪除。-刪除,過程Create or replace procedure pro_del( bnumber IN number(11) , say out varchar2(20)as Num1 number sta varchar2 date1=dateBegin select state into sta from bookstate where bnum=bnumber;if sta='

14、wait' then delete from bookstate where bnum=bnumber; delete from book where bnum=bnumber; say='yes'else say='no'end if; end;1.3.4更新書籍存儲過程的創(chuàng)建pro_update-更新書籍存儲過程Create or replace procedure pro_update( bnum1 IN number(11) , bname1 IN varchar2(20), writer1 IN varchar2(20), publish1 I

15、N varchar2(50), page1 IN number(11), place1 IN varchar2(20),)asBegin update book set bname = bname1,writer= writer1, publish= publish1, page=page1,place=place1 where bnum=bnum1; end;1.3.5用戶登錄存儲過程的創(chuàng)建pro_login-登錄Create or replace procedure pro_login( mname IN varchar2(20), mpwd IN varchar2(20), say ou

16、t varchar2(20) as count number=0;Begin select count(*) into count from Manage where username=mname && pwd=mpwd;if sta=0 then say='yes'else say='no'end if; end;五、系統(tǒng)的實現(xiàn)及調(diào)試 1.實現(xiàn)數(shù)據(jù)庫的連接public DBoracle() try Class.forName("oracle.jdbc.driver.OracleDriver");/oracle名稱還需填寫ct

17、=DriverManager.getConnection("jdbc:oracle:thin:48:1521:orcl","orcl","orcl"); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); 2.系統(tǒng)功能的實現(xiàn) 2.1通過在前臺JSP

18、頁面中書籍信息,由Struts2的過濾器,將其數(shù)據(jù)自動封裝成對應(yīng)的JavaBean,在對應(yīng)的Action中進行處理;<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-/Apache Software Foundation/DTD Struts Configuration 2.0/EN" "/dtds/struts-2.0.dtd"><struts><p

19、ackage name="user" extends="struts-default"> <action name="userlogin" class="lib.action.UserLoginAction" method="execute"> <result name="success">main.jsp</result> <result name="failure">main.jsp</res

20、ult> </action> <action name="addbook" class="lib.action.AddBookAction" method="execute"> <result name="success">BookManage.jsp</result> <result name="failure">BookManage.jsp</result> </action> <action n

21、ame="updatebook" class="lib.action.UpdateBookAction" method="execute"> <result name="success">BookManage.jsp</result> <result name="failure">updatebook.jsp</result> </action> <action name="deletebook" cla

22、ss="lib.action.DeleteBookAction" method="execute"> <result name="success">BookManage.jsp</result> <result name="failure">BookManage.jsp</result> </action> <action name="cbookselect" class="lib.action.ChangeBoo

23、kSelectAction" method="execute"> <result name="success">BookManage.jsp</result> <result name="failure">BookManage.jsp</result> </action> </package><package name="sel" extends="struts-default"> <act

24、ion name="select" class="lib.action.SelectAction" method="execute"> <result name="success">main.jsp</result> <result name="error">main.jsp</result> </action></package></struts> 2.2.圖書的添加 在圖書管理主界面中,錄入各項圖書信息

25、,通過Struts2過濾器,在Action中進行數(shù)據(jù)的校驗,若出現(xiàn)數(shù)據(jù)格式等方面的錯誤,將錯誤信息寫入一個HashMap集合中,并將所有出錯信息的集合返回到圖書管理主界面;如果數(shù)據(jù)符合要求,則向數(shù)據(jù)庫圖書表中增加一條記錄,同時往圖書狀態(tài)表中也寫入相應(yīng)的記錄;public boolean addBook(Book b). 2.3.圖書的修改先通過查詢,找到要修改的記錄,點擊進入圖書信息修改界面,完成后,輸入新的值,進行數(shù)據(jù)的修改;public boolean updateBook(Book b) try CallableStatement cstmt = null;String procedur

26、e = "call pro_update(?,?,?,?,?,?)"cstmt.setString(1,b.getBname();cstmt.setString(2,b.getWriter();cstmt.setString(3,b.getPublish();cstmt.setInt(4,b.getPage();cstmt.setString(5, b.getPlace();cstmt.setInt(6, b.getBnum();cstmt = ct.prepareCall(procedure); cstmt.executeUpdate(); return true; ca

27、tch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return false;2.4圖書的刪除public boolean deleteBook(Book b) try /pstmt=ct.prepareStatement("delete from bookstate where bnum=? ");pstmt=ct.prepareCall(" call pro_del(?) ");pstmt.setInt(1,b.getBnum();/pstmt.execu

28、teUpdate();/pstmt=ct.prepareStatement("delete from book where bnum=?");/pstmt.setInt(1,b.getBnum();pstmt.execute();return true; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return false;2.5.圖書的查詢系統(tǒng)中提供了圖書索引號,圖書名稱,作者,出版社,等多種方式的查詢,并且為了方便起見,還設(shè)立通過所有字段進行模糊查詢的功能;pub

29、lic ArrayList getLibBooks(Book b, int choice) ArrayList al=new ArrayList();String sql="select * from book where "String str=null;try / 按照各種查詢if (choice = 1) sql="select * from book where bnum=?"pstmt = ct.prepareStatement(sql);pstmt.setInt(1, b.getBnum(); else if (choice = 2) sql

30、="select * from book where bname like ?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getBname()+"%"); else if (choice = 3) sql="select * from book where writer=?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, b.getWriter(); else if (choice = 4) s

31、ql="select * from book where publish like ?" pstmt=ct.prepareStatement(sql); pstmt.setString(1, "%"+b.getPublish()+"%"); else sql="select * from book where bname like ? OR writer like ? OR publish like ?"pstmt=ct.prepareStatement(sql);pstmt.setString(1, "

32、%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中pstmt.setString(2, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中pstmt.setString(3, "%"+b.getPublish()+"%"); /將所有信息寫入publish這一欄中ResultSet rs=pstmt.executeQuery();while(rs.next()Book bk=new Book();bk.setBn

33、um(rs.getInt(1);bk.setBname(rs.getString(2);bk.setWriter(rs.getString(3);bk.setPublish(rs.getString(4);bk.setPage(rs.getInt(5);bk.setPlace(rs.getString(6);al.add(bk);return al; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return null;2.6管理員地登錄 管理員必須通過身份驗證才能進入書籍管理頁面,對書籍的管理;public boolean managerLogin(String workid,String password)try /pstmt=ct.prepareStatement("select * from manager where workid=? ");CallableStatement cstmt = null;cstmt=ct.prepareCall(" call pro_login

溫馨提示

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

評論

0/150

提交評論