博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文章开头先看实现效果
功能需求分析
通过本系统,商户节省了用于交易场所、服务质量、维护商铺杂支开销等方面的投入,从而降低了价格;买家方面,不仅节约了时间成本,同时降低了购买成本,可以“货比三家”地随意挑选性价比高的产品。加快了交易和货币流通速度,而进而推动经济的增长。
根据条件需要,系统结构主要由二大用户组成。一是用户,二是管理员用户。
1用户登录及身份要求
验证买家、管理员等用户的信息
2本系统销售功能需求(面向买家用户)
允许用户评论商品。
允许用户查询商品的信息。
允许用户对购买订单的管理。
自动生成订单。
用户在线支付订单费用。
选择商品,进行购买,填写发货地址、联系电话等信息。
3本系统管理功能需求(面向管理员用户)
对用户的订单的管理(删除,修改,查询)。
对商城中心的管理(删除,修改,查询)。
对商城列表的管理(删除,修改,查询)。
对进货登记的管理(添加、删除、修改)。
对销售统计的管理(添加、删除、修改)。
1.管理员主要负责系统管理、商城管理、商品订单管理、用户信息管理、物流信息管理,下图所示描述管理员的用例。
2.用户主要使用系统的在线购买业务,下图所示为用户用例图。
数据流图的设计主要是由于系统目前功能还没有确定,可以先描述可能要使用到的功能内容,并且向用户了解“系统从外界接受什么数据”和“系统向外界送出什么数据”等信息,根据用户所给的答复进行设计数据流图。
如下为系统的0层数据流图,系统用户分为管理员和普通用户。
图3-4系统数据流图(0层)
如下图所示为系统1层数据流图。
汽车配件销售管理系统第二层数据流图主要详细反应各功能模块对应的操作与数据进行交互的原理。并且更详细的显示出各角色对功能模块操作的数据流向,让开发人员能了解该系统的开发方向,能够更准确的开发出系统模型。
将商品信息维护进行细化得到商品信息管理二层数据流程图,如下图所示。
图3-6商品管理数据流图(2层)
将订单信息管理进行细化得到订单信息管理二层数据流程图,如下图所示。
图3-7订单管理数据流图(2层)
1.数据存储描述
下表描述了用户信息的数据流、数据来源、数据去向和数据流组成的词条。
数据流 | 用户信息 |
数据流来源 | Mysql数据库中用户信息表,用户详细信息表 |
数据去向 | 系统界面,用户信息管理界面 |
数据流组成 | 用户名、用户密码、添加时间、编号 |
下表描述了购买订单信息的数据流、数据来源、数据去向和数据流组成的词条。
数据流 | 购买订单信息 |
数据流来源 | Mysql数据库中购买订单表,购买订单详细信息表 |
数据去向 | 购买订单界面 |
数据流组成 | 购买订单ID、用户ID、商品ID、数量 |
下表描述了订单信息的数据流、数据来源、数据去向和数据流组成的词条。
数据流 | 订单信息 |
数据流来源 | Mysql数据库中订单表,订单详情表 |
数据去向 | 用户订单界面,订单管理界面 |
数据流组成 | 用户ID、订单ID、商品ID、下单时间、订单金额 |
下表描述了配件资讯的数据流、数据来源、数据去向和数据流组成的词条。
数据流 | 配件资讯信息 |
数据流来源 | Mysql数据库中配件资讯表、资讯详情表 |
数据去向 | 资讯详情界面、资讯标题界面、资讯内容管理界面 |
数据流组成 | 配件资讯标题 |
下表描述了商品管理的数据流、数据来源、数据去向和数据流组成的词条。
数据流 | 商品信息 |
数据流来源 | Mysql数据库中商品表、商品类别表 |
数据去向 | 商品查询界面、商品详情界面、购买订单界面、商品管理界面 |
数据流组成 | 商品名、商品价格、库存数量、商品类别 |
下表描述用户通过输入用户名和密码进行身份验证处理,验证成功后将返回的信息显示在界面上。
处理逻辑名称 | 用户身份验证 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 用户名+密码 |
处理过程 | 根据输入的用户名和密码,检索用户,显示查询信息 |
输出的数据流 | 用户信息、商品信息 |
下表描述用户成功登录系统后通过商品名查询商品信息,根据查询后返回的数据显示在界面上。
处理逻辑名称 | 商品信息查询 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 商品名或商品编号或商品类别 |
处理过程 | 登录成功的用户,通过商品名查询用户所需的商品,还可查询用户的订单及评论。 |
输出的数据流 | 用户订单信息,购买订单信息 |
下表描述管理员用户成功登录系统后可以对销售统计进行管理。
表3-8销售统计
处理逻辑名称 | 销售统计 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 销售统计 |
处理过程 | 登录成功的管理员用户,往数据库添加一条销售统计数据。 |
输出的数据流 | 销售统计,销售分析 |
下表描述管理员用户成功登录系统后,购买商品,填写订单收货人、收货地址、联系电话等,生成购买订单后,重新查询订单表,返回的订单数据显示在界面上。
表3-9订单生成
处理逻辑名称 | 订单生成 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 订单信息 |
处理过程 | 登录成功的用户,往数据库添加一条订单信息数据。 |
输出的数据流 | 订单信息 |
下表描述用户成功登录系统后可以提交进货登记,返回的进货登记数据显示在界面上。
表3-10进货登记
处理逻辑名称 | 进货登记提交 |
简述 | 检查输入信息的合法性 |
输入的数据流 | 登记信息 |
处理过程 | 登录成功的用户,进行进货登记 |
输出的数据流 | 进货登记 |
本系统的设计是基于Java技术+Mysql数据库+Tomcat服务器的方式设计,以Myeclipse10为开发工具,并运用Photoshop CS6技术美化网页,辅之以CSS技术。本系统使用的角色主要有系统管理员和普通用户,系统分为前台和后台,前台主要用于汽配配件资讯展示和商品的购买,后台用于商品、销售统计、进货登记、订单列表的管理,首先以普通用户通过账号注册后登录系统前台,可以进行各种信息浏览和搜索,用户可以将需要的商品进行下单购买,用户可以查询订单是否已经被管理员确认,订单生成后表示用户购买成功,用户同时可以修改个人的信息资料,查看订单信息;以管理员的身份登录系统后台可以进行商品维护、订单列表管理等。
系统功能结构图如下所示。
图4-1系统功能结构图
1.用户登录模块:确保用户注册信息的真实度是提高系统效率和盈利的重要因素。真实的用户才能带来价值,注册是保证真实用户使用系统主要业务的第一步,通过对用户注册信息的审核,可防止机器注册。使用现如今较为流行的管理员进行账号激活的验证方式,对用户注册信息进行过滤,未激活用户信息将不能使用系统主要功能。
如下图所示为用户登录流程图。
图4-2用户登录流程图
2.商品浏览模块:没有登录的用户和登录的用户都可以在系统前台进行商品浏览,用户可以查看商品的详细信息和选择相应的商品类别进行该类别下的商品查看,用户还可以通过商品名称的关键字进行搜索。
如下图所示为商品浏览流程图。
图4-3商品浏览流程图
3.订单管理模块:用户购买商品后,填写收货地址、收货人、电话等信息,生成订单信息,管理员可以审核订单,删除、修改订单,对订单信息进行相应的商品发货。
如下图所示为订单管理流程图。
图4-4订单管理流程图
5.用户管理模块
系统管理员可以对用户信息进行增、删、改、查的操作。
用户对个人添加至购买订单里面的商品进行增删改查等操作。
4.3.1概念设计
本系统的E-R图表现了系统中各个实体之间的联系,经过分析,系统的实体有商品信息、进货登记、销售登记、汽车配件资讯、订单列表等。
订单列表的实体图如下图所示。
图4-6订单列表实体图
用户信息实体图如下图所示。
图4-7用户信息实体图
销售登记的实体图如下图所示。
图4-8销售登记实体图
订单E-R图如下图所示。
图4-9订单E-R图
4.3.2逻辑设计
Allusers表是系统用户的信息表,存储系统用户真实姓名、性别、年龄、电话、地址、备注、编号、姓名、用户密码以及其相对应的密码等相关信息。
Dingdan表是订单信息表,存储用户的订单的相关信息,其中包括编号、订单号、金额、订单内容、用户名、姓名、邮件地址、邮编、手机、快递类型、快递费用、添加时间、是否审核等相关信息。
yonghuzhuce表是用户注册信息表,存储用户的注册信息,其中包括编号、用户名、密码、姓名、性别、出生年月、QQ、邮箱、电话、身份证、头像、地址、备至、折扣等相关信息。
shangpinxinxi表是商品信息表,存储商品内容的信息,其中包括编号、商品编号、商品名称、类别、价格、发布人、图片、简介、添加时间等相关信息。
4.3.3表设计
数据库表设计:经过前期的需求分析、可执行分析、数据流分析等各个流程分析,结合软件工程的高内聚、低耦合规则,并考虑到以后的程序功能扩展,设计如下几张表。
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
commodity_management_id | int | 11 | 是 | 是 | 商品管理ID |
commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
inventory_quantity | int | 11 | 否 | 否 | 库存数量 |
remarks | varchar | 64 | 否 | 否 | 备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
mall_center_id | int | 11 | 是 | 是 | 商城列表ID |
brand | varchar | 64 | 否 | 否 | 品牌 |
specifications | varchar | 64 | 否 | 否 | 规格 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
cart_title | varchar | 125 | 否 | 否 | 标题: |
cart_img | text | 0 | 否 | 否 | 封面图: |
cart_description | varchar | 255 | 否 | 否 | 描述: |
cart_price_ago | double | 8 | 是 | 否 | 原价 |
cart_price | double | 8 | 是 | 否 | 卖价 |
cart_inventory | int | 11 | 是 | 否 | 商品库存 |
cart_type | varchar | 64 | 是 | 否 | 商品分类: |
cart_content | longtext | 0 | 否 | 否 | 正文 |
cart_img_1 | text | 0 | 否 | 否 | 主图1: |
cart_img_2 | text | 0 | 否 | 否 | 主图2: |
cart_img_3 | text | 0 | 否 | 否 | 主图3: |
cart_img_4 | text | 0 | 否 | 否 | 主图4: |
cart_img_5 | text | 0 | 否 | 否 | 主图5: |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
employee_information_id | int | 11 | 是 | 是 | 员工信息ID |
employee_number | varchar | 64 | 否 | 否 | 员工编号 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
gender | varchar | 64 | 否 | 否 | 性别 |
contact_information | varchar | 64 | 否 | 否 | 联系方式 |
department | varchar | 64 | 否 | 否 | 部门 |
post | varchar | 64 | 否 | 否 | 职务 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
order_id | int | 11 | 是 | 是 | 订单ID: |
order_number | varchar | 64 | 否 | 否 | 订单号: |
goods_id | mediumint | 8 | 是 | 否 | 商品id |
title | varchar | 32 | 否 | 否 | 商品标题: |
img | varchar | 255 | 否 | 否 | 商品图片: |
price | double | 10 | 是 | 否 | 价格: |
price_ago | double | 10 | 是 | 否 | 原价: |
num | int | 8 | 是 | 否 | 数量: |
price_count | double | 8 | 是 | 否 | 总价: |
norms | varchar | 255 | 否 | 否 | 规格: |
type | varchar | 64 | 是 | 否 | 商品分类: |
contact_name | varchar | 32 | 否 | 否 | 联系人姓名: |
contact_email | varchar | 125 | 否 | 否 | 联系人邮箱: |
contact_phone | varchar | 11 | 否 | 否 | 联系人手机: |
contact_address | varchar | 255 | 否 | 否 | 收件地址: |
postal_code | varchar | 9 | 否 | 否 | 邮政编码: |
user_id | int | 10 | 是 | 否 | 买家ID: |
merchant_id | mediumint | 8 | 是 | 否 | 商家ID: |
create_time | timestamp | 0 | 是 | 否 | 创建时间: |
update_time | timestamp | 0 | 是 | 否 | 更新时间: |
description | varchar | 255 | 否 | 否 | 描述: |
state | varchar | 16 | 是 | 否 | 订单状态: |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
purchase_registration_id | int | 11 | 是 | 是 | 进货登记ID |
commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
purchase_quantity | int | 11 | 否 | 否 | 进货数量 |
remarks | varchar | 64 | 否 | 否 | 备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
sales_registration_id | int | 11 | 是 | 是 | 销售登记ID |
commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
trade_name | varchar | 64 | 否 | 否 | 商品名称 |
sales_volumes | int | 11 | 否 | 否 | 销售数量 |
remarks | varchar | 64 | 否 | 否 | 备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
sales_system_id | int | 11 | 是 | 是 | 销售系统ID |
remarks | varchar | 64 | 否 | 否 | 备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
cart_title | varchar | 125 | 否 | 否 | 标题: |
cart_img | text | 0 | 否 | 否 | 封面图: |
cart_description | varchar | 255 | 否 | 否 | 描述: |
cart_price_ago | double | 8 | 是 | 否 | 原价:[1] |
cart_price | double | 8 | 是 | 否 | 卖价:[1] |
cart_inventory | int | 11 | 是 | 否 | 商品库存 |
cart_type | varchar | 64 | 是 | 否 | 商品分类: |
cart_content | longtext | 0 | 否 | 否 | 正文: |
cart_img_1 | text | 0 | 否 | 否 | 主图1: |
cart_img_2 | text | 0 | 否 | 否 | 主图2: |
cart_img_3 | text | 0 | 否 | 否 | 主图3: |
cart_img_4 | text | 0 | 否 | 否 | 主图4: |
cart_img_5 | text | 0 | 否 | 否 | 主图5: |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
5.1登录模块
本系统主要的用户有系统管理员、用户,一个系统最基本的功能就是登录功能,本系统可以进行系统登录的角色有用户、管理员,用户对应前台登录界面,管理员对应后台登录界面,首先进入登录页,输入用户名和密码,然后提交至服务端进行数据库数据验证,通过JavaEE逻辑代码判断数据库是否存在用户输入的这一个记录,如果存在,则判断用户身份,如果是用户,则进入用户前台,如果是管理员用户,则进入系统主页,并把用户对象存放在session中,如果不存在这样一条记录,则返回登录界面。
登录界面如下所示。
登录关键代码如下:
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
5.3配件资讯模块
系统为用户提供配件资讯推荐,方便用户浏览配件资讯信息。在peijianzixunist.jsp实现配件资讯列表的展示,用户点击浏览,通过zixun id传递值,找到数据表的该配件资讯信息。
如下图所示为配件资讯界面。
配件资讯关键代码如下:
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
系统提供商品列表功能,在shangpinliebiaoadd.jsp实现商品列表排序,用户可以对商品进行浏览,管理员管理商品列表。
如下图所示为商品列表展示的界面。
图5-5商品列表界面
商品列表关键代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
用户在浏览汽车配件后,登录系统前台,进行汽车配件购买,将汽车配件添加至购买车,在个人后台可以查看购买车里面的汽车配件,确定汽车配件之后可以生成订单,然后支付。
如下图所示为购买汽车配件的部分界面。
5.6系统用户管理模块
过去传统的手工登记管理系统人员信息很不方便,也很容易造成数据出错,所以本系统需要一个可以管理登记人员信息的功能,管理员登入系统,可以添加新的管理员用户,删除现有的管理员,也可以对自己的密码和管理员用户的密码进行修改。修改密码是经过跟数据库的原来的密码字段的数据进行判断,如果输入两次的新密码一致,则更新密码这属性对应的一条数据。
如下图所示为系统用户管理的部分界面。
如下图所示为修改密码界面。
图5-8修改密码界面
系统用户管理关键代码如下:
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
5.7商城管理模块
用户在系统前台浏览商城,管理员登录系统后,可以对添加、删除、修改商城信息,系统前台的商城信息时随系统后台变化而变化的。
商城管理的界面如下图所示。
商城管理关键代码如下:
public Map<String, Object> error(Integer code, String message) {
Map<String, Object> map = new HashMap<>();
map.put("error", new HashMap<String, Object>(4) {{
put("code", code);
put("message", message);
}});
return map;
}
5.8配件资讯管理模块
管理人员可以对配件资讯进行管理发布操作,这些操作将在配件资讯管理界面进行。
如下图所示为配件资讯管理界面。
配件资讯管理关键代码如下:
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
源码 文档 下载获取地址
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者