这是学习springboot时完成的项目,前端后端都有,但是因为项目较复杂,因此完成的部分内容并不是很完美。学生选课系统目前网上的已经不少了,本项目在完成时也参考了很多,表示感谢,此外,这个项目也仅仅是我完成的一部分内容,谨慎参考。
相关链接:学生选课系统(前端)vue
MySQL数据库
COURSE数据库下6个表
1.courses("id" "credits" "comments")
2.stcou(student_courses)("id" "stuno" "couno" "tegrade")
3.students("id" "name" "mail" "password")
4.teachers("id" "name" "mail" "password")
5.tecou(teacher_courses)("id" "teano" "couno")
6.Manager("id" "name" "mail" "password")
需要完成选课、退课、教师开课、登陆成绩等功能。
0.项目结构及环境搭建
环境搭建主要参考网上资料,由于使用的是IDEA,故使用的是IDEA Spring Initializr进行创建
参考链接:
1.pom.xml
依赖复制到pom.xml会自动下载的。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mpdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mpdemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- MyBatisPlus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!-- mysql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- 数据连接池 druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>org.springframework.experimental</groupId>
<artifactId>spring-aot</artifactId>
<version>0.12.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.entity(实体层)
别名: model层 ,domain层
用途: 实体层,用于存放我们的实体类,与数据库中的属性值基本保持一致,实现set和get的方法。
例子:user表的实体User
Course.java
package com.example.coursechoose.entity;
import lombok.Data;
@Data
public class Courses {
private Long id;
private int couno;
private int credits;
private String comments;
}
Manager.java
package com.example.coursechoose.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class Manager {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private String mail;
private String password;
}
Students.java
package com.example.coursechoose.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
public class Students {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private String mail;
private String password;
}
Stcou.java
package com.example.coursechoose.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
public class Stcou {
@Getter
@Setter
@TableId(type = IdType.AUTO)
private Long id;
@Getter
@Setter
private int stuno;
@Getter
@Setter
private int couno;
@Getter
@Setter
private int tegrade;
}
Teachers.java
package com.example.coursechoose.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
public class Teachers {
@Getter
@Setter
@TableId(type = IdType.AUTO)
private Long id;
@Getter
@Setter
private String name;
@Getter
@Setter
private String mail;
@Getter
@Setter
private String password;
}
Tecou.java
package com.example.coursechoose.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
public class Tecou {
@Getter
@Setter
@TableId(type = IdType.AUTO)
private Long id;
@Getter
@Setter
private int teano;
@Getter
@Setter
private int couno;
}
3.Mapper
别名: dao层
用途: 对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis中方法主要与与xxx.xml内相互一一映射。
CourseMapper.java
package com.example.coursechoose.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.coursechoose.entity.Courses;
import com.example.coursechoose.entity.Stcou;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface CourseMapper extends BaseMapper<Courses> {
}
ManagerMapper.java
package com.example.coursechoose.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.coursechoose.entity.Manager;
public interface ManagerMapper extends BaseMapper<Manager> {
}
StudentMapper.java
package com.example.coursechoose.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.coursechoose.entity.Students;
public interface StudentMapper extends BaseMapper<Students> {
}
SCMapper.java
package com.example.coursechoose.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.coursechoose.entity.Stcou;
public interface SCMapper extends BaseMapper<Stcou> {
}
TeacherMapper.java
package com.example.coursechoose.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.coursechoose.entity.Teachers;
public interface TeacehrMapper extends BaseMapper<Teachers> {
}
TCMapper.java
package com.example.coursechoose.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.coursechoose.entity.Tecou;
public interface TCMapper extends BaseMapper<Tecou> {
}
4.Controller
别名:web 层
用途: 控制层,负责具体模块的业务流程控制,需要调用service逻辑设计层的接口来控制业务流程。因为service中的方法是我们使用到的,controller通过接收前端H5或者App传过来的参数进行业务操作,再将处理结果返回到前端。
ManagerController.java
管理员页面
package com.example.coursechoose.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.coursechoose.entity.Manager;
import com.example.coursechoose.entity.Students;
import com.example.coursechoose.mapper.ManagerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin(origins = {"*","null"})
public class ManagerController {
@Autowired
private ManagerMapper managerMapper;
@PostMapping("/loginadm")
public String loginTeacher(@RequestBody Manager manager){
QueryWrapper<Manager> managerQueryWrapper = new QueryWrapper<>();
managerQueryWrapper.setEntity(manager);
Manager managerSelect = managerMapper.selectOne(managerQueryWrapper);
if(managerSelect== null) {
return "0";
}else{
return "1";
}
}
}
CourseController.java
课程信息,课程添加等
package com.example.coursechoose.controller;
import com.example.coursechoose.entity.Courses;
import com.example.coursechoose.mapper.CourseMapper;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.nativex.json.JSONObject;
import org.springframework.web.bind.annotation.*;
import javax.print.DocFlavor;
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;
@RestController
@CrossOrigin(origins = {"*","null"})
public class CourseController {
@Autowired
private CourseMapper courseMapper;
private Gson gson = new Gson();
@GetMapping("/course")
public String getCourse(){
List<Courses> course1 = courseMapper.selectList(null);
return gson.toJson(course1);
}
@PostMapping("/deletecourse")
public void deleteCourse(@RequestBody Courses course1 ){
courseMapper.deleteById(course1.getId());
}
@PostMapping("/addCourse")
public void insertCourse(@RequestBody Courses course2 ){
courseMapper.insert(course2);
}
@PostMapping("/updateCourse")
public void addCourse( @RequestBody Courses course3){
courseMapper.updateById(course3);
}
}
StudentController.java
添加、删除、更新、登录、注册学生 与MySQL相连
package com.example.coursechoose.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.coursechoose.entity.Stcou;
import com.example.coursechoose.entity.Teachers;
import com.example.coursechoose.mapper.StudentMapper;
import com.example.coursechoose.entity.Students;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin(origins = {"*","null"})
public class StudentController {
@Autowired
private StudentMapper studentMapper;
private Gson gson = new Gson();
@GetMapping("/student")
public String getStudent(){
List<Students> students = studentMapper.selectList(null);
return gson.toJson(students);
}
@PostMapping("/deleteStudent")
public void deleteStudent(@RequestBody Students stduent1){
studentMapper.deleteById(stduent1.getId());
}
@PostMapping("/addStudent")
public void insertStudent(@RequestBody Students student2 ){
studentMapper.insert(student2);
}
@PostMapping("/updateStudent")
public void addStudent( @RequestBody Students student3){
studentMapper.updateById(student3);
}
@PostMapping("/loginstu")
public String loginTeacher(@RequestBody Students student4){
QueryWrapper<Students> studentQueryWrapper = new QueryWrapper<Students>();
studentQueryWrapper.setEntity(student4);
Students studentSelect = studentMapper.selectOne(studentQueryWrapper);
if(studentSelect == null) {
return "0";
}else{
return "1";
}
}
@PostMapping("/registerstu")
public void registerStudent(@RequestBody Students student5){
studentMapper.insert(student5);
}
}
SCController.java(学生课程表及成绩)
package com.example.coursechoose.controller;
import com.example.coursechoose.entity.Courses;
import com.example.coursechoose.mapper.SCMapper;
import com.example.coursechoose.entity.Stcou;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin(origins = {"*","null"})
public class SCController {
@Autowired
private SCMapper scMapper;
private Gson gson = new Gson();
@GetMapping("/sc")
public String getSC(){
List<Stcou> sc = scMapper.selectList(null);
return gson.toJson(sc);
}
@PostMapping("/deletesc")
public void deleteSC(@RequestBody Stcou sc1){
scMapper.deleteById(sc1.getId());
}
@PostMapping("/addsc")
public void insertSC(@RequestBody Stcou sc2 ){
scMapper.insert(sc2);
}
@PostMapping("/updatesc")
public void updateSC( @RequestBody Stcou sc3){
scMapper.updateById(sc3);
}
}
TeacherController.java
完成教师的增删改登录、注册
package com.example.coursechoose.controller;
import ch.qos.logback.core.joran.spi.ElementSelector;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.coursechoose.entity.Stcou;
import com.example.coursechoose.mapper.TeacehrMapper;
import com.example.coursechoose.entity.Teachers;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin(origins = {"*","null"})
public class TeacherController {
@Autowired
private TeacehrMapper teacehrMapper;
private Gson gson = new Gson();
@GetMapping("/teacher")
public String getTeacher(){
List<Teachers> teachers = teacehrMapper.selectList(null);
return gson.toJson(teachers);
}
@PostMapping("/deleteTeacher")
public void deleteTeacehr(@RequestBody Teachers teacehr1){
teacehrMapper.deleteById(teacehr1.getId());
}
@PostMapping("/addTeacher")
public void insertTeacher(@RequestBody Teachers teacher2 ){
teacehrMapper.insert(teacher2);
}
@PostMapping("/updateTeacher")
public void addTeacher( @RequestBody Teachers teacher3){
teacehrMapper.updateById(teacher3);
}
@PostMapping("/logintea")
public String loginTeacher(@RequestBody Teachers teacher4){
QueryWrapper<Teachers> teachersQueryWrapper = new QueryWrapper<>();
teachersQueryWrapper.setEntity(teacher4);
Teachers teacherSelect = teacehrMapper.selectOne(teachersQueryWrapper);
if(teacherSelect == null) {
return "0";
}else{
return "1";
}
}
@PostMapping("/registertea")
public void registerTeacher(@RequestBody Teachers teacher5){
teacehrMapper.insert(teacher5);
}
}
TCController.java
教师开课、删课、更新课程
package com.example.coursechoose.controller;
import com.example.coursechoose.entity.Stcou;
import com.example.coursechoose.mapper.TCMapper;
import com.example.coursechoose.entity.Tecou;
import com.example.coursechoose.mapper.TeacehrMapper;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin(origins = {"*","null"})
public class TCController {
@Autowired
private TCMapper tcMapper;
private Gson gson = new Gson();
@GetMapping("/tc")
public String getTC(){
List<Tecou> tc = tcMapper.selectList(null);
return gson.toJson(tc);
}
@PostMapping("/deletetc")
public void deleteTC(@RequestBody Tecou tc1){
tcMapper.deleteById(tc1.getId());
}
@PostMapping("/addtc")
public void insertTC(@RequestBody Tecou tc2 ){
tcMapper.insert(tc2);
}
@PostMapping("/updatetc")
public void updateTC( @RequestBody Tecou tc3){
tcMapper.updateById(tc3);
}
}
5.application
CoursechooseApplication.java
package com.example.coursechoose;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.coursechoose.mapper")
public class CoursechooseApplication {
public static void main(String[] args) {
SpringApplication.run(CoursechooseApplication.class, args);
}
}
相关链接:学生选课系统(前端)vue