目录
摘 要 .................................................................... I Abstract ................................................................. II 第一章 课题背景 .......................................................... 1
1.1 项目背景 .......................................................... 1 1.2 开发环境的配置 .................................................... 1 第二章 设计简介及设计方案论述 ............................................ 5
2.1 需求分析 .......................................................... 5 2.2 概念模型 .......................................................... 5 2.3 逻辑结构设计 ...................................................... 6 2.4 物理结构设计 ...................................................... 7 2.5 数据库实施 ........................................................ 7 第三章 详细设计 .......................................................... 8
3.1 根据数据表设计javabean ........................................... 8 3.2 JDBUtils连接数据库 .............................................. 9 3.3 与数据库进行交互的Dao层 ........................................ 10 3.4 与用户交互的Jsp页面 ............................................ 11 3.5 Servlet控制请求与响应 .......................................... 12 3.6 Junit单元测试 .................................................. 14 第四章 设计结果及分析 ................................................... 15
4.1用户注册 ......................................................... 15 4.2用户功能 ......................................................... 15 4.3管理员功能 ....................................................... 17 4.4分析页面加载的问题 ............................................... 19 总 结 .................................................................. 23 致 谢 .................................................................. 24 参考文献 ................................................................. 25 附录 ..................................................................... 26
- I -
武汉工程大学计算机科学与工程学院 综合设计报告
摘 要
21世纪的今天,中国网民的规模达到7.31亿,手机网民达到6.95亿,随着网络时代的到来,电子信息化的飞速发展,图书馆代表着一间学校或者地区的标志,作为一种信息资源的聚集地,经常被众多用户访问,并且图书种类的繁多,用户借阅的繁琐,包含很多的信息数据的管理,以及信息数据的交互。图书馆如果采用人工来管理书籍和借阅管理,由于资料繁多,手工处理的方式不仅工作量大,管理效率低下,也很容易因为疲劳而产生出错,更不方便读者对图书资料的查阅,如何实现高效的管理已成为必须要面对的问题。为了提高图书管理的效率,本项目针对图书的管理,设计了一个面向图书的管理系统。本系统采用了Jsp页面的设计,使用了MVC模式,具有开发效率高、设计灵活等特点,并通过JDBC驱动和数据库进行无缝连接。 关键词:图书管理;数据库;Java Web
- I -
武汉工程大学计算机科学与工程学院 综合设计报告
Abstract
With the advent of the Internet era, the rapid development of electronic information, the 21st century today, the size of China's Internet users reached 731 million, mobile phone netizens reached 695 million. Library represents a school or area logo, as a gathering place of information resources, often accessed by many users, and a wide variety of books, users borrow cumbersome, including a lot of information data management, as well as the interaction of information data. If the library uses manual management of books and loan management, because of the large number of materials, manual processing methods not only a large workload, low management, but also easy because of fatigue and errors, more inconvenient to readers to access the books, how to achieve efficient management has become a must face the problem. In order to improve the efficiency of book management, this project for book management, designed a book-oriented management system. The system adopts the design of JSP page, uses MVC mode, has the characteristics of high development efficiency and flexible design, and is seamlessly connected by JDBC drive and database. Keywords: Book Management Database Java Web
- II -
武汉工程大学计算机科学与工程学院 综合设计报告
第一章 课题背景
1.1 项目背景
随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。上个世纪90年代初美国科学家首次提出数字图书馆(Digital Library)这一概念以来,全球开展数字图书馆研究与实践已近十几个年头。我国图书情报界,IT业界自1995年左右开始对这一领域跟踪研究,1998年开始全面升温,迄今无论是在对数字图书馆的认识,还是理论研究,关键技术准备方面,都取得了很大的进展。国内数字图书馆的实践活动大致可分为以下三种类型:资源服务型、服务研究型和联合建设型。虽然,从严格意义上讲,资源服务型不能算是数字图书馆,但它的网上信息服务目前已在大多数图书馆开展,是现阶段我国图书情报界提供网上数字服务的主要形式。二十一世纪是信息的时代,所以信息的交换和信息流通显得的特别重要。因此,使用计算机来管理图书成为必然。目前,中小型以及大型图书馆、书店等均开始采用各种优秀的系统管理软件来辅助日常的事物。而随着科技的进步,图书管理系统在传统的功能上越来越强大,如:读者信息查询,图书信息查询,图书入库及注销出库登记等等,为人们带来了极大方便。
在各大高校中,图书管理每一个系部或院部都必须切实面对的工作,目前仍有少部分院系仍在使用传统的人工方式管理图书资料。这种方式存在着许多缺点,如效率低、保密性差且较为繁琐。另外,随着图书资料数量的增加,其工作量也将大大增加,这必将增加图书资料管理者的工作量和劳动强度,这将给图书资料信息的查找、更新和维护都带来了很多困难。图书管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统,将是非常必要的,也是十分及时的。
1.2 开发环境的配置
开发工具:Intellij IDEA 所用设计模式: MVC 语言: Java
数据库: MySQL Web服务器: Tomcat Action: Servlet View: Jsp
数据库连接池:Druid
1.2.1 Tomcat配置
1.首先去官网下载对应版本的Tomcat 2.进入 Edit Configurations
- 1 -
武汉工程大学计算机科学与工程学院 综合设计报告
图1.1 Tomcat配置1
3. 点击+,选择Tomcat服务器local
图1.2 Tomcat配置2
- 2 -
武汉工程大学计算机科学与工程学院 综合设计报告
4. 具体配置
默认端口为8080,选择自己电脑相应的jdk版本和Tomcat版本
图1.3 Tomcat配置3
在Deployment中点击+,部署相应的工程。Application context一栏为项目启动的虚拟路径。
图1.4 Tomcat配置4
- 3 -
武汉工程大学计算机科学与工程学院 综合设计报告
1.2.2导入jar包
1.在建好的工程里右键,点击Open Module Setting
图1.5 导入jar包1
2.点击右边的+号,导入相应的jar包和依赖环境,然后点击OK。
图1.6 导入jar包2
- 4 -
武汉工程大学计算机科学与工程学院 综合设计报告
第二章 设计简介及设计方案论述
2.1 需求分析
在图书管理系统中,用户可以登录进行借书、还书操作,查看图书馆藏情况;用户借书时,先输入图书名称,系统验证该图书是否有库存,有剩余则借书成功,没有库存则显示借书失败,借书成功后,书本库存减一。还书时同样需要输入书本名称,点击归还后,系统检查是否借了该书,归还成功后,修改书本库存信息。读者没有账号时,可以在起始页面选择注册新用户,注册成功后即可登录并享有读者功能。
管理员可以对书本执行添加操作,查看图书的借出日志。对于违规的读者用户,管理员可以删除该用户,使其无法再次登录系统。
图书的详细信息有书本库存量、书本名称、书本作者、出版单位、书本价格、出版时间。
图2.1 功能结构图
2.2 概念模型
E-R图的简单描述:
1.book表有book_num(书本库存)、book_name(书本名称)、book_writer(书籍作者)、publish_time(书籍出版时间)、book_price(书本价格)、publish_house(出版社) 2.user表有name(用户昵称)、password(用户密码)、id(标识普通用户与管理员)、sex(用户性别)、telphone(用户联系方式)、email(用户E-mail)
- 5 -
武汉工程大学计算机科学与工程学院 综合设计报告
3.message表有name(用户昵称)、book_name(书籍名称)、date(借阅时间)
图2.2 数据关系图
图2.3 E-R图
2.3 逻辑结构设计
根据2.2节的数据关系图得出以下关系模式 其中,标记“______”为主键。 图书实体对应的关系模式:
图书(书籍名称,书籍库存量,书籍作者,书籍出版社,书籍出版时间,时间价格) 用户实体对应的关系模式:
用户(用户名称,用户密码,id标识,用户性别,用户联系方式,用户邮箱) 借阅信息实体对应的关系模式:
借阅信息(用户名称,书籍名称,借阅日期)
- 6 -
武汉工程大学计算机科学与工程学院 综合设计报告
2.4 物理结构设计
在逻辑结构的基础上,进一步设计物理结构。本系统选择MySQL数据库,字符集编码为UTF-8。如下图所示,在book表中,除了书籍价格和书籍库存量使用int类型外,其他属性都使用char类型,主键为书名;user表中属性全部使用char类型,主键为用户名;message表中属性也都使用char类型,主键为书名和用户名。
图2.4 book表的物理结构
Figure 2.4 The physical structure of the book table
2.5 数据库实施
编写sql语句,导入MySQL Workbench执行:
图2.5 数据库表的执行语句
- 7 -
武汉工程大学计算机科学与工程学院 综合设计报告
第三章 详细设计
3.1 根据数据表设计javabean
在src包下创建domain包用于存放三个实体类,分别为Book、Message、User类,每个类中与数据表属性名相同的私有成员变量,鼠标右键点击Generate...,IDEA自动生成相应的Get和Set方法,为了输出查询结果,同时也要生成toString方法。注意实体类的属性最好不要定义为基本类型,否则无法存放null值,例如int-->Integer等。
图3.1 User类
图3.2 Book类
- 8 -
武汉工程大学计算机科学与工程学院 综合设计报告
图3.3 Message类
3.2 JDBUtils连接数据库
在src下创建包util,其中存放于数据库建立连接的JDBCUtils类,由于数据库连接很消耗资源,因此在数据库连接方面选择数据库连接池Durid。使用数据库连接池时要导入配置文件druid.properties
图3.4 数据库连接池配置文件
加载配置文件,初始化连接池后就可以获取连接对象了,为了后续使用JDBCTemplate执行sql语句,需要在JDBCUtils类中提供获取连接池对象的方法:
- 9 -
武汉工程大学计算机科学与工程学院 综合设计报告
图3.5 初始化连接池获取连接
数据库的连接是有的,如果连接不关闭,使用人数较多,那么系统很快就会崩溃,因此在JDBCUtils类中还要有关闭连接的方法。有时候不需要查询结果集,调用关闭连接池方法时,第三个参数可以填写null。
图3.6 关闭连接
3.3 与数据库进行交互的Dao层
在src包下创建Dao包,用于存放BookDao、UserDao、MessageDao类。
BookDao实现了借书还书方法、更新书籍数量的方法、管理员添加书籍的方法,使用JDBCTemplate可以大大简化代码的数量。JdbcTemplate是Spring框架对JDBC的简单封装,它依赖于数据源DataSource。
- 10 -
武汉工程大学计算机科学与工程学院 综合设计报告
图3.7 借书/还书方法
图3.8 更新书籍数量
图3.9 添加书籍
MessageDAo实现了增加用户借阅信息的方法、查询当前用户的借阅记录、查询所有用户的借阅记录、查询当前用户是否借了当前书本的方法、归还图书的方法。
UserDao实现类了登录检验的方法、查询图书馆剩余书籍的方法、增加用户的方法、删除用户的方法。
这些方法的实现与上述BookDao类差不多,执行简单的sql语句即可。
3.4 与用户交互的Jsp页面
借书:borrowBook.jsp 、借阅是否成功:borrowSuccess.jsp、还书:returnBook.jsp、还书是否成功:returnSuccesss.jsp、登录:login.jsp、注销:loginout.jsp、注册:register.jsp、查看用户借阅情况:getmessage.jsp、展示剩余书籍:showBooks.jsp、
- 11 -
武汉工程大学计算机科学与工程学院 综合设计报告
增加书籍:addbook.jsp、删除用户:deleteuser.jsp、初始欢迎界面:index.jsp、管理员界面:manager.jsp、登录成功:success.jsp、管理员查看借阅信息:viewmessage.jsp。
为了防止jsp页面中文乱码,在开头需要加上:
<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>
Jsp页面主要使用html标签、css渲染和一些Java语句。同时注意Jsp后缀文件应放在web包下,若放在WEB-INF下会识别不出。
3.5 Servlet控制请求与响应
loginServlet用于检验用户登录,若数据库查询不到该登录用户则跳转到登录失败页面,若成功找到一个用户,使用req.setAttribute()方法将该登录对象存储到共享域中,方便在用户整个登录期间可以随时取得用户信息,随后跳转到登录成功页面。HttpServlet类提供了两个方法分别是doGet和doPost,由于每次提交数据都是POST方式,在doPost方法体写上对应的逻辑就可以,可是doGet方法如果什么都不写页面会报HTTP500错误,为了简化代码可以用this.doPost(request, response)语句。
图3.10 loginServlet类
BorrowBookServlet用于响应借书的请求,获取书名后,令该书籍库存数量减一,同时将sum值保存到resquest域中,跳转到借书成功页面。在之后的页面取出sum值可以判断借书是否成功。
- 12 -
武汉工程大学计算机科学与工程学院 综合设计报告
图3.11 BorrowBookServlet类
RegisterServlet类用于获取注册信息并封装为User对象,然后添加进数据库。注册时,用户不可以填写ID信息,ID在内部置位0,这样可以区分管理员和普通用户,封装好数据后跳转至登录界面,控制台打印注册成功字样。
图3.12 RegisterServlet类
- 13 -
武汉工程大学计算机科学与工程学院 综合设计报告
3.6 Junit单元测试
单元测试是编写测试代码,可以准确、快速的保证程序基本模块的正确性。Junit通过注解的方式来识别测试代码,目前支持的注解主要有:@BeforeClass 全局只会执行一次,而且是第一个运行、@Before 在测试方法运行之前运行、@Test 测试方法、@After 在测试方法运行之后允许、@AfterClass 全局只会执行一次,而且是最后一个运行、@Ignore 忽略此方法。
在src包下创建test包,在test包下编写单元测试的代码:
图3.13 单元测试
- 14 -
武汉工程大学计算机科学与工程学院 综合设计报告
第四章 设计结果及分析
4.1用户注册
一、登录页面(运行程序后,进入登录页面)页面功能全部实现
图4.1 登录界面
若登录的账号没有注册过,则弹出账号不存在提示
图4.2账号不存在
- 15 -
武汉工程大学计算机科学与工程学院 综合设计报告
若登录的账号注册过,但是登录密码输入错误,则弹出密码错误提示
图4.3账号密码错误
二、注册页面
图4.4注册页面
- 16 -
武汉工程大学计算机科学与工程学院 综合设计报告
4.2用户功能
用户功能主页面,每个按钮功能均已实现,标题为当前用户名
图4.5用户主页面
图4.6查看个人资料
- 17 -
武汉工程大学计算机科学与工程学院 综合设计报告
图4.7修改个人资料
图4.8查看书库
- 18 -
武汉工程大学计算机科学与工程学院 综合设计报告
4.3管理员功能
一、图书管理员主页面及权限
图4.9管理员主界面
- 19 -
武汉工程大学计算机科学与工程学院 综合设计报告
图4.10删除图书
图4.10添加书本信息
- 20 -
武汉工程大学计算机科学与工程学院 综合设计报告
图4.11书库信息
- 21 -
武汉工程大学计算机科学与工程学院 综合设计报告
4.4分析页面加载的问题
实现各个功能页面的跳转需要设置action属性和对应的Servlet的资源地址,action中地址的写法为虚拟目录+Servlet资源路径,若地址填写错误,页面会报HTTP500错误。此外,Jsp页面的静态资源如图片,会遇到资源无法加载的问题:Failed to load resource: the server responded with a status of 404 (),这时需要引入C标签库,即加入语句:<%@ taglib prefix=\"c\" uri=\"http://java.sun.com/jsp/jstl/core\" %>,同时引入相应的jar包:taglibs-standard-impl-1.2.5.jar、taglibs-standard-spec-1.2.5.jar。 在程序运行中还有无法获取session域中属性值的问题,这种情况页面也会报HTTP500错误,为了解决这个错误应该详细区分session.setAttribute()与request.setAttribute()。1.session.setAttribute()和session.getAttribute()配对使用,作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。
2.request.setAttribute()和request.getAttribute()配对使用,作用域是请求和被请求页面之间。request.setAttribute()是只在此action的下一个forward需要使用的时候使用;request.getAttribute()表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型。其实表单控件中的Object的 name与value是存放在一个哈希表中的,所以在这里给出Object的name会到哈希表中找出对应它的value。setAttribute()的参数是String和Object。
3.request.getParameter()表示接收参数,参数为页面提交的参数。包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter()),而且接收参数返回的不是Object,而是String类型。 了解一些常见的响应状态码很重要。响应状态码就是服务器告诉客户端浏览器本次请求和响应的一个状态,通常由三位数字组成。以1开头的:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx状态码;以2开头的:成功。代表:200;以3开头的:重定向。代表:302(重定向),304(访问缓存);以4开头的:客户端错误。代表:404:请求路径没有对应的资源,405:请求方式没有对应的doXxx方法;以5开头的:服务器端错误。代表:500(服务器内部出现异常)。具体的错误可以上网搜索具体解决办法。
- 22 -
武汉工程大学计算机科学与工程学院 综合设计报告
总 结
首先是数据库的设计,可以简单分析到需要三个数据表,分别为存储用户信息的user表、存储书籍信息的book表和用户借阅书籍情况的message表。 其次是分析图书管理系统到底需要什么样的功能,index.jsp界面应该有注册和登录两个链接供新老用户使用,分别跳转至不同的界面。对于没有注册的用户,直接注册就行了,注册信息填完点击注册按钮完成注册,直接跳转至登录页面。登录后,有以下几个链接供用户点击:借书、还书、注销、查看自己的借阅情况、查看图书馆中书籍的情况。当作为管理员登录,会跳转到管理员专属页面,该页面提供给了管理员管理图书馆的功能,如删除违规用户、添加图书等。
然后根据数据表设计对应的javabean,对于每一个实体类,设计相应的dao类,在类中编写相应的方法来实现想要的功能。创建durid.properties文件,方便连接数据库时直接修改密码或用户名。
为了实现这些功能需要编写很多Jsp页面和Servlet类,每个页面对应着不同的功能,需要提交数据的页面发送请求给Servlet,再由Servlet响应并转发请求到目的页面。 基本功能实现后,部署到Tomcat,页面跳转过程中总有各种各样的问题和错误,也有很多忽略的细节导致的小错误,很难揪出来,花了很多时间查阅各种各样的错误的解决办法,最后总算是运行成功了。
- 23 -
武汉工程大学计算机科学与工程学院 综合设计报告
致 谢
在这次综合设计的撰写中,我得到了许多人的帮助。最需要感谢的是几位指导老师。在整个综合设计过程中,老师们在开始设计的选题,设计方案的确定以及具体的实施调试实现过程都孜孜不倦的给予了周密的指导和有建设性的意见。在我们遇到问题向其请教的过程中也受益匪浅,所以在此向他们表示我真诚的感谢。
同时,要感谢老师在综合设计上给予我的指导,提供给我的支持和帮助,这是我能顺利完成这次设计的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做的更完善。在此期间,我不仅学到了许多新的知识,也开阔了视野,提高了自己的设计能力。
在写报告的过程中,同学的帮助也是必不可少的。有许多细节问题是同学们一起讨论得出的。
此外,我还查阅了大量的文献,网络上海量的知识也帮助了我打开思路,对图书管理系统有了更深入的理解,感谢这些知识的提供者。最后再一次感谢所有在设计中帮助过我的良师益友和同学。
- 24 -
武汉工程大学计算机科学与工程学院 综合设计报告
参考文献
[1] 陈强.精通Java开发技术 . 清华大学出版社.2014
[2] 张剑飞.Java EE开发技术. 哈尔滨工业大学出版社.2013 [3] 何富贵.Jsp开发案例教程.机械工业出版社.2014
[4] 温浩宇.Web网站设计与开发教程.西安电子科技大学出版社.2014 [5] 石正喜.MySQL数据库实用教程.北京师范大学出版社.2014
[6] 姜承尧.高性能网站MySQL数据库实践.维普中文科技期刊数据库.2013 [7] 林学良.JSP&Servlet学习笔记.清华大学出版社.2012
[8] 刘京华.Java Web整合开发王者归来.清华大学出版社,2010
[9] 李兆锋.张得生.Java Web项目开发案例精粹.电子工业出版社.2010 [10] 王映龙.Java EE实用教程. 清华大学出版社.2011
- 25 -
武汉工程大学计算机科学与工程学院 综合设计报告
附录: package dao;
import domain.Book;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import util.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.ResultSet;
import java.sql.SQLException;
public class BookDao {
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
public Book retandborBook(String book_name){ //借/还书 try {
String sql = \"select * from book where book_name=?\"; Book book = template.queryForObject(sql, new BeanPropertyRowMapper } catch (DataAccessException e) { e.printStackTrace(); return null; } } public int update(Book book,int i){ //更新书籍数量 int sum = (book.getBook_num() + i); if(sum < 0){ return -1; } Connection connection = null; PreparedStatement preparedStatement = null; String sql = \"update book set book_num='\" + sum +\"' where book_name='\" + book.getBook_name()+\"'\"; try { connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); - 26 - 武汉工程大学计算机科学与工程学院 综合设计报告 }finally { JDBCUtils.close(connection,preparedStatement); } return 0; } /** * 管理员添加书籍 */ public void addBook(Book book) { String sql = \"insert into book(book_num,book_name,book_writer,publish_time,book_price,publish_house)\" + \" values(?,?,?,?,?,?)\"; template.update(sql, book.getBook_num(), book.getBook_name(), book.getBook_writer(), book.getPublish_time(), book.getBook_price(), book.getPublish_house()); } } package dao; import domain.Message; import util.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class MessageDao { public void addMessage(Message mess){ //增加所借书 Connection connection = null; PreparedStatement preparedStatement = null; String sql = \"insert into message(name,book_name,date) values (?,?,?)\"; try { connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,mess.getName()); - 27 - 武汉工程大学计算机科学与工程学院 综合设计报告 preparedStatement.setString(2,mess.getBook_name()); preparedStatement.setString(3,mess.getDate()); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(connection,preparedStatement); } } public List Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; String sql = \"select * from message where name=?\"; try { connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,name); resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ m = new Message(); m.setName(resultSet.getString(\"name\")); m.setBook_name(resultSet.getString(\"book_name\")); m.setDate(resultSet.getString(\"date\")); list.add(m); } } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtils.close(connection,preparedStatement,resultSet); } return list; } public boolean check(String name, String book_name){ //检查是否借了书 Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; String sql = \"select * from message where name=? and book_name=?\"; try { - 28 - 武汉工程大学计算机科学与工程学院 综合设计报告 connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,name); preparedStatement.setString(2,book_name); resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ String name1 = resultSet.getString(\"name\"); String book_name1 = resultSet.getString(\"book_name\"); //System.out.println(name1 + \"==\" + book_name1); if(name.equals(name1) && (book_name).equals(book_name1)){ return true; } } } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(connection,preparedStatement,resultSet); } return false; } public void returnMessage(String name, String book_name){ //归还图书 Connection connection = null; PreparedStatement preparedStatement = null; String sql = \"delete from message where name=? and book_name=?\"; try { connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,name); preparedStatement.setString(2,book_name); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(connection,preparedStatement); } } /** * 查询全部借阅信息 * @return */ public List List - 29 - 武汉工程大学计算机科学与工程学院 综合设计报告 Message m = null; Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; String sql = \"select * from message\"; try { connection = JDBCUtils.getConnection(); preparedStatement = connection.prepareStatement(sql); resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ m = new Message(); m.setName(resultSet.getString(\"name\")); m.setBook_name(resultSet.getString(\"book_name\")); m.setDate(resultSet.getString(\"date\")); list.add(m); } } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtils.close(connection,preparedStatement,resultSet); } return list; } } package dao; import domain.User; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import util.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * 操作数据库中User表的类 */ public class UserDao { - 30 - 武汉工程大学计算机科学与工程学院 综合设计报告 //JdbcTemplate对象共用 private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /** * 登录方法 * @param loginUser 只有用户名和密码 * @return User 包含用户全部数据 */ public User login(User loginUser) { try { //编写sql String sql = \"select * from user where name=? and password=?\"; //loginUser.getUsername(), loginUser.getPassword() ?位置放置参数 User user = template.queryForObject(sql, new BeanPropertyRowMapper return user; } catch (DataAccessException e) { e.printStackTrace(); //如果查询不到,返回null return null; } } public static List Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection = JDBCUtils.getConnection(); String sql = \"select * from book\"; preparedStatement = connection.prepareStatement(sql); resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ String message = \"书名:\" + resultSet.getString(\"book_name\") + \"<--->剩余数量:\" + resultSet.getInt(\"book_num\") + \"<--->作者为:\" + resultSet.getString(\"book_writer\") + \"<--->书的价格为:\" + resultSet.getInt(\"book_price\") + \"<--->出版时间为:\" + resultSet.getString(\"publish_time\") + \"<--->出版社为:\" + resultSet.getString(\"publish_house\"); list.add(message); - 31 - 武汉工程大学计算机科学与工程学院 综合设计报告 // System.out.println(message); //System.out.println(); } } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtils.close(connection,preparedStatement,resultSet); } return list; } public void addUser(User user){ Connection connection = null; try { connection = JDBCUtils.getConnection(); String sql = \"insert into user(name,password,id,sex,telephone,email) values (?,?,?,?,?,?)\"; template.update(sql, user.getName(), user.getPassword(), user.getId(), user.getSex(), user.getTelephone(), user.getEmail()); } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtils.close(connection, null); } } /** * 删除读者信息 * @param username */ public void deleteUser(String username) { String sql = \"delete from user where name=?\"; template.update(sql, username); } } - 32 -
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务