基于springboot的快递业务管理系统-老师满意

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

 

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项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~

👇下方有我的微信名片👇

  • 40
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值