博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐进主页热门专栏推荐订阅⭐ 订阅收藏起来,防止下次找不到
🔎千套Java / PHP / nod.js / asp.net/ Python等项目实战更新中~
🔎百套小程序APP项目实战更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我❤️文末获取源码联系❤️ ⚠️一定要先收藏⚠️
4 系统设计
4.1系统功能结构设计图
本次系统所涉及到的有关的功能,都是用功能结构图来简洁和清晰的表示出来,功能结构图就是能够把比较复杂的功能结构用图的形式清晰的描绘下来,并且为后续的设计以及测试等模块提供了明确的方向,在构思功能结构图的时候,便可以给设计的过程带来一定的思维导向,不至于在设计过程中有所遗漏,可以尽可能的明确系统所涉及到的功能。
系统的功能结构图如图4-1所示。
图 4-1系统功能结构图
4.2数据库设计
4.2.1数据库设计原则
学习程序设计,如果要了解数据库管理系统或者是根据需求而制定的系统接口,就必须创建一种数据库管理系统的模式,用来保存数据资料,这样当在应用编程过程中时候,就不需要再向操作系统页面上加载信息,进而增加了整个系统的工作效率。信息库管理系统中保存着许多数据,应该说是一个管理信息系统建设的中心和基础,而信息库管理系统也为管理信息系统建设提出了新增、删除、更改和搜索的操作功能,使管理信息系统建设能够迅速地查询所需要的数据,而不会直接从程序代码中查找。信息库管理系统通过将信息表的各个组成部分按照特定的方法准确地合并,排序和组成信息库管理系统。
4.2.2 数据表设计
在关系数据E-R图中,分析并创建数据表,数据表用来记录信息,数据表关系由多个数据表组成,下面介绍的是数据表各个字段信息如下表所示。
表4-1:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-2:配送信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kuaididanhao | varchar | 200 | 快递单号 | ||
jijianrenxingming | varchar | 200 | 寄件人姓名 | ||
jijianrendianhua | varchar | 200 | 寄件人电话 | ||
jijiandizhi | varchar | 200 | 寄件地址 | ||
wupinmingcheng | varchar | 200 | 物品名称 | ||
wupinzhongliang | varchar | 200 | 物品重量 | ||
shoujianrenxingming | varchar | 200 | 收件人姓名 | ||
shoujianrendianhua | varchar | 200 | 收件人电话 | ||
shoujianrendizhi | varchar | 200 | 收件人地址 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
gengxinshijian | datetime | 更新时间 | |||
peisongzhuangtai | varchar | 200 | 配送状态 | ||
peisongxiangqing | longtext | 4294967295 | 配送详情 | ||
yuangongzhanghao | varchar | 200 | 员工账号 | ||
yuangongxingming | varchar | 200 | 员工姓名 |
表4-3:快递员
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yuangongzhanghao | varchar | 200 | 员工账号 | ||
mima | varchar | 200 | 密码 | ||
yuangongxingming | varchar | 200 | 员工姓名 | ||
xingbie | varchar | 200 | 性别 | ||
yuangongdianhua | varchar | 200 | 员工电话 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-4:快递信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kuaidibianhao | varchar | 200 | 快递编号 | ||
kuaidimingcheng | varchar | 200 | 快递名称 | ||
qujianzhandian | varchar | 200 | 取件站点 | ||
shijian | date | 时间 | |||
kuaidixiangqing | longtext | 4294967295 | 快递详情 | ||
yuangongzhanghao | varchar | 200 | 员工账号 | ||
yuangongxingming | varchar | 200 | 员工姓名 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
zhuangtai | varchar | 200 | 状态 |
表4-5:寄件信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kuaididanhao | varchar | 200 | 快递单号 | ||
jijianrenxingming | varchar | 200 | 寄件人姓名 | ||
jijianrendianhua | varchar | 200 | 寄件人电话 | ||
jijiandizhi | varchar | 200 | 寄件地址 | ||
wupinmingcheng | varchar | 200 | 物品名称 | ||
wupintupian | longtext | 4294967295 | 物品图片 | ||
qibujia | float | 起步价 | |||
danjia | float | 单价/kg | |||
wupinzhongliang | float | 物品重量 | |||
feiyong | float | 费用 | |||
shoujianrenxingming | varchar | 200 | 收件人姓名 | ||
shoujianrendianhua | varchar | 200 | 收件人电话 | ||
shoujianrendizhi | varchar | 200 | 收件人地址 | ||
zhuangtai | varchar | 200 | 状态 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
beizhu | longtext | 4294967295 | 备注 | ||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-6:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-7:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
mima | varchar | 200 | 密码 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
xingbie | varchar | 200 | 性别 | ||
yonghudianhua | varchar | 200 | 用户电话 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-8:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-9:取件信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
qujianma | varchar | 200 | 取件吗 | ||
kuaidimingcheng | varchar | 200 | 快递名称 | ||
qujianzhandian | varchar | 200 | 取件站点 | ||
qujianshijian | datetime | 取件时间 | |||
beizhu | longtext | 4294967295 | 备注 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
yuangongzhanghao | varchar | 200 | 员工账号 | ||
yuangongxingming | varchar | 200 | 员工姓名 |
5系统详细设计
5.1 管理员功能的实现
管理员的登陆界面包括管理员的账号、密码,其中就是已有的账号,还有需要注册的账号。只要管理员在账号上注册,注册信息就会被录入 MySQL数据库,有一个资料库,只要输入成功,就可以登陆,然后进入主页的管理。管理员登录界面如图5-1所示。
图5-1 管理员登录界面图
管理员登录到快递业务管理系统可以查看系统首页、个人中心、用户管理、快递员管理、寄件信息管理、配送信息管理、快递信息管理、取件信息管理等功能进行详细操作,如图5-2所示。
图5-2管理员功能界面图
管理员点击用户管理;在用户管理页面输入用户账号、用户姓名、性别、用户电话、头像等信息,进行查询,新增或删除用户信息等操作;如图5-3所示。
图5-3用户信息管理界面图
管理员点击快递员管理;在快递员管理页面输入员工账号、员工姓名、性别、员工电话、头像等信息,进行查询,新增或删除快递员信息等操作;如图5-4所示。
图5-4快递员管理界面图
管理员点击寄件信息管理;在寄件信息管理页面对快递单号、寄件人姓名、寄件人电话、寄件地址、物品名称、物品图片、起步价、单价/㎏、物品重量、费用、收件人姓名、收件人电话、收件人地址、状态、用户账号、用户姓名、是否支付、审核回复、审核状态等信息,进行查询或删除寄件信息等操作;如图5-5所示。
图5-5寄件信息管理界面图
管理员点击配送信息管理;在配送信息管理页面对快递单号、寄件人姓名、寄件人电话、寄件地址、物品名称、物品重量、收件人姓名、收件人电话、收件人地址、用户账号、用户姓名、更新时间、配送状态、员工账号、员工姓名等信息,进行查询或删除配送信息等操作;如图5-6所示。
图5-6配送信息管理界面图
JAVA后端代码实现
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
源码获取
大家点赞、收藏、关注 ,让更多需要的同学看到
⭐进主页热门专栏推荐订阅⭐ 订阅收藏起来,防止下次找不到
🔎千套Java / PHP / nod.js / asp.net/ Python等项目实战更新中~
🔎百套小程序APP项目实战更新中~👇下方有我的微信名片👇