1、Java框架课程设计图书信息库存管理系统1.课程设计的目的Java框架程序设计课程设计是计算机科学与技术专业的Java框架程序设计课程的综合性实践环节。Java框架设计是一门实用性很强的学科,是进行网页开发的主要工具,只有进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良好的基础。图书管理系统加入了数据库的支持,使用了先进的数据库技术与数据管理技术,使数据的准确性与安全性得到了很大的提高,且在用户的并行操作与用户管理方面也有了极大地改善。就目前使用的开发技术来说建议系统的功能目标应该能够达到,
2、利用现有的技术在规定的期限内开发工作基本能够完成。创建图书管理系统是为了改善图书馆图书管理,所以系统一经使用在经费支出方面一定会得到很好的改善,用户在使用了系统后只需要花一定资金购买一部分计算机与软件就能实现自动化。它在提高工作效率的同时也减少了工作人员的使用量。2.功能描述2.1开发工具MyEclipse简介MyEclipse企业级工作平台(MyEclipseEnterprise Workbench ,简称MyEclipse),是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java、Java EE以及移动应用的开发。MyEclipse的功能非常强大,
3、支持也十分广泛,尤其是对各种开源产品的支持相当不错。MyEclipse是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate 。Tomcat应用服务器Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其
4、解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。2.2总体设计2.1.1需求分析(1)用户借书,管理员将用户信息,图书信息输入系统,系统则根据这些信息生成借阅单,存入借阅表。(2)用户还书,管理员将图书信息输入系统。未超期,系统根据图书信息将相应借阅单标记为已还和完结,已超期,将相应借阅单标记为已还,管理员要求罚款。用户交钱后,借阅单标记为完结,系统将超期信息记录到超期表。(3)用户要续借某书,管理员将书号和用户名输入系统,若相应借阅单允许续借,标记为已续借,否则,不予续借。(4)用户将书遗失,管
5、理员将遗失信息输入系统,存储至卡款记录库,系统执行遗失操作,并要求用户赔偿。(5)管理员对图书进行录入,删除,修改,查询操作,系统根据信息对图书表进行改变。(6)管理员对用户进行添加,删除,修改,查询操作,系统根据信息对用户表进行改变。(7)系统提供借出记录查询,未还记录查询,超期记录查询,罚款记录查询,遗失记录查询。2.2.1功能框图图1总体功能框图2.2.2E-R图图2E-R图2.2.3现业务流程介绍与分析对于一个图书管理系统来说,图书的查询及数据的维护管理是其中的核心环节。在现现行的图书管理中存在几个共同的问题:(1)图书种类过多,数据庞大;这是几乎所有图书馆都会遇到的共同问题,各种不同
6、种类的图书馆为这些图书入库,进行添加于维护增加了很多的难题,对这些数据的反复输入,往往造成庞大的工作量和较低的效率。(2)查询图书困难,每天的借阅情况,读者借阅的到期、还书情况,各项数据的汇总和统计情况必须由管理员统计上报,图书库总管理员才能考虑对图书馆的硬件如某类书的需求数量进行改变已向上级申报。(3)图书毁坏及图书破损;在借阅过程中难免此类现象的发生,如何及时发现及事后对毁坏图书进行淘汰和更新也是个需要解决的问题。(4)不能及时归还图书;经常有读者超过借阅期的情况发生,对此类读者的超期信息提示也是图书借阅管理工作中必须解决的问题之一。软件主要分为用户管理,图书管理,借阅管理,统计与查询五大
7、模块。用户管理包括用户的添加删除,修改,查询以及借书证的挂失与解挂。图书管理包括对图书的入库,出库,信息修改和查询。借阅管理则主要包括借书,还书,续借,丢失图书处理及违章后赔偿处理。现业务流程图如图3所示图3现业务流程图3.详细设计3.1.1数据库设计后台管理页面,主要实现业主投诉管理、业主报修管理、反馈信息受理、物业设备维修、业主停车位管理、业主费用管理、费用催缴管理和值班员工信息管理等功能。(1)book_t表用来保存图书信息表1:book_t字段名称数据类型长度备注idint4主键IDbookNamevarchar50书名authorvarchar50作者publisherVarchar
8、50出版社pricefloat8价格inTimedate10上架时间typeint4图书类型operatorint4管理员ID(2)booktype_t表用来保存图书类型相关信息如表2所示。表2:booktype_t字段名称数据类型长度备注idint10类型IDnamevarchar15类型名3.2.2程序界面设计网站用户登录页面用于提供用户进行登录,登录后分两种用户权限,普通用户和管理员用户,普通用户可以浏览图书馆现有藏书,管理员用户可以对图书馆的图书和图书类别进行增删改查操作,于已经登录的用户,在藏书页面将显示用户的相关信息。首页主要是根据保存用户名信息的Session参数来判断用户是否已
9、经登录。如图4所示。图4用户登录图部分代码如下: public String login() String username = request.getParameter(username); String password = request.getParameter(password); BookDao bd = new BookDao(); User user = new User(); List userlist= bd.login(username, password); if(userlist.size()=1) user=userlist.get(0); session.setA
10、ttribute(userinfo, user); return login; else return errlogin; 普通用户可以在本页对网上图书馆现有藏书进行按书名或者分类搜索浏览,管理员具有管理权限,可以对图书进行添加、修改、删除、还可以对图书类别进行管理。如图5所示。图5 普通用户登录图6 管理员用户登录部分代码如下: public String getList() String type =request.getParameter(bookType); String bookName = request.getParameter(bookName); BookDao bd = n
11、ew BookDao(); BookTypeDao btd = new BookTypeDao(); List BTlist = btd.getType(); request.setAttribute(BTlist, BTlist); List list = bd.getUsersList(bookName, type); HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute(list, list); return getList; public List getUsersLis
12、t(String bookName,String type) StringBuffer hqlsb =new StringBuffer( from Book a, BookType b where a.type=b.id); if(bookName!= & bookName!=null) try bookName = new String(bookName.getBytes(iso-8859-1),utf-8); System.out.println(bookName); catch (UnsupportedEncodingException e) e.printStackTrace(); h
13、qlsb.append( and a.bookName like %+bookName+%); if(type!= & type!=null) hqlsb.append( and a.type=+type); String hql = hqlsb.toString(); System.out.println(hql); Query query = super.getSession().createQuery(hql); List list = query.list() ; return list; 管理员用户具有对图书进行添加的功能,上架时间是自动获取当天的日期,图书类型是动态获取图书馆系统数
14、据库中图书列别表中现有的类别显示到下拉列表中。如图7所示。图7 添加图书界面当管理员用户在登录后,在图书馆浏览页面可以看到添加图书选项,点击会自动跳转到index!toAdd页面来添加图书。代码如下: public String addBook() String bookName = request.getParameter(bookName); String author = request.getParameter(author); String publisher = request.getParameter(publisher); String price = request.getP
15、arameter(price); String inTime = request.getParameter(inTime); String type = request.getParameter(type); String operator = request.getParameter(operator); try bookName = new String(bookName.getBytes(iso-8859-1),utf-8); author = new String(author.getBytes(iso-8859-1),utf-8); publisher = new String(pu
16、blisher.getBytes(iso-8859-1),utf-8); catch (UnsupportedEncodingException e) e.printStackTrace(); Book b = new Book(); b.setBookName(bookName); b.setAuthor(author); b.setPublisher(publisher); b.setPrice(Float.parseFloat(price); b.setInTime(inTime); b.setType(Integer.parseInt(type); b.setOperator(Inte
17、ger.parseInt(operator); BookDao bd = new BookDao(); bd.addBook(b); return add; 管理员用户登录后具有对图书信息修改的功能,管理员可以看到图书浏览页面每条图书记录后具有对这本图书进行修改的选项,单击修改会进到修改这本书的详情页,自动获取这本图书的信息。图8修改现有图书信息界面部分实现代码: public String update() String id = request.getParameter(id); String bookName = request.getParameter(bookName); Strin
18、g author = request.getParameter(author); String publisher = request.getParameter(publisher); String price = request.getParameter(price); String inTime = request.getParameter(inTime); String type = request.getParameter(type); String operator = request.getParameter(operator); try bookName = new String
19、(bookName.getBytes(iso-8859-1),utf-8); author = new String(author.getBytes(iso-8859-1),utf-8); publisher = new String(publisher.getBytes(iso-8859-1),utf-8); catch (UnsupportedEncodingException e) e.printStackTrace(); Book b = new Book(); b.setBookName(bookName); b.setAuthor(author); b.setPublisher(p
20、ublisher); b.setPrice(Float.parseFloat(price); b.setInTime(inTime); b.setType(Integer.parseInt(type); b.setOperator(Integer.parseInt(operator); b.setId(Integer.parseInt(id); BookDao bd = new BookDao(); bd.editBook(b); return update; 所有用户都可以对图书馆现有大量图书进行搜索,以便找到想要的图书或者感兴趣的书籍,可以根据图书的名称关键字进行模糊搜索,或者根据图书类别
21、进行搜索,或者联合这两个选项进行搜索。图9图书模糊搜索模块 部分代码实现: public List getUsersList(String bookName,String type) StringBuffer hqlsb =new StringBuffer( from Book a, BookType b where a.type=b.id); if(bookName!= & bookName!=null) try bookName = new String(bookName.getBytes(iso-8859-1),utf-8); System.out.println(bookName);
22、catch (UnsupportedEncodingException e) e.printStackTrace(); hqlsb.append( and a.bookName like %+bookName+%); if(type!= & type!=null) hqlsb.append( and a.type=+type); String hql = hqlsb.toString(); System.out.println(hql); Query query = super.getSession().createQuery(hql); List list = query.list() ;5
23、心得体会持续一周的Java EE课程设计已经结束了,在这次课程设计中我努力完成了任务,共同学习知识。虽然只是短短的时间,可是我把课堂里老师讲的知识用到实践中去了,感到非常高兴。这次的课程设计可以看作是一次理论与实践相结合的桥梁,通过这次的课程设计,我学习到了许多的知识,也认识到了自己目前的不足,那就是缺乏相应的知识与经验,所以在运用和操作方面都不是那么的得心应手。但是,经过这段时间对相关书籍的阅读和分析,我顺利的完成了设计,我还明白了在编写程序的时候,应该尽量使界面简洁大方,布局统一。变量类型的定义,一定要够用就好,这样程序就可以尽可能的减少对系统资源的占用。在设计时也免不了存在着一些不足,所
24、以在今后的学习中我会努力取得更大的进步,对于我们不足的地方希望老师能够及时给予批评,以便我在今后的学习或工作中能够及时的改正。总之,这次课程设计为我提供了与众不同的学习方法,在书本中面对现实,为我将来在社会上立足提供了良好的前提。人生有数,学无止境,学习生活是无穷尽的,只有掌握更多的、更新的知识才能使自己始终立于不败之地。如果只为现在所取得的成绩而沉浸于喜悦、骄傲之中的话,那么,我想我们不会前进,只能停留在原来的地方,甚至还会倒退。所以我们应该从这次课程设计中所暴露出的问题入手,不断完善自己的欠缺和不足。相信此次课程设计为我们以后继续从事计算机工作打下了扎实的基础,也明确了以后的学习方向。6参
25、考文献1穆丹. 集成JavaEE框架构建MIS系统的研究与实现D.长安大学,2013.2张绍林. 基于JavaEE5体系的联网售票系统设计与实现D.天津大学,2014.3王向兵. JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合D.大连海事大学,2014.4张俐,张维玺. 基于JavaEE的固定资产管理系统的设计与实现J. 计算机工程与设计,2014,16:3797-3800.5吴锋. 基于SSI框架JavaEE技术研究D.合肥工业大学,2013.6刘慧. 基于JavaEE的在线交易系统关键技术研究D.大连海事大学,2014.7王瑞矫. 基于JavaEE
26、的实训平台的设计与实现D.北京邮电大学,2015.8解智. 基于JavaEE轻量级架构的安全电子拍卖系统设计D.武汉工业学院,2014.9王茜. 基于JavaEE的人事考核管理系统的设计与实现D.厦门大学,2014.10贾进. 基于JavaEE的统一信息平台设计与实现D.厦门大学,2014.附录(部分源代码)!DOCTYPE hibernate-configuration PUBLIC-/Hibernate/Hibernate Configuration DTD 3.0/ENcom.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver:/localhost:1433;DatabaseName=testsa123456org.hibernate.dialect.SQLServerDialecttruer
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1