基于SSM实现的云商城购物系统

简介: 基于SSM实现的云商城购物系统

项目简介


1.1 背景分析

电子商城的普及,目前,越来越多的商业活动开始迁移到Inter中来进行,这种模式给商家和消费者带来了极大的便利,使以前很多不同的商业活动变得异常快捷。

1.2 系统描叙


本电子购物商城系统在设计时充分考虑了系统的可扩展性和商业活动特有的业务流程,良好的前期设计使他具有优秀的扩展能力并且便于维护,在发展飞速的生活中,为了更好的满足人们的需求,该系统提供强大的服务功能,更能吸引消费者。


1.3 系统功能


为了满足市场的需求,我们将该电子商城系统主要划分了如下的功能:1,浏览商品:包括按用户的需求俩分类浏览,搜索等;2,购买商品:包括用户选择商品了需要使用到购物车,以及订单等;3:用户信息管理:当用户注册了帐号后,可以对自己的个人信息进行查询,修改等功能;4:活动商品:当遇到节假日的时候,我们适当的对商品进行打折处理,以便更能吸引消费者前来购物,5:用户级别:消费者在进行注册,及已有的用户购物达到一定的程度是,可以让该用户享受更优惠的待遇;6后台关系:在这里,我们主要设置了几个模块,管理员模块,可以对商品及其他用户设置权限及其他相关操作,用户管理模块,以及商品管理模块。


1.4 开发平台

在开发过程中为了提高性能及安全性,我们在这里选择了Java语言,使用Idea开发环境,数据库则使用MySQL数据库。

1.5 数据库环境

  • 硬件环境
  • CPU:奔4以上
  • 内存:1G以上
  • 硬盘容量:80G 以上
  • 操作系统
  • Windows 7或以上


2.具体需求

2.1 功能需求


本系统分为前台与后台,前台是为消费者提供信息,当消费者进入前台界面后,如果成功注册后,并可以购买网页上的任何商品,但消费者不能对商品信息进行操作。对商品的操作则是在后台提供,当管理员进入后台,就可以对商品信息进行修改,也可以对会员进行删除。


2.2 用户接口需求

如果是游客进入该网站首页,则不容许购买任何商品,必须注册过后才可以购买,游客注册成功后并成为会员,会员只容许购买商品,查看商品,但不能进行删除,修改商品的任何内容

2.3 通信接口需求

2.4 性能需求

要求本系统一ORACLE数据库进行设计,使用最新的AJAX技术进行设计,是查询更新速度加快。更加吸引用户的眼球。

2.5 安全需求

采用完备的密码管理系统,分级限定操作限制,定期数据保存,每日更新。

2.6 可维护性需求

最高级别人员可享用任意修改商品及会员信息,分级人员享用其各自权限。

2.7 其他需求

目标系统功能齐全,能够完全满足业务需求。客户只可凭借客户名和密码进行个人信息的查询和修改,不得删除和进入其他客人信息(包括查看其他用户资料)。

3.整体设计

3.1 系统功能设计


电子商城系统其共分为两大功能模块:前台系统和后台系统。两大功能模块又分别包括各自的众多自模块,前台系统就是面向Internet上的用户,主要包括商品信息模块,用户信息模块,购物车模块,优惠活动模块,订单模块,后台系统则是用于商店管理员对网站极其对用户信息,商品信息进行管理和维护,主要包括管理员信息管理模块,用户信息管理模块,销售管理模块,收入统计模块,权限设置模块等,主要系统功能结构图如下:

92cdae616f614804fb9ed1e6df19dd8c.png

3.1.1 前台功能设计

  • 商品信息模块:热门商品浏览(首页吸纳时点击最高的商品的商品列表),新到的 商品浏览,商品的分类浏览,商品的快速搜索,商品的详细信息浏览,活动商品的浏览
  • 购物车模块:添加商品到购物车,购物车信息的修改,删除很结账
  • 用户信息管理模块:注册新用户,登录,用户修改密码,用户个人资料管理
  • 订单模块:查询个人订单列表,查询某订单的详细信息


3.1.2 后台功能设计

  • 管理员信息管理:登录和修改密码管理
  • 商品信息管理:添加,删除,商品类别;添加,修改,删除商品信息;添加,修改,删除活动商品信息
  • 用户信息管理:查询用户信息,修改账户金额
  • 新闻管理:对新闻进行添加,删除,修改管理
  • 销售管理:查询某月的销售情况,(包括每种商品的售出数量,相关订单数,收入)

3.2 系统流程分析


对电子商务系统来说,整个电子购物的流程是至关重要的,在电子商城的流程设计中就贯彻了这样的思想,下面是对购物流程的分析图:


eee54a02b4e21980289372a1484ab70c.png


4.数据库设计

4.1 基本表设计


  • 用户信息表(用户ID,用户名,用户密码,口令提示信息,口令提示题答用户真实信息,性别,用户帐号,家庭住址,邮箱地址,电话号码,邮政编码)
  • 商品信息表(商品ID,商品名称,商品图片,商品价格,商品信息介绍,分类编号,商品点击数)
  • 商品分类表(商品分类ID,分类名称)
  • 购物车表(记录ID,购物车ID,所购商品编号,购物车图片,购物时间,购物数量)
  • 订单表(订单号,该商品的购买数量,商品单价,交易时间,所属用户ID,商品ID)
  • 管理员信息表(管理员ID,管理员名称,管理员口令,管理员姓名,注册时间)

用户表

0b9b586ebeaa34c3604e5ac1dbe8b445.png


商品表


6184a628f4cff17e26f5dc857e3a655a.png


订单表


a049c9644483d445f88558f6ed3ecbf2.png

订单关联表


170cea0374c579dd2701b12f9cbea824.png

商品分类表


d1f15e4026cc8ec1cac5e2aa1ab9fa22.png

管理员表


a938c5f21b3b9a884e0e5d0af86ea9dd.png


4.2 基本表关系视图


e5989a9e7cb2a88f12f85d9d050b47c4.png



5.测试分析

5.1 编写目的

软件测试是软件质量保证的关键因素,代表了规约设计和代码的最终评审;证实了软件依据规约所具有的功能及其性能需求;增加了软件的可靠性。


在开发工资管理系统的过程中,为了及时发现迄今为止的错误,更有效率的完成该项开发工作,开发人员要对其进行软件测试。


该电子商城系统用于中型网站,适用于WINDOWS XP环境。它的使用者是这家企业的职工和财务管理人员。


5.2 代码展示


// 确认订单---更新收获人信息
publicvoidconfirmOrder(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{// 1、更新收货人信息
service.TbOrdersServiceservice=newservice.impl.TbOrdersServiceImpl();Stringaddress=request.getParameter("address");Stringname=request.getParameter("name");Stringtelephone=request.getParameter("telephone");Stringoid=request.getParameter("oid");TbOrdersorder=newTbOrders();order.setAddress(address);order.setName(name);order.setTelephone(telephone);order.setOid(oid);service.updateOrderAdrr(order);//修改支付状态
service.updateOrderState(oid);request.getSession().setAttribute("oid1",oid);//response.sendRedirect("/lanqiaoshop/alipayindex.jsp");
request.getRequestDispatcher("/alipayindex.jsp").forward(request,response);}// 提交订单
publicvoidsubmitOrder(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{HttpSessionsession=request.getSession();// 判断用户是否已经登录 未登录下面代码不执行
Useruser=(User)session.getAttribute("user");if(user==null){// 没有登录
request.getRequestDispatcher("/login.jsp").forward(request,response);return;}// 目的:封装好一个Order对象 传递给service层
TbOrdersorder=newTbOrders();// 1、private String oid;//该订单的订单号
Stringoid=UUID.randomUUID().toString();order.setOid(oid);// 2、private Date ordertime;//下单时间
order.setOrdertime(newDate()+"");// 3、private double total;//该订单的总金额
// 获得session中的购物车
Cartcart=(Cart)session.getAttribute("cart");doubletotal=cart.getTotal();order.setTotal(total);// 4、private int state;//订单支付状态 1代表已付款 0代表未付款
order.setState(0);// 5、private String address;//收货地址
order.setAddress(null);// 6、private String name;//收货人
order.setName(null);// 7、private String telephone;//收货人电话
order.setTelephone(null);// 8、private User user;//该订单属于哪个用户
order.setUser(user);// 9、该订单中有多少订单项List<OrderItem> orderItems = new ArrayList<OrderItem>();
// 获得购物车中的购物项的集合map
Map<String,CartItem>cartItems=cart.getCartItems();for(Map.Entry<String,CartItem>entry:cartItems.entrySet()){// 取出每一个购物项
CartItemcartItem=entry.getValue();// 创建新的订单项
TbOrderitemorderItem=newTbOrderitem();// 1)private String itemid;//订单项的id
orderItem.setItemid(UUID.randomUUID().toString());// 2)private int count;//订单项内商品的购买数量
orderItem.setCount(cartItem.getBuyNum());// 3)private double subtotal;//订单项小计
orderItem.setSubtotal(cartItem.getSubtotal());// 4)private Product product;//订单项内部的商品
orderItem.setProduct(cartItem.getProduct());// 5)private Order order;//该订单项属于哪个订单
orderItem.setOrder(order);// 将该订单项添加到订单的订单项集合中
order.getOrderItems().add(orderItem);}// order对象封装完毕
// 传递数据到service层
// ProductService service = new ProductService();
service.TbOrdersServiceservice=newservice.impl.TbOrdersServiceImpl();service.submitOrder(order);session.setAttribute("order",order);// 页面跳转
// response.sendRedirect(request.getContextPath()+"/order_info.jsp");
request.getRequestDispatcher("/my-add.jsp").forward(request,response);}// 清空购物车
publicvoidclearCart(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{HttpSessionsession=request.getSession();session.removeAttribute("cart");// 跳转回cart.jsp
response.sendRedirect(request.getContextPath()+"/my-car.jsp");// request.getRequestDispatcher("/WEB-INF/my-car.jsp").forward(request,
// response);
}// 删除单一商品
publicvoiddelProFromCart(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{// 获得要删除的item的pid
Stringpid=request.getParameter("pid");// 删除session中的购物车中的购物项集合中的item
HttpSessionsession=request.getSession();Cartcart=(Cart)session.getAttribute("cart");if(cart!=null){Map<String,CartItem>cartItems=cart.getCartItems();// 需要修改总价
doublexcount=cart.getTotal()-cartItems.get(pid).getSubtotal();// 保留一位小数
xcount=(double)Math.round(xcount*100)/100;cart.setTotal(xcount);// 删除
cartItems.remove(pid);cart.setCartItems(cartItems);}session.setAttribute("cart",cart);// 跳转回cart.jsp
response.sendRedirect(request.getContextPath()+"/my-car.jsp");// request.getRequestDispatcher("/WEB-INF/my-car.jsp").forward(request,
// response);
}// 将商品添加到购物车
publicvoidaddProductToCart(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{HttpSessionsession=request.getSession();TbProductServiceservice=newTbProductServiceImpl();// 获得要放到购物车的商品的pid
Stringpid=request.getParameter("pid");// 获得该商品的购买数量
intbuyNum=Integer.parseInt(request.getParameter("buyNum"));// 获得product对象
TbProductproduct=service.getAllProduct(pid);// 计算小计
doublesubtotal=product.getPshop_price()*buyNum;// 保留一位小数
subtotal=(double)Math.round(subtotal*100)/100;// 封装CartItem
CartItemitem=newCartItem();item.setProduct(product);item.setBuyNum(buyNum);item.setSubtotal(subtotal);// 获得购物车---判断是否在session中已经存在购物车
Cartcart=(Cart)session.getAttribute("cart");if(cart==null){cart=newCart();}// 将购物项放到车中---key是pid
// 先判断购物车中是否已将包含此购物项了 ----- 判断key是否已经存在
// 如果购物车中已经存在该商品----将现在买的数量与原有的数量进行相加操作
Map<String,CartItem>cartItems=cart.getCartItems();doublenewsubtotal=0.0;if(cartItems.containsKey(pid)){// 取出原有商品的数量
CartItemcartItem=cartItems.get(pid);intoldBuyNum=cartItem.getBuyNum();oldBuyNum+=buyNum;cartItem.setBuyNum(oldBuyNum);cart.setCartItems(cartItems);// 修改小计
// 原来该商品的小计
doubleoldsubtotal=cartItem.getSubtotal();// 新买的商品的小计
newsubtotal=buyNum*product.getPshop_price();cartItem.setSubtotal(oldsubtotal+newsubtotal);}else{// 如果车中没有该商品
cart.getCartItems().put(product.getPid(),item);newsubtotal=buyNum*product.getPshop_price();}// 计算总计
doubletotal=cart.getTotal()+newsubtotal;// 保留一位小数
total=(double)Math.round(total*100)/100;cart.setTotal(total);// 将车再次访问session
session.setAttribute("cart",cart);// 直接跳转到购物车页面
response.sendRedirect(request.getContextPath()+"/my-car.jsp");}}


5.3 功能测试

9b509318517b7aad0f1689fb9640d68e.png


7d0f8c09e9b413214f4ed757f2da6398.png

5.4 运行截图


5.4.1 前台

登录


image.png

首页

image.png


个人中心


image.png


查看商品


image.png


商品详情


image.png



购物车

image.png


下单


image.png


支付



5.4.2 后台管理

首页

image.png


商品分类

image.png



商品管理


6905a1a14250f21bb29d8bf9e1e9bf2b.png


订单管理


image.png


用户管理

image.png



6.总结


6.1 该产品的使用范围


该电子商城系统是一项独立的软件产品,即针对中型电子商务管理系统。可供消费者提供查询相应的商品信息,或者是购买相应商品,只需要该消费者进入本网站的首页,进行注册后,并可以成功的对商品购买,在后台通过管理员的维护,可以不定期的对商品,会员信息,及相关的新闻进行及时的更新,逐步符合广大消费者的需求。


6.2 缺陷和不足

该网站的缺陷也很明显,很多功能的实现还不是很切合实际的情况,很多功能能也不够完善,可扩充性也不是很好。

6.3 补救方案

该电子商城系统受时间,人员和技术的限制,对产生的缺陷无法立即进行补救,但开发人员会尽快做出详细的解决方案。

6.4 体会


经过一个多星期的设计和开发,该电子商城系统基本开发完毕。其功能基本符合客户需求。对于数据的一致性的问题也通过程序进行了有效的解决。

相关文章
|
6月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
5月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
521 37
|
5月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
5月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
86 0
|
6月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
7月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
120 1
|
8月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
75 0
杨校老师之基于SSM开发的校园点餐配送系统
|
8月前
|
小程序 前端开发 测试技术
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
|
7月前
|
安全 数据挖掘 测试技术
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)(2)
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)
95 0
|
7月前
|
Java 关系型数据库 MySQL
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)(1)
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)
88 0