




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、大型數(shù)據(jù)庫(kù)應(yīng)用課程設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)圖書(shū)館書(shū)籍管理系統(tǒng)起止日期: 2014 年 12 月 1 日 至 2014 年 12 月 7 日學(xué)生姓名肖魁班級(jí)計(jì)算機(jī)1102班學(xué)號(hào)11408100214成績(jī)指導(dǎo)教師(簽字)計(jì)算機(jī)與通信學(xué)院 2012年12月 7 日?qǐng)D書(shū)館書(shū)籍管理系統(tǒng)一、 課題的介紹和課題的任務(wù) 圖書(shū)館書(shū)籍管理系統(tǒng)主要對(duì)圖書(shū)館中書(shū)籍進(jìn)行管理,包括對(duì)書(shū)籍的添加,刪除,修改,各種方式的查詢(xún)等操作,用于管理員對(duì)圖書(shū)館書(shū)籍庫(kù)的管理;采用Oracle作為數(shù)據(jù)庫(kù),應(yīng)用了Java,Jsp,JavaScript,SQL等編程語(yǔ)言以及 Struts2,JDBC等等技術(shù),另外系統(tǒng)采用B/S結(jié)構(gòu),MVC的設(shè)計(jì)模式
2、進(jìn)行設(shè)計(jì),在數(shù)據(jù)庫(kù)方面,多處應(yīng)用了存儲(chǔ)過(guò)程和觸發(fā)器;二、課程設(shè)計(jì)的要求1、書(shū)籍的添加:通過(guò)觸發(fā)器和索引,使圖書(shū)的編號(hào)按照自動(dòng)增長(zhǎng)的方式進(jìn)行添加,其他字段還有:書(shū)籍名稱(chēng),作者,出版社,頁(yè)數(shù),藏書(shū)地址等;并且通過(guò)定義觸發(fā)器,使每增加一條圖書(shū)信息,在圖書(shū)狀態(tài)表中給其增加對(duì)應(yīng)的圖書(shū)狀態(tài)信息;2、書(shū)籍的刪除:通過(guò)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn),如果該書(shū)的狀態(tài)為已借出,就不能刪除書(shū)籍,并發(fā)出提示信息;書(shū)籍的刪除,通過(guò)定義before觸發(fā)器,假如該書(shū)籍能夠刪除,就在其刪除之前,刪掉該書(shū)籍的狀態(tài)信息;3、書(shū)籍的修改:修改除了書(shū)籍主鍵外的其他信息;4、書(shū)籍的查詢(xún):可根據(jù)圖書(shū)的索引號(hào)進(jìn)行精確查詢(xún),可以根據(jù)圖書(shū)的書(shū)名,作者,出版社
3、,藏書(shū)地址等進(jìn)行模糊查詢(xún),基于系統(tǒng)的需求,還提供系統(tǒng)中以所有字段作為關(guān)鍵字的模糊查詢(xún);5、用戶(hù)身份驗(yàn)證,管理員通過(guò)用戶(hù)登錄,輸入驗(yàn)證信息,若經(jīng)過(guò)系統(tǒng)驗(yàn)證后,若正確,則進(jìn)入圖書(shū)管理主頁(yè),若出現(xiàn)錯(cuò)誤,則跳到登錄界面,并返回相應(yīng)的友好的錯(cuò)誤提示信息;三、系統(tǒng)的分析和系統(tǒng)中數(shù)據(jù)庫(kù)的分析(ER圖等) 1、 系統(tǒng)設(shè)計(jì)11.系統(tǒng)概要設(shè)計(jì)-流程圖系統(tǒng)總體設(shè)計(jì)如圖1.1所示 圖1-1 實(shí)現(xiàn)用戶(hù)的登錄,管理員登錄后對(duì)圖書(shū)進(jìn)行書(shū)籍的添加,書(shū)籍各種方式的查詢(xún),書(shū)籍的修改,書(shū)籍的刪除;12.系統(tǒng)的詳細(xì)設(shè)計(jì)1.2.1.用戶(hù)的登錄 圖書(shū)管理員通過(guò)輸入管理員和密碼進(jìn)行驗(yàn)證,若驗(yàn)證正確,則進(jìn)入系統(tǒng)。 圖.書(shū)籍的
4、添加書(shū)籍的添加,用戶(hù)在表單中輸入書(shū)籍的信息,點(diǎn)擊錄入,數(shù)據(jù)通過(guò)Struts2 的過(guò)濾器,自動(dòng)提交數(shù)據(jù),在Struts的Action類(lèi)中進(jìn)行獲取數(shù)據(jù),然后進(jìn)行檢測(cè),如果檢測(cè)輸入信息有誤,則跳轉(zhuǎn)到添加頁(yè)面,并返回相應(yīng)的錯(cuò)誤提示;如果信息正確,則調(diào)用添加數(shù)據(jù)存儲(chǔ)過(guò)程進(jìn)行數(shù)據(jù)的持久化;具體流程如圖1-3所示; 圖.書(shū)籍的修改書(shū)籍的修改,首先查詢(xún)出需要修改的書(shū)籍,點(diǎn)擊修改,跳轉(zhuǎn)到書(shū)籍修改頁(yè)面,順便通過(guò)session對(duì)象,將原有的書(shū)籍對(duì)象帶過(guò)去;在書(shū)籍修改頁(yè)面表單中修改相應(yīng)屬性,提交到Struts2 的Action類(lèi)中,首先進(jìn)行數(shù)據(jù)的校驗(yàn),校驗(yàn)失敗,跳轉(zhuǎn)到修改頁(yè)面,返回相應(yīng)的出錯(cuò)信息,校驗(yàn)
5、成功,則進(jìn)行書(shū)籍的更新處理;具體流程如圖1.4所示; 圖書(shū)籍的刪除書(shū)籍的刪除,首先查詢(xún)出需要修改的書(shū)籍,點(diǎn)擊刪除,提交到Struts2中的Action類(lèi),順便傳入書(shū)籍編號(hào)這個(gè)值(主鍵,唯一),首先訪問(wèn)書(shū)籍庫(kù)進(jìn)行查詢(xún)?cè)摃?shū)籍的狀態(tài)是否是“在館”,是則返回true,進(jìn)入書(shū)籍的刪除環(huán)節(jié);調(diào)用數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程和觸發(fā)器,進(jìn)行書(shū)籍的刪除,確保系統(tǒng)數(shù)據(jù)的一致性;具體流程如圖1.5所示 圖書(shū)籍的查詢(xún)書(shū)籍的查詢(xún),本系統(tǒng)中書(shū)籍的查詢(xún)?cè)O(shè)定了多種方式,包括按索書(shū)號(hào)查詢(xún),按書(shū)名查詢(xún),按書(shū)籍作者查詢(xún),按出版社查詢(xún),還有按所有字段進(jìn)行查詢(xún);先選擇查詢(xún)的方式,輸入關(guān)鍵字,然后進(jìn)行數(shù)據(jù)的提交,經(jīng)
6、數(shù)據(jù)過(guò)濾校驗(yàn)后,進(jìn)入控制層,通過(guò)判斷其查詢(xún)類(lèi)型,進(jìn)行數(shù)據(jù)的查詢(xún),將符合條件的數(shù)據(jù)查詢(xún)出來(lái),裝入集合框架ArrayList中,傳入顯示層進(jìn)行數(shù)據(jù)的顯示,具體流程如圖1.6所示; 圖1.62數(shù)據(jù)庫(kù)的設(shè)計(jì) 2.1數(shù)據(jù)庫(kù)建模 2.1.1E-R圖 圖書(shū)信息建模 系統(tǒng)中書(shū)籍信息建模如E-R圖2.1所示: 圖.2用戶(hù)信息的建模用戶(hù)信息的建模如圖2.2所示: 圖2.23系統(tǒng)前臺(tái)的設(shè)計(jì)3.1、系統(tǒng)的結(jié)構(gòu) 本系統(tǒng)使用MVC模式作為系統(tǒng)的設(shè)計(jì)結(jié)構(gòu),以JSP作為視圖層;采用struts2框架,以其Acation類(lèi)作為其控制層,以各種JavaBean,F(xiàn)ormBean作為模型層;3.2、界
7、面的設(shè)計(jì)和布局3.2.1登錄界面如圖3.1所示 圖圖書(shū)管理界面圖書(shū)管理主頁(yè)中提供了集書(shū)籍添加,書(shū)籍修改,書(shū)籍刪除,書(shū)籍詳情查詢(xún) 及多功能的圖書(shū)檢索功能,使用方便,操作簡(jiǎn)單,并設(shè)有完善友好的錯(cuò)誤提示功能,具體展示如圖3.2所示; 圖圖書(shū)修改界面書(shū)籍修改界面如圖3.3所示; 圖.圖書(shū)詳情界面由于數(shù)據(jù)量比較大,在查詢(xún)主頁(yè)中不便顯示,通過(guò)圖書(shū)詳情界面,將對(duì)應(yīng)圖書(shū)信息進(jìn)行顯示;其界面及運(yùn)行結(jié)果如圖3.4所示; 圖3.4四、系統(tǒng)的數(shù)據(jù)庫(kù)實(shí)現(xiàn)1.1.書(shū)籍信息表和書(shū)籍狀態(tài)表的設(shè)計(jì)書(shū)籍信息表中包括書(shū)籍編號(hào),書(shū)籍名稱(chēng),作者,出版社,頁(yè)數(shù),藏書(shū)地址等字段,書(shū)籍編號(hào)通過(guò)
8、觸發(fā)器的方式,以自動(dòng)增長(zhǎng)的方式進(jìn)行添加;頁(yè)數(shù)為Number類(lèi)型,其他的都為字符串行;圖書(shū)館中書(shū)籍的各個(gè)字段的設(shè)計(jì)如圖4.1所示分為圖書(shū)表(book)和圖書(shū)狀態(tài)表(bookstate); 圖4.1 表4-1 book表的設(shè)計(jì)bnumNumberNot null,自動(dòng)生成,主鍵bnameCharacter(256)Not nullwriterCharacter(256)Not nullpublishCharacter(256)Not nullpageNumberNot nullplaceCharacter(256)Not null 表4-2 bookstate表的設(shè)計(jì)bnumNumberNot n
9、ull 外鍵,主鍵stateCharacter(256)Not null default waitcardidCharacter(256)nullborrowDatenull1.2.管理員驗(yàn)證信息的設(shè)計(jì)如圖4.2所示Create table Manager(Username varchar2(20),Pwd varchar2(20); 圖4.2 表4-3 manage表的設(shè)計(jì)usernameCharacter(256)Not null 主鍵pwdCharacter(256)Not null1.3. 觸發(fā)器,存儲(chǔ)過(guò)程的設(shè)計(jì)1.3.1.圖書(shū)信息添加觸發(fā)器的設(shè)計(jì) 先創(chuàng)建一個(gè)索引,計(jì)算出前一個(gè)字段的最
10、大值,然后創(chuàng)建before觸發(fā)器,每增加一項(xiàng)書(shū)籍記錄,給書(shū)籍編號(hào)這一字段賦值;圖書(shū)的管理-創(chuàng)建圖書(shū)表: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;-測(cè)試,插入數(shù)據(jù)Insert into book( bname , writer , publish , page , place ) values ( 'compute','liusi','China',342,'一樓庫(kù)'); insert into book ( bname , writer , publish ,
12、 page , place) values ('computerr','liusi','湖工大',842,'二樓庫(kù)');1.3.2.添加書(shū)籍狀態(tài)信息觸發(fā)器trigger_state每創(chuàng)建一項(xiàng)書(shū)籍記錄后,自動(dòng)在圖書(shū)狀態(tài)信息表中,添加一條對(duì)應(yīng)的圖書(shū)狀態(tài)信息;創(chuàng)初始觸發(fā)器create or replace trigger_stateafter insert bookfor each rowbegin -如何用到bnum的值-> insert into bookstate(bnum) values( )end ;1.3.3.刪除存儲(chǔ)
13、過(guò)程的創(chuàng)建pro_del先判斷圖書(shū)狀態(tài)State是否為”已借出”,如果是,則不能進(jìn)行刪除操作,與此同時(shí),發(fā)出提示信息;如果不是,則先刪除bookstate表中對(duì)應(yīng)的那條記錄,再將相應(yīng)的圖書(shū)信息記錄刪除。-刪除,過(guò)程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更新書(shū)籍存儲(chǔ)過(guò)程的創(chuàng)建pro_update-更新書(shū)籍存儲(chǔ)過(guò)程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用戶(hù)登錄存儲(chǔ)過(guò)程的創(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)的實(shí)現(xiàn)及調(diào)試 1.實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接public DBoracle() try Class.forName("oracle.jdbc.driver.OracleDriver");/oracle名稱(chēng)還需填寫(xiě)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)功能的實(shí)現(xiàn) 2.1通過(guò)在前臺(tái)JSP
18、頁(yè)面中書(shū)籍信息,由Struts2的過(guò)濾器,將其數(shù)據(jù)自動(dòng)封裝成對(duì)應(yīng)的JavaBean,在對(duì)應(yīng)的Action中進(jìn)行處理;<?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.圖書(shū)的添加 在圖書(shū)管理主界面中,錄入各項(xiàng)圖書(shū)信息
25、,通過(guò)Struts2過(guò)濾器,在Action中進(jìn)行數(shù)據(jù)的校驗(yàn),若出現(xiàn)數(shù)據(jù)格式等方面的錯(cuò)誤,將錯(cuò)誤信息寫(xiě)入一個(gè)HashMap集合中,并將所有出錯(cuò)信息的集合返回到圖書(shū)管理主界面;如果數(shù)據(jù)符合要求,則向數(shù)據(jù)庫(kù)圖書(shū)表中增加一條記錄,同時(shí)往圖書(shū)狀態(tài)表中也寫(xiě)入相應(yīng)的記錄;public boolean addBook(Book b). 2.3.圖書(shū)的修改先通過(guò)查詢(xún),找到要修改的記錄,點(diǎn)擊進(jìn)入圖書(shū)信息修改界面,完成后,輸入新的值,進(jìn)行數(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圖書(shū)的刪除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.圖書(shū)的查詢(xún)系統(tǒng)中提供了圖書(shū)索引號(hào),圖書(shū)名稱(chēng),作者,出版社,等多種方式的查詢(xún),并且為了方便起見(jiàn),還設(shè)立通過(guò)所有字段進(jìn)行模糊查詢(xún)的功能;pub
29、lic ArrayList getLibBooks(Book b, int choice) ArrayList al=new ArrayList();String sql="select * from book where "String str=null;try / 按照各種查詢(xún)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()+"%"); /將所有信息寫(xiě)入publish這一欄中pstmt.setString(2, "%"+b.getPublish()+"%"); /將所有信息寫(xiě)入publish這一欄中pstmt.setString(3, "%"+b.getPublish()+"%"); /將所有信息寫(xiě)入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管理員地登錄 管理員必須通過(guò)身份驗(yàn)證才能進(jìn)入書(shū)籍管理頁(yè)面,對(duì)書(shū)籍的管理;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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高血糖的緊急處置方法
- 海濱小城(第二課時(shí))學(xué)習(xí)任務(wù)單
- 精神障礙護(hù)理學(xué)自考試題及答案
- 院感專(zhuān)職培訓(xùn)心得匯報(bào)
- 急診院前急救護(hù)理
- 計(jì)量器具全流程管理規(guī)范
- 2025年中國(guó)女士奢侈鞋行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 重癥肝炎護(hù)理病例討論
- 專(zhuān)科特色健康教育體系構(gòu)建
- 企業(yè)崗位培訓(xùn)
- 2025課件:紅色基因作風(fēng)建設(shè)七一黨課
- 2025年河北省萬(wàn)唯中考定心卷生物(一)
- 岳母大人追悼詞
- 墩柱及蓋梁切割拆除方案
- JJF 1033-2016 《計(jì)量標(biāo)準(zhǔn)考核規(guī)范》宣貫資料
- 9.幼兒園小班第一學(xué)期班級(jí)計(jì)劃
- 長(zhǎng)輸管道工程施工組織設(shè)計(jì)
- SAP-SD信用管理實(shí)施總結(jié)
- 最新2022年監(jiān)理工程旁站及平行檢驗(yàn)項(xiàng)目列表
- 物體打擊應(yīng)急預(yù)案演練總結(jié)
- 《海水工廠化養(yǎng)殖尾水處理技術(shù)規(guī)范》標(biāo)準(zhǔn)及編制說(shuō)明
評(píng)論
0/150
提交評(píng)論