图管理系统—流通模块的设计与实现.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流图管理系统流通模块的设计与实现.精品文档.题 目 图书管理系统流通模块的设计与实现 学生姓名 邢鹏飞 学号 1118014023 所在学院 数学与计算机科学学院 专业班级 计算机科学与技术本科1101班 指导教师 李军 _ _ 完成地点 陕西理工学院 2015年 05 月 27日本科毕业设计任务书院(系)名 数学与计算机科学学院 专业班级 计算机科学与技术(计本1101) 姓名 邢鹏飞一、 毕业设计题目: 图书管理系统流通模块的设计与实现 二、 毕业设计工作日: 2014 年 11 月 27 日 起至 2015 年 6 月 20 日 止三、 毕业设计进行地点: 陕西理工学院 四、 毕业设计内容要求:本课题要求开发一个图书馆管理系统,该系统主要内容及功能包括: 书籍数据库要按照中图分类要求进行分类创建; 图书管理业务分两大模块,即采编与流通。 采编模块分为采购与编目两个子模块。在采购子模块中完成书籍的采购计划编制、组织采购、图书资产管理、书籍报废等功能;编目子模块要求根据采购结果完成每种书籍按册进行编目并进行入库 中央库、专业阅览室等 操作等功能。流通模块分为读者管理与借阅管理两个子模块。读者管理模块要完成读者的开销户管理、读者借阅历史状态查询、读者的信誉记录管理等功能;图书的借阅管理模块必须完成馆藏图书检索、书籍状态查询、借还操作等功能。系统角色管理。系统角色是指参与系统的人员 包括图书馆工作人员和读者 在对系统进行操作时充当的角色,不同角色有不同的系统操作权限;系统应根据图书馆的管理办法合理确定角色,并将不同人员赋予不同的角色 数据维护模块。该模块主要对数据库进行备份与数据恢复功能。本课题要求两人合作完成,两人共同设计数据库,一人完成采编模块与系统角色管理,另一人完成流通模块与系统维护模块。开题时间:2015年3月5日,并与此前提交开题报告课题完成时间:2015年5月30日答辩时间:2015年6月10日前指导 教 师 系(教 研 室) 计算机科学与技术 系(教研室)主任签名 批准日期 2015-12-20 接受设计任务开始执行日期 2015-1-15 学生签名基于J2EE的图书管理系统-流通模块的设计与实现邢鹏飞(陕理工数学与计算机科学学院计算机科学与技术专业计本1101班,陕西 汉中 723000)指导老师:李军摘要随着信息技术的不断发展,计算机技术已经在各行各业得到广泛的应用。图书馆作为一种信息资源的集散地,图书借阅频繁,用户管理多变,包含大量的信息数据,因此需要一个完善的图书管理系统来实现对读者信息、图书借阅、用户检索进行统一、实时管理,达到各类用户的需求。本文设计了图书管理系统的详细功能,其中功能包括读者管理、图书管理、借阅管理、书刊检索等功能。对于这些功能又详细设计了每个功能的具体实现。每个业务功能之间又是彼此联系并相互作用。系统包含管理员、读者用户两部分,分别有不同的使用权限,管理员对数据库进行操作,完成借阅、添加、删除、等各功能;用户对数据库进行查询,完成查询、修改等功能。关键词图书管理; 需求; 数据库;Circulation of books management system based on J2EE, module design and implementationXing Pengfei(Grade01, Class11, Major Computer Science and Technology, School of Mathematics and computer Science, Shaanxi University of Technology, Hanzhong 723000,Shaanxi )Tutor: LI JUNAbstract:With the development of information technology, computer technology has been widely used in all walks of life. Library as a kind of information resource center, because library has lots of user, data contains a large amount of information, so we need a perfect books management system to implement the information to readers, borrow books, the user retrieval undertake unity, real-time management and meet the demand of all kinds of users. In this paper, the design of books management system function in detail, which features include the reader management, library management, library management, books retrieval, and other functions. For these functions and the detailed design on the concrete realization of each function. Each business function is between contact and interaction with each other. System include administrator and readers two parts, respectively have different usage rights, administrator of database operations, lending, add, delete, and so on various functions. The user to query the database, query, modify, and other functions.Key words: Books management system; demand; database; 目 录1引言12 需求分析与可行性分析22.1 可行性分析22.1.1技术可行性22.1.2操作可行性22.2需求分析22.2.1数据需求22.2.2功能需求22.2.3系统流程图23概要设计43.1系统目标43.2系统结构功能分析44数据库设计54.1数据库概念结构设计54.2数据库逻辑结构设计65详细设计95.1登录页95.2账号维护115.2.1修改密码115.2.2添加管理员145.2.3重置管理员密码165.3用户管理185.3.1添加用户185.4图书管理215.4.1添加图书215.5借阅管理235.5.1用户借书235.5.2用户还书255.5.3缴纳罚款276系统调试与测试296.1 测试的主要方法296.1.1管理员登录296.1.2重置管理员密码296.1.3添加读者296.1.4添加图书296.1.5读者借书306.1.6读者还书306.1.7欠款缴纳30总结31致谢32参考文献33附录A外文翻译34附录B系统使用说明书531引言图书作为信息的一种载体,仍是人们获得知识的一种重要途径,因而作为图书管的运行情况则关系到知识的传播速度问题。旧的图书馆管理模式完全是人工操作,从新书采购、编目、入库,检索,借阅、归还、无一不是人工处理,需要大量劳动力与工作量,人为原因造成一些失误也再所难免。当读者想要借阅一本书时,首先要查询大量书卡,而且需要一定的图书管理知识。在借阅时还要填写许多相关卡片,使得图书馆的管理效率低下,图书流通速度较慢,因而从一定程度上也影响了知识的传播速度。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,因此有大量信息数据需要进行管理,然而,有很多图书馆都是初步使用计算机进行图书管理。以前对信息管理的主要方式是基于文本、表格等纸介质的处理手段,对于图书借阅情况统计采用对借书卡的人工检查,借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。越来越多的读者希望通过网络方便、快捷地进行图书查阅、借阅。传统管理方法必然被以计算机为基础的信息管理所取代。因此, 开发图书信息管理系统,利用计算机对图书资料以及读者进行管理能够提高工作效率,提高图书利用率,充分发挥图书的作用。读者通过网络及时方便地查寻所需的图书;管理人员利用强大的管理功能, 方便的管理图书管的图书信息、图书管理的读者信息, 通过统计图书的借阅情况, 及时了解库存, 把握读者对图书需求方向, 以满足读者对各类图书的需求,为图书馆的业务发展和建设起指导作用。2 需求分析与可行性分析2.1 可行性分析2.1.1技术可行性技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本图书管理系统用的是JAVA语言开发,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。2.1.2操作可行性 在设计系统的过程中,充分考虑到管理人员和用户的习惯。界面风格使用简单大方形式呈现。使用方便,而无需进行任何软件的安装,操作简单;按权限使用并提供多种查询手段,在操作上可行。2.2需求分析2.2.1数据需求数据主要包括图书数据和用户数据,图书数据包括图书基本数据、图书借阅历史数据、丢失数据、图书借阅数据、欠款数据。用户数据包括用户数据、管理员数据。系统对数据的操作主要围绕用户和图书。操作的方法分为:借阅、查询、删除、修改、续借等数据操作。2.2.2功能需求系统的总目标是实现图书管理的系统化、自动化、规范化。系统已经实现的图书管理模块:用户端:系统登录、信息维护、书刊借阅、预约通知、书刊检索。书刊借阅包括:当前借阅、历史借阅、图书丢失、罚款记录、图书证挂失。当前借阅包括:续借与图书挂失。书刊检索包括一般检索和复杂检索。检索结果包括可否预约。管理端:系统登录、信息维护、用户管理、图书管理、借阅管理。信息维护包括:修改密码、添加管理员、管理员列表、重置用户密码、重置管理员密码。用户管理包括:添加用户和用户列表。图书管理:包括添加图书和图书列表。借阅管理包括:用户还书、用户借书、缴纳欠款。2.2.3系统流程图图2.1 管理员端流程图图2.2 读者端流程图3概要设计3.1系统目标该系统主要建立一个基于B/S模式的图书馆管理系统,面对当今很多图书馆仍是人工管理带来的检索速度慢,效率低,借阅归还图书量大,图书统计工作量大,藏书不能完成及时更新的问题,该系统可以跟系统的三种用户类型的使用实现: 1.对于读者在本系统的应用下可实现按照各种方式(如:书名,出版社,作者)查询图书馆的藏书清单,方便借阅图书、查阅借阅历史、续借图书、归还图书,挂失图书、缴纳罚款、修改密码等。 2.对于图书馆工作人员(普通管理员)能够实现方便的添加用户、添加图书、对图书进行查询、用户进行查询、进行借书、还书、缴纳罚款、重置用户密码等功能,便捷的对图书信息进行修改、删除,等操作,对读者信息进行相关修改,删除管理等操作。 3.对于系统管理员可以对系统用户进行添加、修改、删除、权限设置等操作3.2系统结构功能分析绘制系统功能图的过程,实际上就是对系统功能模块进行分解设计的过程,即合理地将数据流程图转变为所需要的系统结构图。 系统结构图将会使读者和用户能直观的了解系统的结构模式,理解系统的各个功能的结构,能很好地方便用户使用和理解整个系统。图3.1 系统业务流程图4数据库设计4.1数据库概念结构设计1) 图书信息(编号,图书名称,作者,出版社,ISBN号,价格,状态) 2) 图书借阅历史(读者ID,图书编号,借出时间,应还时间,状态) 3) 用户信息(编号,姓名,年龄,性别,班级,学院,权限,密码)4) 丢失信息(读者ID,图书编号,借出时间) 5) 图书借阅信息(读者ID,图书编号,借出时间,应还时间)6) 管理员信息(管理ID,管理密码,管理级别)7) 欠款信息(欠款ID,读者ID,图书编号, 借出时间,应还时间,欠款) 图4.1 图书表E-R图图4.2 图书借阅历史表E-R图 图4.3 用户信息表E-R图 图4.4 图书丢失表E-R图 图4.5 图书借阅表E-R图 图4.6 管理员表E-R图 图4.7 欠款表E-R图4.2数据库逻辑结构设计图书信息表结构设计:图书信息表主要用于存储图书馆中所藏图书的相关信息,其中的相关信息是在图书入库时由图书管理员进行添加完善,此表主要用于读者和图书管理员对馆中图书的查询,系统用户根据图书的某个属性进行查询,便可得知图书的其他相关信息。表的具体结果如下: 表4.1 图书信息表 字段名称 字段类型 字段长度 可否为空 说明 bNo bName author publish isbn price status varchar2 varchar2 varchar2 varchar2 varchar2 varchar2 varchar2 20 50 30 200 50 20 10 否 否 否 否 否 否 否 图书编号 书名 作者 出版社 ISBN 价格 状态用户信息表结构设计:学生用户信息表的设计是为了图书馆管理员对用户进行管理,其中用户StudentNO号码都是唯一的,是用户在借阅图书时需要输入对读者身份进行识别的信息,读者班级、院系等信息是为了与读者进行联系,借阅权限决定了读者是否可借阅图书。表的具体结构设计如下:表4.2 用户信息表 字段名称 字段类型 字段长度 可否为空 说明 studentNo studentName age gener cla department permitted pwd varchar2 varchar2 int varchar2 varchar2 varchar2 varchar2varchar2 20 50 8 6 50 50 1 20 否 否 否 否 否 否 否否 学号 姓名 年龄 性别 班级 院系状态密码管理员信息表结构设计:此表的设计是为了用户借阅图书提供支持,管理用户的一些罚款、借阅、挂失、欠款、等操作表的具体结构设计如下: 表4.3 管理员信息表 字段名称 字段类型 字段长度 可否为空 说明 adNo pwd idt varchar2 varchar2 varchar2 20 20 2 否 否 否 管理员ID 管理员密码 管理级别图书借阅历史表结构设计:历史表是一个记录表,里面记录了用户自己的所有借阅记录。用户可以根据往日借阅记录来对自己进行借阅决策:表4.4 图书借阅历史表 字段名称 字段类型 字段长度 可否为空 说明 studentNo bNo borrowDate giveDate status varchar2 varchar2 date date varchar2 20 20 50 50 20 否 否 否 否 否 学号 图书编号 借书日期 还书日期 状态丢失信息表:丢失信息表也是一个记录表,里面记录了用户由于个人原因,导致图书丢失的记录表4.5 丢失信息表 字段名称 字段类型 字段长度 可否为空 说明 studentNo bNo borrowDate varchar2 varchar2 date 20 20 20 否 否 否 学号 图书编号 借阅日期图书借阅信息表:借阅信息表里面保存着当前的借阅记录,一旦用户还书之后这条记录随后被清除,并且加到历史记录表中。表4.6 图书借阅信息表 字段名称 字段类型 字段长度 可否为空 说明 studentNo bNo borrowDatetoGiveDate varchar2 varchar2 datedate 20 20 5050 否 否 否否 学号 图书编号 借阅日期应还日期欠款信息表:欠款信息表里面记录了用户的当前欠款。表4.7 欠款信息表 字段名称 字段类型 字段长度 可否为空 说明 idstudentNo bNo borrowDate togivedate giveDate money varchar2 varchar2 varchar2 date date date varchar2 20 20 20 50 50 50 20 否 否 否 否 否 否 否 欠款ID 学号 图书编号 借书日期 应还日期 还书日期 欠款金额5详细设计5.1登录页用户登录系统后,可以进入系统的主界面,欢迎页面显示系统的简介信息,左面是功能菜单,管理员用户可以看见系统模块。 图5.1 管理员登录界面实现代码:<% page contentType="text/html;charset=gbk"%><% page import="java.util.*,com.hw.datamodel.User"%><html><head><link href="/images/div.css" type="text/css" rel=stylesheet><link href="/images/globalstyle.css" type="text/css" rel=stylesheet><script type="text/javascript" src="/images/trim.js"></script><script type="text/javascript">function checkAdmin() var uname = document.login.uname.value;/得到输入的登录名var pwd = document.login.pwd.value; /得到输入的密码 if (uname.trim() = "") /用户名为空的情况alert("请填写用户名!"); /弹出提示对话框login.uname.focus(); /用户名文本框得到输入焦点return; /返回if (pwd = "") /密码为空的情况alert("请填写密码!"); /弹出提示对话框login.pwd.value = "" /将密码框清空login.pwd.focus(); /密码文本框得到输入焦点return; /返回if (pwd.trim().length < 6) alert("密码不能包含空格且长度不得小于6位!");login.pwd.value = "" /将密码框清空login.pwd.focus(); /密码框得到输入焦点return; /返回document.login.submit(); /提交登陆表单</script></head><body><div id="father"><div id="loginform">User adName = (User) session.getAttribute("user"); /得到当前登陆的学生学号if (adName = null) 登陆管理系统<form name="login" action="/LibraryDemo/admin/login" method="post"><table><tr><td align="right">用户名:</td><td align="left"><input type="text" name="uname" /><br></td></tr><tr><td align="right">密 码:</td><td align="left"><input type="password" name="pwd"><br></td></tr><tr><td></td><td align="center"><input type="hidden" name="action"value="login"> <!- <input type="button" value="登陆" onclick="checkAdmin()"/> -><img src="/images/dla.gif" id="dl" onclick="checkAdmin()"onmouseover="document.all.dl.src='/images/dlb.gif'"onmouseout="document.all.dl.src='/images/dla.gif'"onmousedown="document.all.dl.src='/images/dlc.gif'"style="cursor: hand" /> <img src="/images/cza.gif" id="cz" onclick="reset()"onmouseover="document.all.cz.src='/images/czc.gif'"onmouseout="document.all.cz.src='/images/cza.gif'"onmousedown="document.all.cz.src='/images/czc.gif'"onmouseup="document.all.cz.src='/images/czc.gif'"style="cursor: hand"></td></tr>String message = (String) request.getAttribute("message");if (message != null) <tr><td colspan="2"><font color="red" size="2"><%=message%></font></td></tr></table></form> else out.println(adName.getUname() + ",您好!<br/><br/>欢迎进入管理端系统!");out.println("<br/><br/><a href='accountManage/adManage' target=");out.println("'bottomFrame'>【账号维护】</a>");out.println("<a href='admin/logout'>【注销】</a>");</div><div id="message">提示:<ul><li>管理员的用户名和密码由超级管理员设置</li><br><br><li>保存好密码,不要向任何人透露密码</li><br><br><li>登陆进入系统可修改密码</li><br><br><li>如果忘记密码请持有效证件到超级管理员处取回</li></ul></div></div></body></html>5.2账号维护5.2.1修改密码 图5.2 管理员修改密码 实现代码:<% page contentType="text/html;charset=gbk"%><% page import="java.util.*,com.hw.datamodel.User"%><html><head><link href="/images/div.css" type="text/css" rel=stylesheet><script type="text/javascript" src="/images/trim.js"></script><script type="text/javascript">function checkAdChangePwd() var oldPwd = document.adChangePwd.oldPwd.value;var newPwd = document.adChangePwd.newPwd.value;var newPwdAgain = document.adChangePwd.newPwdAgain.value;if (oldPwd = "") alert("旧密码为空!");adChangePwd.oldPwd.value = ""adChangePwd.newPwd.value = ""adChangePwd.newPwdAgain.value = ""adChangePwd.oldPwd.focus();return;if (oldPwd.trim().length < 6) alert("旧密码不得包含空格且长度不得小于6位!");adChangePwd.oldPwd.value = ""adChangePwd.oldPwd.focus();return;if (newPwd = "") alert("新密码为空!");adChangePwd.newPwd.value = ""adChangePwd.newPwdAgain.value = ""adChangePwd.newPwd.focus();return;if (newPwd.trim().length < 6) alert("新密码不得包含空格且长度不得小于6位!");adChangePwd.newPwd.value = ""adChangePwd.newPwdAgain.value = ""adChangePwd.newPwd.focus();return;if (newPwd != newPwdAgain) alert("两次输入密码不一致!");adChangePwd.newPwd.value = ""adChangePwd.newPwdAgain.value = ""adChangePwd.newPwd.focus();return;document.adChangePwd.submit();</script></head><body>User user = (User) session.getAttribute("user");if (null = user) response.sendRedirect("admin_login.jsp");<div id="Menu"><% include file="adm_left_menu.jsp"%></div><div id="info_table"><div id="ad_manage"><font size="4"><center>修改密码<form name="adChangePwd" action="/LibraryDemo/accountManage/adChangePWd"method="post"><table><tr><td align="right">请输入旧密码:</td><td align="left"><input name="oldPwd" type="password"size="20"></td></tr><tr><td align="right">请输入新密码:</td><tdalign="left"><inputname="newPwd"type="password"size="20"></td></tr><tr><td align="right">再次输入新密码:</td><td align="left"><input name="newPwdAgain" type="password"size="20"></td></tr><tr><td></td><td><!-<input type="button" value="修改" onclick="checkAdChangePwd()"/> -><img src="/images/xga.gif" id="xg" onclick="checkAdChangePwd()"onmouseover="document.all.xg.src='/images/xgb.gif'"onmouseout="document.all.xg.src='/images/xga.gif'"onmousedown="document.all.xg.