




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
装订线长 春 大 学 课程设计纸目 录一、 设计目的第2页二、 功能介绍第3页三、 程序流程第4页四、 设计步骤第5页五、 设计总结第6页六、 程序清单第7页一、 设计目的此次的课程设计是图书管理系统,它的产生可以方便用户进行操作,以减少用户的误操作。作为一个软件,功能是第一要素,所以,我此次的设计以功能为主,在美工和页面的设计并没有什么要求。通过此次课程设计,增加了我们理论联系实际和解决实际问题的能力,也使我们对JAVA这门语言有了更深的了解,使我们可以用最简单、便捷的语言和方法实现相同的功能,深刻明白了其优越性,同时也提高了我们的学习JAVA的兴趣,给我们以后学习、工作打下坚实的基础。二、 功能介绍此次设计的要求有如下六个功能:(1)具有新用户注册功能。(2)具有注册用户登录功能。(3)具有图书信息的录入功能。(4)具有借出和归还登记功能。(5)具有数据查询功能,可以实现查询全部信息和按条件执行查询。(6)具有按条件删除数据功能。首先,我们实现注册和登录功能,进入系统软件后,可以进行一下操作:进入系统首页注册登录模 糊查 询图 书并 且删 除图 书归 还登 记功 能图 书借 出登 记功 能图 书信 息录 入功 能三、 程序流程此次JAVA课程设计,我采用的是MVC开发模式,具体内容如下图所示:1) 首先,在JSP页面有一个form表单,里面存有需要使用的参数供增删改查使用,当我们通过submit按钮提交表单时,它会寻找action属性值,走到web.xml。在web.xml 中,通过查找到与action属性值相同的值,再通过标签中值,找到相应的,跳转到相应的servlet中。2) 然后,在servlet中,把从JSP页面接收到的参数封装到useBean中(为了减少传递给JavaBean的参数),通过实例化一个JavaBean对象,调用其方法,进行一些连接数据库的操作。3) JavaBean包含一些增删改查的操作,进行业务处理,连接到数据库中,最后把操作的结果返回给servlet中。4) Servlet判断返回的结果,如果成功就跳转到成功页面所对应的JSP,如果失败,在返回form表单所在的页面,重新进行操作。四、 设计步骤1) 需求分析在课程设计之初,最重要的是需求分析,要深入了解所有的业务及其流程,才能在编码时减少误区和编码时间。了解完成所要实现的功能之后,需要考虑设计所需要使用的开发工具,这对不同规模的问题,采取的开发模式、服务器、数据库都是不一样的。我们的设计相对比较简单,所以,选择了tomcat5.0作为图书管理系统所需要的服务器,mysql作为数据库(mysql是免费的,符合设计真实情况),myeclipse作为开发工具,360浏览器作为测试的工具,同时使用JSP书写web页面,javascript进行简单的校验,采用ajax提交异步请求,实现一些相对特殊的功能。这次设计的数据库名称时javacourse,它包含三张数据表,具体如下所示:i. user(管理员表):ii. book(图书表):iii. borrowbook(借书记录表):2) 详细设计当已经对业务有了深入的了解之后,开始进行功能流程的详细设计,我们可以通过图纸等工具,策划出设计的功能,如功能介绍所示。3) 编码阶段:准备工作已经完成,我们可以正式进入编码阶段。i. 创建一个web projectJavaCourse,并把其发布到tomcat中。ii. 配置连接池:连接池技术可以预先建立一定的连接,当我们进行数据库访问时,直接取得连接池中的空闲链接可以减少对数据库的链接操作,很好的减轻了数据库的负担。iii. Context ctx = new InitialContext();/实例化上下文对象DataSource ds = (DataSource) ctx.lookup(java:/comp/env/JavaCourse); /找到JNDI数据源,并且返回数据源对象iv. 同时,我们还需要在tomcat服务器下配置JNDI数据源,具体的配置如下图所示:v. 登录功能:a) 书写JSP页面代码:JSP页面是动态的web页面,通过一些提交操作可以进行数据库访问操作,而form表单又是提交的核心控件,其代码如下:用户名: 密码: 通过以上代码我们可以观察到,当我们点击登录按钮时,它会使用userlogin提交请求,到web.xml里面寻找所要使用的servlet。b) 配置web.xml:web.xml是web project的核心文件,它配置了该工程的一些配置信息,当我们启动服务器时,会首先读取web.xml,了解工程的基本信息。登录的请求配置如下: userlogin .servlet. userlogin userlogin /userlogin 此时,服务器就知道登录功能需要跳转到.servlet.login这个servlet文件中。c) 编写servlet:servlet可以接收表单传过来的参数值,进行对数据库的操作。因为我采用的是MVC的开发模式,所以使用了javabean单独作为连接数据库的操作,自然需要在servlet中创建一个javabean的对象,调用其相应的函数,代码如下所示:String uname = request.getParameter(username);String pword = request.getParameter(pword);response.setContentType(text/html; charset=UTF-8);User user = new User();user.setUsername(uname);UserLoginJavaBean login = new UserLoginJavaBean();ResultSet rs = login.getUser(user);d) 编写javabean:javabean里面封装了调用数据库的方法,可以进行增删改查操作,其中,使用了连接池进行操作,代码如下:public class UserLoginJavaBean public ResultSet getUser(User user) String sql = select username,password from user where username= + user.getUsername()+ ;Conn conn = new Conn();ResultSet rs = conn.query(sql);return rs; e) 判断结果,实现页面跳转:实现登录功能,我们必须要先判断出该用户是否存在,以及密码是否正确,javabean中返回的结果是ResultSet类型的对象,我们通过判断rs.next()是否为true,来查询该用户名是否存在,若存在,我们再比对其密码是否正确,如果密码正确,提示其登录成功,并且让它跳转到main.jsp(即主页面),否则提示其密码有误,让其重新登录;当rs.next()为false时,说明不存在该用户,则提示给予其提示,让其重新登录。try if (rs.next() session.setAttribute(user, rs.getString(username);if(rs.getString(username).equals(uname)if(rs.getString(password).equals(pword)out.println();out.println(alert(恭喜您,登录成功!););out.println(window.location=main.jsp;);out.println();elseout.println(); out.println(alert(对不起,密码有误!););out.println(window.location=index.jsp;);out.println(); else out.println();out.println(alert(对不起,该用户名不存在!););out.println(window.location=index.jsp;);out.println(); catch (SQLException e) e.printStackTrace();vi. 按条件检索并且删除:该功能模块中主要包含按照图书名称、图书类型、图书代码和作者姓名四个条件进行模糊查询,并实现了任意环境下的分页功能,以及任一图书的删除功能。以下该图片是查询全部图书信息的页面:当然,我们可以查询图书名称包含java并且作者包含j的图书信息,查询结果如下图所示:vii. 代码亮点:此次设计,我使用了ajax进行了一些简单的校验,从登录页面我们可以看到,当用户名不存在时,会给出我们提示。在注册页面中,我也采用该技术,我们知道,任何两个人的身份证号码是不会出现相同(即便出现也是因为系统出现错误),就设计而言,不能出现两个人的用户名是相同的,当有人使用数据库中已经存在的用户名进行注册时,我们给予其提示,并不让其进行注册;当用户名不存在时,该用户名就可以注册,如下图所示:4) 测试阶段五、 设计总结这学期是我们第一次在学校学习JAVA这门编程语言,因为有以前在培训班学习JAVA的基础,所以对我而言,此次设计相对比较容易。我们所设计的图书管理系统主要实现了登录、注册、录入图书、借书、还书、删除图书以及模糊查询等功能,功能实现起来比较简单。而且,我选用的是MVC的开发模式,程序代码有很大的可重用性和逻辑性,当我们进行维护时,可以更加的便捷。对我来说,JAVA好像是一根救命稻草,C语言复杂性让我惧怕,从事C语言的编程是一项很大的挑战,学习了JAVA之后,越来越深刻的了解了面向对象的含义,通过学习,慢慢了解了那些构建的JAVA基础之上的开发语言和框架,编程慢慢变成一项相对容易的工作,成为一件趣事。短短一周的设计马上就要结束了,通过设计,是我可以更深刻的了解JAVA的魅力,熟悉了以前被遗忘的知识,更深刻的认识到其简单性,易用性。以后的学习道路还很长,此次的课程设计为我们开启了一个良好的开端,为我们今后的毕业设计奠定了基础。以后学习的路还有很长,我们仍需要继续努力,掌握更深刻的知识,以备以后的学习和工作所需。六、 程序清单1) 模糊查询并删除页面代码:图书录入页面检索图书页面图书名称图书类型图书代码作者姓名 allpage | pages 1) cpage = 1; /-默认当前要显示的页码beginpos=0; /-=默认记录开始的位置为0endpos=ipage; /-默认结束位置为第一页的结尾else cpage = pages; /-当前要显示的页码beginpos=pages*ipage-ipage; /-得到记录开始的位置endpos=pages*ipage; /-得到记录结束的位置 rst=cn.query(sql);for(i=0;i图书名称图书类型图书编号作者姓名出版社图书价格所在书架图书备注删除%int ii=beginpos+1;for(int j=beginpos;ja href=DeleteBook?id= onclick=return confirm(您确认要删除此书吗?)删除共有 条记录,当前第 / 页a href=checkBook.jsp?pages=&bookname=&booktype=&bookwriter=&bookcode=首页a href=checkBook.jsp?pages=&bookname=&booktype=&bookwriter=&bookcode=上一页a href=checkBook.jsp?pages=&bookname=&booktype=&bookwriter=&bookcode=下一页a href=checkBook.jsp?pages=&bookname=&booktype=&bookwriter=&bookcode=尾页2) 注册功能代码:用户注册页面var XMLHttpReq = false; function createXMLHttpRequest() if(window.XMLHttpRequest)XMLHttpReq = new XMLHttpRequest();else if(window.ActiveXObject)try XMLHttpReq = new ActiveXObject(Msxml2.XMLHTTP);catch(e)try XMLHttpReq = new ActiveXObject(Microsoft.XMLHTTP);catch(e)function sendRequest(url) createXMLHttpRequest();XMLHttpReq.open(GET, url, true);XMLHttpReq.onreadystatechange = processResponse;XMLHttpReq.send(null); function processResponse() if (XMLHttpReq.readyState = 4) if (XMLHttpReq.status = 200) var res=XMLHttpReq.responseXML.getElementsByTagName(res)0.firstChild.data; $(#name).html(res); else window.alert(您所请求的页面有异常。); function userCheck() var uname =$(#uname).val();if(uname=) $(#name).html(对不起用户名不能为空);return false;else var aa = sendRequest(regist?uname=+uname);return passwordCheck(); function passwordCheck() var psw1 = document.myform.psw.value;if(psw1=) var name1=对不起密码不能为空;document.getElementById(name1).innerHTML=name1; return false;elsevar name2=密码可用;document.getElementById(name1).innerHTML=name2; return secondpasswordCheck(); function secondpasswordCheck() var psw1 = document.myform.secondpsw.value; var pword= document.myform.psw.value;if(psw1!=pword)var name1=确认密码不正确!;document.getElementById(name2).innerHTML=name1; return false;elsevar name2=确认密码正确!;document.getElementById(name2).innerHTML=name2; return true; 用 户 注 册用户名: 密 码: 确认密码: 3) 借书功能代码:i. 借书功能JSP页面代码:借书录入页面图书编码借书人姓名借出时间input size=25 name=borrowtime value=/ ii. web.xml代码: Borrowbook /Borrowbook Borrowbook .servlet.Borrowbook iii. servlet代码package .servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Calendar;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import useBean.BorrowBookInfo;import .javaBean.BorrowBookJavaBean;/* * author 借书的servlet * version 1.0 * author杨娟 */public class Borrowbook extends HttpServlet private static final long serialVersionUID = -L;SuppressWarnings(deprecation)protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(UTF-8);response.setContentType(text/html; charset=UTF-8);PrintWriter out = response.getWriter();String bookcode = request.getParameter(bookcode);String borrowuser = request.getParameter(borrowuser);Date date = new Date();String borrowtime = date.toLocaleString().substring(0,10);Calendar cal = Calendar.getInstance();cal.add(Calendar.MONTH, 1);String endtime = new Date(cal.getTimeInMillis().toLocaleString().substring(0,10);BorrowBookInfo bb = new BorrowBookInfo();bb.setBookcode(bookcode);bb.setBorrowtime(borrowtime);bb.setBorrowuser(borrowuser);bb.setEndti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古艺术学院《专业英语(建筑)》2023-2024学年第一学期期末试卷
- 潍坊环境工程职业学院《药学仪器分析》2023-2024学年第二学期期末试卷
- 中南大学《大规模数据挖掘与分布式处理》2023-2024学年第二学期期末试卷
- 咸阳市渭城区2024-2025学年数学三下期末监测试题含解析
- 新星职业技术学院《手绘表现艺术》2023-2024学年第一学期期末试卷
- 普外科胰腺炎护理常规
- 外出培训交流与成果分享
- 湛江市高二上学期期末调研考试物理试题
- 酒店中式铺床培训
- 2025标准股权分配协议 制造业类合同参考格式
- 2020年10月自考00152组织行为学试题及答案
- 2018年顺丰控股公司组织架构和部门职能
- 中国联通大客户业务故障处理工作实施细则
- 华为WLAN培训资料课件
- 干眼(症)诊治基础知识考试试题及答案
- GB/T 6488-2022液体化工产品折光率的测定
- GB/T 1871.1-1995磷矿石和磷精矿中五氧化二磷含量的测定磷钼酸喹啉重量法和容量法
- FZ/T 73023-2006抗菌针织品
- 2021-2022学年高二下学期英语读后续写公开课课件:continuation writing-receiving and giving课件
- 2023年初中数学竞赛试题中国教育学会中学数学教学专业委员会数学周报杯
- 第七章流域水环境规划课件
评论
0/150
提交评论