一个基于SpringBoot+vue的学生信息管理系统详细设计_spring boot当框架该如何做系统

添加学生信息:

班级管理:添加、修改、删除、查询等

课程管理:添加、修改、删除、查询等

​ 添加修改课程信息:

学生课程选择:学生用户可以选课

课程成绩打分:老师对选课的同学成绩进行打分。

查看我的课程成绩信息:

学校通知公告信息:添加、修改、删除、查询等、利用富文本进行数据上传和显示

学校新闻管理:

​ 图书资料上传下载:

附件查看预览下载:

修改密码:

主要代码展示:

用户登录验证

/\*\*
 \* 登录相关
 \*
 \* @author lyy
 \*/
@RestController
public class SysLoginController extends AbstractController {
	@Autowired
	private SysUserService sysUserService;
	@Autowired
	private SysUserTokenService sysUserTokenService;
	@Autowired
	private SysCaptchaService sysCaptchaService;

	/\*\*
 \* 验证码
 \*/
	@GetMapping("captcha.jpg")
	public void captcha(HttpServletResponse response, String uuid)throws IOException {
		response.setHeader("Cache-Control", "no-store, no-cache");
		response.setContentType("image/jpeg");

		//获取图片验证码
		BufferedImage image = sysCaptchaService.getCaptcha(uuid);

		ServletOutputStream out = response.getOutputStream();
		ImageIO.write(image, "jpg", out);
		IOUtils.closeQuietly(out);
	}

	/\*\*
 \* 登录
 \*/
	@PostMapping("/sys/login")
	public Map<String, Object> login(@RequestBody SysLoginForm form)throws IOException {
		boolean captcha = sysCaptchaService.validate(form.getUuid(), form.getCaptcha());
// if(!captcha){
// return R.error("验证码不正确");
// }

		//用户信息
		SysUserEntity user = sysUserService.queryByUserName(form.getUsername());

		//账号不存在、密码错误
		if(user == null || !user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) {
			return R.error("账号或密码不正确");
		}

		//账号锁定
		if(user.getStatus() == 0){
			return R.error("账号已被锁定,请联系管理员");
		}

		//生成token,并保存到数据库
		R r = sysUserTokenService.createToken(user.getUserId());
		return r;
	}


	/\*\*
 \* 退出
 \*/
	@PostMapping("/sys/logout")
	public R logout() {
		sysUserTokenService.logout(getUserId());
		return R.ok();
	}

前端VUE+element表单:

<h3 class="login-title">学生信息管理登录</h3>
          <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" status-icon>
            <el-form-item prop="userName">
              <el-input v-model="dataForm.userName" placeholder="帐号"></el-input>
            </el-form-item>
            <el-form-item prop="password">
              <el-input v-model="dataForm.password" type="password" placeholder="密码"></el-input>
            </el-form-item>
            <el-form-item prop="captcha">
              <el-row :gutter="20">
                <el-col :span="14">
                  <el-input v-model="dataForm.captcha" placeholder="验证码">
                  </el-input>
                </el-col>
                <el-col :span="10" class="login-captcha">
                  <img :src="captchaPath" @click="getCaptcha()" alt="">
                </el-col>
              </el-row>
            </el-form-item>
            <el-form-item>
              <el-button class="login-btn-submit" type="danger" @click="dataFormSubmit()">登录</el-button>
            </el-form-item>
          </el-form>
  dataFormSubmit () {
        this.$refs['dataForm'].validate((valid) => {
          if (valid) {
            this.$http({
              url: this.$http.adornUrl('/sys/login'),
              method: 'post',
              data: this.$http.adornData({
                'username': this.dataForm.userName,
                'password': this.dataForm.password,
                'uuid': this.dataForm.uuid,
                'captcha': this.dataForm.captcha
              })
            }).then(({data}) => {
              if (data && data.code === 0) {
                this.$cookie.set('token', data.token)
                this.$router.replace({ name: 'home' })
              } else {
                this.getCaptcha()
                this.$message.error(data.msg)
              }
            })
          }
        })
      },

权限控制:

 @Bean("shiroFilter")
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
        shiroFilter.setSecurityManager(securityManager);

        //oauth过滤
        Map<String, Filter> filters = new HashMap<>();
        filters.put("oauth2", new OAuth2Filter());
        shiroFilter.setFilters(filters);

        Map<String, String> filterMap = new LinkedHashMap<>();
        filterMap.put("/webjars/\*\*", "anon");
        filterMap.put("/druid/\*\*", "anon");
        filterMap.put("/app/\*\*", "anon");
        filterMap.put("/sys/login", "anon");
        filterMap.put("/swagger/\*\*", "anon");
        filterMap.put("/v2/api-docs", "anon");
        filterMap.put("/swagger-ui.html", "anon");
        filterMap.put("/swagger-resources/\*\*", "anon");
        filterMap.put("/captcha.jpg", "anon");
        filterMap.put("/aaa.txt", "anon");
        filterMap.put("/virtuel/\*\*", "anon");

        filterMap.put("/\*\*", "oauth2");
        shiroFilter.setFilterChainDefinitionMap(filterMap);

        return shiroFilter;
    }

数据库连接配置:

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/renren_students?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
            username: root
            password: 123456
            initial-size: 10
            max-active: 100
            min-idle: 10
            max-wait: 60000
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            time-between-eviction-runs-millis: 60000
            min-evictable-idle-time-millis: 300000
            #Oracle需要打开注释
            #validation-query: SELECT 1 FROM DUAL
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            stat-view-servlet:
                enabled: true
                url-pattern: /druid/\*
 #login-username: admin
 #login-password: admin
 filter:
 stat:
 log-slow-sql: true
 slow-sql-millis: 1000
 merge-sql: false
 wall:
 config:
 multi-statement-allow: true

数据库表结构文档

****数据库名:****renren_students

****文档版本:****V1.0.0

****文档描述:****数据库表设计描述

表cla

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2namevarchar2550YN
3class_numvarchar2550YN
4user_numsvarchar2550YN

表course

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2namevarchar2550YN
3teacher_numvarchar2550YN
4sk_timedatetime190YN
5sk_placevarchar2550YN
6weeks_numbervarchar2550YN
7kc_typevarchar2550YN
8facultyvarchar2550YN
9scorevarchar2550YN
10bzvarchar2550YN

表dj_news

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2titlevarchar2550YN标题
3tyvarchar2550YN类型
4create_timedatetime190YN发布时间
5unitvarchar2550YN发布单位
6numvarchar2550YN发布编号
7contentmediumtext167772150YN主要内容
8create_byvarchar2550YN发布人
9bzvarchar2550YN备注信息
10kindvarchar2550YN种类(党建要闻 组织风采 )

表file

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2pathvarchar2550YN
3file_namevarchar2550YN
4file_typevarchar2550YN
5classifyvarchar2550YN
6create_timedatetime190YN
7create_byvarchar2550YN

表inform

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2titlevarchar2550YN
3contenttext655350YN
4create_timetimestamp190YNCURRENT_TIMESTAMP
5create_byvarchar2550YN
6bzvarchar2550YN

表my_course

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2namevarchar2550YN
3teacher_numvarchar2550YN
4sk_timedatetime190YN
5sk_placevarchar2550YN
6weeks_numbervarchar2550YN
7kc_typevarchar2550YN
8facultyvarchar2550YN
9scorevarchar2550YN
10bzvarchar2550YN
11user_idint100YN
12user_namevarchar2550YN
13user_scorevarchar2550YN

表student

编号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2namevarchar2550YN
3sexvarchar2550YN
4birth_datedatetime190YN
5ruxue_datedatetime190YN
6collegevarchar2550YN
7bzvarchar2550YN
8cla_namevarchar2550YN

表sys_captcha (系统验证码)

编号名称数据类型长度小数位允许空值主键默认值说明
1uuidchar360NYuuid
2codevarchar60NN验证码
3expire_timedatetime190YN过期时间

表sys_config (系统配置信息表)

编号名称数据类型长度小数位允许空值主键默认值说明
1idbigint200NY
2param_keyvarchar500YNkey
3param_valuevarchar20000YNvalue
4statustinyint40YN1状态   0:隐藏   1:显示
5remarkvarchar5000YN备注

表sys_dept (部门管理)

编号名称数据类型长度小数位允许空值主键默认值说明
1dept_idbigint200NY
2parent_idbigint200YN上级部门ID,一级部门为0
3namevarchar500YN部门名称
4order_numint100YN排序
5del_flagtinyint40YN0是否删除  -1:已删除  0:正常
6remarkvarchar2550YN

表sys_log (系统日志)

编号名称数据类型长度小数位允许空值主键默认值说明
1idbigint200NY
2usernamevarchar500YN用户名
3operationvarchar500YN用户操作
4methodvarchar2000YN请求方法
5paramsvarchar50000YN请求参数
6timebigint200NN执行时长(毫秒)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
img
img
img

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
img

厂,18年进入阿里一直到现在。**

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
[外链图片转存中…(img-MpaRN27S-1712549557017)]
[外链图片转存中…(img-zvL90Lzg-1712549557018)]
[外链图片转存中…(img-EWtB8OPu-1712549557018)]

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
[外链图片转存中…(img-o0lAp8ie-1712549557018)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值