JavaWeb课程设计图书馆管理系统刘娜.docx
- 文档编号:10951070
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:10
- 大小:143.58KB
JavaWeb课程设计图书馆管理系统刘娜.docx
《JavaWeb课程设计图书馆管理系统刘娜.docx》由会员分享,可在线阅读,更多相关《JavaWeb课程设计图书馆管理系统刘娜.docx(10页珍藏版)》请在冰豆网上搜索。
JavaWeb课程设计图书馆管理系统刘娜
潍坊科技学院
JavaWeb课程设计
报告书
设计题目图书管理系统
专业班级11级软件1班
学生姓名刘娜
学号201101080011
指导教师
日期2013.6.3~2013.6.28
成绩
课程设计任务书
院系:
中印计算机软件专业:
软件技术班级:
11软1学号:
201101080011
(1)正文部分
1引言
1.1课程设计目的
1.2课程设计背景
1相关技术
1.1Spring框架
1.2Struts2框架
1.3Hibernate框架
2需求分析
2.1系统功能需求
2.2系统开发运行环境
3总体设计
3.1系统体系结构设计
3.2系统功能模块设计
3.3系统主要JSP页面设计
3.4数据库设计
4系统实现
4.1系统运行界面
4.2主要代码
5.效果截图
5课设总结
6参考文献
一、实验目的。
1、在实践中巩固本学习所学的JavaWeb技术。
2、在实践中初步使用设计模式(GoF),体验设计模式带来的好处。
3、配合数据库的使用,实现一个功能完善的小型系统。
二、实验内容。
开发一个图书管理系统,实现图书馆的各种管理操作。
如图书入库、作废,借书证提供、挂失处理,图书的借出、归还、续借、丢失以及超期处理。
s
三、数据库设计。
根据业务逻辑设计出数据库。
表结构及关系如下图:
数据库导入文本保存在DataBaseSQL.txt文档中,数据库数据保存在Data.txt文档中。
四、技术性代码。
(本实验的代码在Library.zip中)
1、tomcat数据库连接池技术。
在tomcat中的配置文件server.xml文件中配置项目Context标签,再加入Resource标签:
docBase="/home/sea/MyEclipse/LibraryOA/WebRoot" debug="0"> name="jdbc/webdb" auth="Container" type="javax.sql.DataSource" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc: mysql: //localhost: 3306/LibraryOA" username="root" password="root" maxActive="50" maxIdle="20" maxWait="10000"/> 以上代码配置了数据库驱动,数据库地址,数据库用户名、密码,默认提供的连接数,最大提供的连接数,最长等待时间等参数。 2、Java中从连接池获取连接的类,使用了单例模式(来自GoF提出的设计模式): //DataBaseConnectionPond.java packagelibrary.util; importjava.sql.Connection; importjavax.sql.DataSource; //作者: 赵伯涛 publicclassDataBaseConnectionPond{ privatestaticDataBaseConnectionPonddbcp=null; privateDataSourceds=null; privateDataBaseConnectionPond()throwsException{ javax.naming.Contextctx=newjavax.naming.InitialContext(); ds=(DataSource)ctx.lookup("java: /comp/env/jdbc/webdb"); } publicConnectionGetConnettion()throwsException{ returnds.getConnection(); } publicstaticConnectiongetConnection()throwsException{ Connectionconn=null; if(dbcp==null){ Thread.sleep((long)(Math.random()*200)); synchronized(DataBaseConnectionPond.class){ if(dbcp==null){ dbcp=newDataBaseConnectionPond(); } } } try{ conn=dbcp.GetConnettion(); }catch(Exceptione){ } returnconn; } } 该类在整个项目部署的过程中只实例化了一个对象,故称单例。 可以通过该类的static函数getConnection()获取连接。 3、Dao(DataAccessObject)的模板化实现,使用了模板方法模式(来自GoF提出的设计模式): //SqlExecute.java packagelibrary.execute; importjava.sql.Connection; importlibrary.util.*; //作者: 赵伯涛 publicabstractclassSqlExecute{ publicConnectionconn; publicObjectresult; publicabstractvoidsetExecute()throwsException; publicObjectexecute(){ try{ conn=DataBaseConnectionPond.getConnection(); conn.setAutoCommit(false); setExecute(); mit(); }catch(Exceptione){ try{ conn.rollback(); }catch(Exceptionee){ } e.printStackTrace(); }finally{ try{ conn.close(); }catch(Exceptione){ } } returnresult; } } 该类是一个抽象类,必须通过继承该类来实现具体的功能,其中的execute()函数是一个模板方法,将try-catch-finaly、获取connection及connection的事务处理提取出来,具体Dao的功能应该写在setExecute()函数中,在具体实现Dao的功能的时候可以不用重复这些代码,方便程序员编码,也方便程序员维护程序。 下面举例使用这个模板类: //ReaderChangePasswordDao.java packagelibrary.dao; importjava.sql.PreparedStatement; importlibrary.execute.SqlExecute; importlibrary.model.ReaderModel; //作者: 赵伯涛 publicclassReaderChangePasswordDaoextendsSqlExecute{ privateReaderModelrm; //传入readerID,password,password2(旧密码) //返回影响行数 publicReaderChangePasswordDao(ReaderModelrm){ this.rm=rm; } @Override publicvoidsetExecute()throwsException{ Stringsql="updateReaderssetpassword=? wherereaderID=? andpassword=? "; PreparedStatementps=conn.prepareStatement(sql); ps.setString(1,rm.getPassword()); ps.setInt(2,rm.getReaderID()); ps.setString(3,rm.getPassword2()); this.result=ps.executeUpdate(); } } 上面的类继承了SqlExecute类,重写了它的setExecute()函数,通过构造函数传入操作时需要的参数,在写代码的时候可以更加专注于数据库的操作,因为其它操作由模板类做好了。 这对写一个数据库操作或许没什么大不了的,但是一个项目里边数据库操作肯定是几十个,几百个,甚至几千个,使用模板类减少的编码量是非常客观的。 下面举例使用ReaderChangePasswordDao类: //来自UserCommonService.java的部分代码 //读者修改密码 publicbooleanreaderChangePassword(intreaderID,StringnewPassword, StringoldPassword){ ReaderModelrm=newReaderModel(); rm.setReaderID(readerID); rm.setPassword(newPassword); rm.setPassword2(oldPassword); ReaderChangePasswordDaorcpd=newReaderChangePasswordDao(rm); intcount=(Integer)rcpd.execute(); if(count>0){ returntrue; }else{ returnfalse; } } 注意: 使用Dao的时候调用的应该是它的execute()方法(在抽象类中)。 五、效果截图 六、实验心得。 通过本次实验,我们不单单巩固了我们的Jsp技术,同时业务逻辑能力得到了提高,能通过业务逻辑设计一个数据库,并且在实现业务逻辑的过程中初步使用了GoF提出的设计模式,同时也体验到它带来的好处。 在共同合作开发的过程中,学会如何分工及沟通 七·参考文献。 【1】刘宝林。 Java程序设计与案例【M】。 北京。 高等教育出版社。 2004.11 【2】吴亚峰。 纪超。 JavaSE。 6.6编程指南【M】。 北京。 人民邮局出版社。 2007.11 【3】刘精华。 JavaWeb整合开发王者归来【M】。 北京。 高等教育出版社。 2003.9 【4】孙伟琴。 《Tomcat与javaweb开发技术讲解(第二版)》【M】北京: 电子工业出版社、2009.1-220 【5】黄嘉辉《java网络程序设计》【M】北京。 清华大学出版社。 2002: 445-470
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaWeb 课程设计 图书馆 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)