private String orderId = \用户订单号 private boolean isLogin = true; //用户是否登录! private int page = 1; //显示的页码
private int pageSize = 15; //每页显示的订单数 private int pageCount = 0; //页面总数
private long recordCount = 0; //查询的记录总数 该类的主要操作(省去了属性相关的getX()/setX()操作) addnew():负责向购物车中添加新购买的图书。 delete():负责从数据库中删除指定ID的订单。 modiShoper():负责修改购物车中已选的图书。 delShoper():负责删除购物车中的物品。
getAllorder():负责从数据库中的订单列表中查询指定用户的订单列表。 getGbk():获得指定字符串的GBK编码。 getOrder():获得单个订单对象。
payout():提交购物车,把订单插入到数据库中。
update():该方法负责当用户付款后,把数据中对应订单的是否付款标记修改成已付状态。
重要操作:主要介绍addnew()方法: 功能:负责向购物车中添加一条新记录。 参数设计:页面传递的request对象。
返回值:boolean类型,成功返回true,否则返回false。
设计思路:从页面获得表单数据(request对象中)---》获得图书编号等参数值—》判断购买数量是否合法—》如果是可以操作,否则不能操作—》判断是否第一次购买—》如果是第一次购买,按第一次购买操作—》否则查询购买列表,找是否有相应项,有则直接修改数量—》否则添加新记录。 函数代码:
public boolean addnew(HttpServletRequest newrequest) throws Exception{ …………
request = newrequest;
String ID = request.getParameter(\ String Amount = request.getParameter(\ long bookid = 0; int amount = 0;
try { bookid = Long.parseLong(ID);
amount = Integer.parseInt(Amount); } catch (Exception e) { return false; } if (amount < 1) return false;
session = request.getSession(false);
if (session == null) { return false; } purchaselist = (Vector) session.getAttribute(\
String sqlStr = \ try { con=DataBase.getConnection(); stmt=con.createStatement(); rs = stmt.executeQuery(sqlStr); if (rs.next()) {
if (amount > rs.getInt(1)) { leaveBook = rs.getInt(1); isEmpty = true;
return false; } } DataBase.closeResultSet(rs); DataBase.closeStatement(stmt); DataBase.closeConnection(con); } catch (SQLException e) { return false; } allorder iList = new allorder(); iList.setBookNo(bookid); iList.setAmount(amount);
boolean match = false; //是否购买过该图书 if (purchaselist == null) { //第一次购买 purchaselist = new Vector(); purchaselist.addElement(iList); } else { // 不是第一次购买
for (int i = 0; i < purchaselist.size(); i++) {
allorder itList = (allorder) purchaselist.elementAt(i); if (iList.getBookNo() == itList.getBookNo()) {
itList.setAmount(itList.getAmount() + iList.getAmount()); purchaselist.setElementAt(itList, i);
match = true;
break; } //if name matches结束 } // for循环结束 if (!match)
purchaselist.addElement(iList);}
session.setAttribute(\ return true;}
(二) 客户界面设计与实现
1.
界面头和界面尾设计
为了提高代码的重用性,我把客户界面部分相同的头和尾作成两个独立的块,效果如下图:
图4-1 界面头和界面尾效果图
2.
老用户登录
1.用户登录界面login.jsp代码如下:
<%@ page contentType=\
<%@ page import=\<%
String op=request.getParameter(\if(op!null&&op.equals(\
String s_userid=request.getParameter(\String s_password=request.getParameter(\rs=stmt.executeQuery(\
where uesrid='\if(rs.next()){
session.setAttribute(\response.sendRedirect(\
else{repsonse.sendRedirect(\用户名或密码不对!\;}}
if(op!=null&&op.equals(\session.remoreAttribute(\session.remoreAttribute(\response.sendRedirect(\
String s_userid=(String)session.getAtribute(\%> <%
if(s_userid==null){
&>
<%}else{%>
欢迎来到网上书城…… | |
您可以: | |