基于JavaWeb实现洋酒销售平台的设计与实现(一)https://developer.aliyun.com/article/1423527
5.2.5 最新商品
这里显示的是商城里最新上架的商品。可以让顾客及时了解到新品的情况。具体新品的增删改可以在后台管理模块实现。如图5-8所示:
图5-8最新上架界
5.3 后台管理模块的设计与实现
后台的设计完全是为了前台服务的,前台主要是展现,所以后台必须有支持前台的功能。后台的维护功能主要包括如下:系统管理、商品分类管理、商品管理、订单管理、注册用户管理。
5.3.1 后台管理系统
5.3.1.1 系统管理员登陆模块
管理员的登陆入口在另一个页面,管理员的账号和密码是数据库里默认已预先存入数据库的,用户名cjh,密码1231。输入完毕无错误提示,点击“登陆”按钮进入后台管理系统。界面如图5-9所示。
图 5-9 后台管理系统登陆界面
后台系统管理员登陆模块主要代码:
5.3.2 系统后台管理
管理员登陆进入后系统台管理模块,如图5-10所示是管理员首先看到的页面:
图5-10 后台管理页面
系统后台管理分类为以下模块:注册用户管理,一级分类管理,二级分类管理,商品管理,订单管理。
5.3.2.1 注册用户管理
注册用户管理包括序号,用户名,真实姓名,编辑以及删除。
点击编辑后如图5-11所示:
图 5-11编辑用户
5.3.2.2 一级分类管理
这个模块的功能是管理首页上的导航模块上的一级分类部分,可添加新分类,具有编辑,删除,添加三个操作按钮。如图5-12所示:
图 5-12 一级分类管理
5.3.2.3 二级商品管理
这个模块的功能是管理点导航模块上的一级分类部分时出现的二级分类部分,二级分类是依据一级分类为前提的。可添加新分类,具有编辑,删除,添加三个操作按钮。如图5-13所示:
图 5-13 二级分类管理
5.3.2.4 商品管理
这个模块的功能是对商品进行管理的,可以查看商品的图片,名称价格,是否热门和进行编辑。如图5-14所示:
图 5-14 商品管理
5.3.2.5 订单管理
这个模块的功能是管理用户订单信息。包括订单的编号,收货人以及订单详情等。如图5-15所示:
图 5-15订单管理
四,核心代码展示
package cn.itbaizhan.shop.adminuser.action; import org.apache.struts2.ServletActionContext; import cn.itbaizhan.shop.adminuser.service.AdminUserService; import cn.itbaizhan.shop.adminuser.vo.AdminUser; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class AdminUserAction extends ActionSupport implements ModelDriven<AdminUser> { // 模型驱动使用的对象 private AdminUser adminUser = new AdminUser(); public AdminUser getModel() { return adminUser; } // 注入AdminUserService private AdminUserService adminUserService; public void setAdminUserService(AdminUserService adminUserService) { this.adminUserService = adminUserService; } // 后台登录的执行的方法 public String login() { // 调用service方法完成登录 AdminUser existAdminUser = adminUserService.login(adminUser); // 判断 if (existAdminUser == null) { // 用户名或密码错误 this.addActionError("用户名或密码错误!"); return "loginFail"; } else { // 登录成功: ServletActionContext.getRequest().getSession() .setAttribute("existAdminUser", existAdminUser); return "loginSuccess"; } } }
package cn.itbaizhan.shop.cart.action; import org.apache.struts2.ServletActionContext; import cn.itbaizhan.shop.cart.vo.Cart; import cn.itbaizhan.shop.cart.vo.CartItem; import cn.itbaizhan.shop.product.service.ProductService; import cn.itbaizhan.shop.product.vo.Product; import com.opensymphony.xwork2.ActionSupport; /** * 购物车Action */ public class CartAction extends ActionSupport { // 接收pid private Integer pid; // 接收数量count private Integer count; // 注入商品的Service private ProductService productService; public void setProductService(ProductService productService) { this.productService = productService; } public void setPid(Integer pid) { this.pid = pid; } public void setCount(Integer count) { this.count = count; } // 将购物项添加到购物车:执行的方法 public String addCart() { // 封装一个CartItem对象. CartItem cartItem = new CartItem(); // 设置数量: cartItem.setCount(count); // 根据pid进行查询商品: Product product = productService.findByPid(pid); // 设置商品: cartItem.setProduct(product); // 将购物项添加到购物车. // 购物车应该存在session中. Cart cart = getCart(); cart.addCart(cartItem); return "addCart"; } // 清空购物车的执行的方法: public String clearCart(){ // 获得购物车对象. Cart cart = getCart(); // 调用购物车中清空方法. cart.clearCart(); return "clearCart"; } // 从购物车中移除购物项的方法: public String removeCart(){ // 获得购物车对象 Cart cart = getCart(); // 调用购物车中移除的方法: cart.removeCart(pid); // 返回页面: return "removeCart"; } // 我的购物车:执行的方法 public String myCart(){ return "myCart"; } /** * 获得购物车的方法:从session中获得购物车. * @return */ private Cart getCart() { Cart cart = (Cart) ServletActionContext.getRequest().getSession() .getAttribute("cart"); if (cart == null) { cart = new Cart(); ServletActionContext.getRequest().getSession() .setAttribute("cart", cart); } return cart; } }
package cn.itbaizhan.shop.order.action; import java.io.IOException; import java.util.Date; import org.apache.struts2.ServletActionContext; import cn.itbaizhan.shop.cart.vo.Cart; import cn.itbaizhan.shop.cart.vo.CartItem; import cn.itbaizhan.shop.order.service.OrderService; import cn.itbaizhan.shop.order.vo.Order; import cn.itbaizhan.shop.order.vo.OrderItem; import cn.itbaizhan.shop.user.vo.User; import cn.itbaizhan.shop.utils.PageBean; import cn.itbaizhan.shop.utils.PaymentUtil; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /** * 订单Action类 */ public class OrderAction extends ActionSupport implements ModelDriven<Order> { // 模型驱动使用的对象 private Order order = new Order(); public Order getModel() { return order; } // 接收支付通道编码: private String pd_FrpId; public void setPd_FrpId(String pd_FrpId) { this.pd_FrpId = pd_FrpId; } // 接收付款成功后的参数: private String r3_Amt; private String r6_Order; public void setR3_Amt(String r3_Amt) { this.r3_Amt = r3_Amt; } public void setR6_Order(String r6_Order) { this.r6_Order = r6_Order; } // 接收page private Integer page; public void setPage(Integer page) { this.page = page; } // 注入OrderService private OrderService orderService; public void setOrderService(OrderService orderService) { this.orderService = orderService; } // 生成订单的执行的方法: public String saveOrder() { // 调用Service完成数据库插入的操作: // Order order = new Order(); // 设置订单的总金额:订单的总金额应该是购物车中总金额: // 购物车在session中,从session总获得购物车信息. Cart cart = (Cart) ServletActionContext.getRequest().getSession() .getAttribute("cart"); if (cart == null) { this.addActionMessage("亲!您还没有购物!"); return "msg"; } order.setTotal(cart.getTotal()); // 设置订单的状态 order.setState(2); // 1:未付款. // 设置订单时间 order.setOrdertime(new Date()); // 设置订单关联的客户: User existUser = (User) ServletActionContext.getRequest().getSession() .getAttribute("existUser"); if (existUser == null) { this.addActionMessage("亲!您还没有登录!"); return "msg"; } order.setUser(existUser); // 设置订单项集合: for (CartItem cartItem : cart.getCartItems()) { // 订单项的信息从购物项获得的. OrderItem orderItem = new OrderItem(); orderItem.setCount(cartItem.getCount()); orderItem.setSubtotal(cartItem.getSubtotal()); orderItem.setProduct(cartItem.getProduct()); orderItem.setOrder(order); order.getOrderItems().add(orderItem); } orderService.save(order); // 清空购物车: cart.clearCart(); // 页面需要回显订单信息: // 使用模型驱动了 所有可以不使用值栈保存了 // ActionContext.getContext().getValueStack().set("order", order); return "saveOrder"; } // 查询我的订单: public String findByUid() { // 获得用户的id. User existUser = (User) ServletActionContext.getRequest().getSession() .getAttribute("existUser"); // 获得用户的id Integer uid = existUser.getUid(); // 根据用户的id查询订单: PageBean<Order> pageBean = orderService.findByUid(uid, page); // 将PageBean数据带到页面上. ActionContext.getContext().getValueStack().set("pageBean", pageBean); return "findByUid"; } // 根据订单id查询订单: public String findByOid() { order = orderService.findByOid(order.getOid()); return "findByOid"; } // 为订单付款: public String payOrder() throws IOException { // 1.修改数据: Order currOrder = orderService.findByOid(order.getOid()); currOrder.setAddr(order.getAddr()); currOrder.setName(order.getName()); currOrder.setPhone(order.getPhone()); // 修改订单 orderService.update(currOrder); this.addActionMessage("亲!提交成功!"); return "msg"; } // 付款成功后跳转回来的路径: public String callBack(){ // 修改订单的状态: Order currOrder = orderService.findByOid(Integer.parseInt(r6_Order)); // 修改订单状态为2:已经付款: currOrder.setState(2); orderService.update(currOrder); this.addActionMessage("支付成功!订单编号为: "+r6_Order +" 付款金额为: "+r3_Amt); return "msg"; } // 修改订单的状态: public String updateState(){ Order currOrder = orderService.findByOid(order.getOid()); currOrder.setState(4); orderService.update(currOrder); return "updateStateSuccess"; } }
五,项目总结
随着计算机技术的发展,使得网络的应用更加广泛。加大信息网络的建设,开展网络交易平台,进行网络交易服务等将成为未来网络建设的具体内容,而网上销售系统平台的出现,能极大的提升大众对于购物的体验。
JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。因此本论坛采用JSP技术开放能满足这种需求。
论文中详细讨论了网上洋酒销售系统的设计思想,包括系统体系结构的设计、系统功能模块设计、数据库设计、系统的实现等。根据软件设计和实现的情况,重点阐述了系统实现过程中功能模块设计、数据库设计、组件的设计、前台显示部分设计、后台维护部分设计等关键设计。
到论文截稿时,网上洋酒销售系统已通过运行测试,基本完成预期目标的实现。能够达到在线浏览,购买商品,基本满足了大众电脑购买的需求。
网上电脑销售系统在设计和实现过程中,系统从不可用,到可用运行,从字符乱码,到正常的中文显示。一次次的改进,这使本人认识到设计、算法在系统开发中的重要性和理论与实践相结合的重要性。
但由于系统开发的经验不足,水平有限,所以目前此系统的实现上还有许多地方可以进一步改善和提高。
网上洋酒销售系统只是实现了网上销售系统的基本功,同能时由于是第一次编写此类系统,还有很多比较流行的功能,如:用户数据分析,相关产品推荐,模糊查询等都尚未实现,在算法的采用和数据库逻辑的设计上还存在一些不完善的地方。
在经过几个月的努力,我最终顺利完成了网上电脑销售系统的软件开发。在整个开发过程中,我不仅学会了使用MyEclipse,Mysql等一系列开发工具,体验了开发过程中的苦与乐,而且也达到了锻炼自己的目的,同时进一步加深对软件开发工作的理解和认识。可谓是收获颇丰。