JSP课程设计说明书.doc_第1页
JSP课程设计说明书.doc_第2页
JSP课程设计说明书.doc_第3页
JSP课程设计说明书.doc_第4页
JSP课程设计说明书.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学与计算机学院课程设计说明书课 程 名 称: JAVA/数据库/网络综合课程设计 课 程 代 码: 6013809 题 目: 商品书籍管理系统 年级/专业/班 2010级网络安全1班 学 生 姓 名: 魏丽 学 号: 312010080605116 开 始 时 间: 2012 年 12 月 25 日完 成 时 间: 2013 年 01 月 16 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总 分(100)指导教师签名: 年 月 目 录 1 引 言11.1问题的提出11.2务与分析12.程序的主要功能22.1添加功能22.2删除功能22.3删除全部书籍信息22.4显示功能22.5查找功能22.6修改功能23、程序运行平台34 总体设计45 程序说明46 模块分析56.1 添加模块56.2 显示模块76.3 修改模块106.4 查找模块116.5 删除模块136.6 清空模块147 系统测试158 结论211 引 言 1.1 问题的提出商品书籍管理系统是一些售书单位或网站不可缺少的一部分,每天都存在书籍的大量流动,怎样方便、快捷的管理图书尤其重要。所以商品书籍管理系统应该为管理者提供各类书籍信息和快速的操作手段。但一直以来人们使用传统人工的方式管理书籍、期刊等,这种管理方式存在许多缺点,如:效率低、保密性差、容易出错、不便于查找、更新和维护数据。基于这个问题,有必要建立书籍管理系统,能够及时、准确、有效的查询和修改图书信息。使得书籍管理工作规范化、系统化、程序化,避免书籍管理的随意性,提高信息处理速度和准确性。1.2任务与分析本课题主要的任务:用jsp+serlvet+sql模拟商品书籍管理系统,以jsp动态网页形式显示数据库中的数据,并完成对这些数据的增、删、改等基本操作,同时将数据更新会数据库。 对本课题的分析:1、设计简单、大方、合理的网页以及每个页面各自实现的功能2、实现jsp和servlet之间的跳转以及信息的传递3、连接数据库,获取数据库中的数据并显示在页面的是上4、获取管理者录入的书籍信息,并添加到数据库5、获取管理者删除某本或某些书籍的信息,并将删除后的数据更新回数据库6、获取管理者查询某本或某些书籍的信息,并将结果显示在页面上7、获取管理者输入修改某本或某些书籍的信息,并将修 改成功后的数据更新回数据库2. 程序的主要功能2.1添加功能实现将书籍的基本信息添加到数据库,包括书的编号(主键)、种类、书名、作者、出版社、价格、总册数。不论添加成功或失败都会提示对话框,并在数据库中根据主键的唯一性和不能为空两个特点创建了触发器;为了防止录入非法字符,我们还在客服端进行了拦截。 2.2删除功能点击删除按钮将操作人员选中的复选框的对应信息从数据库中删除2.3 删除全部书籍信息选中书籍的所有种类,点击删除按钮,将清空数据库中所有书籍信息。2.4显示功能实现将数据库中的书籍的主要信息显示在页面上,包括书的编号、种类、书名、作者、出版社、价格、总册数。只用点击对应书籍种类的链接,就能将该种类的图书信息显示出来,该功能是用存储过程实现的,且为使页面看起来更加美观,我们还实现了登录进入显示界面就默认显示某种图书信息功能。2.5查找功能只要在复选框中选中要显示的书籍信息,点击查询按钮就能将对应书籍的详细信息显示出来,如果未查询到将会弹出提示信息。2.6修改功能实现对数据库中已存在的书籍信息进行修改。修改书籍信息有两种方式即修改单条记录和多条记录。无论修改成功与否都会弹出提示对话框,如果要修改的图书不存在,则会提示操作员“未找到要修改的图书”;且在客服端对非法字符的录入进行了拦截操作。3、程序运行平台1、开发工具:Eclipse4.2、Apache Tomcatv7.0、jdk1.72、具体操作如下:(1)创建项目打开Eclipse-文件-新建-动态web项目-在项目名栏输入项目名称 -单击下一步(完成)。(2)为项目添加相应的源文件添加javaBean:i、 点击项目名下的JavaRescoures-src-右键单击选择新建-包-输入包名(包名一般取为com.xx) ii、 右键单击建好的包-新建-类-输入类名-完成添加servlet:i、 点击项目名下的JavaRescoures-src-右键单击选择新建-包-输入包名(包名一般取为com.xx) ii、 右键单击建好的包-新建-servlet-输入名称-完成添加jsp:i、 点击项目名下的WebContent-WEB INF-右键单击选择新建-jsp文件-输入名称-选中新建jsp文件(xhtml)-完成添加CSS:i、 点击项目名下的WebContent-WEB INF-右键单击选择新建-其他-选择WEB下的CSS文件-输入文件名-完成 添加javascript: i、点击项目名下的WebContent-WEB INF-右键单击选择新建-其他-选择javascript下的javascript原文件-输入名称-完成再编译,链接,执行等,此部分可参照实验指导书前面的内容写。4 总体设计 图4.1 系统总体框架图5 程序说明 Book类的声明 public class Book int number;/书的编号String kinds;/书的种类String bname;/书的名字String editor;/书的作者String press;/书的出版社int price;/书的单价int cnumber;/书的总册数public int getNumber() return number;/设置编号public void setNumber(int number) this.number = number;/获取编号public String getKinds() return kinds;/设置种类public void setKinds(String kinds) this.kinds = kinds;/获取种类public String getBname() return bname;/设置书名public void setBname(String bname) this.bname = bname;/获取书名public String getEditor() return editor;/设置作者public void setEditor(String editor) this.editor = editor;/获取作者public String getPress() return press;/设置出版社public void setPress(String press) this.press = press;/获取出版社public int getPrice() return price;/设置单价public void setPrice(int price) this.price = price;/获取单件public int getCnumber() return cnumber;/设置总册数public void setCnumber(int cnumber) umber = cnumber;/获取总册数 DBExecute类的声明public class DBExecute public Connection getConnection() throws Exception/连接数据库String driver=com.microsoft.sqlserver.jdbc.SQLServerDriver; String url=jdbc:sqlserver:/localhost;integratedSecurity=true;databaseName=xsgl; ; tryClass.forName(driver); return DriverManager.getConnection(url); catch(SQLException e)throw e;public ResultSet CallProc(Connection con,String procname,String word) throws SQLException/调用存储过程CallableStatement st=con.prepareCall(call +procname+(?);st.setString(1, word);st.execute();ResultSet rs=st.getResultSet();return rs;6 模块分析6.1 添加模块设计思想:进入操作页面后,点击添加按钮 ,在弹出的注册书籍信息表中输入详细的图书信息,点击保存按钮,如果要添加的书籍信息已在数据库中存在,则弹出消息框提示操作人员该书已存在,反之则提示添加成功,为了防止操作员录入非法数据,将在客服端进行拦截,并提示输入的数据非法,请重新输入流程:关键代码:(1)获取operate.jsp传过来的数据。如:String zl=request.getParameter(zla); Int bh=Integer.parseInt(request.getParameter(bha);(2)连接数据库并用SQL语句进行添加操作。String url=jdbc:sqlserver:/localhost;integratedSecurity=true;databaseName=xsgl; ;Connection con;try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); con=DriverManager.getConnection(url); String sql = select * from book where bid=? ; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, bh);ResultSet rs=pstmt.executeQuery(); if(rs.next()/当添加的书已在数据库中存在PrintWriter out = response.getWriter();String message=This book is exist !;out.print(alert(+ message + ););out.print(window.location.href=operate.jsp;);else /要添加的图书在数据库中不存在,就添加该本图书sql=insertintobook(bid,bkind,bname,beditor,bpress,bprice,bnum) values(?,?,?,?,?,?,?);/添加图书信息的SQL语句pstmt = con.prepareStatement(sql); pstmt.setInt( 1, bh);pstmt.setString( 2, zl);pstmt.setString(3,sm);pstmt.setString(4, zz);pstmt.setString( 5, cbs); pstmt.setInt( 6, jg);pstmt.setInt(7, zcs); int k=pstmt.executeUpdate(); PrintWriter out = response.getWriter();String message=ok!;out.print(alert(+ message + ););out.print(window.location.href=operate.jsp;);System.out.println(添加图书的信息成功!);System.out.println(k);rs.close(); pstmt.close();con.close();catch(Exception e)e.printStackTrace();6.2 显示模块设计思想:登录成功后进入显示界面,默认显示文学类书籍的信息; 并在显示界面点击相应的链接即可查看对应种类的书籍信息。流程图:关键代码:在Login.jsp中检查输入的用户名和密码是否正确:function check() var user=document.form1.user.value;var password=document.form1.pass.value;if(user=admin&password=123)return true;else alert(请输入正确的用户名或密码!); return false;在Operate.java的doPost()中根据获取的图书的种类响应相应的操作:String kind=request.getParameter( kind);System.out.println(kind);ArrayList al;switch(kind)case wenxue: al=listAll(文学); request.setAttribute(alist, al); request.getRequestDispatcher(/list.jsp).forward(request, response);break; /还有显示七种图书的操作同上在listAll()函数中调用了已定义的存储过程:ArrayList listAll(String s)Connection con=null;DBExecute db=new DBExecute();/自定义的类DBExecuteString procname=p;String word=s;ArrayList al=new ArrayList();trycon=db.getConnection();/连接数据库ResultSet rs=db.CallProc(con, procname, word);/调用存储过程 if(rs.next()/查询该种类的书存在 while(rs.next()/把查询结果加入到列表当中Book u=new Book();u.setNumber(rs.getInt(1);u.setKinds(rs.getString( 2);u.setBname(rs.getString(3);u.setEditor(rs.getString(4);u.setPress( rs.getString(5);u.setPrice(rs.getInt(6);u.setCnumber(rs.getInt(7);al.add(u); else/查询的该种类的书不存在 System.out.println(没有该种类的书!);rs.close();con.close();catch(Exception e)e.printStackTrace();return al;6.3 修改模块设计思想:修改方式分为两类:单条数据修改和多条数据修改;在相应的修改表中输入书籍修改信息(单条数据修改需输入图书的详细信息),点击保存后,无论修改成功与否都会弹出提示框,为防止非法数据的录入,将在客服端进行拦截。流程图:关键代码:(1)检查单行修改的图书信息:function check1()if (!isNaN(document.getElementById(bhu).value)&!isNaN(document.getElementById(jgu).value)&!isNaN(document.getElementById(zcsu).value)& document.getElementById(zlu).value!=&document.getElementById(smu).value!=&document.getElementById(zzu).value!=&document.getElementById(cbsu).value!=)return true;elsealert(请正确输入修改信息!); return false; (2)检查多行数据的修改信息:function check2()if(document.getElementById(zl2).value!=& !isNaN(document.getElementById(jg2).value)|document.getElementById(zz2).value!=&!isNaN(document.getElementById(jg2).value)return true;elsewindow.alert(种类项和作者项只能填其中一项!(客户端)); return false; (3)在Update.java的doPost()中选择是多行修改还是单行修改:String operate=request.getParameter( operate);if(operate.equals(danh)/选择的是单行修改listAll(request,response);else if(operate.equals(duoh)/选择的是多行修改listAll1(request,response);(1) 关键的SQL语句:单行修改:String sql=update book set bkind=+zl1+ , bname=+sm1+ , beditor=+zz1+ , bpress=+cbs1+ , bprice=? , bnum=? where bid=?;多行修改:sql=update book set bprice=? where bkind=+zl1+;6.4 查找模块设计思想:查询分为单条数据查询和多条数据查询,只要用户在操作界面输入了要查找图书的编号,如果存在则在页面上显示对应编号的书籍信息,否则提示用户未查找到(单条数据查询)。如果没有输入图书的编号,就会查询选中的复选框对应的书籍信息,只要填了价格区间,查询结果就将显示在该价格区间内选中的图书信息,否则只显示查找选中的图书信息。(多条数据查询)选中要查询的书籍信息流程图:填写编号填写价格是否显示在价格区间选中的信息显示选中信息 是否是显示对应编号的书籍信息关键代码:(1)在Select.java的dopost()中实现查询图书的功能:String values1=request.getParameterValues( checkselect1);/获取values2和values3的方法同获取values1的方法相同String price1=request.getParameter( price1); String id=request.getParameter( id);if(id.isEmpty()/没有输入图书的编号if(values1=null&values2=null&values3=null) request.getRequestDispatcher(/operate.jsp).forward(request, response); else/选择有查询条件ArrayList al;al=listAll(values1,values2,values3,price1,price2);request.setAttribute(alist, al);request.getRequestDispatcher(/operate.jsp).forward(request, response); else list1(request,response);/实现根据图书的编号查询图书stAll()实现按勾选的条件查询:String str1=;if(s1!=null)str1+=+s10; for(int i=1;is1.length-1;i+) str1+=,+s1i; str1+=,+s1s1.length-1+;根据是否填有价格区间选择查询操作:if(price1.isEmpty()|price2.isEmpty()/价格区间没有填完整/只查询勾选了条件的图书sql = select * from book where bpress in(+str2+) and beditor in(+str3+);else/在勾选了条件的图书的基础上而且在指定价格区间的图书sql = select * from book where bpress in(+str2+) and beditor in(+str3+) and bprice between ? and ?;6.5 删除模块设计思想:只要用户输入图书的编号,就会删除该编号的图书信息,否则删除符合勾选条件的图书,如果在价格区间中填入了数值就将该价格区间内符合勾选条件的图书删除。 流程图:关键代码:在Delete.java的doPost()中实现删除操作:(1)获取operate.jsp中的数据:String values1=request.getParameterValues( checkselect1);String price1=request.getParameter( price1); String id=request.getParameter( id);(2)对用户做的操作作相应处理:if(id.isEmpty()/没有输入书的编号if(values1=null&values2=null&values3=null) request.getRequestDispatcher(/operate.jsp).forward(request, response); else/勾选了要删除的书ArrayList al;al=listAll(values1,values2,values3,price1,price2);request.setAttribute(alist, al);request.getRequestDispatcher(/operate.jsp).forward(request, response); else/输入了要删除的书的编号 list1(request,response); /根据书的编号删除该本书(3)按勾选条件删除图书if(price1.isEmpty()|price2.isEmpty()sql = delete from book where bpress in(+str2+) and beditor in(+str3+); elsesql = delete from book where bpress in(+str2+) and beditor in(+str3+) and bprice between ? and ?; 6.6 清空模块设计思想:将所有种类的图书选中,则清空数据库中所有的记录,否则删除部分书籍信息。 选中所有种类流程图:删除部分信息删除全部信息是否 (1)实现清空所有图书信息的SQL语句:sql = delete from book where bpress in(+str2+);7 系统测试 1、登录界面:只要登录名和密码输入正确,点击登录按钮就能进入显示界面,如果输入有误,则弹出提示信息“请输入正确的用户名或密码” 如图7.1 登录失败2、显示界面:用于显示数据库中各类书籍的详细信息,只要点击相应书籍种类的链接,就能将该类书籍信息显示在页面上,默认显示文学类的书籍信息,且点击“点击进入操作页面”图标则转到操作界面 如图7.2登录成功进入显示界面(默认显示文学) 如图7.2.1点击相应书籍种类链接(图点击的是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论