1、参考文献1序言 随着Internet的发展,计算机软件系统不断的应用于各个领域,比如银行,超市,图书馆等。这些计算机软件系统给管理人员带来了极大的方便,提高了工作效率,减少工作人员工作量。就拿图书销售来说,网上购物已走进我们的生活中。通过它,我们购买东西更加的方便,便捷,也给经销商对商品的采购,统计等管理范围内带来很大的方便。2系统需求分析说明2.1系统介绍本系统是建立在Windows平台上,基于B/S结构的一个简单购物网站。通过这个网站,可以更加方便地管理商品和销售。2.2 功能需求通过对淘宝网,京东等购物平台的认识和分析,我对购物网站有了基本的了解,我觉得该系统至少应该具有以下的一些基本功
2、能:(1) 注册管理:能够对用户名,密码的简单验证;能够对电子邮箱,Email进行有效性验证;能够防止利用页面刷新重复注册,以及已经注册的用户不能重复注册。(2) 商品浏览:分类显示商品;显示商品详情,提供购买链接;可以对商品进行模糊查询;显示当前用户的浏览记录。浏览商品时不要求用户登录,但下订单前用户必须登录,对于浏览过的商品有历史记录。3总体设计3.1总体结构和模块设计 (1)前台部分由用户使用,包括用户注册,购物车,我的订单,商品浏览,个人管理等几个部分。(2)后台部分由用户管理,订单管理,商品管理等几个部分。功能结构图如下:图3.1 功能模块设计图3.2处理流程业务流程如下:图3.2
3、.业务流程图4页面设计4.1前台页面 4.1.1商品浏览页面图4.1 前台登陆页面4.1.2用户 图4.2 用户注册页面4.2后台页面 4.2.1后台登陆页面图4.3 后台登陆入口页面 4.2.2后台管理页面 图4.4后台管理页面5系统详细设计5.1 前台设计5.1.1前台总体模块7: (1)前台部分由用户使用,包括用户注册,购物车管理,我的订单,商品浏览,个人管理等几个部分。模块功能介绍:用户注册:能够提供用户的注册,并且对用户的注册进行以下验证:用户名非空;密码不小于6位;邮箱Email的有效性;防止通过刷新重复提交.购物车管理:所选商品须通过购物车进行保存;对于相同的书籍,在再次购买的时
4、候,在购物车中相应的书籍上增加数量;在购物车中修改订单数量的时候防止输入非数字;在购物车然后生成订单。我的订单:用户可以查看自己所有的订单,以及查看具体某一张订单,通过查看订单,用户可以查看订单现在的状态,查看订单的具体详情:收货人地址,收货方式,付款方式,具体商品,小计,总计等等。商品浏览:用户可以通过商品的id或者商品的名称进行查找商品,并且对于浏览过的商品存在浏览历史,对于登陆后的用户可以对商品进行留言。个人管理:用户可以管理自己账号的相关信息,比如:修改个人的基本信息,修改自己的密码。5.1.2用户注册模块: 用户可以通过注册评论商品代码实现:1. 有效性验证8: 通过js 对客户端的
5、提交数据进行有效性验证.关键代码如下:检查邮箱的有效性:function chkEmail(str) return str.search(/w-1,w-1,.w-1,/)=0?true:false; function check() if(myform.userName.value=) alert(请填写用户名); return false; else if(!IsValid() alert(用户名只能使用字母和数字 return false; else if(myform.psw.value=请填写密码 else if(myform.psw.value != myform.conpsw.va
6、lue)两次密码不一致 else if(myform.trueName.value =请填写姓名 else if(myform.email.value =请填写邮箱chkEmail(myform.email.value)请填写有效的Email地址 else if(myform.address.value =地址必须填写! else if(myform.nam.value=) 请输入验证码 else if(myform.nam.value!=myform.con.value)两次验证码不一样! else document.myform.submit(); 2. 防止通过刷新重复提交9:当提交完注
7、册信息后,要求输入验证码,防止重复提交数据到数据库,通过image.jsp写出一个随机数,与注册jsp页面相匹配,关键代码如下: Jsp页面验证码: var n=parseInt(Math.random()*8999+1000); myform.con.value = n; document.write(img id=mk src=/BookShopping/image.jsp?num=+n+ function nextImage() n=parseInt(Math.random()*8999+1000); document.all(mk).src=/BookShopping/image.js
8、p?+n; a href=javascript:nextImage();换一张Image.jsp代码如下:% tryBufferedImage bf=new BufferedImage(70,25,BufferedImage.TYPE_INT_RGB); Graphics2D g2=bf.createGraphics(); g2.setPaint(new Color(0,0,255); g2.fillRect(0,0,70,25); g2.setPaint(new Color(255,255,255); String str=request.getParameter(num session.s
9、etAttribute(,str); g2.setFont(new Font(Arial,Font.BOLD,24); g2.drawString(str,7,20); for(int i=0;i3.防止相同用户名用户注册:当提交数据后,为了防止出现相同的用户,在进行注册的时候,通过相应的DAO中的exsitOne方法先检查用户名是否存在,存在不允许注册,关键代码如下:public Boolean exsitOne(String userName) String sql = select uName from RegUser; try stat = conn.createStatement()
10、; rs = stat.executeQuery(sql); while(rs.next() String exsit = rs.getString(uName if(userName.equals(exsit) return true; catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); 图5.2 注册验证图5.1.3我的订单模块: 对于购买了商品的用户,在产生订单后,可以通过双击查看订单,在查看订单的时候,可以查看到订单的当前状态,以及订单的总金额,和订单的一些基本信息。1.显示所有订单
11、:读取数据库中指定用户的所有订单,将结果集存取到一个ArrayList中,再返回显示页面,关键代码如下:response.setContentType(text/html String id = request.getParameter(uidselect * from bookOrder where uid = +id; DAO dao = new DAO(); ResultSet rs = dao.getOrderInfo(sql); ArrayList mylist = new ArrayList(); int oid = Integer.parseInt(rs.getString(oI
12、d); String receiver = rs.getString(oReceiveName String oPayType = rs.getString(oPayType float total = dao.getTotal(select sum(oAmount*oPrice) from orderInfo where oId =+oid ); String oStatus = rs.getString(oStatus String date = rs.getString(oTime MyOrderBean one = new MyOrderBean(oid,date,receiver,t
13、otal,oPayType,oStatus); mylist.add(one); catch (SQLException e) 2.显示某个订单:当用户双击某个订单的时候,通过订单的id,以及用户id,联合查询出指定的订单,再返回到显示页面,关键代码如下: String id = request.getParameter(id String sql = select * from bookOrder,orderInfo,book where bookOrder.oId = orderInfo.oId and book.bId = orderInfo.bId and bookOrder.oId
14、= + id + ArrayList onelist = new ArrayList%ArrayList booktype = (ArrayList) request .getAttribute(bookTypeInfos1 if (null != booktype) for (int i = 0; i tr /tdtd align=left width=155 class=class_tda title=%=bookTypeInfo.getBTypeName()% href=/BookShopping/servlet.user/ListOneBookType?bid=font style=font-size: 10.5pt color=#9e0b0e/font/tr/table2.商品查找:用户可以通过输入书籍名称,查找出自己要找的书籍,关键代码如下: Servlet: String sql =select * from book where bName like %+what+%Book arraylist = new ArrayList href=/BookShopping/servlet.user/ListOneBook?id= onclick=setCookies(historylia href=servlet.user/ListOneBook?c