江西理工大学2012届本科生毕业设计(论文)
图4-11 购物车添加花品流程图
4.4.2修改购买数量设计
在图4-12界面中购物车信息表中填入购买的数量,然后单击更改数量按钮即可以更改购买数量。当填入负数或0是表示从购物车内删除对应花品。
32
江西理工大学2012届本科生毕业设计(论文)
图4-12更改数量后的购物车信息
更改购物车中花品数量的实现根自助订花后台实现逻辑比较相似。 4.4.3订单的提交的设计
当用户选择玩需要的商品,填写好订单一般信息如留言,发送日期,接受人信息等后就可以单击完成订购按钮生成新的订单并保存到数据库中。其具体实现核心代码如下:
??//
Vector cart=(Vector)session.getAttribute(\获取购物车 if(cart==null || cart.size()==0)
out.println(\language='javascript'>alert('您还没有选购商品!');window.location.href='index.jsp';\
goodselement gs=new goodselement(); int userID=0;
userID=((Integer)session.getAttribute(\alue(); String orderID=\
if(((String)session.getAttribute(\ if(userID==0) out.println(\用户登录错误!请重新登录');window.location.href='exit.jsp';\
or.setUserID(userID);
or.setOrderNotes(orderNotes);
//获取当前时间
Calendar cal=new GregorianCalendar(TimeZone.getDefault()); int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH)+1; int date=cal.get(Calendar.DATE);
33
江西理工大学2012届本科生毕业设计(论文)
int hour=cal.get(Calendar.HOUR_OF_DAY); int minute=cal.get(Calendar.MINUTE); minute=(int)(minute/10);
orderID=Integer.toString(userID)+Integer.toString(year)+Integer.toString(month)+Integer.toString(date)+Integer.toString(hour)+Integer.toString(minute);//用户ID家时间组成订单号,时间是
//精确到分钟的十位数。 or.setOrderID(orderID); int ret=0;
orderDaoImpl oral=new orderDaoImpl();//orderDaoImpl为订单数据库访问操作
//实现类
ret=oral.insert(or);//插入订单一般信息 if(ret==0){
out.println(\订单提交失败!两个订单提交间隔请保持10分钟以上。');window.location.href='OrderDetail.jsp';\ }
conn=new connDB(); int i=0;
//以下为订单明细插入数据库
for(i=0;i gs=(goodselement)cart.elementAt(i); ret=conn.executeUpdate(\into lineItem_table values('\orderID+\me()+\ if(ret==0){ break; } } conn.close(); if(i!=cart.size()){//插入失败代码实现回滚 ret=oral.delete(or);//删除订单一般信息 conn=new connDB(); ret=conn.executeUpdate(\from orderID='\删除订单明细 conn.close(); out.println(\language='javascript'>alert('订单提交失败!请重新提交。');window.location.href='OrderDetail.jsp';\ 34 lineItem_table where 江西理工大学2012届本科生毕业设计(论文) }else{ cart.clear(); session.setAttribute(\ session.setAttribute(\ out.println(\language='javascript'>alert('订单提交成功!订单号为:\ } }else{ out.println(\language='javascript'>alert('订单已经提交过了!');window.location.href='index.jsp';\ } %> 4.5 后台用户管理模块设计 后台用户管理模块主要是实现管理员查看会员用户一般信息,对会员用户进行冻结和解冻操作。当会员用户的诚信比较差时,管理员可以对该会员实行帐户冻结操作,也可以根据实际情况将已冻结的会员帐户进行解冻操作。在次模块中实现了分页显示。 图4-13 用户管理第一页 当显示页为第一页时只需显示“下一页”和“最后一页”选项。 在次界面中,管理员可以单击用户注册名称查看用户的一般信息,点击用户状态可以改变用户的状态,即点击“已激活”可以将用户帐户冻结,点击一“已冻结”可以将该用户帐户解冻。 该模块的核心代码如下: <% int pages=1; String pg=request.getParameter(\获取传递的页面参数 if(pg!=null&&!pg.equals(\ pages=Integer.parseInt(pg); 35 江西理工大学2012届本科生毕业设计(论文) connDB conn=new connDB(); chStr chstr=new chStr(); int countRows=0; int countPages=1; int pageSize=5;//设定每页显示的信息条数 ResultSet rs_sale=conn.executeQuery(\读 //取用户信息条数 if(rs_sale.next()) countRows=rs_sale.getInt(1); if(countRows!=0) countPages=((countRows%pageSize)==0)?(countRows/pageSize):(countRows/pageSize+1);//计 //算显示的页面数 String sql=\top \from userInfo_table where userID not in(select top \from userInfo_table order by userStatus desc,userType desc)and userType=0 order by userStatus desc,userType desc\从数据库中读取第pages页 rs_sale=conn.executeQuery(sql); //要显示的用户信息。 .??%> 36