学生选课系统(后端)springboot+mybiats+gson

        这是学习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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值