2022年java_jsp课程设计报告[] .pdf
南阳理工学院课程设计课程设计名称:课程设计专 业 班 级 :数据库一班学 生 姓 名 :张文瑞学号 :1315925020指 导 教 师 :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - 学生姓名张文瑞专业班级数据库学号1312925020 题目网络购物车主要内容淘宝、京东、易购等都是知名度很大的电子商务网站,而对于电子商务网站来说一个很重要的组成部分便是网络购物车,要求利用html、jsp、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识,在经过需求分析、总体设计、详细设计等流程步骤以后,设计一个网络购物车。主要功能是记录和操作不同客户的网上购物信息。该系统能对购物车中商品信息进行查询、增加、修改、删除、清空、下载等操作,商品信息存储在数据库中。任务要求综合运用所学的JAVA 程序设计基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。要求根据本课题设计合理的数据结构,并实现:商品展示、操作成功提示、购物车展示等视图界面;对商品信息的查询、增加、修改、删除、清空、下载等功能模块。系统采用tomcat、记事本等开发工具进行开发实现。根据系统功能,结合软件开发流程,完成设计报告的撰写。参考文献1 (美)Cay S. Horstmann 、Gary Cornell. Java核心技术卷 I:基础知识 (第8版)(英文影印版 ).人民邮电出版社 , 2008.11 2 耿祥义、张跃平 . JAVA2 实用教程(修订). 清华大学出版社,2001.10 3 杨小平 java项目案例导航科学出版社, 2003.7 4 傅进勇、邓少烽、李波jsp 网络编程电子工业出版社2008.5 网络购物车一:需求分析利用 html 、jsp 、java 、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识, 设计一个网站购物车, 用于记录不同客户的购物订单,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - 并能对购物车中商品信息进行查询、修改、删除、清空、下载等操作,商品信息存储在数据库中。具体要实现的功能如下:1:显示商品展示界面、操作成功界面、购物车展示界面等界面。 2:商品信息存储在数据库中。 3:对商品信息能够进行查询、 修改、删除、清空、下载等操作。 4:使用 MVC 设计模式(View(jsp) 、Model(javaBean) 、Controller(servlet))。5:在浏览器中输入访问信息进行访问。 6:购物车信息分页显示。二:概要设计本次课程设计中使用了MVC 设计模式,jsp 作为 View,javaBean 作为 Model,servlet作为 controller,实现界面与逻辑的分离, 模块之间松耦合, 通过传递参数进行调用。 Jsp 页面通过发送一个操作类型变量,从而使得controller获知应当进行的操作,并通过调用javabean 进行实际的执行,这样页面与逻辑就得到了分离, 互不干涉和影响。 使用数据库存储购物信息, 在数据库中对商品信息进行增、删、改、查等操作,此外控制器通过调用writeexcel类,在每次查看信息之前把当前的商品信息写入到xls 文件中进行保存, 并供用户下载。 具体的设计模块及系统流程如下图所示:View controller Model 数据库或文件operate.java controloperate.java writeexcel.java Shoppingcar 数据库shoppingcarmessage.xls 发送请求进行调用执行操作返回结果返回响应名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - 三:运行环境、开发语言运行环境: Windows XP 浏览器开发语言: html 、jsp 、java 四:详细设计1:程序清单Java 课程设计网络购物车文件功能对应表序号文件名功能1 default.jsp 显示商品信息2 shoppingcarplay.jsp 显示购物车信息3 alter.jsp 显示修改商品页面4 addsuccess.jsp 显示成功添加商品5 updatesuccess.jsp 显示成功更新商品6 controloperate.java 控制进行各种操作7 operate.java 对数据库进行操作8 write.excel.jaava 生成 excel信息文件9 shoppingcarmessage.xls 记录购物车信息2:主要代码1:显示商品信息界面用 jsp 来显示主界面 登录主页面 欢迎光临百味书屋! default.jsp shoppingcarplay.jsp alter.jsp addsuccess.jsp updatesuccess.jsp 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - /用表格来排列显示信息 书名:货币战争 书号: 0001 作 者 : 王 一 价 格 : 23 书名:我的抗战 书号: 0002 作 者 : 王 二 价 格 : 33 书名:你猫叔了没书号: 0003 作 者 : 王 三 价 格 : 43 书名:赞美你 书号: 0004 作 者 : 王 四 价 格 : 53 书名:刀尖 书号: 0005 作 者 : 王 五 价 格 : 63 书名:人脉是设计出来的书号: 0006 作 者 : 王 六 价 格 : 73 书名:龙年运程 书号: 0007 作 者 : 王 七 价 格 : 83 书名:最好的时光在路上书号: 0008 作 者 : 王 八 价 格 : 93 书名:七日谈 书号: 0009 作 者 : 王 九 价 格 : 103 2:显示购物车信息界面用 jsp 分页显示购物车中的商品信息 购物车界面 您的购物车列表: 书名 书号 作者 价格 数量 =totalcount)/当前页面为最后一页 for(int i=0;i form method=post action=alter.jsp?booknum= form method=post action=controloperate?operatetype=delete&booknum= 下 载 购 物 信 息 返回主页 a href=shoppingcarplay.jsp?nowpage=上一页  第 页   共 页 % 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - Else/不是最后一页 for(int i=0;i form method=post action=alter.jsp?booknum= form method=post action=controloperate?operatetype=delete&booknum= 下 载 购 物 信 息 返回主页 a href=shoppingcarplay.jsp?nowpage=下一页  第 页   共 页 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - 下 载 购 物 信 息 返回主页 a href=shoppingcarplay.jsp?nowpage=上一页  第 页   共 页 下 载 购 物 信 息 返回主页 a href=shoppingcarplay.jsp?nowpage=上一页  a href=shoppingcarplay.jsp?nowpage=下一页  第 页   共 页 书名 书号 作者 价格 数量 % if(totalcount=3)/ 总页面 =1 for(int i=0;i form method=post action=alter.jsp?booknum= 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 22 页 - - - - - - - - - form method=post action=controloperate?operatetype=delete&booknum= 下 载 购 物 信 息 返回主页 1 for(int i=0;i form method=post action=alter.jsp?booknum= form method=post action=operate?operatetype=delete&booknum= 下 载 购 物 信 息 返回主页 下 一 页  第一页  共页 您的购物车是空的! 返回主页 3:显示修改商品界面用 jsp 显示修改商品信息的界面 修改购物车界面 / 用 form 来提交修改的变量及书号form action=controloperate?operatetype=alter&booknum= method=post 您要订购的数量: 4:显示成功添加商品用 jsp 显示成功添加操作 添加成功界面 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 22 页 - - - - - - - - - 已成功加入购物车! 返回主页 5:显示成功更新商品用 jsp 显示成功更新操作 更新成功界面 已成功更新您的购物车! 6:控制进行各种操作功能用 java servlet实现控制器控制进行各种操作以及决定返回何种界面package shoppingcar; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*; public class controloperate extends HttpServlet / 重写 dopost 方法对 jsp 请求进行处理public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException request.setCharacterEncoding(gb2312);/ 获取相关变量String operatetype=(String)request.getParameter(operatetype); shoppingcar.operate ope=new shoppingcar.operate(); shoppingcar.writeexcel we=new shoppingcar.writeexcel(); HttpSession session = request.getSession(); if(operatetype.equals(add)/ 添加操作的处理 request.setCharacterEncoding(gb2312); String booknum= (String)request.getParameter(booknum); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 22 页 - - - - - - - - - String ip=(String)request.getRemoteAddr(); ope.addbook(booknum,ip); response.sendRedirect(addsuccess.jsp); if(operatetype.equals(scan)/ 查询操作的处理 ArrayList rs=ope.getbook(); session.setAttribute(rs,rs); if(rs0!=null) we.write(rs); response.sendRedirect(shoppingcarplay.jsp); if(operatetype.equals(alter)/ 修改操作的处理 request.setCharacterEncoding(gb2312); String booknum= (String)request.getParameter(booknum); String count=(String)request.getParameter(count); ope.updatebook(booknum,count); response.sendRedirect(updatesuccess.jsp); if(operatetype.equals(delete)/ 删除操作的处理 request.setCharacterEncoding(gb2312); String booknum= (String)request.getParameter(booknum); ope.deletebook(booknum); response.sendRedirect(updatesuccess.jsp); if(operatetype.equals(deleteall)/ 清空购物车操作的处理 request.setCharacterEncoding(gb2312); ope.deleteallbook(); response.sendRedirect(updatesuccess.jsp); 7:对数据库进行操作功能用 javabean 通过多个函数实现对数据库的多种操作package shoppingcar; import java.sql.*; import java.util.*; public class operate 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 22 页 - - - - - - - - - ArrayList a; public void addbook(String booknum,String ip)/对数据库进行添加记录操作 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); /连接数据库Connection conn = DriverManager.getConnection(jdbc:odbc:shoppingcar,sa,111111); Statement stmt = conn.createStatement(); String sql1=select * from 购物车where 书号 =+booknum+ and ip 地址=+ip+; ResultSet rs=stmt.executeQuery(sql1); String sql2=insert into 购物车(ip地址,书号,数量) values(+ip+,+booknum+,1); if(!rs.next()/ 当前不存在该条记录直接插入 stmt.executeUpdate(sql2); Else/否则进行更新操作 int newcount=rs.getInt( 数量 );newcount+=1; String sql3=update 购 物 车set 数 量 =+newcount+ where 书 号=+booknum+ and ip地址 =+ip+; stmt.executeUpdate(sql3); stmt.close();conn.close(); catch(Exception e) public void get() try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn1 = DriverManager.getConnection(jdbc:odbc:shoppingcar,sa,111111); Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);/创建支持游标滚动的statement String sql=select 书名, 书籍 .书号, 作者, 价格, 数量from 书籍, 购物车 where 书籍 .书号 =购物车 .书号 ;/获取结果的sql 语句ResultSet rs=stmt1.executeQuery(sql); if(rs.next() rs.last(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 22 页 - - - - - - - - - Integer rows = rs.getRow(); rs.beforeFirst(); this.a=new ArrayListrows; int l =0; while (rs.next() / 将结果集转换为数组对象 this.al = new ArrayList(); this.al.add(0,rs.getString(1); this.al.add(1,rs.getString(2); this.al.add(2,rs.getString(3); this.al.add(3,rs.getString(4); this.al.add(4,rs.getInt(5); l+; /System.out.println(success5);/ 判断该语句是否执行成功 else this.a=new ArrayList100; stmt1.close();conn1.close(); catch(Exception e) public ArrayList getbook() get(); return this.a;/ 返回数组对象 public void updatebook(String booknum,String count)/对数据库执行修改操作作 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn1 = DriverManager.getConnection(jdbc:odbc:shoppingcar,sa,111111); Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);/创建支持游标滚动的statement int bookcount=Integer.parseInt(count); if(bookcount=0) deletebook(booknum); else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 22 页 - - - - - - - - - String sql=update 购 物 车set 数 量 =+bookcount+ where 书 号=+booknum+; stmt1.executeUpdate(sql); stmt1.close();conn1.close(); catch(Exception e) public void deletebook(String booknum)/对数据库执行删除操作 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn1 = DriverManager.getConnection(jdbc:odbc:shoppingcar,sa,111111); Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);/创建支持游标滚动的statement String sql=delete 购物车where 书号 =+booknum+; stmt1.executeUpdate(sql); stmt1.close();conn1.close(); catch(Exception e) public void deleteallbook()/清空购物车 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn1 = DriverManager.getConnection(jdbc:odbc:shoppingcar,sa,111111); Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);/创建支持游标滚动的statement String sql=truncate table 购物车 ; stmt1.executeUpdate(sql); stmt1.close();conn1.close(); catch(Exception e) 8:生成 excel 信息文件用 java application引入 poi 包后,生成 exceel 文件,生成表格,循环添加行数据,最终生成购物车信息。package shoppingcar; import java.io.*; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 22 页 - - - - - - - - - import java.text.NumberFormat; import java.util.*; import org.apache.poi.hssf.usermodel.HSSFCell; /引入 poi 工具包import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class writeexcel/Excel public void write(ArrayList rs) HSSFWorkbook wb = new HSSFWorkbook(); /相当于 writeexcel 整个文件FileOutputStream fos = null; try /创建一个文件fos = new FileOutputStream(D:/apache-tomcat-6.0.33/webapps/shoppingcar/shoppingcarmessage.xls); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); HSSFSheet sheet = wb.createSheet(sheet1); /生成writeexcel中的sheet HSSFRow row = sheet.createRow(0); / 创建第一行HSSFCell cell = row.createCell(short) 0); /创建第一个单元格cell.setEncoding(HSSFCell.ENCODING_UTF_16); /设定单元格的字符编码cell.setCellValue( 书名 ); / 设定单元格的名字cell = row.createCell(short) 1); / 创建第二个单元格cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue( 书号 ); cell = row.createCell(short) 2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue( 作者 ); cell = row.createCell(short) 3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue( 价格 ); cell = row.createCell(short) 4); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue( 数量 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 22 页 - - - - - - - - - int totalcount=rs.length; for (int i = 0; i totalcount; +i) /循环添加结果记录 String bookname=(String)rsi.get(0);String booknum=(String)rsi.get(1); String bookauthor=(String)rsi.get(2);String bookprice=(String)rsi.get(3); int bookcount=Integer.parseInt(rsi.get(4).toString(); row = sheet.createRow(i +1); / 创建行cell = row.createCell(short) 0); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(bookname); / 设定序号cell = row.createCell(short) 1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(booknum); cell = row.createCell(short) 2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(bookauthor); cell = row.createCell(short) 3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(bookprice); cell = row.createCell(short) 4); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(bookcount); try / 将 这 个 文 件 交 给HSSFWorkbook类由 它 负 责 写入 wb.write(fos); /关闭输出流fos.close(); catch (IOException e1) / TODO Auto-generated catch block e1.printStackTrace(); 五:调试与分析本次设计中主要遇到了三点困难:(1)采用 MVC 设计模式,由于是第一次使用该模式,所以构思了很长时间才确定下来程序的模块结构及功能。(2)使用了 java servlet,servlet也是第一次使用,中间还要用到配置XML 文件,我名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 22 页 - - - - - - - - - 在网上搜了很多资料才实现了servlet的应用。( 3)使用了数据库,也是由于使用的不多,sql 语句以及连接数据库都不太熟悉, 花费了一番功夫才得到解决。六:功能测试登陆界面显示如图1:1:添加商品如图 2:2:查看购物车如图 3:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 22 页 - - - - - - - - - 3:修改商品如图 4、5:4:5:删除商品以及清空购物车如图6:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 22 页 - - - - - - - - - 6:下载购物车信息如图7:7:七:结论与心得在本次课程设计中,除了html 、jsp 、javaapplication以外,我首次使用了 MVC 设计模式,首次使用了servlet ,并巩固了连接数据库、使用数据库的能力,尽管遇到了很多困难, 但我通过查找大量的资料, 最终这些问题都得到了解决。通过本次课程设计, 我不仅学习和巩固了很多知识,更重要的是我增强了解决问题的能力,主要表现在网上搜索信息的能力, 获益匪浅。如果时间充足的话,我想能更进一步的增加功能, 完善代码, 使得功能更加强大、 代码更加符合软件工程的要求,做得更好。八:参考资料名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 22 页 - - - - - - - - - 【1】(美)Cay S. Horstmann 、Gary Cornell. Java核心技术卷 I:基础知识 (第 8 版)(英文影印版 ).人民邮电出版社 , 2008.11 【2】耿祥义、张跃平 . JAVA2 实用教程(修订) . 清华大学出版社, 2001.10 【3】杨小平java 项目案例导航科学出版社, 2003.7 【4】傅进勇、邓少烽、李波jsp 网络编程 电子工业出版社2008.5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 22 页 - - - - - - - - -