基于Springboot的百信手机商城的设计与实现
摘要:百信手机商城是一个综合性的 B2C 电商平台,百信手机商城包括供用户进行手机浏览的网站前台页面和供商家进行手机店铺管理的后台系统,用户可在本商城进行注册和登录,登录之后就可以方便快捷的在商城页面查看手机,能够清晰地看到手机的品牌,样式,配置和具体使用方法,用户可以在短时间查看很多手机并挑选出自己满意的手机进行下单,线上购买手机既节省了金钱又节约时间。
百信手机商城能够为用户购买手机带来便利,用户根据自己的需求进行筛选,挑选出自己最满意的手机,能够足不出户的完成购物体验并且能在短时间内收到自己所购满的手机,增加购物时的满意度,也能为商家管理手机品牌信息提高效率,快速的录入手机信息,对手机商品信息排版,能够更好地管理各类手机。
关键词:手机商城,购物,SpringBoot
Design And Implementation of Baixin Mobile Mall Based on Springboot Framework
Abstract: Baixin mobile mall is a comprehensive B2C E-commerce platform, Baixin mobile mall includes the website front page for users to browse mobile phones and the back system for businesses to manage mobile shops. Users can register and log in in the mall. After logging in, users can easily and quickly view mobile phones on the mall page, and can clearly see the brand, style, configuration and specific use methods of mobile phones. Users can use the mobile phones in a short time Time to check a lot of mobile phones and select the ones you are satisfied with to place an order. Online purchase of mobile phones saves both money and time.
Baixin mobile phone mall can bring convenience for users to purchase mobile phones. Users can select their most satisfactory mobile phones according to their own needs, complete the shopping experience without leaving home, receive their full mobile phones in a short time, and increase the satisfaction of shopping. It can also improve the efficiency of mobile phone brand information management for businesses, and quickly enter mobile phone information, The layout of mobile phone product information can better manage all kinds of mobile phones.
Keywords: Mobile Mall, Shopping, SpringBoot
目 录
第1章 绪 论 1
1.1 系统开发的背景及意义 1
1.2 系统研究的主要内容 1
1.3 国内外发展现状 2
第2章 系统需求分析 3
2.1 系统的功能需求 3
2.2 UML系统建模 3
2.3 订单状态图 4
2.4 本章小结 5
第3章 系统设计与实现 6
3.1 系统概念设计ER图 6
3.2 系统数据库表设计 6
3.3 系统模块的设计 12
3.4 系统实现 16
3.4.1 百信会员登录模块的实现 16
3.4.2 百信会员注册模块的实现 18
3.4.3 百信会员购物车模块的实现 18
3.4.4 百信会员订单支付模块的实现 19
3.4.5 百信会员个人中心模块的实现 20
3.4.6 百信系统管理员登录模块的实现 21
3.4.7 百信分类管理模块的实现 22
3.4.8 百信商品管理模块的实现 22
3.4.9 百信会员管理模块的实现 23
3.4.10 百信订单管理模块的实现 24
3.4.11 百信系统管理模块的实现 25
3.5 本章小结 26
第4章 系统测试 27
4.1 网站前台系统测试 27
4.1.1百信手机商城会员登录模块测试 27
4.1.2百信手机商城会员购物车模块测试 27
4.1.3百信手机商城会员订单支付模块测试 28
4.2 后台系统测试 29
4.2.1百信手机商城商品管理模块测试 29
4.2.2百信手机商城订单管理模块测试 29
4.3 本章小结 30
第5章 结束语 31
5.1 全文总结 31
5.2 课题展望 31
参考文献 32
致 谢 33
第1章 绪 论
1.1 系统开发的背景及意义
现如今越来越多的人选择在网上购物中心购买手机之类的商品,根据工业和信息化部公布的数据统计,到2018年底全国手机普及率为112台/百人,也就是说每人平均拥有1.12部手机,如今手机越来越普及,上到老人,下到小孩,基本上是人手一部手机,甚至有些人需要配备两台或者两台以上的手机;而有一些研究报告称,苹果手机的平均使用寿命是3.7年,安卓手机的平均使用寿命是1.6年,所以基本上每年都会有很多人需要在网上购买手机。而现如今专卖手机的商城系统还比较少,而且还没有比较完善的一个手机商城系统,所以开发百信手机商城系统能够为消费者购买手机带来便利,消费者根据自己的需求进行筛选,挑选出自己最满意的手机,也能为商家管理手机品牌信息提高效率。
1.2 系统研究的主要内容
本课题主要研究和开发百信手机商城系统,以及一些相关的技术在此系统中的应用,此系统会分为展示给用户使用的百信手机前台系统和供商家管理的百信手机后台系统。
本系统主要目的是能让消费者能够在线上购买手机,不用再跑到手机实体店去买,而且还能够看到更多手机的品牌,包括它们的性能,配置等等,省时省力省钱,让用户拥有一个愉快的购买手机的过程。其次还能让商家更方便快捷的在网上管理自己的手机品牌,既省掉了实体店场地租赁的费用,也提高了自己管理的效率,还能更好地掌握用户的购物需求。此外百信手机商城系统会建立健全的物流体系,当用户在线上成功支付购买手机后,第一个时间可以安排物流公司配送。用最快的速度把手机送给消费者。在网上买手机的话,可以避免筛选手机繁杂的过程,购物变得方便、轻松、快捷,商家也能够第一时间安排物流公司进行派送,会尽快将手机送给消费者。
1.3 国内外发展现状
据2019年7月12日,一个手机市场调研机构公布的报告知,虽然中国在2019年第一季度的智能手机市场在线销售份额减少了4%,销售额也比上一年减少了8%,但是整体的交易额还是比较高的。在第一季度有六大著名的手机品牌占有了84%的市场交易额,分别是荣耀,苹果,vivo,小米,华为,OPPO,其中荣耀占比最高达24%,小米占比22%。从平台上看,第一季度线上手机市场份额京东占有48%,天猫占23%,它们两大公司共同占有的份额上升到70%以上。但第一季度二者份额都略有下降,原因在于没有电商促销活动。2019年7月30日,第一手机界研究院发布了2019年6月美国线上的手机品牌销量排行榜,其中三星、苹果、BLU、摩托罗拉、小米、谷歌是美国线上市场中最畅销的六个手机品牌,三星手机和苹果手机分列一二。可见,不管是国内外,线上手机的交易额依旧是比较高的,所以百信手机商城需要做好一个线上销售手机的平台。
第2章 系统需求分析
2.1 系统的功能需求
百信手机商城系统的需求如下:
供用户浏览手机的网站前台系统能有稳定的性能,手机商品能够被一览无余的展现给用户看,用户可以根据自己的需要,来查找手机商品,加购,最后下单。订单消息在被商家接收到后,商家通过后台管理系统进行操作,会尽快对订单进行处理,而后台系统也需要更加方便商家进行手机商品的管理和运营。
根据百信手机商城系统的需求,系统的功能模块主要包括网站前台系统,商家后台管理系统,功能模块结构图如图2-1所示:
图2-1 功能模块结构图
2.2 UML系统建模
- 百信手机商城会员用例关系图
在网站前台系统中,百信商城会员可注册,登录。在百信手机商城首页,可以随意点击任何手机商品,进入浏览该商品详情页;查找手机品牌,加购后下单,可以查看订单,取消订单。百信手机商城会员的用例关系图如图2-2所示:
图2-2 百信手机商城会员用例关系图
2. 百信系统管理员用例关系图
在百信手机商城后台系统中,系统管理员可登录,能配置网站首页,管理手机商品,会员订单和会员账号,用例关系图如图2-3所示:
图2-3 系统管理员用例关系图
2.3 订单状态图
当会员提交订单后,订单进入一个待支付状态,当会员支付成功之后订单就是已支付状态,等待系统管理员去处理订单,系统管理员将已支付的订单进行配货,成功后订单进入一个配货成功状态,配货成功后进行出库,出库成功后订单就是出库成功状态,等会员拿到商品后,点击成功收货,订单状态就变成了交易成功状态。如图2-4所示
图2-4订单状态图
2.4 本章小结
本章通过对百信手机商城系统的需求分析,划分了系统的功能模块。根据百信手机商城系统的要求,百信手机商城系统的功能的设计主要包括网站前台页面和后台管理系统,网站前台页面的各个功能模块主要是给商城会员使用的,所以会根据大家在网上的购物习惯,来设计这个网站前台。后台管理系统主要是由系统管理员来操作的,在开发中,也会秉着方便,高效的原则来进行设计。本章也从百信商城会员和百信系统管理员的角度,对系统进行了UML建模,给出了各自的功能用例关系图,也给出了订单的一个状态图。
第3章 系统设计与实现
3.1 系统概念设计ER图
根据第二章的需求分析,该系统的概念设计ER图如图3-1所示:
图3-1 百信手机商城系统ER图
3.2 系统数据库表设计
根据第二章对百信手机商城的系统需求分析和概念设计ER图,系统通过sql语句和数据库可视化工具建立了数据库和一些数据库表来保存一些相关的信息,如会员信息、手机商品信息,订单信息,首页配置信息,轮播信息表,系统管理员信息,手机商品分类信息,订单项,购物项,以下是对上述数据库表的设计:
(1)user会员信息表
表3-1的数据库表结构是展示百信商城会员信息的,表的第一行描述了各字段的含义,该表的主键为user_id。
表3-1 user表
列名 数据类型 可为空 注释
user_id bigint(20) NOT NULL 会员主键id
nick_name varchar(50) NOT NULL 会员昵称
login_name varchar(11) NOT NULL 登录名称
password_md5 varchar(32) NOT NULL 密码
introduce_sign varchar(100) NOT NULL 个性签名
address varchar(100) NOT NULL 收货地址
is_deleted tinyint(4) NOT NULL 注销标识字段
locked_flag tinyint(4) NOT NULL 锁定标识字段
create_time datetime NOT NULL 注册时间
(2)goods_info商品信息表
表3-2的数据库表结构是展示商品信息的,表的第一行描述了各字段的含义,该表的主键为goods_id。
表3-2 goods_info表
列名 数据类型 可为空 注释
goods_id bigint(20) unsigned NOT NULL 商品表主键id
goods_name varchar(200) NOT NULL 商品名
goods_intro varchar(200) NOT NULL 商品简介
goods_category_id bigint(20) NOT NULL 关联分类id
goods_cover_img varchar(200) NOT NULL 商品主图
goods_carousel varchar(500) NOT NULL 商品轮播图
goods_detail_content text NOT NULL 商品详情
original_price int(11) NOT NULL 价格
selling_price int(11) NOT NULL 商品实际售价
stock_num int(11) NOT NULL 库存
tag varchar(20) NOT NULL 商品标签
goods_sell_status tinyint(4) NOT NULL 商品状态
create_user int(11) NOT NULL 添加者主键id
create_time datetime NOT NULL 商品添加时间
update_user datetime NOT NULL 修改者主键id
update_time datetime NOT NULL 商品修改时间
(3)admin_user系统管理员表
表3-3的数据库表结构是展示系统管理员账号信息的,表的第一行描述了各字段的含义,该表的主键为admin_user_id。
表3-3 admin_user表
列名 数据类型 可为空 注释
admin_user_id int(11) NOT NULL 管理员id
login_user_name varchar(50) NOT NULL 登录名称
login_password varchar(50) NOT NULL 登录密码
nick_name varchar(50) NOT NULL 显示昵称
locked tinyint(4) NOT NULL 是否锁定 0未锁定 1已锁定无法登陆
(4)carousel轮播信息表
表3-4为轮播信息表,用于存储轮播图等相关信息的表,表的第一行描述了各字段的含义,该表的主键为carousel_id。
表3-4 carousel表
列名 数据类型 可为空 注释
carousel_id int(11) NOT NULL 首页轮播图主键
carousel_url varchar(100) NOT NULL 轮播图
redirect_url varchar(100) NOT NULL 跳转地址
carousel_rank int(11) NOT NULL 排序值(字段越大越靠前)
is_deleted tinyint(4) NOT NULL 删除标识字段(0-未删除 1-已删除)
create_time datetime NOT NULL 创建时间
create_user int(11) NOT NULL 创建者id
update_time datetime NOT NULL 修改时间
update_user int(11) NOT NULL 修改者id
(5)goods_category商品分类表
表3-5的数据库表结构是展示商品分类信息的,表的第一行描述了各字段的含义,该表的主键为category_id。
表3-5 goods_category表
列名 数据类型 可为空 注释
category_id bigint(20) NOT NULL 分类id
category_level tinyint(4) NOT NULL 分类级别
parent_id bigint(20) NOT NULL 父分类id
category_name varchar(50) NOT NULL 分类名称
category_rank int(11) NOT NULL 排序值(字段越大越靠前)
is_deleted tinyint(4) NOT NULL 删除标识字段
create_time datetime NOT NULL 创建时间
create_user int(11) NOT NULL 创建者id
update_time datetime NOT NULL 修改时间
update_user int(11) NOT NULL 修改者id
(6)index_config首页配置项表
表3-6为首页配置项表,用于存储首页配置的相关信息,表的第一行描述了各字段的含义,该表的主键为config_id。
表3-6 index_config表
列名 数据类型 可为空 注释
config_id bigint(20) NOT NULL 首页配置项主键id
config_name varchar(50) NOT NULL 显示字符
config_type tinyint(4) NOT NULL 配置的类型
goods_id bigint(20) NOT NULL 商品id
redirect_url varchar(100) NOT NULL 跳转地址
redirect_url varchar(100) NOT NULL 删除标识字段
config_rank int(11) NOT NULL 排序值(字段越大越靠前)
is_deleted tinyint(4) NOT NULL 删除标识字段
create_time datetime NOT NULL 创建时间
create_user int(11) NOT NULL 创建者id
update_time datetime NOT NULL 修改时间
update_user int(11) NOT NULL 修改者id
(7)order订单表
表3-7的数据库表结构是展示订单信息的,表的第一行描述了各字段的含义,该表的主键为order_id。
表3-7 order表
列 名 数据类型 可为空 注 释
order_id bigint(20) NOT NULL 订单主键id
order_no varchar(20) NOT NULL 订单号
user_id bigint(20) NOT NULL 用户主键id
total_price int(11) NOT NULL 订单总价
pay_status tinyint(4) NOT NULL 支付状态
pay_type tinyint(4) NOT NULL 支付方式
pay_time datetime NOT NULL 支付时间
order_status tinyint(4) NOT NULL 订单状态
extra_info varchar(100) NOT NULL 订单body
user_name varchar(30) NOT NULL 收货人姓名
user_phone varchar(11) NOT NULL 手机号
user_address varchar(100) NOT NULL 收货地址
is_deleted tinyint(4) NOT NULL 删除标识字段(0-未删除 1-已删除)
create_time datetime NOT NULL 创建时间
update_time datetime NOT NULL 最新修改时间
(8)order_item 订单项表
表3-8的数据库表结构是展示订单项信息的,表的第一行描述了各字段的含义,该表的主键为order_item_id。
表3-8 order_item表
列名 数据类型 可为空 注释
order_item_id bigint(20) NOT NULL 订单项主键id
order_id bigint(20) NOT NULL 订单主键id
goods_id bigint(20) NOT NULL 关联商品id
goods_name varchar(200) NOT NULL 下单时商品的名称(订单快照)
goods_cover_img varchar(200) NOT NULL 下单时商品的主图(订单快照)
selling_price int(11) NOT NULL 下单时商品的价格(订单快照)
goods_count int(11) NOT NULL 数量
create_time datetime NOT NULL 创建时间
(9)shopping_cart_item 购物车项表
表3-9为购物车项表,用于存储购物车项的相关信息,表的第一行描述了各字段的含义,该表的主键为cart_item_id。
表3-9 shopping_cart_item表
列名 数据类型 可为空 注释
cart_item_id bigint(20) NOT NULL 购物项主键id
user_id bigint(20) NOT NULL 用户主键id
goods_id bigint(20) NOT NULL 关联商品id
goods_count int(11) NOT NULL 数量(最大为5)
is_deleted tinyint(4) NOT NULL 删除标识字段(0-未删除 1-已删除)
create_time datetime NOT NULL 创建时间
update_time datetime NOT NULL 最新修改时间
3.3 系统模块的设计
通过需求分析,百信手机商城系统主要有六大模块,由会员注册模块、会员登录模块、会员订购模块、系统管理员登录模块、系统管理员管理商品模块、系统管理员处理订单模块组成。
- 会员注册模块
会员注册模块决定了会员是否能够登录上商城,会员进入登录页面,点击“立即注册”按钮,到注册页面,填写相应的信息,信息格式必须正确,点击立即注册,用户的信息会发送到服务端,然后与数据库中的用户表进行比较,如果用户表中已经存在此用户,百信商城注册页面会显示出“该用户名已存在”,若没有,则会显示“注册成功”。
根据上面的分析,会员注册流程是用户先要进入百信手机商城系统的用户登录页面,在登录页面点击立即注册,填写符合格式的相关信息,将信息提交到后台匹配,通过则注册成功,否则注册失败。其具体的流程图如下图3-2所示:
图3-2 会员注册流程图 - 会员登录模块
会员登录模块决定了百信商城会员是否能够在百信手机商城购物,百信商城会员在登录界面输入正确的个人信息,点击“立即登录”,若一些信息输入错误,则登录页面会显示相关错误信息,否则请求将被提交到服务端,服务端将会员输入的信息与数据库中的用户表进行匹配,若会员信息存在于用户表,密码也没错,则登录成功,否则登录失败,显示相关错误信息。
根据上面的分析,会员登录流程是会员先要进入百信手机商城系统的会员登录页面,输入正确的个人信息,单击“立即登录”按钮进行登录,系统对这些信息检查,检查通过,则登录成功。其具体的流程图如下图3-3所示:
图3-3 会员登录流程图
3. 会员下单模块
会员可以在商城页面随意点击任何商品,加购,然后在购物车页面点击“去结算”,到填写个人的收货信息的界面,这个页面需要正确自己去填写个人信息,不然就不能提交订单,完成后点击“提交订单”,到订单详情页面,点击“去支付”,到支付方式页面,选择其中一种方式到支付页面,支付成功后,到订单详情页面,这样就下单成功了。
根据上面的分析,会员下单的具体的流程图如下图3-4所示:
图3-4会员下单的流程图
4. 系统管理员登录模块
系统管理员在后台登录界面填好自己的信息,点击“立即登录”,若相关信息填写不正确,则会显示出相应的提示信息,否则请求将被提交到服务端,服务端将系统管理员输入的信息与数据库中的admin_user表进行匹配,匹配成功后就登录到后台首页,否则百信商城后台登录页面显示“登录失败”的信息。
根据上面的分析,系统管理员登录流程是系统管理员先要进入百信手机商城系统的系统管理员登录页面,输入正确的相关个人信息进行登录,系统服务端将会进行检查,检查通过则登录成功。具体流程图如图3-5所示:
、
图3-5系统管理员登录流程图
5. 系统管理员管理商品模块
系统管理员可以管理商品信息,可以新增商品,对商品信息进行修改,上下架商品,具体流程图如图3-6:
图3-6 系统管理员管理商品流程图
- 系统管理员管理订单模块
所有会员提交的订单都会显示在后台管理系统的订单模块中,系统管理员可以修改订单信息,可以关闭订单,检查订单状态,若订单是已支付状态,则可以进行配货和出库操作,其具体的流程图如下图3-7所示:
图3-7 系统管理员管理订单流程图
3.4 系统实现
按照前面的系统模块设计,以下是实现的界面效果,还有一些重要模块功能的核心代码。
3.4.1 百信会员登录模块的实现
图3-8是会员登录模块实现的界面图,当会员输入自己个人信息,可进行登录操作;会员也可单击“立即注册”进行注册。
图3-8 会员登录界面
如图3-8所示,商城会员输入自己个人相关信息,点击“立即登录”,百信手机商城系统将对其手机号和密码进行验证,如果商城会员的手机号和密码都正确,系统将跳转到商城首页。会员登录模块验证的核心代码段如下:
@Override
public String login(String loginName, String passwordMD5, HttpSession httpSession) {
//查找数据库中是否有该用户
MallUser user = mallUserMapper.selectByLoginNameAndPasswd(loginName, passwordMD5);
if (user != null && httpSession != null) {
if (user.getLockedFlag() == 1) {
return ServiceResultEnum.LOGIN_USER_LOCKED.getResult();
}
//昵称太长 影响页面展示
if (user.getNickName() != null && user.getNickName().length() > 7) {
String tempNickName = user.getNickName().substring(0, 7) + “…”;
user.setNickName(tempNickName);
}
NewBeeMallUserVO newBeeMallUserVO = new NewBeeMallUserVO();
BeanUtil.copyProperties(user, newBeeMallUserVO);
//设置购物车中的数量
httpSession.setAttribute(Constants.MALL_USER_SESSION_KEY, newBeeMallUserVO);
//返回登录成功的结果
return ServiceResultEnum.SUCCESS.getResult();
}
return ServiceResultEnum.LOGIN_ERROR.getResult();
}
百信手机商城会员登录成功后的商城首页页面如下图3-9所示:
图3-9 百信手机商城首页
3.4.2 百信会员注册模块的实现
如图3-10,会员填好个人信息后,点“立即注册”进行注册;后台会进行匹配,若后台无相同手机号则注册成功,否则将提示错误信息。
图3-10 用户注册界面
3.4.3 百信会员购物车模块的实现
如图3-11,当会员加购后,购物车页面会显示加购商品的信息,如果不想要了可以取消,此页面会自动统计出当前购物车商品的总价,点击转到支付页面。
图3-11 会员购物车界面
3.4.4 百信会员订单支付模块的实现
图3-12是会员填写订单信息的界面图,当会员填好信息提交订单,然后到支付方式页面,选择其中一种方式支付,支付成功后,就会显示订单详情页。
图3-12 会员填写订单信息界面
订单系统作为整个百信手机商城的核心业务,其中生成订单的核心代码如下:
//生成订单号
String orderNo = NumberUtil.genOrderNo();
int priceTotal = 0;
//保存订单
NewBeeMallOrder newBeeMallOrder = new NewBeeMallOrder();
newBeeMallOrder.setOrderNo(orderNo);
newBeeMallOrder.setUserId(user.getUserId());
newBeeMallOrder.setUserAddress(user.getAddress());
//总价
for (NewBeeMallShoppingCartItemVO newBeeMallShoppingCartItemVO : myShoppingCartItems) {
priceTotal += newBeeMallShoppingCartItemVO.getGoodsCount() * newBeeMallShoppingCartItemVO.getSellingPrice();
}
if (priceTotal < 1) {
NewBeeMallException.fail(ServiceResultEnum.ORDER_PRICE_ERROR.getResult());
}
newBeeMallOrder.setTotalPrice(priceTotal);
String extraInfo = “”;
newBeeMallOrder.setExtraInfo(extraInfo);
//生成订单项并保存订单项纪录
if (newBeeMallOrderMapper.insertSelective(newBeeMallOrder) > 0) {
//生成所有的订单项快照,并保存至数据库
List newBeeMallOrderItems = new ArrayList<>();
for (NewBeeMallShoppingCartItemVO newBeeMallShoppingCartItemVO : myShoppingCartItems) {
NewBeeMallOrderItem newBeeMallOrderItem = new NewBeeMallOrderItem();
BeanUtil.copyProperties(newBeeMallShoppingCartItemVO, newBeeMallOrderItem);
newBeeMallOrderItem.setOrderId(newBeeMallOrder.getOrderId());
newBeeMallOrderItems.add(newBeeMallOrderItem);
}
//保存至数据库
if (newBeeMallOrderItemMapper.insertBatch(newBeeMallOrderItems) > 0) {
//所有操作成功后,将订单号返回,以供Controller方法跳转到订单详情
return orderNo;
}
3.4.5 百信会员个人中心模块的实现
下图3-13是会员个人中心模块实现的界面图,可以查看自己的信息,也可以更改自己的信息,如收货地址,个性签名,也可以查看订单,退出登录。
图3-13会员个人中心界面
3.4.6 百信系统管理员登录模块的实现
如图3-14,系统管理员输入自己相关的账号密码信息进行登录。
图3-14 系统管理员登录界面
系统管理员登录模块验证的核心代码段如下:
AdminUser adminUser = adminUserService.login(userName, password);
if (adminUser != null) {
session.setAttribute(“loginUser”, adminUser.getNickName());
session.setAttribute(“loginUserId”, adminUser.getAdminUserId());
//session过期时间设置为7200秒 即两小时
//session.setMaxInactiveInterval(60 * 60 * 2);
return “redirect:/admin/index”;
} else {
session.setAttribute(“errorMsg”, “登陆失败,请联系作者获得测试账号”);
return “admin/login”;
}
如图3-15是系统管理员登录后的商城首页:
图3-15 后天管理系统首页界面
3.4.7 百信分类管理模块的实现
下图3-16是分类管理模块实现的界面图,系统管理员可管理这些分类,可以修改某一分类的排序值,这样页面的排版也会不一样,也可以更改每一分类的下级分类。
图3-16 分类管理界面
3.4.8 百信商品管理模块的实现
下图3-17是商品管理模块实现的界面图,系统管理员可管理手机等商品信息,也可以上下架商品。
图3-17 商品管理模块界面
添加商品信息的核心代码段如下:
@RequestMapping(value = “/goods/save”, method = RequestMethod.POST)
@ResponseBody
public Result save(@RequestBody NewBeeMallGoods newBeeMallGoods) {
if (StringUtils.isEmpty(newBeeMallGoods.getGoodsName())
|| StringUtils.isEmpty(newBeeMallGoods.getGoodsIntro())
|| StringUtils.isEmpty(newBeeMallGoods.getTag())
|| Objects.isNull(newBeeMallGoods.getOriginalPrice())
|| Objects.isNull(newBeeMallGoods.getGoodsCategoryId())
|| Objects.isNull(newBeeMallGoods.getSellingPrice())
|| Objects.isNull(newBeeMallGoods.getStockNum())
|| Objects.isNull(newBeeMallGoods.getGoodsSellStatus())
|| StringUtils.isEmpty(newBeeMallGoods.getGoodsCoverImg())
|| StringUtils.isEmpty(newBeeMallGoods.getGoodsDetailContent())) {
return ResultGenerator.genFailResult(“参数异常!”);
}
String result = newBeeMallGoodsService.saveNewBeeMallGoods(newBeeMallGoods);
if (ServiceResultEnum.SUCCESS.getResult().equals(result)) {
return ResultGenerator.genSuccessResult();
} else {
return ResultGenerator.genFailResult(result);
}
}
3.4.9 百信会员管理模块的实现
图3-18是会员管理模块实现的界面图,如果本商城会员存在一些违规行为,系统管理员可以对已注册的会员进行禁用账户和解除禁用的操作。
图3-18 会员管理模块界面
3.4.10 百信订单管理模块的实现
下图3-19是订单管理模块实现的界面图,系统管理员可根据会员订单的一个状态进行配货和出库,也可以修改订单信息,关闭订单,查看订单信息,查看收件人信息,如果订单状态是待支付状态和关闭状态,则系统管理员无法完成配货和出库的操作,提示相应的信息。
图3-19 订单管理模块界面
订单管理模块配货操作核心代码如下:
public String checkDone(Long[] ids) {
//查询所有的订单 判断状态 修改状态和更新时间
List orders = newBeeMallOrderMapper.selectByPrimaryKeys(Arrays.asList(ids));
String errorOrderNos = “”;
if (!CollectionUtils.isEmpty(orders)) {
for (NewBeeMallOrder newBeeMallOrder : orders) {
if (newBeeMallOrder.getIsDeleted() == 1) {
errorOrderNos += newBeeMallOrder.getOrderNo() + " ";
continue;
}
if (newBeeMallOrder.getOrderStatus() != 1) {
errorOrderNos += newBeeMallOrder.getOrderNo() + " ";
}
}
if (StringUtils.isEmpty(errorOrderNos)) {
//订单状态正常 可以执行配货完成操作 修改订单状态和更新时间
if (newBeeMallOrderMapper.checkDone(Arrays.asList(ids)) > 0) {
return ServiceResultEnum.SUCCESS.getResult();
} else {
return ServiceResultEnum.DB_ERROR.getResult();
}
} else {
//订单此时不可执行出库操作
if (errorOrderNos.length() > 0 && errorOrderNos.length() < 100) {
return errorOrderNos + “订单的状态不是支付成功无法执行出库操作”;
} else {
return “你选择了太多状态不是支付成功的订单,无法执行配货完成操作”;
}
}
}
//未查询到数据 返回错误提示
return ServiceResultEnum.DATA_NOT_EXIST.getResult();
}
3.4.11 百信系统管理模块的实现
如图3-20,系统管理员可以更改自己的基本信息,点安全退出,就会到后台登录界面。
图3-20 系统管理模块界面
3.5 本章小结
本章全方位的阐述了系统的设计与实现。按照系统的功能需求,设计出了ER图,数据库表,系统模块的流程图,相应的实现界面和一些重要模块的核心代码。在设计的时候存在着不少的困难和阻碍,但是自己慢慢理顺思路,也能够一步一步地完善好这些必要的步骤。
第4章 系统测试
本章将对百信手机商城系统的部分重要功能模块进行测试,测试方法是黑盒测试。
4.1 网站前台系统测试
4.1.1百信手机商城会员登录模块测试
表4-1会员登录模块测试
项目名称 百信手机商城前台系统 系统版本 1.0
编制人 曾胜文 编制时间 2020年4月1号
模块名称 百信手机商城会员登录模块
测试方法 黑盒测试
测试目的 检验百信手机商城会员登录模块各功能性需求是否已正确实现
预置条件 基本数据已在数据库中
参考信息 无 特殊规格说明 无
用例编号 测试步骤 输入数据 预期结果 测试结果
1 会员进入百信手机商城登录界面 输入已注册过的手机号码:15768300920,密码:123456,验证码 会员成功登录,进入百信手机商城首页 正常
2 会员进入百信手机商城登录界面 输入错误的个人手机号码:15768300999,密码:000666,验证码 会员登录失败,登录页面显示登录失败的信息 正常
4.1.2百信手机商城会员购物车模块测试
表4-2 会员购物车模块测试
项目名称 百信手机商城前台系统 系统版本 1.0
编制人 曾胜文 编制时间 2020年4月1号
模块名称 百信手机商城会员购物车模块
测试方法 黑盒测试
测试目的 检验百信手机商城会员购物车模块各功能性需求是否已正确实现
预置条件 数据库中已添加各项基本数据,会员成功登录百信手机商城
参考信息 无 特殊规格说明 无
用例编号 测试步骤 输入数据 预期结果 测试结果
1 会员进入百信手机商城首页,点击任一商品加入购物车,点击购物车 购物车页面显示已添加的商品信息,包括商品名称,价格,数量,还有总价格 正常
2 会员首次进入百信手机商城或者会员购物车无任何商品,直接点击购物车 购物车页面显示“您的购物车暂无宝贝,请先添加宝贝至购物车” 正常
4.1.3百信手机商城会员订单支付模块测试
表4-3会员订单支付模块测试
项目名称 百信手机商城前台系统 系统版本 1.0
编制人 曾胜文 编制时间 2020年4月1号
模块名称 百信手机商城会员订单支付模块
测试方法 黑盒测试
测试目的 检验百信手机商城会员订单支付模块各功能性需求是否已正确实现
预置条件 数据库中已添加各项基本数据,会员成功登录百信手机商城
参考信息 无 特殊规格说明 无
用例编号 测试步骤 输入数据 预期结果 测试结果
1 会员进入百信手机商城后,点击购物车(购物车有商品),点击“去结算”,填好信息后点击“去支付”跳转到支付方式页面。选择任一支付方式跳转到支付页面。 填写收货人姓名:曾胜文,手机号码:15768300920,收货地址:广东省梅州市兴宁黄槐镇 订单支付成功,支付成功页面显示订单详情 正常
2 会员进入百信手机商城,点击“个人中心”,然后点击“我的订单” 页面显示个人账号的所有订单信息,可一一查看 正常
3 会员进入百信手机商城,点击“个人中心”,然后点击“我的订单”,点击刚下单成功的订单,点击“取消订单” 订单详情页面显示“手动关闭,交易已关闭” 正常
4.2 后台系统测试
4.2.1百信手机商城商品管理模块测试
表4-4 商品管理模块测试
项目名称 百信手机商城后台系统 系统版本 1.0
编制人 曾胜文 编制时间 2020年4月1号
模块名称 百信手机商城商品管理模块
测试方法 黑盒测试
测试目的 检验百信手机商城系统管理员商品管理模块各功能性需求是否已正确实现
预置条件 数据库中已添加各项基本数据,系统管理员成功登录后台系统
参考信息 无 特殊规格说明 无
用例编号 测试步骤 输入数据 预期结果 测试结果
1 点击“商品管理”,点击“添加商品”,填好信息后,点击“保存商品” 输入商品类别:手机,商品名称:华为荣耀P40,商品简介:全新款5G手机,商品价格:3999,商品库存数:1000,状态:上架 商品成功添加到商品列表 正常
2 点击“商品管理”,点击任一商品,点击“修改商品”,对需要修改的信息进行修改,然后点击“保存商品” 成功修改商品信息 正常
3 点击“商品管理”,点击任一商品,点击“上架商品”,提示“是否确认执行上架操作”,点击“确认” 系统提示上架成功 正常
4 点击“商品管理”,点击任一商品,点击“下架商品”,提示“是否确认执行下架操作”,点击“确认” 系统提示下架成功 正常
4.2.2百信手机商城订单管理模块测试
表4-5 订单管理模块测试
项目名称 百信手机商城后台系统 系统版本 1.0
编制人 曾胜文 编制时间 2020年4月1号
模块名称 百信手机商城订单管理模块
测试方法 黑盒测试
测试目的 检验百信手机商城系统管理员订单管理模块各功能性需求是否已正确实现
预置条件 数据库中已添加各项基本数据,系统管理员成功登录后台系统
参考信息 无 特殊规格说明 无
用例编号 测试步骤 输入数据 预期结果 测试结果
1 点击“订单管理”,点击“修改订单”,修改收货人信息,点击“确认” 将收货人姓名改为:张三,收货地址改为:广州市天河区黄村街道 系统提示保存成功,信息修改完成 正常
2 点击“订单管理”,点击任一已成功支付的订单,然后点击“配货完成”,提示“是否完成配货完成操作”,点击“确认” 点击按钮 系统提示配货完成,该订单状态变为配货完成状态 正常
3 点击“订单管理”,点击任一已成功支付的订单,然后点击“出库”,提示“是否完成出库操作”,点击“确认” 点击按钮 系统提示出库成功,订单状态变为出库成功状态 正常
4 点击“商品管理”,点击任一商品,点击“关闭订单”,提示“是否确认执行关闭订单操作”,点击“确认” 点击按钮 系统提示成功关闭订单,订单状态变为商家关闭状态 正常
4.3 本章小结
百信手机商城系统根据用户需求去测试每个重要功能模块,现已测试完成,测试结果都正常,不存在比较明显的bug。此次测试方法是黑盒测试,等系统全部完善之后,将会进行更加深层次的测试。
第5章 结束语
5.1 全文总结
本文给出了百信手机商城系统的开发过程。系统采用java语言进行开发,以springboot框架为主要技术,用的是mysql数据库。采用StarUML软件绘制系统的用例图,还有一些流程图。在开发中遇到很多困难,经常会出现各种各样的bug,自己会充分利用开发工具去调试,解决bug,也经常会遇到一些功能模块逻辑方面的问题,例如订单号如何生成,订单号必须是唯一无重复,于是我就去博客上寻找答案,最后找到一个用工具类生成唯一订单号的例子,在理解之后我就运用到我自己的项目上,还有就是订单状态如何去处理等等这些问题,自己都会慢慢钻研,去那些技术论坛上找解决方案,也会去百度,看一些技术方面的博客,去寻求最佳的解决方案,让百信手机商城系统的功能变得更加完善。该系统开发完成,能够让用户更加方便,快捷的购置一台自己满意的手机,拥有更加良好的购物体验,也让商家更加高效地管理的商城店铺,更加了解用户的购物需求。这一课程设计也让自己学到了不少技术和开发技巧,充分锻炼了自己的逻辑思维。
5.2 课题展望
随着不断发展的电子商务和不断深入的改革开放,一个完善的手机商城系统将会更加的便于广大人民,人们可以方便地网上购物,不出门就可以买到自己想要的东西,而想要在网上开店的人,也可以利用好这个系统去管理自家的商品,提高效率,降低运营成本。
百信手机商城系统的基本功能需求都已实现,但是还能进行扩展,在未来可以开发一个商品秒杀的功能模块,在双十一,双十二等这样的购物节进行一个商品秒杀的活动,这个功能模块涉及到的技术点比较多,也比较复杂,例如会涉及数据库的分库分页和数据库的读写性能,还有高并发情况下的系统吞吐率等,因为涉及很多技术问题,所以这个模块将会在以后慢慢完善。还可以开发一个客服功能模块,让用户能跟商家进行聊天,商家也能更加清楚地知道用户的需求,这个功能模块要运用到网络方面的技术。
参考文献
[1].吕金秋.B2C电子商务网站用户体验评价系统设计[J].电脑编程技巧与维护,2016:50-200
[2].秦阳.企业电子商务网站管理系统技术与实现[D].吉林大学,2015:38-166
[3].疯狂软件编著. Spring+Mybatis企业应用实战[M]. 北京电子工业出版社,2018:8-290
[4].耿祥义.Java面向对象程序设计[M].北京:清华大学出版社,2013:54-401
[5].任爱华.操作系统实用教程[M].-3版.北京:清华大学出版社,2012:55-307
[6].张海藩,牟永敏.软件工程导论[M]. 北京:清华大学出版社,2013:55-303
[7].萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,1998:50-153
[8].Craig Walls, Ryan BreidenBach. Spring In Action[M]. Manning Publications.2006:18-266
[9].Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks[D]. Ohio State University,2011:68-355
[10].James Goodwill. Pure Java Server Pages[M] .Indianapolis Ind: Sams, 2000:22-288
[11].Tilkov S, Vinoski S. Node. js: Using javascript to build high-performance network programs[J]. IEEE Internet Computing, 2010:36-318
[12].蔡剑,景楠.Java Web应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2004:68-198
[13].杨绍方.深入掌握J2EE编程技术[M].北京:科学出版社,2012:20-206
[14].Bruce Eckel.Thinking in Java.Addison-Wesley Professional[M].2001:8-278
[15].李兆锋.张得生.Java Web项目开发案例精粹[M].电子工业出版社.2010:6-189
致 谢
感谢学校,感谢老师在大学四年来对自己的培养。经过大四这一年的在外实习,做毕业设计,这些重重地磨炼都让自己的心智成熟了不少。在疫情防控期间,学校领导们和老师们也依旧尽职尽责,坚守在自己的岗位,关心着每一位同学的状况,所以自己也能够顺利地完成毕业设计。在这大学四年里,自己学到很多东西,不只是课堂上的知识,更多的是让自己懂得如何去做人和一些为人处世的道理。在今后的日子里,自己也将成为一个社会人,将不在拥有学生这个身份,这也意味着更多的责任与挑战,即便不再是学生,可是要永远保持热爱学习的态度,只有不断学习,自己才能成长,在今后的工作中,自己也将不卑不亢,尽职尽责,不忘初心,不断朝着自己的梦想奋进。经过大学四年各位老师的教导,自己也成长了不少,再次感谢。