Sistema de gestión de información de estudiantes basado en Springboot

Tabla de contenido

1. Análisis del sistema

2. Diseño del sistema

2.1, módulo de interfaz

2.2, módulo de back-end

2.3, módulo de base de datos

Tres, implementación del sistema

3.1, implementación de front-end

3.2, implementación de back-end


El front-end usa Vue.js + Element.UI para el desarrollo, y el back-end usa Springboot + MyBatis. MySQL se utiliza para la base de datos. Si necesita el código fuente, puede agregar Q: 914259961

 

 

2.1 , módulo de interfaz

La página de inicio de sesión consta de un formulario con dos casillas de entrada, número de cuenta y contraseña. Una vez que la entrada es exitosa, saltará a la página de administración de información, de lo contrario, se le preguntará el motivo del error de inicio de sesión.

Luego hay cuatro páginas de administración de información, a saber, administración de información de estudiantes, administración de información de clase, administración de información de maestros y administración de información de cursos.

La página de administración de información del estudiante puede administrar la información del estudiante y puede consultar por nombre de estudiante y distinguir por clase.

La página de gestión de información de la clase puede gestionar la información de la clase y puede realizar consultas por profesión. Haga doble clic en una clase para ir a la página de todos los estudiantes de esa clase.

La página de administración de información del maestro puede administrar la información del maestro y puede consultar por el nombre del maestro.

La página de administración de información del curso puede administrar la información del curso, que se puede consultar por el nombre del curso y distinguir por el semestre de apertura del curso, la clase y el instructor.

Al hacer doble clic en una celda de un semestre, se irá a todos los cursos del semestre; al hacer doble clic en una clase, se irá a todos los cursos de esa clase; al hacer doble clic en un profesor, se irá a todos los cursos de ese profesor. Se puede seleccionar al mismo tiempo.

 

 

2.2 , módulo de back-end

La capa de presentación se utiliza para recibir datos y devolverlos. Usando el estilo de interfaz RestFul, las funciones de la interfaz se distinguen por el tipo de interfaz.

La capa de servicio es donde se realiza el negocio específico. Procese los datos en la capa de presentación, llame a la interfaz de la capa de persistencia, agregue, elimine, verifique y modifique los datos y realice las operaciones en cascada relacionadas.

Debido a que la base de datos utiliza claves externas lógicas, es necesario realizar operaciones relacionadas en la asociación entre tablas en la capa de servicio.

La capa de persistencia es donde se accede a los datos. El framework MyBatis se utiliza para encapsular el acceso a la base de datos, y el mapeo objeto-relacional se completa asociando las entidades relacionadas con la tabla de la base de datos, lo que simplifica el funcionamiento de la base de datos.

 

Figura 1 Diagrama de clases

 

 

2.3 , módulo de base de datos

La base de datos es MySQL y la base de datos se llama student_db. Hay seis tablas en total, a saber, tabla de estudiantes, tabla de profesor, tabla de clase, tabla de curso, tabla de cuenta y tabla de historial de la base de datos de construcción automática.

La clave externa de la tabla de clases se agrega a la tabla de estudiantes, y luego la clave externa de la tabla de clases y la clave externa de la tabla del profesor se agregan a la tabla del curso. A través de estas asociaciones de clave externa, las asociaciones completadas entre entidades en el módulo de back-end,

Hace que su uso en el back-end sea más conveniente.

 

Figura 2 Estructura de la tabla de la base de datos

 

 

3.1 , implementación de front-end

1. Página de inicio de sesión

En el medio de la página hay un formulario. Dos casillas de entrada han agregado validación de formulario y no pueden estar vacías. Luego, los dos botones son uno para iniciar sesión y el otro es para restablecer la entrada en la casilla de entrada. El formulario se procesa de forma transparente.

 

Figura 3 Página de inicio de sesión

 

 

2. Página de gestión de estudiantes

 

Figura 4 Página de administración de estudiantes

 

Figura 5 Agregar un estudiante

 

Figura 6 Editando estudiantes

 

3. Página de gestión de clases

 

Figura 7 Página de gestión de clases

 

Figura 8 Agregar una clase

 

Figura 9 Editando la clase

 

4. Página de gestión de profesores

 

Figura 10 Página de gestión de profesores

 

Figura 11 Agregar un profesor

 

Figura 12 Editar profesor

 

5. Página de gestión del curso

 

Figura 13 Página de gestión del curso

 

Figura 14 Agregar un curso

 

Figura 15 Editando el curso

 

3.2 , implementación de back-end

1. Entrada de programa

package com.management.app;


importar org.mybatis.spring.annotation.MapperScan;
importar org.springframework.boot.SpringApplication;
importar org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan ("com.management.app.core.mapper")
aplicación de clase pública {     principal vacío estático público (String [] args) {         SpringApplication.run (Application.class, args);     } }



 

2. Capa de rendimiento (información del alumno)

package com.management.app.api;


import com.management.app.core.model.entity.Student;
import com.management.app.core.service.IStudentService;
import com.management.app.support.Rest;
importar org.springframework.web.bind.annotation. *;

@RestController
@RequestMapping ("/ estudiantes")
clase pública StudentApi {     servicio IStudentService final privado;     StudentApi público (servicio IStudentService) {         this.service = servicio;     }     @GetMapping     public Rest <?> FindPaging (@RequestParam (obligatorio = falso) Número entero de página,                               @RequestParam (obligatorio = falso) Número entero tamaño de página, @RequestParam (obligatorio = falso)                               Nombre de cadena,











                              @RequestParam (obligatorio = falso) Integer teamId) {         return Rest.ok (service.findPaging (pageNumber, pageSize, teamId, name));     }     @GetMapping ("/ {id}")     public Rest <Estudiante> findById (@PathVariable Integer id) {         return Rest.ok (service.findById (id));     }     @PostMapping     public Rest <?> Create (@RequestBody Estudiante estudiante) {         service.create (estudiante);         return Rest.ok ();     }     @PutMapping ("/ {id}")     public Rest <?> Update (@PathVariable Integer id, @RequestBody Student student) {         service.update (id, student);          return Rest.ok ();


















    }

    @DeleteMapping ("/ {id}")
    public Rest <?> Delete (@PathVariable Integer id) {         service.delete (id);         return Rest.ok ();     } }



 

3. Capa de servicio (información del estudiante)

paquete com.management.app.core.service.impl;


import com.management.app.core.model.entity.Student;
import com.management.app.core.mapper.StudentMapper;
import com.management.app.core.model.vo.StudentVO;
import com.management.app.core.service.IStudentService;
import com.management.app.support.PageInfo;
importar org.springframework.stereotype.Service;

import java.util.List;

importar com.management.app.infrastructure.consts.AppConst.DEFAULT_NUMBER estático;
importar com.management.app.infrastructure.consts.AppConst.DEFAULT_SIZE estático;

@Service
clase pública StudentServiceImpl implementa IStudentService {     mapeador StudentMapper final privado;     public StudentServiceImpl (asignador de StudentMapper) {




        this.mapper = mapper;
    }

    @Override
    public Student findById (ID de número entero) {         return mapper.selectStudent (id);     }     @Override     public PageInfo findPaging (Integer pageNumber, Integer pageSize, Integer teamId, String name) {         Integer totalCount = mapper.selectStudentCount (teamId, name);         if (pageNumber == null || pageSize == null) {             //







默认 返回 分页8
            return new PageInfo (DEFAULT_NUMBER,
                    DEFAULT_SIZE,
                    totalCount,
                    mapper.selectStudentPage (DEFAULT_NUMBER, DEFAULT_SIZE, teamId, name));
        }
        List <Estudiante> content = mapper.selectStudentPage (pageNumber * pageSize, pageSize, teamId, name);
        List <StudentVO> vos = StudentVO.mapFrom (contenido);
        return new PageInfo (pageNumber, pageSize, totalCount, vos);
    }

    setBaseProperties vacío privado (entidad Student, modelo Student) {         entity.setProperties (modelo);     }     @Override     public void create (modelo de estudiante) {         entidad de estudiante = nuevo estudiante ();         setBaseProperties (entidad, modelo);         mapper.insertStudent (entidad);     }     @Override     public void update (ID de número entero, modelo de estudiante) {         Entidad de estudiante = findById (id);













        setBaseProperties (entidad, modelo);
        mapper.updateStudent (entidad);
    }

    @Override
    public void delete (ID entero) {         mapper.deleteStudent (id);     } }



 

4. Capa de persistencia (información del alumno)

paquete com.management.app.core.mapper;


import com.management.app.core.model.entity.Student;
importar org.springframework.stereotype.Repository;

import java.util.List;

@Repositorio de
interfaz pública StudentMapper {     Student selectStudent (ID de número entero);     Integer selectStudentCount (Integer teamId, String name);     List <Estudiante> selectStudentPage (Integer startIndex, Integer pageSize, Integer teamId, String name);     void insertStudent (estudiante estudiante);     void updateStudent (estudiante estudiante);     void deleteStudent (ID de número entero);     void deleteStudents (Integer teamId); }














Mapper.xml:

<? xml version = "1.0" encoding = "UTF-8"?>

<! DOCTYPE mapper PUBLIC "- // mybatis.org//DTD Mapper 3.0 // ES" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "com.management. app.core.mapper.StudentMapper ">
    <resultMap id =" studentMap "type =" Student ">
        <result column =" id "property =" id "/>
        <result column =" name "property =" name "/>
        <result column = "student_number" property = "studentNumber" />
        <result column = "birth_date" property = "birthDate" />
        <result column = "gender" property = "gender" />
        <result column = "national" property = "national "/>
        <result column =" phone_number "property =" phoneNumber "/>
        <result column =" native_place "property =" nativePlace "/>





            native_place         del estudiante         donde id = # {id};     </select>















<! -   
查询 总 个数 只有一个 参数 时 用_parameter 使用CONCAT拼接%通配符->
    <select id = "selectStudentCount" resultType = "java.lang.Integer">
        seleccione count (*)
        from student
        <if test = "teamId! ​​= null"> donde team_id = # {teamId}
            <if test = "name! = null"> y un nombre como CONCAT ('%', # {name}, '%') </if>
        < / if>
        <if test = "teamId == null">
            <if test = "name! = null"> donde un nombre como CONCAT ('%', # {name}, '%') </if>
        </ if >
    </select>

    <select id = "selectStudentPage" resultMap = "studentMap">
        seleccionar *
        from student
        <if test = "teamId! ​​= null"> where team_id = # {teamId}
            <if test = "name! = null"> y name like CONCAT ('%', # {name}, '%') < / if>
        </if>
        <if test = "teamId == null">
            <if test = "name! = null"> donde un nombre como CONCAT ('%', # {name}, '%') </ if >
        </if>
        ordenar por CONVERT (número_estudiante, FIRMADO)
        límite asc # {startIndex}, # {pageSize}
    </select>

    <insert id = "insertStudent" parameterType = "com.management.app.core.model.entity. Student "keyProperty =" id ">
        insertar en el
        alumno (nombre,número_estudiante, fecha_nacimiento, género, nacional, número_teléfono, id_equipo, lugar_nacional)
        valores (# {name}, # {studentNumber}, # {birthDate}, # {gender}, # {national}, # {phoneNumber}, # {teamId}, # {nativePlace});
    </insertar>

    <update id = "updateStudent" parameterType = "com.management.app.core.model.entity.Student">
        ACTUALIZAR estudiante
        <set>
            <if test = "name! = null"> name = # {name }, </if>
            <if test = "studentNumber! = null"> student_number = # {studentNumber}, </if>
            <if test = "birthDate! = null"> birth_date = # {birthDate}, </if>
            <if test = "gender! = null"> gender = # {gender}, </if>
            <if test = "national! = null"> national = # {national}, </if>

            <if test = "teamId! ​​= null"> team_id = # {teamId}, </if>
            <if test = "nativePlace! = null"> native_place = # {nativePlace}, </if>
        </set>         ID de
        DONDE
= # {id};
    </update>

    <delete id = "deleteStudent" parameterType = "int">
        eliminar del
        estudiante
        donde
        id = # {id}
    </delete>

    <eliminar id = "deleteStudents" parameterType = "int">
        eliminar del
        estudiante
        donde
        team_id = # {teamId}
    </delete>

</mapper>

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_43621091/article/details/113094570
Recomendado
Clasificación