基于javaweb的SpringBoot在线学生选课系统(java+springboot+vue+maven+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

140923551103

150923551103

160923551103

170923551103

180923551103

200923551103

基于javaweb的SpringBoot在线学生选课系统(java+springboot+vue+maven+mysql)

1
2
3
4
5
6
7
8
9
10
11
12
13
管理员:
10001 123456

学生:
1803010028 123456
1803010039 123456
1803010045 123456
1803010046 123456

老师:
180014 123456
180019 123456

一、项目运行 环境配置:

Jdk1.8 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。

项目技术:

Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@CrossOrigin
@GetMapping("/api/student/getkechengbiao/{xuehao}")
public List<Map<String, Object>> getKeChengBiaoInfo(@PathVariable("xuehao") Integer xuehao) {
return selectionDAO.getkechengbiao(xuehao);
}


/***
* 获取当前账户的学生个人信息
* **/
@CrossOrigin
@GetMapping("/api/student/getself/{xuehao}")
public StudentUser getStuSelf(@PathVariable("xuehao") Integer xuehao) {
Optional<StudentUser> optional = Optional.ofNullable(studentUserDAO.findByXuehao(xuehao));
return optional.orElseGet(StudentUser::new);
}


/**
* 根据账户信息进行基本信息更新
**/
@CrossOrigin
@PutMapping("/api/student/updateself/{xuehao}")
public StudentUser updateStuSelf(@PathVariable("xuehao") Integer xuehao, @RequestBody StudentUser studentUser) {
studentUser.setXuehao(Integer.valueOf(xuehao));
return studentUserDAO.saveAndFlush(studentUser);
}


/**
* 根据学号对密码进行重置,用于忘记密码之后找回的时候充值密码
**/
@CrossOrigin
@PostMapping("/api/student/resetpwd")
public Object ResetPassword(@RequestBody Map<String, Object> json) throws Exception {
String zhanghu = String.valueOf(json.get("zhanghu"));
String password = String.valueOf(json.get("password"));
StudentUser studentUser = studentUserDAO.findByXuehao(Integer.valueOf(zhanghu));
if (studentUser == null) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg", "数据有误 !请检查后重试!");
jsonObject.put("code", "255");
return jsonObject.toString();
} else {
studentUser.setPassword(MD5.md5(password));
StudentUser studentUser1 = studentUserDAO.saveAndFlush(studentUser);
if (studentUser1 == null) {
JSONObject jsonObject = new JSONObject();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* @Classname LoginController
* @Description 登录接口(管理员/教师/学生)
* @Created by SHTL
*/
@RestController
public class LoginController {

/**
* 管理员账户登录接口
* **/
@Autowired
UserService userService;
@Autowired
TokenService tokenService;
@Autowired
AdminUserDAO adminUserDAO;
@CrossOrigin
@PostMapping(value = "/api/login_admin")
@ResponseBody
public Object login_admin(@RequestBody AdminUser requestUser) throws Exception {
Integer username = requestUser.getZhanghao();
AdminUser adminUser = adminUserDAO.findByZhanghao(username);
if (adminUser == null) {
ResultCode result = new ResultCode(255);
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg","用户不存在!");
jsonObject.put("code","255");
return jsonObject.toString();
}else {
if(MD5.verify(requestUser.getPassword(),adminUser.getPassword())) {
String token = tokenService.getAdminToken(requestUser);
ResultCode result = new ResultCode(200);
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg","登录成功!");
jsonObject.put("code","200");
jsonObject.put("token",token);
jsonObject.put("adminname",adminUser.getName());
return jsonObject.toString();
}else {
ResultCode result = new ResultCode(256);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
         ResultCode result = new ResultCode(200);
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg","登录成功!");
jsonObject.put("code","200");
jsonObject.put("token",token);
jsonObject.put("adminname",adminUser.getName());
return jsonObject.toString();
}else {
ResultCode result = new ResultCode(256);
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg","密码错误!");
jsonObject.put("code","256");
return jsonObject.toString();
}
}
}

/**
* 教师账户登录接口
* ***/
@Autowired
TeacherUserDAO teacherUserDAO;
@CrossOrigin
@PostMapping(value = "/api/login_teacher")
@ResponseBody
// 教师账户的登录 api
public Object login_teacher(@RequestBody TeacherUser requestUser) throws Exception {
Integer username = requestUser.getZhanghu();
TeacherUser teacherUser = teacherUserDAO.findByZhanghu(username);
if (teacherUser == null) {
ResultCode result = new ResultCode(255);
// 将获取的json数据封装一层,然后在给返回
JSONObject jsobj = new JSONObject();
jsobj.put("msg", "用户不存在!");
jsobj.put("code", "255");
return jsobj.toString();
} else {
if(MD5.verify(requestUser.getPassword(),teacherUser.getPassword())) {
String token = tokenService.getTeacherToken(requestUser);
ResultCode result = new ResultCode(200);
// 将获取的json数据封装一层,然后在给返回
JSONObject jsobj = new JSONObject();
jsobj.put("msg", "登录成功!");
jsobj.put("code", "200");
jsobj.put("token", token);
jsobj.put("teachername", teacherUser.getName());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        String xuehao = String.valueOf(json.get("xuehao"));
String kechengid = String.valueOf(json.get("kechengid"));
SelectionModel selectionModel = new SelectionModel();
selectionModel.setXuehao(Integer.valueOf(xuehao));
selectionModel.setKechengid(Integer.valueOf(kechengid));
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
selectionModel.setCtime(df.format(new Date()));
return selectionDAO.save(selectionModel);
}


/**
* 根据当前登录的学生账号,获取该学生当前选择的学分情况,分为选修和必修
***/
// 查找必修
@CrossOrigin
@PostMapping("/api/student/getxuefenbi/{zhanghao}")
List<Map<String, Object>> getXueFenBi(@PathVariable("zhanghao") Integer zhanghao) {
return selectionDAO.getXueFenBixiu(zhanghao);
}

// 查找必修
@CrossOrigin
@PostMapping("/api/student/getxuefenxuan/{zhanghao}")
List<Map<String, Object>> getXueFenXuan(@PathVariable("zhanghao") Integer zhanghao) {
return selectionDAO.getXueFenXuanxiu(zhanghao);
}


/**
* 学生找回密码操作
**/
// 注入QQ发送邮件的bean
@Autowired
JavaMailSender mailSender;
@Autowired
UserService userService;

@CrossOrigin
@ResponseBody
@PostMapping("/api/student/forgetepwd")
public Object sendEmail(@RequestBody Map<String, Object> json) {
String qq = String.valueOf(json.get("email"));
Integer zhanghu = Integer.valueOf(String.valueOf(json.get("zhanghao")));
String mibao = String.valueOf(json.get("mibao"));
// StudentUser studentUser = studentUserDAO.findByXuehao(zhanghu);
StudentUser studentUser = studentUserDAO.findByXuehaoAndEmailAndMibao(zhanghu, qq, mibao);
// 账号不存在
if (studentUser == null) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        studentUser.setPassword(MD5.md5(studentUser.getPassword()));
}
return studentUserDAO.saveAndFlush(studentUser);
}


/**
* 获取学院信息
**/
@CrossOrigin
@GetMapping("/api/teacher/getcollegegroup")
public List<Object> findByCollegeGroup() {
return studentUserDAO.getByCollegegroup();
}


/**
* 获取专业信息
**/
@CrossOrigin
@GetMapping("/api/teacher/getmajorgroup")
public List<Object> findByMajorGroup() {
return studentUserDAO.getByMajorgroup();
}

/**
* 获取班级信息
**/
@CrossOrigin
@GetMapping("/api/teacher/getbanjigroup")
public List<Object> findByBanjiGroup() {
return studentUserDAO.getByBanjigroup();
}


/**
* 对课程信息进行分动态查询
**/
//分页查询
@Autowired
CurriDAO curriDAO;
@Autowired
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                return jsonObject.toString();
}
}
}


}
package com.credit.shtl.controller;





/**
* @Classname GetUserList
* @Description 学生端所有接口数据
* @Created by SHTL
*/
@RestController
public class StudentController {

/**
* 获取当前账户的已选课程信息 (有对课程名称进行模糊查和对课程类型进行筛选的条件)
**/


项目链接:
https://javayms.github.io?id=211023491103200xy
https://javayms.pages.dev?id=211023491103200xy