欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

图书馆书籍管理系统说明书(附代码)

  • 资源ID:187146378       资源大小:585.50KB        全文页数:22页
  • 资源格式: DOC        下载积分:20积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要20积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

图书馆书籍管理系统说明书(附代码)

.大型数据库应用课程设计课程设计说明书图书馆书籍管理系统起止日期: 2014 年 12 月 1 日 至 2014 年 12 月 7 日学生姓名肖魁班级计算机 1102 班学号11408100214成绩指导教师 ( 签字 )计算机与通信学院2012 年 12 月 7 日.下载可编辑.图书馆书籍管理系统一、 课题的介绍和课题的任务图书馆书籍管理系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;采用Oracle作为数据库,应用了 Java,Jsp,JavaScript,SQL 等编程语言以及 Struts2,JDBC 等等技术,另外系统采用B/S 结构,MVC 的设计模式进行设计,在数据库方面,多处应用了存储过程和触发器;二、课程设计的要求1、书籍的添加:通过触发器和索引,使图书的编号按照自动增长的方式进行添加,其他字段还有:书籍名称,作者,出版社,页数,藏书地址等;并且通过定义触发器,使每增加一条图书信息,在图书状态表中给其增加对应的图书状态信息;2、书籍的删除:通过存储过程来实现,如果该书的状态为已借出,就不能删除书籍,并发出提示信息;书籍的删除,通过定义 before 触发器,假如该书籍能够删除,就在其删除之前,删掉该书籍的状态信息;3、书籍的修改:修改除了书籍主键外的其他信息;4、书籍的查询:可根据图书的索引号进行精确查询,可以根据图书的书名,作者,出版社,藏书地址等进行模糊查询,基于系统的需求,还提供系统中以所有字段作为关键字的模糊查询;5、用户身份验证,管理员通过用户登录,输入验证信息,若经过系统验证后,若正确,则进入图书管理主页,若出现错误,则跳到登录界面,并返回相应的友好的错误提示信息;三、系统的分析和系统中数据库的分析(ER 图等).下载可编辑.1、 系统设计11.系统概要设计-流程图系统总体设计如图 1.1 所示输入登录信息反馈登录成功或失败查询请求返回查询结果管理员修改请求系统删除请求插入请求返回操作结果图 1-1实现用户的登录,管理员登录后对图书进行书籍的添加,书籍各种方式的查询,书籍的修改,书籍的删除;12.系统的详细设计1.2.1.用户的登录图书管理员通过输入管理员和密码进行验证,若验证正确,则进入系统。登录请求登录成功!到系统操作主界面管理员登录系统 系统操作主界面返回登录失败消息图 1.21.2.2.书籍的添加书籍的添加,用户在表单中输入书籍的信息,点击录入,数据通过 Struts2 的过滤器,自动提交数据,在Struts的Action类中进行获取数据,然后进行检测,如果检测输入信息有.下载可编辑.误,则跳转到添加页面,并返回相应的错误提示;如果信息正确,则调用添加数据存储过程进行数据的持久化;具体流程如图 1-3 所示;添加添加失败,返回对应信息添加请求以及对应信息管理员添加模块OracleDB图 1.31.2.3.书籍的修改书籍的修改,首先查询出需要修改的书籍,点击修改,跳转到书籍修改页面,顺便通过 session 对象,将原有的书籍对象带过去;在书籍修改页面表单中修改相应属性,提交到 Struts2 的 Action 类中,首先进行数据的校验,校验失败,跳转到修改页面,返回相应的出错信息,校验成功,则进行书籍的更新处理;具体流程如图 1.4 所示;修改修改失败,返回对应信息修改请求管理员修改模块OracleDB图 1.41.2.4书籍的删除书籍的删除,首先查询出需要修改的书籍,点击删除,提交到 Struts2 中的 Action 类,顺便传入书籍编号这个值(主键,唯一),首先访问书籍库进行查询该书籍的状态是否是.下载可编辑.“在馆”,是则返回 true,进入书籍的删除环节;调用数据库中的存储过程和触发器,进行书籍的删除,确保系统数据的一致性;具体流程如图 1.5 所示删除删除失败,返回对应信息删除请求管理员删除模块OracleDB图 1.51.2.5书籍的查询书籍的查询,本系统中书籍的查询设定了多种方式,包括按索书号查询,按书名查询,按书籍作者查询,按出版社查询,还有按所有字段进行查询;先选择查询的方式,输入关键字,然后进行数据的提交,经数据过滤校验后,进入控制层,通过判断其查询类型,进行数据的查询,将符合条件的数据查询出来,装入集合框架ArrayList中,传入显示层进行数据的显示,具体流程如图 1.6 所示;查询管理员查询系统OracleDB消息显示.下载可编辑.图 1.62数据库的设计2.1数据库建模2.1.1E-R 图2.1.1.1图书信息建模系统中书籍信息建模如 E-R 图 2.1 所示:WriterPublishBname 书籍作者 出版社书籍名称BnumBook书籍编号(书籍)1对应1BnumBookstate书籍编号(书籍状态)StateCardid书籍持有者编书籍状态号图 2.12.1.1.2 用户信息的建模Place藏书地址Page页数借出日期.下载可编辑.用户信息的建模如图 2.2 所示:管理员用户名密码UsenamePwd图 2.23 系统前台的设计3.1、系统的结构本系统使用 MVC 模式作为系统的设计结构,以 JSP 作为视图层;采用 struts2 框架,以其 Acation 类作为其控制层,以各种 JavaBean,FormBean 作为模型层;3.2、界面的设计和布局3.2.1 登录界面如图 3.1 所示图 3.1.下载可编辑.3.2.2 图书管理界面图书管理主页中提供了集书籍添加,书籍修改,书籍删除,书籍详情查询 及多功能的图书检索功能,使用方便,操作简单,并设有完善友好的错误提示功能,具体展示如图 3.2 所示;图 3.23.2.3 图书修改界面书籍修改界面如图 3.3 所示;.下载可编辑.图 3.33.2.4.图书详情界面由于数据量比较大,在查询主页中不便显示,通过图书详情界面,将对应图书信息进行显示;其界面及运行结果如图 3.4 所示;图 3.4四、系统的数据库实现.下载可编辑.1.1.书籍信息表和书籍状态表的设计书籍信息表中包括书籍编号,书籍名称,作者,出版社,页数,藏书地址等字段,书籍编号通过触发器的方式,以自动增长的方式进行添加;页数为Number 类型,其他的都为字符串行;图书馆中书籍的各个字段的设计如图 4.1 所示分为图书表(book)和图书状态表(bookstate);bookobnumNumberobnameCharacters (256)owriterCharacters (256)opublishCharacters (256)opageNumberoplaceCharacters (256)bookstateobnumNumberostateCharacters (256)o cardid Characters (256)o borrow Characters (256)图 4.1表 4-1 book 表的设计bnumNumberNot null,自动生成,主键bnameCharacter(256)Not nullwriterCharacter(256)Not nullpublishCharacter(256)Not nullpageNumberNot null.下载可编辑.placeCharacter(256)Not null表 4-2 bookstate 表的设计bnumNumberNot null 外键,主键stateCharacter(256)Not null default waitcardidCharacter(256)nullborrowDatenull1.2.管理员验证信息的设计如图 4.2 所示Create table Manager(Username varchar2(20),Pwd varchar2(20);ManageousernameCharacters (256opwdCharacters (256图 4.2表 4-3 manage 表的设计usernameCharacter(256)Not null 主键pwdCharacter(256)Not null.下载可编辑.1.3. 触发器,存储过程的设计1.3.1.图书信息添加触发器的设计先创建一个索引,计算出前一个字段的最大值,然后创建 before 触发器,每增加一项书籍记录,给书籍编号这一字段赋值;图书的管理-创建图书表:Create table book(bnum number(11),bname varchar2(20),writer varchar2(20),publish varchar2(50),page number(11),place varchar2(20),);-创建序列:create sequence book_seqincrement by 1start with 1maxvalue 1.0E28minvalue 1nocache-创建触发器create or replace trigger tr_bookbefore insert bookfor each row.下载可编辑.beginselect book_seq.nextval into :new.bnum from dual;end tr_book;-测试,插入数据Insert into book( bname , writer , publish , page , place ) values ( 'compute','liusi','China',342,'一楼库');insert into book ( bname , writer , publish , page , place) values ('computerr','liusi',' 湖工大',842,'二楼库');1.3.2.添加书籍状态信息触发器 trigger_state每创建一项书籍记录后,自动在图书状态信息表中,添加一条对应的图书状态信息;创初始触发器create or replace trigger_stateafter insert bookfor each rowbegin-如何用到 bnum 的值->insert into bookstate(bnum) values( )end ;1.3.3.删除存储过程的创建 pro_del先判断图书状态 State 是否为”已借出”,如果是,则不能进行删除操作,与此同时,发出提示信息;如果不是,则先删除 bookstate 表中对应的那条记录,再将相应的图书信息记录删除。-删除,过程Create or replace procedure pro_del(bnumber IN number(11) ,say out varchar2(20).下载可编辑.)asNum1 numbersta varchar2date1=dateBeginselect state into sta from bookstate where bnum=bnumber; if sta='wait' thendelete from bookstate where bnum=bnumber; delete from book where bnum=bnumber; say='yes'elsesay='no'end if;end;1.3.4更新书籍存储过程的创建 pro_update-更新书籍存储过程Create or replace procedure pro_update(bnum1 IN number(11) ,bname1 IN varchar2(20),writer1 IN varchar2(20),publish1 IN varchar2(50),page1 IN number(11),place1 IN varchar2(20),)asBeginupdate book set bname = bname1,writer= writer1, publish= publish1,.下载可编辑.page=page1,place=place1 where bnum=bnum1;end;1.3.5用户登录存储过程的创建 pro_login-登录Create or replace procedure pro_login(mname IN varchar2(20),mpwd IN varchar2(20),say out varchar2(20) ascount number=0;Beginselect count(*) into count from Manage where username=mname && pwd=mpwd;if sta=0 thensay='yes'elsesay='no'end if;end;五、系统的实现及调试1.实现数据库的连接public DBoracle()try Class.forName("oracle.jdbc.driver.OracleDriver");/oracle名称还需填写 ct=DriverManager.getConnection("jdbc:oracle:thin:10.0.0.248:1521:orcl","orcl","orcl"); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace();.下载可编辑. catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();2.系统功能的实现2.1 通过在前台 JSP 页面中书籍信息,由Struts2 的过滤器,将其数据自动封装成对应的 JavaBean,在对应的 Action 中进行处理;<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-/Apache Software Foundation/DTD Struts Configuration 2.0/EN""http:/struts.apache.org/dtds/struts-2.0.dtd"><struts><package 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</result></action><action name="addbook" class="lib.action.AddBookAction" method="execute"> <result name="success">BookManage.jsp</result> <result name="failure">BookManage.jsp</result></action><action name="updatebook" class="lib.action.UpdateBookAction" method="execute"> <result name="success">BookManage.jsp</result><result name="failure">updatebook.jsp</result></action><action name="deletebook" class="lib.action.DeleteBookAction" method="execute"> <result name="success">BookManage.jsp</result><result name="failure">BookManage.jsp</result></action><action name="cbookselect" class="lib.action.ChangeBookSelectAction" method="execute"> <result name="success">BookManage.jsp</result>.下载可编辑.<result name="failure">BookManage.jsp</result></action></package><package name="sel" extends="struts-default"><action 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.图书的添加在图书管理主界面中,录入各项图书信息,通过Struts2过滤器,在Action中进行数据的校验,若出现数据格式等方面的错误,将错误信息写入一个 HashMap 集合中,并将所有出错信息的集合返回到图书管理主界面;如果数据符合要求,则向数据库图书表中增加一条记录,同时往图书状态表中也写入相应的记录;public boolean addBook(Book b).2.3.图书的修改先通过查询,找到要修改的记录,点击进入图书信息修改界面,完成后,输入新的值,进行数据的修改;public boolean updateBook(Book b) try CallableStatement cstmt = null;String procedure = "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; catch (SQLException e) / TODO Auto-generated catch block e.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.executeUpdate();/pstmt=ct.prepareStatement("delete from book where bnum=?");/pstmt.setInt(1,b.getBnum();pstmt.execute();return true; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();return false;2.5.图书的查询系统中提供了图书索引号,图书名称,作者,出版社,等多种方式的查询,并且为了方便起见,还设立通过所有字段进行模糊查询的功能;.下载可编辑.public 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="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) sql="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, "%"+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.setBnum(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 block e.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(?,?,?) ");cstmt.setString(1, workid);cstmt.setString(2, password);(CallableStatement) cstmt).registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR); cstmt.execute();/从输出参数中获取值ResultSet rs = (ResultSet) cstmt.getObject(3);/第3个?所代表的参数ResultSetMetaData rmd =rs.getMetaData();String str=null;while(rs.next()for(int i=0;i<rmd.getColumnCount();i+)str=rs.getString(i+1)+""if(str.trim().equals("yes")return true;.下载可编辑.elsereturn false; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return false;六、系统的使用说明图书馆管理员登录进入系统,即可到图书管理界面,在图书管理界面上按要求进行书籍添加,若输入不正确,系统自动显示出提示信息,修改后进行继续添加;按照管理员的意愿选择适当的查询方式(所有字段,索引号,书名,出版社等),点击需要更新的记录,进行相应操作,若选择删除,操作后会有相应的信息提示,若选择修改,则跳入修改界面,进行相应图书信息的修改;七、课程设计总结与心得每一次课程设计都是一次不可重现的学习与实践的机会,这一次 Oracle 大型数据库应用的应用系统的开发也不例外。通过这一次课程设计,我们得以将我们所学的数据库原理、Oracle 数据库特性、面向对象编程语言及其编程技术、软件开发技术、软件工程思想、软件体系结构乃至项目管理应用到实践中去,同时也是这些理论的再一次学习与深化,也是一次工程思想的飞跃。在这一次基于 Oracle 应用的软件项目开发活动中,我们再一次体会到“计.下载可编辑.算机科学与技术是看不懂的,只有做才真正有所收获”的告诫。Oracle 被称之为大型的、专业数据库,广泛应用在各种大型项目中。然而,在我们的理论学习中丝毫没有领会到这一点。更可惜的是我们的课程设计无法开发大型项目,没能够感受到Oracle大型数据库区别于其他中小型数据库的特性。不过,有一点可以感受到,那就是Oracle 占用的计算机资源较多,这是大型数据库不可避免的。.下载可编辑.

注意事项

本文(图书馆书籍管理系统说明书(附代码))为本站会员(蜕变)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!