基于springboot的学生信息管理系统-老师满意

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

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

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

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

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

 

第四章 系统设计

4.1总体功能设计

根据上文中对用户需求的一系列综合细致的分析,针对本学生信息管理系统,得到一个如图4-1所示的宏观的总体功能结构图

图4-1 系统功能结构图

4.2 数据库E-R图设计

ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在系统中对一些主要的几个关键实体如下图:

4.3数据库的表的设计与开发

在现有的软件工程运行环境中,数据库与数据表的设计都是为了构建最适合最优秀的数据存储框架。建立一个优秀的数据库,必须保证数据的完整、准确,并尽量满足用户对数据存储的需求。那么,数据库中的信息和网络应用程序之间的链接就必须得到保障。在已有的条件下,尽可能地降低占用的数据库的空间资源消耗,使得整个学生信息管理系统能够迅速地做出反应。根据上述原则并结合实际需要,本文采用MySql进行设计。现列出如下几张表。

表4-1:教师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

gonghao

varchar

200

工号

mima

varchar

200

密码

jiaoshixingming

varchar

200

教师姓名

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

xueyuan

varchar

200

学院

zhicheng

varchar

200

职称

dianhua

varchar

200

电话

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-2:公告通知

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

leixing

varchar

200

类型

tupian

longtext

4294967295

图片

gonggaoneirong

longtext

4294967295

公告内容

fabushijian

datetime

发布时间

表4-3:考试记录表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

username

varchar

200

用户名

paperid

bigint

试卷id(外键)

papername

varchar

200

试卷名称

questionid

bigint

试题id(外键)

questionname

varchar

200

试题名称

options

longtext

4294967295

选项,json字符串

score

bigint

分值

0

answer

varchar

200

正确答案

analysis

longtext

4294967295

答案解析

myscore

bigint

试题得分

0

myanswer

varchar

200

考生答案

表4-4:试题表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

paperid

bigint

所属试卷id(外键)

papername

varchar

200

试卷名称

questionname

varchar

200

试题名称

options

longtext

4294967295

选项,json字符串

score

bigint

分值

0

answer

varchar

200

正确答案

analysis

longtext

4294967295

答案解析

type

bigint

试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空)

0

sequence

bigint

试题排序,值越大排越前面

100

表4-5:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

xueyuan

varchar

200

学院

zhuanye

varchar

200

专业

banji

varchar

200

班级

shouji

varchar

200

手机

表4-6:试卷表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

name

varchar

200

试卷名称

time

int

考试时长(分钟)

status

int

试卷状态

0

表4-7:选课信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kechengmingcheng

varchar

200

课程名称

kechengleixing

varchar

200

课程类型

xuankeshuoming

longtext

4294967295

选课说明

gonghao

varchar

200

工号

kexuanrenshu

int

选课人数

xuankeshijian

date

选课时间

xuehao

varchar

200

学号

xingming

varchar

200

姓名

xueyuan

varchar

200

学院

banji

varchar

200

班级

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

表4-8:毕业信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiuyeqiye

varchar

200

就业企业

jiuyedidian

varchar

200

就业地点

gonghao

varchar

200

工号

jiaoshixingming

varchar

200

教师姓名

jiuyeshijian

varchar

200

就业时间

jiuyefangxiang

varchar

200

就业方向

lixiaoshijian

varchar

200

离校时间

xinxibeizhu

longtext

4294967295

信息备注

xuehao

varchar

200

学号

xingming

varchar

200

姓名

shouji

varchar

200

手机

表4-9: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-10:课程信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kechengmingcheng

varchar

200

课程名称

kechengleixing

varchar

200

课程类型

shangkeshijian

date

上课时间

shangkedidian

varchar

200

上课地点

renkejiaoshi

varchar

200

任课教师

kexuanrenshu

int

可选人数

kechengjieshao

longtext

4294967295

课程介绍

gonghao

varchar

200

工号

表4-11:综合素质

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

xingming

varchar

200

姓名

xueyuan

varchar

200

学院

banji

varchar

200

班级

xuexinengli

varchar

200

学习能力

sixiangpinde

varchar

200

思想品德

yundongjiankang

varchar

200

运动健康

xinlisuzhi

varchar

200

心理素质

laoshipingjia

longtext

4294967295

老师评价

pingjiariqi

date

评价日期

gonghao

varchar

200

工号

jiaoshixingming

varchar

200

教师姓名

表4-12:课程类型

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kechengleixing

varchar

200

课程类型

表4-13:学生考勤

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

mingcheng

varchar

200

名称

kaoqinriqi

date

考勤日期

xuehao

varchar

200

学号

xingming

varchar

200

姓名

kaoqinzhuangkuang

varchar

200

考勤状况

kaoqinshuoming

longtext

4294967295

考勤说明

gonghao

varchar

200

工号

jiaoshixingming

varchar

200

教师姓名

表4-14:课程成绩

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kechengmingcheng

varchar

200

课程名称

xuehao

varchar

200

学号

xingming

varchar

200

姓名

banji

varchar

200

班级

fenshu

float

分数

chengji

varchar

200

成绩

fabushijian

datetime

发布时间

gonghao

varchar

200

工号

jiaoshixingming

varchar

200

教师姓名

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id


第五章 系统运行

5.1系统登录实现

系统登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-1所示。                               

图5-1 系统登录界面

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

图5-2系统注册页面

5.2管理员模块实现

管理员进入主页面,主要功能包括对系统首页、个人中心、学生管理、教师管理、公告通知管理、课程类型管理、课程信息管理、选课信息管理、课程成绩管理、毕业信息管理、学生考勤管理、综合素质管理等进行操作。管理员主页面如图5-3所示:

图5-3 管理员主界面

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

👇下方有我的微信名片👇

  • 43
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 背景 一民营企业专业从事灯具照明行业,是某灯具的南京地区总代理,主要在南京负责品牌的推广及项目的落地销售、分销的批发等工作,服务对象包括项目业主、施工单位、分销商、设计院、终端用户等。 <br /> 现公司规模扩大,企业业务量、办公场所、员工数都发生增长,为适应新的环境,提高工作效率和用户满意度, 该公司聘请公司S开发一套进销存系统。 <br /> 软件工程与计算二大作业---民营灯具企业进销存系统后端 ### 技术简介 本项目采用SpringBoot作为框架。 * 数据持久层使用SpringBoot自带的Hibernate来维护PO(Persistent Object持久化对象),这里使用Hibernate的原因在于其三种对象状态(持久态、游离态、分割态)便于持久化对象的增删改查等一系列操作,取代了jdbc的繁琐。 * Dao层(Data Access Object数据访问对象)使用Spring Data JPA来维护数据读写操作,Spring Data JPA的底层是基于Hibernate的,其JpaRepository、PageAndSortingRepository、CrudRepository等组件能够实现快速单表读取与后端分页、排序等功能,所以其便捷性很适合单体式系统的开发。 * 权限管理使用Apache Shiro框架:Shiro具备身份认证、会话管理、授权等功能,具备单点登录(SSO),而且本身足够轻量,易于理解,在保证完善的安全机制的同时简化开发成本。 * 日志管理使用Log4j,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件,方便在开发环境中于控制台监控程序运行状况,生产环境中收集日志按时间汇总成文件形式。 * 数据库使用MySQL,MySQL的关系型数据库特性使得数据的增删改查更灵活,并且其对于Java语言的支持度非常高。 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值