《最新java课程设计-图书管理系统-MVC开发模式.doc》由会员分享,可在线阅读,更多相关《最新java课程设计-图书管理系统-MVC开发模式.doc(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datejava课程设计-图书管理系统-MVC开发模式本科生毕业设计论文内芯格式目 录一、 设计目的第2页二、 功能介绍第3页三、 程序流程第4页四、 设计步骤第5页五、 设计总结第6页六、 程序清单第7页一、 设计目的此次的课程设计是图书管理系统,它的产生可以方便用户进行操作,以减少用户的误操作。作为一个软件,功能是第一要素,所以,我此次的设计以功能为主,在美工和页面的设计
2、并没有什么要求。通过此次课程设计,增加了我们理论联系实际和解决实际问题的能力,也使我们对JAVA这门语言有了更深的了解,使我们可以用最简单、便捷的语言和方法实现相同的功能,深刻明白了其优越性,同时也提高了我们的学习JAVA的兴趣,给我们以后学习、工作打下坚实的基础。二、 功能介绍此次设计的要求有如下六个功能:(1)具有新用户注册功能。(2)具有注册用户登录功能。(3)具有图书信息的录入功能。(4)具有借出和归还登记功能。(5)具有数据查询功能,可以实现查询全部信息和按条件执行查询。(6)具有按条件删除数据功能。首先,我们实现注册和登录功能,进入系统软件后,可以进行一下操作:进入系统首页注册登录
3、模 糊查 询图 书并 且删 除图 书归 还登 记功 能图 书借 出登 记功 能图 书信 息录 入功 能三、 程序流程此次JAVA课程设计,我采用的是MVC开发模式,具体内容如下图所示:1) 首先,在JSP页面有一个form表单,里面存有需要使用的参数供增删改查使用,当我们通过submit按钮提交表单时,它会寻找action属性值,走到web.xml。在web.xml 中,通过查找到与action属性值相同的值,再通过标签中值,找到相应的,跳转到相应的servlet中。2) 然后,在servlet中,把从JSP页面接收到的参数封装到useBean中(为了减少传递给JavaBean的参数),通过实
4、例化一个JavaBean对象,调用其方法,进行一些连接数据库的操作。3) JavaBean包含一些增删改查的操作,进行业务处理,连接到数据库中,最后把操作的结果返回给servlet中。4) Servlet判断返回的结果,如果成功就跳转到成功页面所对应的JSP,如果失败,在返回form表单所在的页面,重新进行操作。四、 设计步骤1) 需求分析在课程设计之初,最重要的是需求分析,要深入了解所有的业务及其流程,才能在编码时减少误区和编码时间。了解完成所要实现的功能之后,需要考虑设计所需要使用的开发工具,这对不同规模的问题,采取的开发模式、服务器、数据库都是不一样的。我们的设计相对比较简单,所以,选择
5、了tomcat5.0作为图书管理系统所需要的服务器,mysql作为数据库(mysql是免费的,符合设计真实情况),myeclipse作为开发工具,360浏览器作为测试的工具,同时使用JSP书写web页面,javascript进行简单的校验,采用ajax提交异步请求,实现一些相对特殊的功能。这次设计的数据库名称时javacourse,它包含三张数据表,具体如下所示:i. user(管理员表):ii. book(图书表):iii. borrowbook(借书记录表):2) 详细设计当已经对业务有了深入的了解之后,开始进行功能流程的详细设计,我们可以通过图纸等工具,策划出设计的功能,如功能介绍所示。
6、3) 编码阶段:准备工作已经完成,我们可以正式进入编码阶段。i. 创建一个web projectJavaCourse,并把其发布到tomcat中。ii. 配置连接池:连接池技术可以预先建立一定的连接,当我们进行数据库访问时,直接取得连接池中的空闲链接可以减少对数据库的链接操作,很好的减轻了数据库的负担。iii. Context ctx = new InitialContext();/实例化上下文对象DataSource ds = (DataSource) ctx.lookup(java:/comp/env/JavaCourse); /找到JNDI数据源,并且返回数据源对象iv. 同时,我们还需
7、要在tomcat服务器下配置JNDI数据源,具体的配置如下图所示:v. 登录功能:a) 书写JSP页面代码:JSP页面是动态的web页面,通过一些提交操作可以进行数据库访问操作,而form表单又是提交的核心控件,其代码如下:用户名: 密码: 通过以上代码我们可以观察到,当我们点击登录按钮时,它会使用userlogin提交请求,到web.xml里面寻找所要使用的servlet。b) 配置web.xml:web.xml是web project的核心文件,它配置了该工程的一些配置信息,当我们启动服务器时,会首先读取web.xml,了解工程的基本信息。登
8、录的请求配置如下: userlogin .servlet. userlogin userlogin /userlogin 此时,服务器就知道登录功能需要跳转到.servlet.login这个servlet文件中。c) 编写servlet:servlet可以接收表单传过来的参数值,进行对数据库的操作。因为我采用的是MVC的开发模式,所以使用了javabean单独作为连接数据库的操作,自然需要在servlet中创建一个javabean的对象,调用其相应的函数,代码如下所示:String uname = request.getParameter(username);String pword = re
9、quest.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 UserLoginJava
10、Bean 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,来查询该用户
11、名是否存在,若存在,我们再比对其密码是否正确,如果密码正确,提示其登录成功,并且让它跳转到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(恭喜
12、您,登录成功!););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)
13、e.printStackTrace();vi. 按条件检索并且删除:该功能模块中主要包含按照图书名称、图书类型、图书代码和作者姓名四个条件进行模糊查询,并实现了任意环境下的分页功能,以及任一图书的删除功能。以下该图片是查询全部图书信息的页面:当然,我们可以查询图书名称包含java并且作者包含j的图书信息,查询结果如下图所示:vii. 代码亮点:此次设计,我使用了ajax进行了一些简单的校验,从登录页面我们可以看到,当用户名不存在时,会给出我们提示。在注册页面中,我也采用该技术,我们知道,任何两个人的身份证号码是不会出现相同(即便出现也是因为系统出现错误),就设计而言,不能出现两个人的用户名是相
14、同的,当有人使用数据库中已经存在的用户名进行注册时,我们给予其提示,并不让其进行注册;当用户名不存在时,该用户名就可以注册,如下图所示:4) 测试阶段五、 设计总结这学期是我们第一次在学校学习JAVA这门编程语言,因为有以前在培训班学习JAVA的基础,所以对我而言,此次设计相对比较容易。我们所设计的图书管理系统主要实现了登录、注册、录入图书、借书、还书、删除图书以及模糊查询等功能,功能实现起来比较简单。而且,我选用的是MVC的开发模式,程序代码有很大的可重用性和逻辑性,当我们进行维护时,可以更加的便捷。对我来说,JAVA好像是一根救命稻草,C语言复杂性让我惧怕,从事C语言的编程是一项很大的挑战
15、,学习了JAVA之后,越来越深刻的了解了面向对象的含义,通过学习,慢慢了解了那些构建的JAVA基础之上的开发语言和框架,编程慢慢变成一项相对容易的工作,成为一件趣事。短短一周的设计马上就要结束了,通过设计,是我可以更深刻的了解JAVA的魅力,熟悉了以前被遗忘的知识,更深刻的认识到其简单性,易用性。以后的学习道路还很长,此次的课程设计为我们开启了一个良好的开端,为我们今后的毕业设计奠定了基础。以后学习的路还有很长,我们仍需要继续努力,掌握更深刻的知识,以备以后的学习和工作所需。六、 程序清单1) 模糊查询并删除页面代码:图书录入页面检索图书页面图书名称图书类型图书代码作者姓名 &nbs
16、p; 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=beginpo
17、s+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=&b
18、ookcode=下一页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
19、)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
20、) 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(); fu
21、nction 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.m
22、yform.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页面代码:借书录入页面form action=Borrowbook method=pos