javaweb简单的图书标准管理系统.doc
《javaweb简单的图书标准管理系统.doc》由会员分享,可在线阅读,更多相关《javaweb简单的图书标准管理系统.doc(30页珍藏版)》请在咨信网上搜索。
实 验 报 告 试验课程: Web应用开发 学生姓名: 学 号: 专业班级: 6月18日 南昌大学试验汇报 学生姓名: 学 号: 专业班级: 试验类型:□ 验证 ■ 综合 □ 设计 □ 创新 试验日期: 试验成绩: 一、试验项目名称 《Web应用开发》综合训练 二、试验目标和要求 使用Java+JSP+Servlet技术,选择EL、JSTL、Struts、Hibernate、myBatis、jQuery等技术,开发一个基础Web应用程序,以达成掌握Web应用开发基础原理、含有使用Java+JSP+Servlet技术结合流行框架技术开发Web应用程序能力,从而提升学生Web编程能力。 要求学生自选题目,开发一个模拟Web应用程序。能够一人一题,也能够多人一题。不过每人必需单独完成动态Web页面10页以上。 要求学生依据需求描述独自完成需求分析,软件设计、程序模块设计和程序编写、调试和测试。 设计和程序完成后,要求依据指定格式要求,独自完成设计汇报撰写。 三、试验基础情况 本实训要求依据下述需求陈说写出需求分析文本并进行软件开发,并列出源代码和运行结果。 四、需求分析 项目介绍 这是一个简单图书管理系统,由一个管理员来实现对用户删除,图书增加,修改和图书删除功效,用户注册登录后能够实现对图书借阅和归还。因为时间关系在设计项目时有很多不好地方,未来得及修改,在管理员登录界面采取了图形验证码,因为是一样技术,在用户登录界面就没有采取图形验证技术。 功效需求 1. 用户注册 2. 图书添加 3. 图书修改 4. 用户管理 5. 图书借阅 6. 归还图书 五、软件设计 ER图 程序步骤 数据库设计 模块设计及运行结果 项目整体采取MVC 模式,整体上利用jsp+javabean+servlet+jdbc+dao,每个jsp页面采取jQuery技术作为背景,实现简单动态背景,部分页面利用EL、JSTL、js中点击事件、Bootsrap、图形验证码、分页技术和邮箱页面。 六、源代码 1.用户类User.Java package vo; public class User { private String 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.java package vo; public class bookinfo { private String bno,bname,author,price,other; 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.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; } } 3.借书信息类lendbook.info package vo; public class lendbook { private String username, bno,bname,author,price,other; public String getUsername() { return username; } public void setUsername(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.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.java package dao; import java.util.List; import java.sql.*; import java.util.ArrayList; import vo.bookinfo; import vo.User; import vo.lendbook; import dbc.JdbcUtil; public class UserDao { public void add(User user) throws Exception{//添加用户 Connection conn=null; PreparedStatement ps=null; try { conn=JdbcUtil.getConnection(); String sql="insert into user values(?,?)"; ps=conn.prepareStatement(sql); ps.setString(1, user.getName()); ps.setString(2, user.getPwd()); ps.executeUpdate(); } finally { JdbcUtil.free(null, ps, conn); } } public void add_book(bookinfo book) throws Exception{//添加图书 Connection conn=null; PreparedStatement ps=null; try { conn=JdbcUtil.getConnection(); String sql="insert into book_info values(?,?,?,?,?)"; ps=conn.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(); } finally { JdbcUtil.free(null, ps, conn); } } public void lend_book(lendbook book) throws Exception{//借出图书 Connection conn=null; PreparedStatement ps=null; try { conn=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()); ps.setString(5, book.getPrice()); ps.setString(6, book.getOther()); ps.executeUpdate(); } finally { JdbcUtil.free(null, ps, conn); } } public List<User> QueryAll() throws Exception//列出全部用户 { Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; List<User> userList=new ArrayList<User>(); try { conn=JdbcUtil.getConnection(); String 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); } } finally { JdbcUtil.free(rs, ps, conn); } return userList; } public void delete(String bookno) throws Exception//删除图书 { Connection conn=null; PreparedStatement ps=null; try{ conn=JdbcUtil.getConnection(); String sql="delete from book_info where bno=?"; ps=conn.prepareStatement(sql); ps.setString(1, bookno); ps.executeUpdate(); } finally{ JdbcUtil.free(null, ps, conn); } } public void returnbook(String bno,String username) throws Exception//归还图书 { Connection conn=null; PreparedStatement ps=null; try{ conn=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(); } finally{ JdbcUtil.free(null, ps, conn); } } public void delete_user(String username) throws Exception//删除用户 { Connection conn=null; PreparedStatement ps=null; try{ conn=JdbcUtil.getConnection(); String sql="delete from user where name=?"; ps=conn.prepareStatement(sql); ps.setString(1, username); ps.executeUpdate(); } finally{ JdbcUtil.free(null, ps, conn); } } public int getPageCount() throws Exception{//分页 Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; int recordCount=0,t1=0,t2=0; try { conn=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/5; } finally { JdbcUtil.free(null, ps, conn); } return t1==0?t2:t2+1; } public List<bookinfo> QueryAll_book(int pageNo) throws Exception//列出全部图书 { Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; int pageSize=5; int startRecno=(pageNo-1)*pageSize; List<bookinfo> bookList=new ArrayList<bookinfo>(); try { conn=JdbcUtil.getConnection(); String 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.setPrice(rs.getString(4)); book.setOther(rs.getString(5)); bookList.add(book); } } finally { JdbcUtil.free(rs, ps, conn); } return bookList; } public List<lendbook> QueryAll_lendbook(String username) throws Exception//列出已借图书 { Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; List<lendbook> bookList=new ArrayList<lendbook>(); try { conn=JdbcUtil.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.getString(4)); book.setPrice(rs.getString(5)); book.setOther(rs.getString(6)); bookList.add(book); } } finally { JdbcUtil.free(rs, ps, conn); } return bookList; } public void modify_book(bookinfo book) throws Exception{//修改图书 Connection conn=null; PreparedStatement ps=null; try { conn=JdbcUtil.getConnection(); String sql="update book_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(); } finally { JdbcUtil.free(null, ps, conn); } } } 5.获取表格值代码: function getTableContent(node) { var tr1 = node.parentNode.parentNode; var name=tr1.cells[0].innerText; window.location.href="<%=path%>/delete_user?name="+name; alert(name); } 7. 背景jQuery代码 因为代码过长,不展示; 七、运行结果 1.管理员登录页面:管理员登录界面采取简单CSS、jQuery、和图形验证码,当图形验证码输入不正确和账号密码输入不正确会出现相对应提醒,同时点击相信输入框,提醒输入对应类型背景字体会消失,当鼠标点击其它地方时会对应出现,采取是placeholder属性,我们平时单纯html输入框和提交按钮,让人感觉不是很舒适,采取简单CSS将她们边框去除,然后加上对应边框。 2.登录主界面: 导航栏感谢bootstrap开源,利用了一直悬浮在顶部导航栏,奈何页面长度有限不能向下滚动,无法看出这一功效,页面内容因为思维过于局限,临时没有想出用什么内容来填充,只想到类似于积分东西,这一内容在以后会作出改善,现在只有一个大约模板,同时在改变页面分辨率时导航栏中功效选项会变成一个按钮,用一个<nva>便签来装载,本页也有一个亮点便是响应式,在改变分辨率时板块并不会发生错乱现象,利用栅格系统思想,在第二张图张能够看到效果,因为调多种分辨率国语繁琐,所以这一技术只在两个页面利用到,以后有时间会加以改善。 3.管理用户页面: 点击管理用户小便签会出现用户列表,点击删除用户能够将用户从数据库中删除,同时页面中多个小符号也是利用bootstrap中组件,给人以更直观清楚描述功效,在本页面我并没有采取分页技术,不过在后面多个页面中有采取分页技术,在做页面时候并没有考虑到有很多用户,只是用多个来验证,所以就没有用分页技术,在这个点击就删除技术上一开始碰到了难题,并不知道怎么样去些控制后台,以后在页面中利用了js技术,能够利用表格结点来获取每个 表格单元格内容,再将按键设置为this,点击便是获取目前行值,并传到servlet中调用dao中删除用户函数,便实现了。同时利用js鼠标事件,鼠标移动到目前行时会改变颜色。 4.添加图书页面: 添加图书页面并没有多么新奇,一样还导航栏加动态背景,一样输入框也利用了placeholder属性,点击出现对应字体和消失,将输入框中字符串传到servlet并调用DAO中插入图书方法; 5.展示全部图书页面: 在本页面利用到了分页技术,一样单击删除图书能够得到表格内容,经过js传到servlet中再调用删除用户功效,就实现了删除用户,同时在列出图书时用到了EL和JSTL标签来循环输出;还有一个问题就是我并没有考虑到大量图书问题,没有用用单独页面去实现查找功效,不过相对很简单,所以并没有写。 8. 修改图书页面: 本页面和添加图书页面几乎相同,只有调用方法不一样,调用是更新方法 9. 用户注册及登录: 登录和注册页面大致相同,也只有调用方法不一样 10. 用户登录页面: 在此页面利用了一个session将用户名存进去,进入登录页面,会出现欢迎提醒,同时也是响应式栅格系统,因为没有完善积分系统,所以就是部分空白框架。 11. 借书页面: 在借书页面先用EL和JSTL标签输出可借图书,其实在图书号前一栏还隐藏了一个用户名,点击借阅图书能够获取用户名和图书号,将值传到servlet调用插入方法,将用户名和图书号作为主键,来区分不一样用户所借图书,同时也利用了bootstrap中组件来使得功效键愈加显著。 12. 还书页面: 因为没有点击很多本书,所以只出现了一本,原理在上个功效页面说了,和之类似,采取EL和JSTL标签循环输出,获取用户名和图书号来归还图书。 13. 联络和提议页面: 因为现在管理员是我,所以将收件人地址设置为默认邮箱,刚开始没有找到适宜jar包,所以一直报错,这个只是最简单邮件页面,以后会更新成更高级一点邮件发送,能够联络我们和用来采纳用户意见 八、体会和提议 经过此次项目,熟练掌握了基础MVC开发模式,并熟悉了部分其它内容,包含对js和jQuery使用,处理了部分以前不懂问题,为以后开发提供了些许便利。 参考图书:《javaweb 应用开发技术和案例教程》张继军 董卫 编著- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaweb 简单 图书 标准 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文