基于springboot的校园一卡通-老师满意

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

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

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

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

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

 

第四章 系统设计

4.1系统设计原理

设计原理,是指一个系统的设计由来,其将需求合理拆解成功能,抽象的描述系统的模块,以模块下的功能。功能模块化后,变成可组合、可拆解的单元,在设计时,会将所有信息分解存储在各个表中,界面不会显示所有定义的字段。在设计时,会有几大要求,抽象、模块化、信息隐藏、耦合低、内聚等特性,本系统的设计也符合以上几大特性。制作和显示流程都属于程序员需要分析研究的一部分[13]。每个模块都是相对独立的,系统前台不显示账号操作权限范围外的信息。

4.2功能模块设计

该章节的功能模块设计,只是大概描述了系统的所有功能模块,将功能按权限来讲解。系统总体功能如图4-1所示。

图4-1 系统总体结构图

4.3 数据库设计

4.3.1数据库设计原则

学习程序设计,如果想要了解数据库管理系统或者是按照系统接口的要求制作的,就必须创建一个数据库管理系统模型,用来存储数据,这样在进行应用程序编程的过程中,就不需要加载操作系统页面的信息,从而提高整个系统的工作效率。在数据库管理系统中承载着众多的数据,应该说,一个管理信息系统的建设中心和基地,也为建设管理信息系统和信息管理系统提出了新的查询、删除、修改和操作功能,使管理信息系统建设可以快速查询需要的数据,而不是直接从代码中查找。信息库管理系统由各个组成部分的信息表按照具体的方法进行准确的归并、排序和组成信息库管理系统。

 4.3.2数据库E-R图设计

E-R图即实体-联系图,主要作用是提供了解显示数据类型存在的联系的途径,是藐视现实世界的概念模型,其关键要素是实体型、属性、联系。以下是本系统主要的实体属性图如下所示。

4.3.3数据库表结构设计

该系统采用的数据库是MySQL,根据该系统的数据存储特点进行数据库关系表的设计。下面是该系统中关键部分关系表的详细信息。

表4-1:商品信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinbianhao

varchar

200

商品编号

shangpinmingcheng

varchar

200

商品名称

shangpinleixing

varchar

200

商品类型

tupian

longtext

4294967295

图片

jiage

float

价格

shuliang

int

数量

fabushijian

datetime

发布时间

shangpinxiangqing

longtext

4294967295

商品详情

表4-2:美食信息评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

longtext

4294967295

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-3:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-4:一卡通

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yikatonghao

varchar

200

一卡通号

mima

varchar

200

密码

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jine

float

金额

banlishijian

datetime

办理时间

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-5:器材借用

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

qicaimingcheng

varchar

200

器材名称

qicaileixing

varchar

200

器材类型

shuliang

int

数量

jieyongshizhang

varchar

200

借用时长

jieyongshijian

datetime

借用时间

jieyongshuoming

varchar

200

借用说明

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-6:商品类型

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinleixing

varchar

200

商品类型

表4-7:订单信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

dingdanbianhao

varchar

200

订单编号

shangpinmingcheng

varchar

200

商品名称

shangpinleixing

varchar

200

商品类型

jiage

varchar

200

价格

shuliang

int

数量

zongjiage

varchar

200

总价格

goumaishijian

datetime

购买时间

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

表4-8:图书信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tushubianhao

varchar

200

图书编号

tushumingcheng

varchar

200

图书名称

tushuleixing

varchar

200

图书类型

tupian

longtext

4294967295

图片

shuliang

int

数量

kejieshuliang

int

可借数量

zuozhe

varchar

200

作者

chubanshe

varchar

200

出版社

jieyuexuzhi

longtext

4294967295

借阅须知

tushujieshao

longtext

4294967295

图书介绍

表4-9:器材归还

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

qicaimingcheng

varchar

200

器材名称

qicaileixing

varchar

200

器材类型

guihaishuliang

int

归还数量

guihaishuoming

varchar

200

归还说明

guihaishijian

datetime

归还时间

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-10:上机记录

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

mingcheng

varchar

200

名称

shangjiriqi

date

上机日期

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shangjishizhang

varchar

200

上机时长

shangjifeiyong

float

上机费用

shangjishuoming

longtext

4294967295

上机说明

表4-11:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-12:图书类型

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tushuleixing

varchar

200

图书类型

表4-13:校园资讯

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表4-14:充值信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yikatonghao

varchar

200

一卡通号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jine

int

金额

chongzhishijian

datetime

充值时间

ispay

varchar

200

是否支付

未支付

表4-15:图书借阅

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tushumingcheng

varchar

200

图书名称

tushuleixing

varchar

200

图书类型

kejieshuliang

int

可借数量

shuliang

int

数量

jieyueriqi

date

借阅日期

guihairiqi

date

归还日期

jieyueshuoming

longtext

4294967295

借阅说明

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-16:美食信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shitangmingcheng

varchar

200

食堂名称

caipinmingcheng

varchar

200

菜品名称

caipinleixing

varchar

200

菜品类型

tupian

longtext

4294967295

图片

kouwei

varchar

200

口味

jiage

float

价格

shuliang

int

数量

caipinjieshao

longtext

4294967295

菜品介绍

表4-17:图书归还

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tushumingcheng

varchar

200

图书名称

tushuleixing

varchar

200

图书类型

shuliang

int

数量

guihaishijian

date

归还时间

guihaishuoming

longtext

4294967295

归还说明

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-18:扣费信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yikatonghao

varchar

200

一卡通号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jine

int

金额

koufeishuoming

longtext

4294967295

扣费说明

koufeishijian

datetime

扣费时间

表4-19:通知信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

xuehao

varchar

200

学号

xingming

varchar

200

姓名

tongzhineirong

longtext

4294967295

通知内容

tongzhishijian

datetime

通知时间

表4-20:缴费信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

dingdanbianhao

varchar

200

订单编号

jiaofeixiangmu

varchar

200

缴费项目

xuehao

varchar

200

学号

xingming

varchar

200

姓名

jiaofeijine

float

缴费金额

fabushijian

datetime

发布时间

jiaofeishuoming

varchar

200

缴费说明

表4-21: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-22:会议签到

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

huiyimingcheng

varchar

200

会议名称

xuehao

varchar

200

学号

xingming

varchar

200

姓名

qiandaoshuoming

varchar

200

签到说明

qiandaoshijian

datetime

签到时间

longitude

float

经度

latitude

float

纬度

fulladdress

varchar

200

地址

表4-23:体育器材

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

qicaimingcheng

varchar

200

器材名称

qicaileixing

varchar

200

器材类型

tupian

longtext

4294967295

图片

shuliang

int

数量

qicaijieshao

longtext

4294967295

器材介绍

表4-24:挂失申请

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yikatonghao

varchar

200

一卡通号

xuehao

varchar

200

学号

xingming

varchar

200

姓名

guashineirong

longtext

4294967295

挂失内容

guashishijian

datetime

挂失时间

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-25:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

4294967295

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

表4-26:论坛表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

帖子标题

content

longtext

4294967295

帖子内容

parentid

bigint

父节点id

userid

bigint

用户id

username

varchar

200

用户名

avatarurl

longtext

4294967295

头像

isdone

varchar

200

状态

表4-27:食堂就餐

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

dingdanbianhao

varchar

200

订单编号

caipinmingcheng

varchar

200

菜品名称

caipinleixing

varchar

200

菜品类型

jiage

float

价格

shuliang

int

数量

zongjiage

float

总价格

beizhu

varchar

200

备注

xiadanshijian

date

下单时间

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

表4-28:体育器材评论表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

refid

bigint

关联表id

userid

bigint

用户id

avatarurl

longtext

4294967295

头像

nickname

varchar

200

用户名

content

longtext

4294967295

评论内容

reply

longtext

4294967295

回复内容

表4-29:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

xuexiao

varchar

200

学校

banji

varchar

200

班级

shouji

varchar

200

手机

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

第五章 系统功能实现

5.1系统功能实现

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到校园一卡通的导航条,通过导航条进入各信息展示页面进行操作。系统首页界面如图5-1所示:

图5-1 系统首页界面

系统注册:在系统注册页面的输入用户注册信息进行注册操作,系统注册界面如图5-2所示:

图5-2 系统注册界面

商品信息:在商品信页面输入商品名称和选择商品类型进行查询,可以查看到商品详细信息,并根据需要进行购买操作;商品信息详细页面如图5-3所示:

图5-3商品信息详细页面

图书信息:在图书信息页面输入图书名称,选择图书类型和作者进行查询,可以查看到图书详细信息,并根据需要进行借阅操作;图书信息详细页面如图5-4所示:

图5-4图书信息详细页面

5.2后台模块实现

后台登录,在登录页面正确输入账号、密码和验证后,进入操作系统进行操作;如图5-5所示。

图5-5 后台登录界面

5.2.1管理员功能实现

管理员进入主页面,主要功能包括对系统首页,个人中心,学生管理,一卡通管理,充值信息管理,扣费信息管理,挂失申请管理,商品类型管理,商品信息管理,订单信息管理,图书类型管理,图书信息管理,图书借阅管理,图书归还管理,通知信息管理,美食信息管理,食堂就餐管理,体育器材管理,器材借用管理,器材归还管理,会议签到管理,缴费信息管理,上机记录管理,论坛管理,系统管理等进行操作。管理员主页面如图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实战项目持续更新中~

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值