《javaweb简单的图书管理系统(共34页).doc》由会员分享,可在线阅读,更多相关《javaweb简单的图书管理系统(共34页).doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实 验 报 告实验课程: Web应用开发 学生姓名: 学 号: 专业班级: 2018年6月18日 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验项目名称Web应用开发综合训练二、实验目的和要求使用Java+JSP+Servlet技术,选用EL、JSTL、Struts、Hibernate、myBatis、jQuery等技术,开发一个基本Web的应用程序,以达到掌握Web应用开发的基本原理、具备使用Java+JSP+Servlet技术结合流行框架技术开发Web应用程序的能力,从而提升学生的Web编程能
2、力。要求学生自选题目,开发一个模拟的Web应用程序。可以一人一题,也可以多人一题。但是每人必须单独完成动态Web页面10页以上。要求学生根据需求描述独自完成需求分析,软件设计、程序模块设计以及程序的编写、调试和测试。设计和程序完成后,要求根据指定的格式要求,独自完成设计报告的撰写。三、实验基本情况本实训要求根据下述需求陈述写出需求分析文本并进行软件开发,并列出源代码和运行结果。四、需求分析项目介绍这是一个简单的图书管理系统,由一个管理员来实现对用户的删除,图书的增加,修改和图书的删除功能,用户注册登录后可以实现对图书的借阅和归还。由于时间关系在设计项目时有很多不好的地方,未来得及修改,在管理员
3、登录界面采用了图形验证码,由于是同样的技术,在用户登录界面就没有采用图形验证技术。功能需求1. 用户注册2. 图书添加3. 图书修改4. 用户管理5. 图书借阅6. 归还图书五、软件设计ER图程序流程数据库设计模块设计及运行结果项目整体采用MVC 模式,整体上运用jsp+javabean+servlet+jdbc+dao,每个jsp页面采用jQuery技术作为背景,实现简单的动态背景,部分页面运用EL、JSTL、js中的点击事件、Bootsrap、图形验证码、分页技术以及邮箱页面。六、源代码1.用户类User.Javapackage vo;public class User private S
4、tring name,pwd;public String getName() return name;public void setName(String name) this.name = name;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd = pwd;2.图书类bookinfo.javapackage vo;public class bookinfo private String bno,bname,author,price,other;public String getBno() r
5、eturn bno;public void setBno(String bno) this.bno = bno;public String getBname() return bname;public void setBname(String bname) this.bname = bname;public String getAuthor() return author;public void setAuthor(String author) this.author = author;public String getPrice() return price;public void setP
6、rice(String price) this.price = price;public String getOther() return other;public void setOther(String other) this.other = other;3.借书信息类lendbook.infopackage vo;public class lendbook private String username, bno,bname,author,price,other;public String getUsername() return username;public void setUser
7、name(String username) this.username = username;public String getBno() return bno;public void setBno(String bno) this.bno = bno;public String getBname() return bname;public void setBname(String bname) this.bname = bname;public String getAuthor() return author;public void setAuthor(String author) this
8、.author = author;public String getPrice() return price;public void setPrice(String price) this.price = price;public String getOther() return other;public void setOther(String other) this.other = other;4.用户功能UserDao.javapackage dao;import java.util.List;import java.sql.*;import java.util.ArrayList;im
9、port vo.bookinfo;import vo.User;import vo.lendbook;import dbc.JdbcUtil;public class UserDaopublic void add(User user) throws Exception/添加用户Connection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=insert into user values(?,?);ps=conn.prepareStatement(sql);ps.setStrin
10、g(1, user.getName();ps.setString(2, user.getPwd();ps.executeUpdate();finallyJdbcUtil.free(null, ps, conn);public void add_book(bookinfo book) throws Exception/添加图书Connection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=insert into book_info values(?,?,?,?,?);ps=con
11、n.prepareStatement(sql);ps.setString(1, book.getBno();ps.setString(2, book.getBname();ps.setString(3, book.getAuthor();ps.setString(4, book.getPrice();ps.setString(5, book.getOther();ps.executeUpdate();finallyJdbcUtil.free(null, ps, conn);public void lend_book(lendbook book) throws Exception/借出图书Con
12、nection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=insert into lendbook values(?,?,?,?,?,?);ps=conn.prepareStatement(sql);ps.setString(1, book.getUsername();ps.setInt(2, Integer.parseInt(book.getBno();ps.setString(3, book.getBname();ps.setString(4, book.getAuthor
13、();ps.setString(5, book.getPrice();ps.setString(6, book.getOther();ps.executeUpdate();finallyJdbcUtil.free(null, ps, conn);public List QueryAll() throws Exception/列出全部用户Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;List userList=new ArrayList();tryconn=JdbcUtil.getConnection();Str
14、ing sql=select * from user;ps=conn.prepareStatement(sql);rs=ps.executeQuery();while(rs.next()User user=new User();user.setName(rs.getString(1);user.setPwd(rs.getString(2);userList.add(user);finallyJdbcUtil.free(rs, ps, conn);return userList;public void delete(String bookno) throws Exception/删除图书Conn
15、ection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=delete from book_info where bno=?;ps=conn.prepareStatement(sql);ps.setString(1, bookno);ps.executeUpdate();finallyJdbcUtil.free(null, ps, conn);public void returnbook(String bno,String username) throws Exception/归
16、还图书Connection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=delete from lendbook where bno=? and username=?;ps=conn.prepareStatement(sql);ps.setString(1, bno);ps.setString(2, username);ps.executeUpdate();finallyJdbcUtil.free(null, ps, conn);public void delete_user(S
17、tring username) throws Exception/删除用户Connection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=delete from user where name=?;ps=conn.prepareStatement(sql);ps.setString(1, username);ps.executeUpdate();finallyJdbcUtil.free(null, ps, conn);public int getPageCount() thro
18、ws Exception/分页Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;int recordCount=0,t1=0,t2=0;tryconn=JdbcUtil.getConnection();String sql=select count(*) from book_info;ps=conn.prepareStatement(sql);rs=ps.executeQuery();rs.next();recordCount=rs.getInt(1);t1=recordCount%5;t2=recordCount
19、/5;finallyJdbcUtil.free(null, ps, conn);return t1=0?t2:t2+1;public List QueryAll_book(int pageNo) throws Exception/列出全部图书Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;int pageSize=5;int startRecno=(pageNo-1)*pageSize;List bookList=new ArrayList();tryconn=JdbcUtil.getConnection();S
20、tring sql=select * from book_info order by bno limit ?,?;ps=conn.prepareStatement(sql);ps.setInt(1, startRecno);ps.setInt(2, pageSize);rs=ps.executeQuery();while(rs.next()bookinfo book=new bookinfo();book.setBno(rs.getString(1);book.setBname(rs.getString(2);book.setAuthor(rs.getString(3);book.setPri
21、ce(rs.getString(4);book.setOther(rs.getString(5);bookList.add(book);finallyJdbcUtil.free(rs, ps, conn);return bookList;public List QueryAll_lendbook(String username) throws Exception/列出已借图书Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;List bookList=new ArrayList();tryconn=JdbcUtil
22、.getConnection();String sql=select * from lendbook where username=?;ps=conn.prepareStatement(sql);ps.setString(1,username );rs=ps.executeQuery();while(rs.next()lendbook book=new lendbook();book.setUsername(rs.getString(1);book.setBno(rs.getString(2);book.setBname(rs.getString(3);book.setAuthor(rs.ge
23、tString(4);book.setPrice(rs.getString(5);book.setOther(rs.getString(6);bookList.add(book);finallyJdbcUtil.free(rs, ps, conn);return bookList;public void modify_book(bookinfo book) throws Exception/修改图书Connection conn=null;PreparedStatement ps=null;tryconn=JdbcUtil.getConnection();String sql=update b
24、ook_info set bname=?,author=?,price=?,other=? where bno=?;ps=conn.prepareStatement(sql);ps.setString(1, book.getBname();ps.setString(2, book.getAuthor();ps.setString(3, book.getPrice();ps.setString(4, book.getOther();ps.setString(5, book.getBno();ps.executeUpdate();finallyJdbcUtil.free(null, ps, con
25、n);5.获取表格值代码:function getTableContent(node) var tr1 = node.parentNode.parentNode; var name=tr1.cells0.innerText; window.location.href=/delete_user?name=+name; alert(name); 7. 背景jQuery代码由于代码过长,不展示;七、运行结果1.管理员登录页面:管理员登录界面采用简单的CSS、jQuery、以及图形验证码,当图形验证码输入不正确以及账号密码输入不正确会出现相相应提示,同时点击相信的输入框,提示输入对应类型的背景字体会消
26、失,当鼠标点击其他地方时会相应出现,采用的是placeholder属性,我们平时单纯的html的输入框以及提交的按钮,让人感觉不是很舒适,采用简单的CSS将他们的边框去除,然后加上相应的边框。2.登录主界面:导航栏感谢bootstrap开源,运用了始终悬浮在顶部的导航栏,奈何页面长度有限不能向下滚动,无法看出这一功能,页面内容由于思维过于局限,暂时没有想出用什么内容来填充,只想到类似于积分的东西,这一内容在以后会作出改进,目前只有一个大概的模板,同时在改变页面的分辨率时导航栏中的功能选项会变成一个按钮,用一个便签来装载,本页也有一个亮点便是响应式,在改变分辨率时板块并不会发生错乱的现象,运用栅
27、格系统思想,在第二张图张可以看到效果,由于调各种分辨率国语繁琐,所以这一技术只在两个页面运用到,以后有时间会加以改善。3.管理用户页面:点击管理用户的小便签会出现用户的列表,点击删除用户可以将用户从数据库中删除,同时页面中的几个小符号也是运用bootstrap中的组件,给人以更直观清楚的描述功能,在本页面我并没有采用分页技术,但是在后面几个页面中有采用分页技术,在做页面的时候并没有考虑到有很多的用户,只是用几个来验证,所以就没有用分页技术,在这个点击就删除的技术上一开始遇到了难题,并不知道怎么样去些控制的后台,后来在页面中运用了js的技术,可以利用表格的结点来获取每个 表格单元格的内容,再将按
28、键设置为this,点击便是获取当前行的值,并传到servlet中调用dao中删除用户的函数,便实现了。同时利用js的鼠标事件,鼠标移动到当前行时会改变颜色。4.添加图书页面:添加图书的页面并没有多么的新奇,同样还导航栏加动态背景,同样输入框也运用了placeholder属性,点击出现相应的字体和消失,将输入框中的字符串传到servlet并调用DAO中的插入图书方法;5.展示所有图书页面:在本页面运用到了分页技术,同样单击删除图书可以得到表格内容,通过js传到servlet中再调用删除用户的功能,就实现了删除用户,同时在列出图书时用到了EL和JSTL标签来循环输出;还有一个问题就是我并没有考虑到
29、大量图书的问题,没有用用单独的页面去实现查找功能,但是相对很简单,所以并没有写。8. 修改图书页面:本页面和添加图书页面几乎相同,只有调用的方法不同,调用的是更新的方法9. 用户注册及登录:登录和注册页面大体相同,也只有调用的方法不一样10. 用户登录页面:在此页面运用了一个session将用户名存进去,进入登录页面,会出现欢迎提示,同时也是响应式的栅格系统,由于没有完善积分系统,所以就是一些空白的框架。11. 借书页面:在借书页面先用EL和JSTL标签输出可借的图书,其实在图书号前一栏还隐藏了一个用户名,点击借阅图书可以获取用户名和图书号,将值传到servlet调用插入的方法,将用户名和图书
30、号作为主键,来区分不同的用户所借的图书,同时也运用了bootstrap中的组件来使得功能键更加明显。12. 还书页面:由于没有点击很多本书,所以只出现了一本,原理在上个功能页面说了,与之类似,采用EL和JSTL标签循环输出,获取用户名和图书号来归还图书。13. 联系和建议页面:由于现在的管理员是我,所以将收件人地址设置为默认邮箱,刚开始没有找到合适的jar包,所以一直报错,这个只是最简单的邮件页面,以后会更新成更高级一点的邮件发送,可以联系我们和用来采纳用户的意见八、体会和建议通过此次的项目,熟练掌握了基本的MVC开发模式,并熟悉了一些其他内容,包括对js和jQuery的使用,解决了部分以前不
31、懂的问题,为以后的开发提供了些许便利。参考图书:javaweb 应用开发技术与案例教程张继军 董卫 编著红尘紫陌,有轰轰烈烈的昨日,也有平淡如水的今天。在生活平平仄仄的韵脚中,一直都泛着故事的清香,我看到每一寸的光阴都落在我的宣纸上,跌进每一个方方正正的小楷里,沉香、迷醉。秋光静好,窗外阳光和细微的风都好,我也尚好。不去向秋寒暄,只愿坐在十月的门扉,写一阙清丽的小诗,送给秋天;在一杯香茗里欣然,读一抹秋意阑珊,依着深秋,细嗅桂花的香馥,赏她们的淡定从容地绽放。听风穿过幽幽长廊,在平淡简约的人生中,把日子过成云卷云舒,行云流水的模样,过成一幅画,一首诗。有你,有我,有爱,有暖,就好。在安静恬淡的
32、时光里,勾勒我们最美的今天和明天。醉一帘秋之幽梦,写一行小字,念一个远方,痴一生眷恋。一记流年,一寸相思。不许海誓山盟,只许你在,我就在。你是我前世今生的爱,是刻在心头的一枚朱砂。任由尘世千般云烟散尽,任由风沙凝固成沙漠的墙,你依然是我生命的风景。人生苦短,且行且珍惜。十月如诗,就让我独醉其中吧!行走红尘,做最简单的自己。简单让人快乐,快乐的人,都是因为简单。心豁达,坦然,不存勾心斗角。从容面对人生,做最好的自己,巧笑嫣然,你若盛开,蝴蝶自来。那就做一朵花吧!优雅绽放,优雅凋落,不带忧伤,只记美好。这个秋日,一切都很美,阳光浅浅,云舞苍穹,闲风淡淡。捡拾一片薄如蝉翼的枯叶,写着季节流转的故事,
33、沉淀着岁月的风华。安静的享受生命途径上的一山一水。执笔挥墨,耕耘爱的世界,轻声吟唱岁月安好,把一缕缕醉人的情怀,婉约成小字里的风月千里,泅成指尖上的浪漫和馨香。静立于秋光潋滟里,赏碧水云天,携来闲云几片,柔风几缕,缝进岁月的香囊里,将唯美雅致收藏,醉卧美好时光。秋,是静美的,是收获的,是满载希望而归的季节。秋只因叶落,葳蕤消,花残瘦影,不免总给人一种无边萧瑟。然而秋,也有秋的美。如黄巢不第后赋菊诗中有句:待到秋来九月八,我花开后百花杀。是不是听起来特别霸道有味。谁说秋实悲凉的,百花残了何妨?我菊正艳艳,香影欹满山。还有一句歌词叫:春游百花,秋有月。秋天的月,要比任何季节都美,都明亮,都让人迷恋
34、陶然。秋有赤枫把美丽的秋燃烧成通红火辣,秋有万千银杏如蝶,秋哪有萧索?秋一直很美,你可有发现美的眼睛呢?每一个季节,都有着不同的旖旎。人生何尝不是如四季,有青春绝艳的花季,也有老骥伏枥的暮年。容颜老去,青春不复,所有的美好不会消失,一直珍藏着。即便时光变得荒芜,而你我一直永如初见,彼此温柔以待。走进十月,蓦然回首,你我都在,惟愿光阴路上,且行且惜,寂静相伴,无悔一生。红尘紫陌,有轰轰烈烈的昨日,也有平淡如水的今天。在生活平平仄仄的韵脚中,一直都泛着故事的清香,我看到每一寸的光阴都落在我的宣纸上,跌进每一个方方正正的小楷里,沉香、迷醉。秋光静好,窗外阳光和细微的风都好,我也尚好。不去向秋寒暄,只
35、愿坐在十月的门扉,写一阙清丽的小诗,送给秋天;在一杯香茗里欣然,读一抹秋意阑珊,依着深秋,细嗅桂花的香馥,赏她们的淡定从容地绽放。听风穿过幽幽长廊,在平淡简约的人生中,把日子过成云卷云舒,行云流水的模样,过成一幅画,一首诗。有你,有我,有爱,有暖,就好。在安静恬淡的时光里,勾勒我们最美的今天和明天。醉一帘秋之幽梦,写一行小字,念一个远方,痴一生眷恋。一记流年,一寸相思。不许海誓山盟,只许你在,我就在。你是我前世今生的爱,是刻在心头的一枚朱砂。任由尘世千般云烟散尽,任由风沙凝固成沙漠的墙,你依然是我生命的风景。人生苦短,且行且珍惜。十月如诗,就让我独醉其中吧!行走红尘,做最简单的自己。简单让人快
36、乐,快乐的人,都是因为简单。心豁达,坦然,不存勾心斗角。从容面对人生,做最好的自己,巧笑嫣然,你若盛开,蝴蝶自来。那就做一朵花吧!优雅绽放,优雅凋落,不带忧伤,只记美好。这个秋日,一切都很美,阳光浅浅,云舞苍穹,闲风淡淡。捡拾一片薄如蝉翼的枯叶,写着季节流转的故事,沉淀着岁月的风华。安静的享受生命途径上的一山一水。执笔挥墨,耕耘爱的世界,轻声吟唱岁月安好,把一缕缕醉人的情怀,婉约成小字里的风月千里,泅成指尖上的浪漫和馨香。静立于秋光潋滟里,赏碧水云天,携来闲云几片,柔风几缕,缝进岁月的香囊里,将唯美雅致收藏,醉卧美好时光。秋,是静美的,是收获的,是满载希望而归的季节。秋只因叶落,葳蕤消,花残瘦
37、影,不免总给人一种无边萧瑟。然而秋,也有秋的美。如黄巢不第后赋菊诗中有句:待到秋来九月八,我花开后百花杀。是不是听起来特别霸道有味。谁说秋实悲凉的,百花残了何妨?我菊正艳艳,香影欹满山。还有一句歌词叫:春游百花,秋有月。秋天的月,要比任何季节都美,都明亮,都让人迷恋陶然。秋有赤枫把美丽的秋燃烧成通红火辣,秋有万千银杏如蝶,秋哪有萧索?秋一直很美,你可有发现美的眼睛呢?每一个季节,都有着不同的旖旎。人生何尝不是如四季,有青春绝艳的花季,也有老骥伏枥的暮年。容颜老去,青春不复,所有的美好不会消失,一直珍藏着。即便时光变得荒芜,而你我一直永如初见,彼此温柔以待。走进十月,蓦然回首,你我都在,惟愿光阴路上,且行且惜,寂静相伴,无悔一生。专心-专注-专业