免费预览已结束,剩余20页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网站设计课程结业报告设计题目: 网上图书商城 订单模块的设计,邮件系统的设计 学 院: 计算机科学与技术学院 班 级: 学 号: 姓 名: 指导教师: 设计时间: 2011年6月 - 22 -摘 要由于当今网络的飞速发展以及电脑普及,网上购物因其自身的优势而在消费者中快速兴起,网上购物使人们足不出户就可以买到自己所需要的商品,其购买过程也灵活快捷。网上书城是一个基于网络的大型购书系统,也是一个网站,因当前网络销售趋势的发展与变化而产生,网络上各种商品的销售需要平台,网上书城正是为在网络上销售图书这一经济活动而量身定做的销售平台。关键词:网上书城,网络,销售,平台目 录摘要.11 引言.11.1 设计目的12 设计内容.2 2.1 系统功能设计2 2.2 详细设计说明6 2.3 设计流程.11 2.4 具体实现.13 2.4.1 首页模块.13 2.4.2 用户模块.14 2.4.3 购物车模块.142.4.4 订单模块 153 设计测试.19 3.1 首页模块设计.20 3.2 用户模块设计.20 3.3 购物车模块设计.,20 3.4 订购模块设计.20 3.4.1 订单确认模块测试20 3.4.2 发生订单提交动作完成的测试204 设计总结.221.引言1.1设计目的随着互联网的在生活中的进一步的普及,人们购物的方式也在不断发生变化,为了方便人们购书不用跑书,购书只要单击鼠标下个订单,就可以通过送货上门的方式买到自己想要的图书,我们设计了一个小型的网上电子书店来满足此需求。同时,在设计的过程中进一步锻炼我们的动手能力,锻炼我们对java知识的掌握,这个项目涵盖了j2se的大部分基础知识的应用,通过这个项目我们能加深:l 各种数据类型的使用如(String,int,float,boolean)等等,已调用类的方法实现它们之间的转化。l 分支语句(if-else)循环语句(for,while)的使用等。l 面向对象的知识,类的创建,构造函数,对象的序列化。l java.util.*,这个包的使用。(arrayList,hashmap的使用)。l java.io.*,java的输入和输出,以及一些对象的使用。(DataInputStream,DataOutPutStream,ObjectOutputStream,ObjectInputStream,BufferedReader,BufferedWriter等),对象的序列话。l .* ,基于套接字socket的网络编程。l 线程的使用,通过结合包实现多线程的服务器和客户端。l java.sql.*,使用java连接数据库实现对数据库的增删改插,认识jdbc连接数据库的步骤,得到驱动Driver,学会写url(jdbc:mysql:/localhost:/database/table)认识一些类。(Connection,Statement,PreparedStatement,ResultSet)l 简单的使用java.awt.*; java.awt.event.*; javax.swing.* ,也就是图形用户界面,创建简单的组件,按钮,frame,panel等。学会设置属性,认识布局管理器(borderlayout,gridlayout,flowlayout),学会对事件监听及其处理类,认识适配器等。2.设计内容2.1系统功能设计(1)系统完成的功能:本项目是一个简单的图书商城,用户可以浏览图书,查看某一图书的详细情况(图书介绍,出版社,价格,作者),通过用户的浏览,用户可以加入图书到购物车。在购物车中,用户可以修改所选图书的数量,可以取消所选的图书,当用户选定结束时,只需用户确认定单,在确认订单的之前要求用户登陆或者注册一个号并留下自己的详细地址。确认订单之后,系统会发送一封订单详细的邮件到用户的电子邮件当中,完成购物的流程。(B/S实现用户前台)后台管理实现的功能是:系统管理员登陆管理书籍(添加新书,修改书的数量等功能)。(C/S实现后台管理)(2)实现本项目所参考的技术:java,jsp,servlet ,java网络编程,java数据库应用开发。(3)开发工具:apache tomcat,myeclispe ,mysql。图2.1系统总用例图图2.2用户下订单图2.3用户撤销订单图2.4用户购买图书以及管理员处理订单图2.5参与者相关类图图2.6各个类之间的关系2.2设计详细说明(1)客户前台页面(主页),客户通过超链接浏览书籍,选择书籍加入购物车。图2.7(2)各种书本的信息详细简介。图2.8(3)顾客选择任意图书进入购物车。图2.9(4)没有选择任何商品的情况,可以选择书籍,修改数量的情况。图2.10(5)顾客选购结束时候进入下一步,要求用户登陆,或者注册一个帐号。图2.11(6)用户的注册页面。图2.12(7)确认订单。(个人完成部分)图2.13(8)订单提交给服务器,然后服务器确定了之后给用户的邮箱发确认邮件,这样购物就完成了。(个人完成部分)图2.14(9)服务器收到用户的请求,即用户所购买图书的详细信息记录到了服务器。(个人完成部分)图2.15(10)用户邮箱所收到的一封确认邮件信息,即购买的明细。(个人完成部分)图2.162.3设计流程(1)图书浏览,图书详细信息的设计图2.17(2)选购流程设计图2.18(3)登录注册流程图2.19(4) 订单提交完成购物的流程设计(个人完成部分)图2.202.4具体实现2.4.1首页模块首页的设计:首页的布局采用css+table布局,在首页添加java片段得到动态网页。根据首页主要功能可以知道要把多本图书显示到一页,实现分页的功能(要分页就要牵扯到数据库查询得到图书的总类数量)涉及到的对象有图书这个对象。因此在设计首页的时候我们小组首先封装了数据库当中的实体图书。把它封装成BookBean(参见com.fs.model.BookBean.java),并根据要查询图书(从数据库中).因此我们设计了对图书进行处理的对象BookBeanBo(参见com.fs.model.BookBeanBo.java)这个文件。并实现了根据请求的参数(也即查询第几页)查询图书返回图书数组的方法divpage(int pagenow,int pagesize)。首页的超链接实现了分页功能那么我们就要只到总共应有的页数。这样我们又开始写入了方法getPagecount,根据每一页显示多少。我们就可以算出应该分多少页。上述的BookBeanBo处理图书的这个类是基于数据库查询得到的。首页实现功能设计当中,还有一个功能就是显示某一本书的详细信息。也是通过单击超链接。我们将参数传递到同一个控制器(showdetail)这次传递的参数show,并且根据单击的不同图书传递一个图书的id。那么根据这个图书的id同样控制器将交给图书这个处理类(BookBeanBo)查询某一本图书的具体信息。得到bookbean。并转发到detail.jsp这个页面。图书详细信息页面的设计:detail.jsp页面在这个页面中首先得到一本具体的图书。也即bookbean对象。然后显示出图书的信息。2.4.2用户模块(1)用户登陆界面(Login.jsp)这个界面得到的方式。两种情况。单纯的登陆用户,还有就是当要核对之前没有登陆过跳转到的用户登陆界面。当用户单存只是为了登陆从首页的连接得到的这是我们交给LoginControl处理。成功的话我们同样在session对话中写入用户这个对象。然后我们返回首页。如果没有成功就跳到Loginerreor.jsp这个页面。如果用户是从购物车页面跳转过来的登陆成功之后我们跳转到另外一个控制器也即要准备核对信息的控制器了(prepareorder)。由它负责显示核对信息页面之前的数据准备。这就是登陆模块的设计。(2)同样注册也是提交表单给控制器。UserControl。由它初始化对象UserBeanBo并调用方法register。这就是登陆注册的设计。2.4.3购物车模块首先我们要设计一个抽象的对象也即购物车。(MyCartBo)这个对象(详细请参见com.fs.model.MyCartBo.java)购物车的抽象:既然要记录所有选购的图书,还有选购的数量要进行任意的修改。那么我们设计用java.util.HashMap这个类。也即java中的集合类。键值我们存储图书的编号。值我们存储要购买的数量。还有就是购物车的总价。因此我们还要添加数据totalprice。所以我们开始对购物车进行抽象,封装。购物车的功能:1.添加图书到购物车。修改所希望购买图书的数量。 2.删除购物车中的任意所选图书。 3.清空购物车。 4.得到购物车中的所有商品(用于准备显示购物车) 5.计算购物车的总价用户选购商品添加到购物网车,这一步的实现上面介绍了。当单击购买那么我们就发送请求(参数为图书id,操作参数type=add也即要求添加到购物车)到控制器MyCartControl。首先检查购物车是否在session当中。如果没在实例划一个。并写入session当中。(如果没请求一次就创建一个购物车的话就会出错)所以要写入session当中。保存着。然后根据请求的类型来调用购物车的方法。(比如修改数量,删除某一项)最后都调用一个showdetail的方法。也即准备数据发送到MyCart.jsp。关于购物车页面(MyCart中我们可以对已经有的图书进行修改数量。也即表单的提交传递参数。交给控制器MycartControl。无论MyCartControl怎么处理。最后都准备数据交给MyCart.jsp页面。2.4.4订购模块(个人完成部分)当用户核对信息后。因为session对象中有了User这个对象。即有了当前用户的信息。还有session对象中有了购物车(MyCart)这个对象。这样我们就可以交給控制器。控制器要做的事情就是在数据库中记录。记录完成是发送一份电子邮件给用户(User对象中有用户的信息)。同时要销毁购物车。不然不复合逻辑了。用户在次选购的时候购物车应该是空的。这样我们设计了一个提交订单处理的控制器WriteOrderControl.用户详细订单查询的处理器MyOrderdetail。设计了订单orderlistBean这个对象。同样针对订单的处理类orderlistbeanbo(实现的方法:更具给定的mycart,user对象正确的记录信息到数据库中)。根据用户user参数得到用户的所有订单。也即返回orderlistbean的对象的数组。实现发(html)邮件的功能的类Htmlmail.java.讲下单的所有商品以html的格式发送邮件通知用户。订单的信息核对,提交界面及其发送邮件的功能的实现:该模块涉及到的实体类为用户类,订单类,购物车类,涉及到的控制器为preparedorder.java(准备数据核对信息)writeordercontrol.java订单的提交。涉及到的处理类就是orderlistbeanbo。对订单处理。涉及到的邮件实现功能的模块htmlmail.java。查询订单详细的控制器.涉及的页面有ordercheck.jsp,Myorder.jsp,finished.jsp。订单实体的设计参见(com.fs.model.orderlistBean.java)各个页面说明:l ordercheck.jsp核对订单信息。显示购物车,用户信息l querymyorder.jsp 用户的所有订单详细。l finished.jsp 用户提交订单成功界面显示用户的所有订够图书。总价。订单号等信息l 实体处理类的设计参见(com.fs.model.OrderListBo.java)部分重要方法说明:writeorderlist方法的功能。根据session对话中的购物车对象用户对象。对数据库进行更新。也即讲信息写到数据库的关系中(order关系,orderdetail关系中)public OrderListBean WriteOrderList( MyCartBO mbo, UserBean ub)OrderListBean presentolb=new OrderListBean();String time =new SimpleDateFormat(yyyy-MM-dd HH:mm:ss ).format(new Date();presentolb.setOdate(time);presentolb.setName(ub.getTruename();presentolb.setTotalprice(mbo.getallprice();trycon = new ConDB().getCon();String ono=;pstm = con.prepareStatement(insert into orderlist (uno,odate,totalprice) values(?,?,?););pstm.setInt(1, Integer.parseInt(ub.getNo();pstm.setString(2,time);pstm.setFloat(3, mbo.getallprice();int i=pstm.executeUpdate();/写入数据库表orderlist中。也即插入一行。改行记录了订单的基本信息if(i=1)pstm = con.prepareStatement(select ono,ostatus,osipayed from orderlist where uno=? and odate=?);/*插入一个基本的订单信息之后接着要对该订单的详细信息进行更新。也即要讲用户购买的图书的id和数量写到关系表(orderlist)中*/pstm.setInt(1,Integer.parseInt( ub.getNo();pstm.setString(2, time);rs=pstm.executeQuery();if(rs.next()ono=+rs.getInt(1);presentolb.setOno(Integer.parseInt(ono);presentolb.setOstatus(rs.getString(2);presentolb.setIspayed(rs.getString(3);循环遍历购物车的中的图书构建对象写入到数据库中Map map = mbo.hm;Iterator it = map.entrySet().iterator();while(it.hasNext()Map.Entry entry =(Map.Entry)it.next();String bno=(String)entry.getKey();String purchasenum=(String)entry.getValue();pstm=con.prepareStatement(insert into contain (ono,uno,bno,purchasenum)values(?,?,?,?);pstm.setInt(1, Integer.parseInt(ono);pstm.setInt(2, Integer.parseInt(ub.getNo();pstm.setInt(3, Integer.parseInt(bno);pstm.setInt(4,Integer.parseInt(purchasenum);pstm.executeUpdate();new BookBeanBO().updatebnum(Integer.parseInt(bno), Integer.parseInt(purchasenum);mbo.clearMyCart();/销毁购物车catch(Exception e)e.printStackTrace();finallyclose();return presentolb;控制器的设计:WriteOrderControl的实现部分代码如下:public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException OrderListBO olb = new OrderListBO(); /构建处理类对订单进行处理OrderListBean olbean = olb.WriteOrderList(MyCartBO)request.getSession().getAttribute(mbo),(UserBean) request.getSession().getAttribute(userinfo);/得到sesision中的购物车,用户信息调用方法更新数据库。request.getSession().setAttribute(olbean, olbean);request.getSession().setAttribute(mbo, null);/清空购物车request.getRequestDispatcher(finished.jsp).forward(request, response);公共代码的设计:关于连接数据库的到连接的步骤,创建数据库url。得到connection创建statement。执行sql语句返回结果集。package com.fs.model;import java.sql.*;public class ConDB public Connection getCon()Connection con = null;tryClass.forName(com.mysql.jdbc.Driver);con =DriverManager.getConnection(jdbc:mysql:/localhost/mybookdb?characterEncoding=GBK,root,root);catch(Exception e)e.printStackTrace();return con;以上为代码为连接数据库的代码。利用javamail给用户发送html的邮件。验证方式发邮件步骤: 登陆到smtp服务器。base64编码输入邮件用户名,密码。步骤二:编写生成邮件类容subject主题,收件人recept to :内容 。步骤三:发送。详细见(javamail.htmlmail.java)3.设计测试3.1首页模块测试(1)测试图书展示能否正确的显示。(2)测试当数据库中图书表发生变化时候能否正确处理响应并显示。(3)测试当数据库中图书数量小于某个值的时候图书能够暂时隐藏(数量为10)。(4)上述(3)的测试目的:图书的暂时下架。用户无法添加到购物车。(5)测试分页算法的正确性。能否正确显示。3.2用户模块测试(1)测试用户模块是否可靠。数据库的操作是否正确。(2)测试能否正确的验证用户的合法性,作出判断,正确的响应。(3)测试个个页面是否能够正确的得到用户的信息。3.3购物车模块测试(1)测试购物车页面能够正确的显示(当购物车为空的时候)(2)测试用户是否能够对购物车中的图书进行增删改。清空操作。(3)测试购物车界面能否正确的计算购物车的总价。(4)测试添加图书到购物车的时候页面能否可靠的进行计数(默认数量1,添加一次为1).(5)测试购物车是否能够正确的保存到session中3.4订购模块测试(个人完成部分)3.4.1订单确认模块测试(1)测试请求订单确认页面时,能否正确判断(用户未登录不给予跳转,登陆情况下给予跳转)。(2)测试订单确认页面是否正确的得到用户,购物车信息。(也即测试session中是否正确的保存了用户登陆过的信息和购物车的信息)(3)上述测试也包括测试控制器工作的正确与否。3.4.2发生订单提交动作完成的测试(1)测试服务器是否能够记录下订单的所有信息。(订单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 什么什么营销方案
- 2025年网络安全防护与风险评估考试模拟试卷 - 防护措施与评估方法专项训练
- 2025年建筑设备维护保养合同协议书
- 2025年知识百科竞赛考试题库含答案
- 2025年自学考试大专试题卷及答案解析
- 2025年电路理论大题库及答案
- 2025年二级建造师公路实务真题及答案解析(B卷)
- 2025年3日福建事业单位面试题及解析附答案
- 九下语文必背篇目《出师表》
- 防爆安全施工方案
- 寺庙厨房安全管理办法
- 氧气安全培训课件
- 城乡居民养老保险培训课
- 含特殊药品复方制剂管理培训
- 企业msds管理制度
- 品质部部门管理制度
- 口腔专科沟通技巧精要
- 智慧工厂智能工厂项目商业计划书
- 宠物医疗市场消费者行为与需求变化2025年研究报告
- 地铁工务考试试题及答案
- smt操作员考试试题及答案
评论
0/150
提交评论