1、 javaWeb企业编程- Java Web图书管理系统班级:14软件 姓名:柴金宝 学号:一、题目标选择l Java Web图书管理系统二、系统分析2.1 系统可行性分析可行性分析是在进行初步调查后所进行对系统开发必需性和可能性研究,所以也称为可行性研究。信息系统也应从技术可行性,经济可行性和社会可行性三方面来论证。经过长时间观察和实践,我认为图书馆管理系统可行性分析以下:2.1.1经济可行性分析作为图书馆这么商业性质较小场所,其经济成份比重相对较少,关键是支出费用:其中包含设备购置费、软件开发费用、管理和维护费、人职员资和培训费等。因为各个图书馆实施统一操作,系统共享,其设备购置,人职员资
2、,维护费用相对较少,前期资金投入关键集中于购置图书上。建立信息中心,可未来自各方面信息集中管理,提升图书管理计划性和预见性,快速地反馈市场信息。2.1.2技术可行性分析技术上可行性分析关键分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者需要,各类技术人员数量,水平,起源等。图书馆管理系统工作关键是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。这一特点很适累计算机特点,经过网络internet技术,发挥计算机信息传输速度快、正确度高优势。计算机硬件和软件技术飞速发展,为系统建设提供了技术条件。2.1.3社会可行性分析社会可行性有时也称为操作可行性,关键论证新系统在企
3、业或机构开发和运行可能性和运行后可能一起对企业或机构影响,即组织内外是否含有接收和使用新系统条件。在目前信息技术飞速发展大环境下,计算机技术和软件技术更新是图书馆完全有可能也有能力采取这么优异管理技术。它对图书馆带来影响能够看到:(a)对传统管理理念冲击,可能引发管理层变动和人员调整。(b)对图书馆工作人员要求提升,使图书馆在一定可能下进行机构精简,迫使工作人员继续学习新知识,拓宽图书馆在市场环境下生存空间。(c)对图书馆和读者之间业务方法转变和扩充。最终,针对用户对图书资源进行有效利用和管理功效需求,用建模技术对图书管理资源采取面向对象描述方法,在具体系统功效实现之前,建立起系统模型是很必需
4、,这里采取含有可视化、能够柔性实现分析、设计和开发系统统一建模语言实现系统模型构建。同时,结合最流行基于浏览器数据管理模式,提议采取基于组件技术B/S(brower/server)系统结构。从技术角度来考虑,伴随计算机技术深入发展,相关应用软件、技术已经很成熟了,多种信息系统开发工具也很完善了。利用现在软件行业中流行开发工具JAVA和MySQL,借鉴她人成功开发宝贵经验,可成功开发一个功效基础完善、符合中小型生产企业生产管理所需生产管理信息系统。总而言之,实施生产管理系统在技术上、经济上、运行上和社会环境上全部是可行,所以,开发生产管理信息系统是可行。2.2 系统需求分析企业图书管理包含图书信
5、息、系统用户信息、读者信息、图书借阅等多个数据管理。从管理角度可将图书分为三类:图书信息管理、系统用户管理、读者数据管理。图书信息管理包含图书征定、借还、查询等操作,系统用户管理包含系统用户类别和用户数据管理,读者数据管理包含读者类别管理和个人数据录入、修改和删除。图书借阅者需求是查询图书室所存图书、个人借阅情况及个人信息修改;图书馆工作人员对图书借阅者借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确定;图书馆管理人员功效最为复杂,包含对工作人员、图书借阅者、图书进行管理和维护,及系统状态查看、维护等。图书借阅者可直接查看图书馆图书情况,假如图书借阅者依据本人借书证号和密码登录系统
6、,还能够进行本人借书情况查询和维护部分个人信息。通常情况下,图书借阅者只应该查询和维护本人借书情况和个人信息,若查询和维护其它借阅者借书情况和个人信息,就要知道其它图书借阅者借书证号和密码。这些是极难得到,尤其是密码,所以不仅满足了图书借阅者要求,还保护了图书借阅者个人隐私。图书馆工作人员有修改图书借阅者借书和还书统计权限,所以需对工作人员登陆本模块进行更多考虑。在此模块中,图书馆工作人员能够为图书借阅者加入借书统计或是还书统计,并打印生成对应报表给用户查看和确定。图书馆管理人员功效信息量大,数据安全性和保密性要求最高。本功效实现对图书信息、借阅者信息、总体借阅情况信息管理和统计、工作人员和管
7、理人员信息查看及维护。图书馆管理员能够浏览、查询、添加、删除、修改、统计图书基础信息;浏览、查询、统计、添加、删除和修改图书借阅者基础信息,浏览、查询、统计图书馆借阅信息,但不能添加、删除和修改借阅信息,这部分功效应该由图书馆工作人员实施,不过,删除某条图书借阅者基础信息统计时,应实现对该图书借阅者借阅统计级联删除。而且还应含有生成催还图书报表,并打印输出功效。2.3系统功效需求在本系统中,对读者来说,她们关心问题其实是怎样方便查询到图书馆中书籍和自己正在借阅或是已经借阅过些什么书,所借书是否到期等。3由此能够得出系统在面向读者方面应该最少做到以下几点:1图书查询。2读者信息查询,读者信息查询
8、内容应包含下面多个方面:读者信息对读者基础信息进行显示。书刊借阅对该读者借阅过全部书籍进行查询。借阅历史查询该读者借阅过全部书籍。违章信息该读者违章信息。读者规则该读者所应用规则。对系统管理员来说,应该注意是:1图书馆中有些什么书,它们全部存放在那里,是不是能够被借阅;2本图书馆发放读者证有那些,怎样管理这些读者证;3这些读者证全部借阅着那些书;4怎样来确定这些读者证是否可用,和借书还期等。从以上问题出发,能够得出本系统应该含有功效:1图书查询对馆内图书进行查询。2借阅管理对读者每一次借阅,还书进进登记和管理。3图书管理对图书馆书籍进行管理。4借阅证管理对读者借阅证进行管理。5读者规则管理设置
9、和管理读者规则。2.4设计模式设计模式是面向对象程序设计人员用来处理编程问题一个形式化表示。本系统开发采取现在一个现在广泛流行软件设计模式MVC。MVC(Model-View - Controller)应用程序结构被用来分析分布式应用程序特征。这种抽象结构能有利于将应用程序分割成若干逻辑部件,使程序设计变得愈加轻易。把一个应用输入、处理、输出步骤根据Model、View、Controller方法进行分离,这么一个应用被分成三个层模型层、视图层、控制层。以下图2.1所表示:图2.1 MVC模式三、系统设计3.1 系统概要本图书管理系统总体上分为前台页面显示和后台管理。前台页面(即本书图书管理系统
10、首页)实现了公告显示图书查询,留言提议三大功效。以后台页面则集成了图书管理中所需功效和录入新书到库,办公图书,借还手续,查询图书等等。平时图书管理人员工作全部是在后台中完成。前台是为了师生显示。师生们能够看到图书管理人员公布最新公告信息;并能够查询自己感爱好图书,也能够给学校图书管理人员留言提议。相对应后台是针对学校图书管理人员,后台页面全部加密,假如不正常登录是进入不了后台管理页面,后台功效具体包含:公布首页公告,添加新书到库等等。3.2功效模块本系统功效模块设计图3.1所表示,整个系统包含基础信息设置,图书信息管理,查询图书管理,添加图书管理,修改图书管理和用户借阅管理。管理系统图书信息管
11、理基础信息设置用户借阅管理查询图书管理添加图书管理修改图书管理图3.1功效结构图3.3设计思想利用软件开发觉有软硬件环境,及优异管理系统开发方案,从而达成充足利用现在资源提升系统开发水平和应用效果目标。系统应该符合软件工程开发理论,开发方法等开发依据。系统应满足图书馆管理工作需要,到操作过程中直观,方便,实用,安全等要求。系统含有数据库维护功效,立即依据用户需求进行数据库多种操作。系统采取原型,使用模块化程序设计方法,便于系统功效多种组合和修改,和系统测试和维护。3.4模块设计及功效3.4.1图书查询读者能够经过网络访问学校图书馆管理系统,并对馆内图书进行查询,对查到在馆图书能够进行借阅,图3
12、.2所表示:查询借阅图书借阅图3.2 图书查询步骤图3.4.2借阅管理这一部分是对书籍借阅、书籍归还管理,当读者借书时候,图书馆管理员把书籍编号和读者借阅证号输入系统,当此次借阅符合借阅规则时候,借阅成功。并将结果写入到数据库中。读者归还书籍时,将图书交给图书管理员,管理员把书籍编号和读者借阅证号输入系统,系统查对借阅规则,对违规(如超期)读者进行罚款之类。图3.3所表示:借阅成功输入读者证号和书籍索引号书籍借阅借阅管理归还成功输入读者证号和图书索引号书籍归还图3.3借阅管理步骤图3.4.3图书管理图书管理关键实现功效是对新购图书进行入库和废书统计从库中删除。当新书被放入图书馆时,管理员登录进
13、入系统,把图书信息添加到图书馆管理系统中,并指定是放到哪一个藏书馆中。这时图书能够被读者查询到,并能够借阅。当要把一本废书删除时,图书管理员登录进入系统,查找到这一本书,并将其删除。这时,这一本图书将不再能被查询到。图3.4所表示:图书下架图书入库确定馆藏图书上架图书维护图书管理删除图书图3.4图书管理步骤图3.4.4借书证管理本部分是对借阅证进行管理,并对读者部分基础信息进行维护,提供增、删、改等功效。每一个借阅证全部要以某一个读者规则对应,读者规则决定读者能够借阅书籍等级,如借书时间、借书种类等。当读者借阅证丢失时,能够进行挂失处理。持失以后借阅证失效。图4.5所表示:确定读者规则新增借阅
14、证填写读者信息借阅证管理修改借阅证信息挂失删除图3.5借书证管理步骤图3.4.5读者规则管理读者规则包含借阅时间,可借阅图书数目,可借阅图书书馆等。这一部分能够对读者规则进行管理,关键是增、删、改操作。图3.6所表示:修改规则给读者设置规则增加规则规则管理删除规则图3.6 读者规则管理步骤图3.4.6借还图书功效步骤图图3.7 借还书步骤图3.5数据库设计设计两个表:a) 书籍信息autos(id,category类别,model型号,no书籍编号,price租书价格),如表3.8所表示:表3.8书籍信息表b) 租书信息leases(id,autoId书籍id,customer用户名称,lea
15、seDate租书日期,returned是否还书?,returnDate还书日期),如表3.9所表示:表3.9租书信息表3.5.1创建数据库代码代码1:create database bookmanage; use bookmanage;create table autos(id int primary key auto_increment,category varchar(50) not null,model varchar(50) not null,no varchar(50) not null,price double )ENGINE=InnoDB DEFAULT CHARSET=utf8
16、;代码2:create table leases(id int primary key auto_increment,autoId int not null,customer varchar(20) not null,leasedate date,returned int default 0,returndate date)ENGINE=InnoDB DEFAULT CHARSET=utf8;四、程序设计和编码 4.1 系统登录界面当系统登陆时,首先出现是一个用户权限登陆界面, 权限设置关键是维护系统安全性和完整性。拥有管理员权限操作员能对其它操作员进行对应权限设置,没有权限操作员不能对对应窗
17、口进行操作。以下图4.1所表示:图4.1 管理员登入界面这是进入系统时身份验证,用户首先要从软件开发者那里申请用户名和密码,才能够进入。该过程步骤图以下图4.2所表示:输入姓名及口令统计在口令表吗中进入主界面继续吗结束开始提醒信息NYN 图4.2系统登入步骤图关键代码以下: public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(Constant.CONTENTTYPE);req
18、uest.setCharacterEncoding(Constant.CHARACTERENCODING);tryString method=request.getParameter(method).trim();AdminBean loginbean = new AdminBean();HttpSession session = request.getSession();session.setMaxInactiveInterval(1200);SystemBean systembean = new SystemBean();String sysdir = systembean.getDir(
19、);if(method.equals(one)/admin登录String username = request.getParameter(username);String password = request.getParameter(password);if(username = null|username.trim().equals()request.setAttribute(message, 请正确输入用户名!);request.getRequestDispatcher(index.jsp).forward(request, response);return ;else if(pass
20、word = null|password.trim().equals()request.setAttribute(message, 请输入密码!);request.getRequestDispatcher(index.jsp).forward(request, response);return ;DBO dao = new DBO();String realPassword =;dao.open();java.util.ArrayList list = new java.util.ArrayList();ResultSet rs = dao.executeQuery(select * from
21、 admin where username=+username+); Date date = new Date();SimpleDateFormat format = new SimpleDateFormat(yyyy-MM-dd);String logintime = format.format(date);if(rs.next()realPassword = rs.getString(password).trim();String userName = rs.getString(username).trim();String right = rs.getString(quanxian).t
22、rim();Integer logintimes = Integer.valueOf(rs.getInt(logintimes);list.add(userName);list.add(right);list.add(logintimes);list.add(logintime);String pwd = MD5.MD5(password.trim();if(!pwd.equals(realPassword)request.setAttribute(message, 密码错误!);request.getRequestDispatcher(index.jsp).forward(request,
23、response);elsesession.setAttribute(list,list);session.setAttribute(user,username);request.getRequestDispatcher(admin/index.jsp).forward(request, response); 4.2 添加图书信息身份验证经过以后,点击能够使用系统基础信息管理界面,这是管理员关键输入信息部分,它即能够对数据进行输入包含图书类别,图书名称,图书作者等。填写好各项信息后,单击保留按钮,系统将对这些信息进行处理。界面见下图5.3所表示:图4.3 添加图书信息界面关键代码以下:publ
24、ic int addBOOK(String booktype,String name,String author,String cbs,String isbn,String price,String num,String intro,String jyjg)String sql=insert into book(booktype,name,author,cbs,isbn,price,num,intro,jyjg,addtime) +values(+booktype+,+name+,+author+,+cbs+,+isbn+,+price+,+num+,+intro+,+jyjg+,+date+
25、);DBO dbo = new DBO();dbo.open();tryint i = dbo.executeUpdate(sql);if(i = 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;catch(Exception e)e.printStackTrace();return Constant.SYSTEM_ERROR;finallydbo.close();public int upBOOK(String id,String booktype,String name,String author,String cbs,
26、String isbn,String price,String num,String intro,String jyjg)String sql=update book set booktype=+booktype+,name=+name+,author=+author+,cbs=+cbs+,isbn=+isbn+, +price=+price+,num=+num+,intro=+intro+,jyjg=+jyjg+ where id=+id+;DBO dbo = new DBO();dbo.open();tryint i = dbo.executeUpdate(sql);if(i = 1)re
27、turn Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;catch(Exception e)e.printStackTrace();return Constant.SYSTEM_ERROR;finallydbo.close();4.3 图书类别管理点击能够使用系统基础信息管理界面,这是管理员关键输入信息部分,它即能够对数据进行输入,能够添加图书类别。填写好各项信息后,单击保留按钮,系统将对这些信息进行处理。界面见下图4.4所表示:图4.4图书管理类别管理关键代码以下:public void doPost(HttpServletRequest
28、 request, HttpServletResponse response)throws ServletException, IOException System.out.println(-);response.setContentType(Constant.CONTENTTYPE);request.setCharacterEncoding(Constant.CHARACTERENCODING);PayBean pb=new PayBean();String method=request.getParameter(method).trim();/图书类型if(method.equals(ad
29、dTYPE)String name=request.getParameter(booktype);int flag=pb.addTYPE(name);if(flag=Constant.SUCCESS)request.setAttribute(message, 操作成功!);request.getRequestDispatcher(admin/type/index.jsp).forward(request, response);elserequest.setAttribute(message, 系统维护中,请稍后再试!);request.getRequestDispatcher(admin/ty
30、pe/index.jsp).forward(request, response);else if(method.equals(addBOOK)String booktype=request.getParameter(booktype);String name=request.getParameter(name);String author=request.getParameter(author);String cbs=request.getParameter(cbs);String isbn=request.getParameter(isbn);String price=request.get
31、Parameter(price);String num=request.getParameter(num);String intro=request.getParameter(intro);String jyjg=request.getParameter(jyjg);int flag=pb.addBOOK(booktype, name, author, cbs, isbn, price, num, intro, jyjg);if(flag=Constant.SUCCESS)request.setAttribute(message, 操作成功!);request.getRequestDispat
32、cher(admin/book/index.jsp).forward(request, response);elserequest.setAttribute(message, 系统维护中,请稍后再试!);request.getRequestDispatcher(admin/book/index.jsp).forward(request, response);4.4 管理员设置增加系统管理员。管理员能够添加新管理员,包含为管理员设置一个密码。管理员登入后,能够自己修改密码。一样,总管理员能够删除管理员。管理员还能够将状态设置成目前在用和关闭状态。以下图4.5所表示:图4.5管理员设置界面关键代码
33、以下:String username2 = (String)session.getAttribute(user);if(username2 = null)request.getRequestDispatcher(error.jsp).forward(request, response);elsesession.removeAttribute(user);session.removeAttribute(list);System.gc();request.getRequestDispatcher(index.jsp).forward(request, response);else if(metho
34、d.equals(manager)/添加修改管理员String username2 = (String)session.getAttribute(user);if(username2 = null)request.getRequestDispatcher(error.jsp).forward(request, response);elseString ra = request.getParameter(ra).trim();if(ra.equals(add)String username = request.getParameter(username).trim();String passwo
35、rd = MD5.MD5(request.getParameter(password).trim();String isuse = request.getParameter(isuse).trim();if(isuse.equals(在用)isuse = 1;elseisuse = 2;int flag = loginbean.addManager(username, password, 2, isuse);if(flag = Constant.SUCCESS)request.setAttribute(message, 增加管理员成功!);request.getRequestDispatche
36、r(sysdir+/system/user.jsp).forward(request, response);else if(flag = Constant.SAME_NAME)request.setAttribute(username, username);request.setAttribute(message, 该用户名已经存在!);request.getRequestDispatcher(sysdir+/system/user.jsp).forward(request, response);elserequest.setAttribute(message, 系统维护中,请稍后再试!);r
37、equest.getRequestDispatcher(sysdir+/system/user.jsp).forward(request, response);else if(ra.equals(update)String username = request.getParameter(username).trim();String password = request.getParameter(password).trim();String isuse = request.getParameter(isuse).trim();if(!password.equals()password = M
38、D5.MD5(password);if(isuse.equals(在用)isuse = 1;elseisuse = 2;int flag = loginbean.updateManager(username, password, 2, isuse);if(flag = Constant.SUCCESS)request.setAttribute(message, 修改管理员信息成功!);request.getRequestDispatcher(sysdir+/system/user.jsp).forward(request, response);elserequest.setAttribute(
39、message, 系统维护中,请稍后再试!);request.getRequestDispatcher(sysdir+/system/user.jsp).forward(request, response);4.5 图书借阅管理点击图书借阅界面,管理员能够查看到图书借阅情况,包含借阅者,图书名称,借出时间,归还时间,图书状态,借阅图书价格等。管理员一样能够修改和删除图书借阅内容。操作成功后,点击保留退出。图4.6所表示:图4.6图书借阅管理界面关键代码以下:String card=request.getParameter(card);String bookid=request.getParam
40、eter(bookid);String stime=request.getParameter(stime);String etime=request.getParameter(etime);int flag=pb.addJY(card, bookid, stime, etime);if(flag=Constant.SUCCESS)request.setAttribute(message, 操作成功!);request.getRequestDispatcher(admin/jy/index.jsp).forward(request, response);elserequest.setAttrib
41、ute(message, 系统维护中,请稍后再试!);request.getRequestDispatcher(admin/jy/index.jsp).forward(request, response);else if(method.equals(upJY)String id=request.getParameter(id);String card=request.getParameter(card);String bookid=request.getParameter(bookid);String stime=request.getParameter(stime);String etime=request.getParameter(etime);int flag=pb.upJY(id, card, bookid, stime, etime);if(flag=Constant.SUCCESS)request.setAttribute(message, 操作成功!);request.getRequestDispatcher(admin/jy/index.jsp).forward(request, response);elserequest.setAttribute(message, 系统维护中,请稍后再试!);