图书管理系统的设计与实现1.doc
图书管理系统的设计与实现一 引言1。1绪论1。 2设计任务1给广大师生提供便利,比如说方便师生查阅图书,便于图书的管理;2.系统建立图书馆借阅读者的数据库,以便管理员对读者进行高效管理,对于诚信度不好的读者不给于借书服务;3。系统建立图书管理员数据库,根据数据库信息,可以对操作进行限定,不同的用户执行的操作不尽相同。1.3图书管理系统需要改进的地方?1) 对人工来说不可避免的是在人工操作的过程中常常会发生一些不可避免的问题,这对于图书管理来说常常会造成不可避免的损失,同时效率低下.2)图书馆工作人员没有很好的与用户进行交流,造成管理漏洞没有及时改正。3)无法建立科学化的数据管理系统,4)专业化管理人才十分稀少1。4选题意义1。有利于节约学生查找书籍的时间,为学生在提高学习效率的方面创造了一个平台.2.普及计算机知识,让学生更好的了解计算机.3。为学校的管理节约成本,学校的管理无需大批的员工来进行管理.4。创造一个方便快捷的校园环境。5.为学生提供一个学习,图书一体化服务.二 系统分析2。1系统需求模块 1).书籍增加模块 2)。书籍删除模块 3).书籍修改模块 4).管理员权限模块 5)。管理员密码修改 6).用户类型限制模块 8)。读者借阅书籍模块 9).退出系统 2.2图书系统设计原则 该图书系统设计的原则是本着为广大师生提供服务,营造一个方便,快捷,学习书籍一体化的校园环境。在设计方面,应该以方便学生我宗旨,系统要简介明了的表达出该系统具有的功能,同时也应该满足学生的要求。在页面设计方面,要新颖独特,保证可以吸引学生来使用该系统,让学生一目了然就知道该系统所具有的功能,系统设计不在烦杂,简洁大方即可。在此系统中,详细设计的主要目标是将各个模块的功能一一来实现,也就是说将各个模块的功能精细化,考虑每个模块需要完成的功能,将每个模块完成的功能分析清楚,逐步细化.分析清楚每个模块完成的功能以后在,为以后的编程打下了坚实的基础。对每个模块研究得越详细,以后的编程的效率就越高,从而软件的质量也就越高在设计软件时,需要考虑不少的问题比如说当用户登录以后,系统的响应时间,以及当用户输入的命令用户是否可以可以响应,或者是当出现差错时,该如何处理等相关方面都是需要我们考虑的问题,在此阶段过程中我们要善于分析问题,及时对响应的问题采取相应的措施。在设计过程中,尽量采取比较优化的程序代码,是程序短小而功能却很强大,减少系统的响应时间,同时也可以采用比较好的平台来进行项目的设计工作。 2。3可行性分析 (1)经济可行性 在系统设计的过程中,一定的经济基础是必不可少的,没有一定的经济基础,系统的开发便无从展开,经济基础可以说是其他基础的前提,是非常重要,进行经济可行性分析是系统非常重要的一个步骤,若一个公司没有一定的经济基础,相应的电脑设备可能无法准备齐全,同时也请不到相应的技术人员,一切开发工作可能无法展开,所以说,在一个系统开发之前,进行经济可行性分析是非常有必要的。 (2)技术可行性 技术可行性就是分析,如果你要开发该系统,是否具有相应的技术来完成该系统的开发,比如说mysql技术,web技术,Java等等. (3)实践可行性分析 在分析完经济可行性和技术可行性,操作可行性的分析也是必不可少的一步,操作可行性是看这个系统所执行的操作可否可以完成,在本系统中主要是完成书籍的查询,数据的管理,书籍的删除,修改,借阅等相关信息,是完全可以完成的,操作可行性方面,要有依据,不可随意想象,在这方面,本系统所完成的操作是完全可以实现的.三 开发工具介绍 1.开发语言:java语言2.开发工具:MyEclipse或Eclipse最新版3。web服务器:tomcat 6.x以上4。数据库:MySQL5.程序采用Mvc模式:Jsp+servelt+javabean+mysql 3.1 MySQL数据库MySQL数据库是目前在编写程序的过程中,比较实用的一个数据库,它通过jdbc技术进行连接,数据库一般存储的是与用户相关的信息,比如说用户的名字,或者是登录的账号,密码,用户的身份信息等,在本系统中,数据库存储的相关信息主要包括用户名(账号或者是学号),登录密码,登录的身份,以及考试的科目等相关信息。MySQL有比较多的优势,通过查询语句查询相应MySQL数据库有比较高的速度,这样大大提高的系统的工作效率,节省了用户登录的时间,这样节约了学生的时间。同时MySQL在任何平台都可以使用,这一点是很多软件比不上的一点,通过这一技术,使得MySQL技术得到快速的发展,这不仅仅体现在使用MySQL数据库使用的人数上面,而且体现在各个使用的平台上面。随着计算机的发展,各种安全问题也暴露出来,比如黑客攻击,病毒入侵相关的系统,盗用用户的资料,给用户造成了无法估量的损失,但MySQL有比较高的安全性和稳定性,随着时代的发展,各种数据库的类型丰富多彩,但是MySQL数据库却是一种非常常用的数据库。3。2 TOMCAT 6.x服务器Tomcat是一个Servlet容器,Servlet有特点有以下:1、可以提供相应的代码程序,并且可以相应相关的客户端。2、支持java语言。3、不同的浏览器都可以访问Servlet。3。3 Myeclipse开发软件Myeclipse软件是一款非常好的软件,在目前来说,在市面上比较流行,它之所以流行,不仅仅体现在功能强大的方面,而且还体现在它无需付费即可使用的方面,它提供强大的界面功能,可以和mysql数据库相结合起来使用,给用户提供 一个界面良好,功能强大的系统。 Myeclipse软件使用方便,具有一些其他软件没有的功能,它无需付费即可使用,这给使用Myeclipse的用户节省了不少的开支,在以前,一些开发软件无需付费时,功能却总是不能满足用户的需求,功能不够强大,当一些功能强大,可以满足用户的需求时,确实需要付费,这给用户的使用带来了不少的问题,Myeclipse的诞生大大的解决了用户的苦恼,它可以与相应的服务器相连接,跨平台使用,和用户进行交互。同时,Myeclipse可以和不同的数据库进行连接,如mysql数据库,Oracle数据库、Sybase数据库、Informix数据库、Microsoft SQL Server数据库、Microsoft Access数据库、Visual FoxPro数据库等等。故而用Myeclipse与数据库相连接可以实现强大的功能,完成不同的项目问题。Myeclipse的相应软件代码是开放的,这给不少的程序开发人员提供了开发出一个优秀的软件提供的例子。目前不少的软件是包含插件的,当用户下载该软件是,不可避免的要下载相应的插件,这给用户使用造成一定的麻烦,给用户留下一个不太好的印象.但是 Myeclipse是不包含插件的一款软件,使用起来方便,简洁。 四 数据库设计 4。1 数据库用户结构4.1。1。管理员数据数据库源码- Records of tb_manager -INSERT INTO tb_manager VALUES ('1', user', '123');INSERT INTO tb_manager VALUES (7', zhaoyi', 111);INSERT INTO tb_manager VALUES (9, admin', 111);tb_manageridnamePWD管理员表名管理员序号管理员名称管理员密码 4。1。2。书籍信息数据。数据库源码 Records of tb_bookinfo- -INSERT INTO tb_bookinfo VALUES (9787302210337, Java Web开发实战宝典, 4, 王国辉, , 302', 89.00, 834, 4, 2011224', mr', 0, 7);INSERT INTO tb_bookinfo VALUES ('9787115195975', Java Web开发典型模块大全, 4, '王国辉、王毅、王殊宇, ', 115, 89.00, 752, 5, 20112-24, mr, 0, 8);INSERT INTO tb_bookinfo VALUES (4521212, 心灵鸡汤, 5, 五五, ', 115, 11.00, 0, 5, '20112-14, mr, 0, 12);INSERT INTO tb_bookinfo VALUES (gf', 华语教学, 4, '', , 111, 26.00, 0, 4, '2011224', mr, 1, 10);INSERT INTO tb_bookinfo VALUES (9787302201115, 'Java基础教学, 5, 陈小西, 陈小西, 115, 79.00, 680, 5, '2015-525', mr, 0, 11);tb_bookinfobarcodebooknametypeidauthortranslatorISBNpricepage书籍表名书籍条形码书籍名称书架类型作者翻译者出版社编号价格页数 4。1。3.读者信息数据。数据库源码- Records of tb_reader- -INSERT INTO tb_reader VALUES (4, '琦琦, 女', '20110224000001', '学生', 2010-7-10, 身份证, 220104201007100001', 84978981, wgh717sohu。com, '20112-24, 'mr', 无, 4);INSERT INTO tb_reader VALUES (5, 'wgh', '女', '20110224000002, 程序员', 1980710, '工作证', 20010228', 84978981, 'wgh717sohu。com', 2011-224', mr, 无, 4);INSERT INTO tb_reader VALUES (8, '陈小西, 男, 20110224000012, 学生, 198711-12, 身份证, 500123198707153429, 15826023149', '123qq。com, 2015525, mr, 学生信息', 4);tb_readeridnamesexbarcodevocationbirthdaypaperTypepaperNotel借阅者表单借阅编号名字性别读者条形码职业生日证件类型证件号码联系电话 4。1。4。用户权限信息数据.数据库源码- Records of tb_readertype- -INSERT INTO tb_readertype VALUES (4, '学生', 30);INSERT INTO tb_readertype VALUES (7, 教师, 50);tb_readertypeidnamenumber用户权限表单编号借阅名称可借阅天数 4.1。5。借出书籍信息数据数据库源码- Records of tb_booktype -INSERT INTO tb_booktype VALUES (4, 网络编程, 20);INSERT INTO tb_booktype VALUES (5, 数据库开发, 15);tb_booktypeidtypenamedays当前借出书籍表单书架书籍名称借阅天数 4.2 数据库结构设计 4。3 各个数据表结构1。tb_bookinfo(借出书籍表)对应的数据表结构名类型长度小数点允许空值(Null)barcodevarchar300booknamevarchar700typeidint100authorvarchar300translatorvarchar300ISBNvarchar200pricefloat80pageint100bookcaseint100inTimedate00operatorvarchar300deltinyint10idint110 2。tb_reader(读者管理表) 对应的数据表结构名类型长度小数点允许空值idint100namevarchar200sexvarchar40barcodevarchar300vacationvarchar500birthdaydate00paperTypevarchar100paperNOvarchar200telvarchar200emailvarchar1000createDatedate00operatorvarchar300remarktext00typeidint110 3。 tb_borrow(还书管理表)对应的数据表结构名类型长度小数点允许空值idint100readeridint100bookidint100borrowTimedate00backTimevarchar100operatorvarchar300ifbacktinyint104.tb_manager(管理员表)对应的数据表结构名类型长度小数点允许空值idint100namevarchar300PWDvarchar300 五 管理模块界面设计5.0书籍管理系统流程图 5.1 首页主面设计效果图使用方法:当进入登陆页面,输入数据库中存好的管理员账号密码,初始账号密码账号:mr 密码:123账号:wgh 密码:111账号:admin 密码:111如果输入正确,则进入图书管理界面,如果输入错误,则弹出“您输入的管理员密码错误”弹框。 附上部分源代码% page contentType="text/html; charset=gb2312” language="java">html>meta http-equiv=”Content-Type” content=”text/html; charset=gb2312”head<title>图书管理系统/title>link href=”CSS/style。css” rel="stylesheet”<script language=”javascript”function check(form)if (form。name.value=”)alert("请输入管理员名称!");form。name.focus();return false;if (form。pwd。value=”)alert(”请输入密码!”);form。pwd。focus();return false;/script/headbody”<table width=”778” border=”0” align="center” cellpadding=”0" cellspacing="0” tr <tdtable width=”760” border="0” align="center” cellpadding=”0” cellspacing=”0”> tr <td height=”142” valign=”top”nbsp;</td /tr>/table</td> /trtd<table width="100%” border=”0” cellspacing=”0” cellpadding=”0” tr <td valign="top”<table width="100” height="525” border=”0” align=”center" cellpadding=”0" cellspacing=”0" <tr td height=”523” align="center" valign=”top”>table width=”100%" height="271” border=”0" cellpadding=”0” cellspacing=”0" <tr <td height="271” align="right” valign=”top" class="word_orange”<table width="100” height=”255" border=”0” cellpadding="0” cellspacing="0” background="Images/login。jpg" 5.2管理员首页设计 效果图使用方法:可以给当前的管理员权限,比如修改admin权限,取消它的系统设置权限就在框内取消勾,添加则相反。 添加管理员信息: 在右上角点击添加管理员信息,增添新管理员,并可以给与新管理员权限 删除管理员: 右边有个删除按钮,点击删除当前管理员,当剩余一个管理员时,不能在进行删除 附上部分源代码if(coll=null coll。isEmpty()) <table width="100” height="30” border="0” cellpadding="0" cellspacing=”0”> <tr td height="36” align=”center”>暂无管理员信息!/td /tr> /table> table width=”100" border=”0" cellspacing=”0” cellpadding=”0"> <tr td a href="#” onClick="window.open(manager_add.jsp,',width=292,height=175')”>添加管理员信息/a </td /tr>/table> <else /通过迭代方式显示数据 Iterator it=coll。iterator(); int ID=0; String name=”; int sysset=0; int readerset=0; int bookset=0; int borrowback=0; int sysquery=0; table width="100%” border=”0" cellspacing=”0” cellpadding="0" <tr <td width="84%" ; </td<td width=”16”> <a href=”#” onClick=”window.open(manager_add。jsp',,'width=292,height=175')"添加管理员信息/a </td> </tr/table table width=”91" border=”1" cellpadding=”0” cellspacing=”0" bordercolor=”FFFFFF” bordercolordark="#F6B83B" bordercolorlight="FFFFFF”> <tr align="center” bgcolor=”#e3F4F7” td width=”26” >管理员名称/td> <td width=”12%” >系统设置</td <td width="12” >读者管理/td> td width="12” >图书管理/td> td width=”11%” >图书借还</td td width="10” >系统查询</td td width="9” >权限设置</td <td width="8%” >删除/td </tr> while(it。hasNext()) ManagerForm managerForm=(ManagerForm)it.next(); ID=managerForm.getId()。intValue();name=managerForm。getName();sysset=managerForm.getSysset();readerset=managerForm。getReaderset();bookset=managerForm.getBookset();borrowback=managerForm。getBorrowback();sysquery=managerForm。getSysquery();%> tr> <td style=”padding:5px;”>=name/td> <td align="center"input name=”checkbox" type=”checkbox” class="noborder” value=”checkbox” disabled=”disabled" %if(sysset=1)out。println("checked");></td td align=”center”><input name="checkbox" type="checkbox” class="noborder” value=”checkbox” disabled=”disabled” <%if(readerset=1)out。println(”checked”);%/td td align="center”<input name=”checkbox" type=”checkbox" class="noborder" value=”checkbox" disabled if(bookset=1)out。println(”checked");%/td <td align=”center”><input name=”checkbox” type="checkbox” class=”noborder” value="checkbox” disabled if(borrowback=1)out。println(”checked");>>/td> td align=”center">input name="checkbox" type=”checkbox” class="noborder" value="checkbox” disabled if(sysquery=1)out。println(”checked”);</td td align=”center”>if(!name.equals(flag) >a href="" onClick=”window。open('manager?action=managerModifyQuery&id=<=ID',','width=292,height=175)”权限设置/a>else> ;/td <td align=”center"<if(!name。equals(flag) %>a href="manager?action=managerDelid=<%=ID>"删除/a<%else> ;%/td 5。3 图书列表页面 效果图详情:记录了当前借阅情况,哪些书籍借阅出去,并且有书籍的详细信息、书籍价格、借阅次数、出版社、作者、类型等.并可以添加书籍信息 附上部分源代码else /通过迭代方式显示数据 Iterator it=coll。iterator(); int ID=0; String bookname=”; String barcode=”; String typename=""; String publishing=”"; String bookcase=”" int storage=0; table width=”100" border=”0” cellspacing=”0” cellpadding="0" <tr <td width="87%" /td> <td width=”13” <a href="book_add。jsp"添加图书信息/a/td /tr/table> table width=”98” border=”1" cellpadding=”0” cellspacing=”0" bordercolor="FFFFFF” bordercolordark="#F6B83B" bordercolorlight=”FFFFFF" tr align=”center" bgcolor="006b9f” <td width=”13%" bgcolor="e7e8e8”条形码/td td width="26” bgcolor=”#e7e8e8”图书名称/td> <td width=”15%" bgcolor="e7e8e8"图书类型/td td width=”14" bgcolor="#e7e8e8”>出版社/td> td width="12" bgcolor=”e7e8e8”书架/td <td width=”9%” bgcolor="e7e8e8”修改/td td width="5%” bgcolor=”#F9D16B"删除/td> /tr while(it.hasNext()) BookForm bookForm=(BookForm)it。next();ID=bookForm.getId().intValue();bookname=bookForm.getBookName();barcode=chStr。nullToString(bookForm.getBarcode(),”nbsp;”);typename=bookForm。getTypeName();publishing=bookForm.getPublishing();bookcase=chStr.nullToString(bookForm.getBookcaseName(),"nbsp;");> tr> <td style=”padding:5px;”nbsp;=barcode%></td> td style="padding:5px;"<a href="book?action=bookDetail&ID=ID"=bookname/a</td td style=”padding:5px;” ;=typename%/td <td style="padding:5px;" <%=publishing%</td> td style=”padding:5px;">nbsp;<%=bookcase%</td> td align=”center"a href=”book?action=bookModifyQueryID=%=ID>”修改</a>/td> <td align="center”>a href="book?action=bookDelID=<=ID>”>删除/a/td 5。4 图书增加页面效果图当点击添加图书类型,弹出对话框,有类型名称(也就是书籍名称),以及可借天数。类型名称输入书籍名天数可以输入0如果输入0则此书不能借阅填写为空弹出对话框可借天数不能为空.附上部分源代码<script language=”jscript”>function check(form)if(form。typeName。value=”)alert(”请输入类型名称!”);form.typeName。focus();return false;if(form。days。value=”")alert("请输入可借天数!");form。days。focus();return false;/scriptbody<table width="292" height=”175” border="0" cellpadding="0” cellspacing="0" background=”Images/subBG.jpg” tr td valign=”top”>table width=”100" border=”0” cellpadding=”0" cellspacing=”0” tr td width=”3" height=”31"nbsp;</td td width=”94"nbsp;</td td width=”3”nbsp;/td /tr> tr <tdnbsp;</td> td><table width="100” height="131” border=”0” cellpadding=”0" cellspacing=”0” tr td align="center”><form name=”form1" method="post” action=”bookType?action=bookTypeAdd”>table height=”100” border="0" cellpadding=”0” cellspacing=”0" bgcolor="#FFFFFF” tr td width=”77” align="center"类型名称:/td td width="198" height=”39”> <input name=”typeName" type="text” size="30”> /td> /tr