Giter Site home page Giter Site logo

asam-manager's Introduction

基于SpringBoot的学生信息管理系统

技术栈

SpringBoot

Spring Data JPA (不用)(Mybatis Plus)

BootStrap4 (不用)(自定义css,js)

Thymeleaf

Mysql

依赖管理工具: Maven(原定为Gradle)

最终技术栈: SpringBoot + MybatisPlus + Thymeleaf + Mysql + js + html + css

esayExcel

项目架构

打包方式: jar包(SpringBoot支持jar包运行方式,而不用打成war包)

架构: B/S

jdk: 11.0.3(LTS)

IDE: IDEA 2019.2

SpringBoot: 2.2.0 RELEASE

Mysql: 8.0.18

概要设计

思维导图

eduM

数据字典

项目功能

角色

管理员、学生、教师

实体类

管理员、学生、教师、院校、课程

功能

管理员:

———— 学生信息管理

​ ——基本信息管理(学号、姓名、年龄、性别、籍贯、政治面貌、在校担任职位、手机号、所在院校、入学时间、毕业时间等)

​ ——选课管理(学号、课程号、成绩))

———— 教师信息管理

​ ——基本信息管理(教职工编号、姓名、年龄、职称、所在院校)

​ ——课程管理(教职工编号、课程号)

———— 课程信息管理

​ ——学时、学分设置

​ ——开课时间

———— 院校信息管理(院校编号、学校名称、学院名称)

————管理员管理

​ ——权限设置

​ ——修改密码

————按权限登录,显示不同视图

数据字典

用户表

用户id 用户名 密码 角色(0,1,2)分别代表

学生表

教职工表

职工号 教师姓名 职称 学历 研究方向 所属学院

管理员表

课程表

学生课程表

基本模块

1. 登录模块(完成)

涉及表: 用户表、角色表、用户角色关联表

逻辑:

  1. 启动StuApplication,程序访问IndexController中的RequestMapping("/"),通过@GetMapping访问index.html页面,进行登录操作。
  2. 用户输入用户名及其密码,用户名为用户的id,将表单提交到IndexController下的RequestMapping("/login").
  3. 首先进行用户是否存在的验证,如果查询结果为空,那么向request域中写入属性error,返回登陆界面
  4. 如果用户存在,那么根据用户id查询对应的角色,根据角色id,跳转到对应的角色路由。
  5. 通过url携带的角色id,查询该角色对应的菜单信息,并封装成集合,返回Main页面显示。
  6. 通过角色动态生成菜单,因此只需要写一个main页面,即可显示不同角色的信息,减少了工作成本。

2. 动态菜单功能(完成)

左侧导航菜单项根据角色显示不同的内容。

目前有三种角色: 管理员、学生、教师

动态菜单可以扩展

目前只有管理员可以进行菜单的管理**(功能正在开发)**

3.管理员功能(完成):

目前遇到的问题: JPA采用native query的查询方式,会造成性能降低,查询速度极慢,因此决定更换持久化框架为mybatis

一、学生管理

  1. 批量导入学生信息功能(完成)

    批量导入学生信息,采用导入Excel文件的形式,项目使用easyExcel作为poi工具,Excel需要为固定格式,首先将读取到的内容封装到学生实体集合中,将每个学生实体写入数据库tbl_stu,之后通过学号和身份证号,封装用户实体,将用户写入数据库tbl_user,之后将用户id与角色id写入到数据库tbl_user_role

  2. 批量导入学生信息加载动画效果(完成)

    由于导入excel时间比较长,因此需要给用户一个加载动画的提示

  3. 学生列表的显示(完成)

    采用jpa Pagable实现分页查询

  4. 学生列表中的编辑和删除功能(完成)

    已经实现了

  5. 学生选课信息的显示

    (例如: 学生XXX 在 周一 上午 第一节到第三节 教A301 计算机导论课程 赵志燕授课 学分3 课时48 考试类型 闭卷考试 )

  6. 学生选课: 学生可以查看当前开设的课程列表,可以选择课程(每个学生有选课上限),可以退课

管理员可以通过查询学号的方式,查看某一个学生的选课信息

所需技术: 分页、excel表格导入

涉及表: tbl_user、tbl_stu、tbl_user_role

二、 菜单管理(完成)

三、教师管理(完成)

  1. 批量导入教师信息功能
  2. 教师列表的显示
  3. 批准教师开设课程
  4. 教师列表中的编辑和删除功能

教师可以给学生的课程打分

四、课程管理(完成)

  1. 批量导入课程信息功能(该功能目前只能由教师申请)

  2. 课程列表的显示(改为课程搜索)

    搜索某一个课程,按照课程名称或者教师名称,模糊查询

  3. 课程的编辑和删除功能(暂时不做,审核不通过,让教师重新申请)

  4. 搜索课程

  5. 审核课程

权限设置(完成)

4.学生功能

一、学生基本信息展示(完成)

二、学生基本信息修改(完成)

三、学生选课(完成)

四、学生修改密码(完成)

五、学生首页信息展示(完成)

5.教师功能

一、教师基本信息展示(完成)

二、教师基本信息修改(完成)

三、教师开设课程(完成)

四、教师课程审计(完成)

五、教师修改密码(完成)

六、教师首页信息展示(完成)

目前出现的问题

分页信息在无信息的情况下显示0

从JPA迁移到MybatisPlus(顺利完成,已经脱离JPA)

Mapper层接口迁移

1. 用户实体类mapper层测试

已经迁移成功的功能

管理员->学生部分:

  1. 修改学生信息
  2. 删除学生信息
  3. 分页查询学生信息并显示
  4. Excel导入学生信息

管理员->核心模块:

  1. 统一的登录注销接口
  2. 首先信息的动态显示
  3. 动态菜单的实现

管理员->教师部分:

  1. 修改教师信息
  2. 删除教师信息
  3. 分页查询教师信息并显示
  4. Excel导入教师信息

管理员->课程部分:

  1. 修改课程信息
  2. 删除课程信息
  3. 分页查询课程信息并显示
  4. Excel导入课程信息

管理员->设置:

  1. 修改密码(修改完成后需要重新登录)

未完成的功能

学生用户功能(已完成菜单设计)

  1. 首页 0 (选修课程数、及格课程数、未及格课程数)

  2. 基本信息 0 (基本信息的显示和部分修改)

    ​ -> 学生信息

  3. 选修课程 0 (选修课程/取消选择)

    ​ -> 已选课程

    ​ -> 待选课程

  4. 设置 0

    ​ -> 修改密码

  5. 退出登录 0

教师用户功能(已完成菜单设计)

  1. 首页 0 (开设课程数、已打分课程、尚未打分课程)

  2. 基本信息 0 (基本信息的显示和部分修改)

    ​ -> 教师信息

  3. 课程管理 0

    ​ -> 开设课程

    ​ -> 课程审计

  4. 设置 0

    ​ -> 修改密码

  5. 退出登录 0

学生选课功能

教师申请开设课程功能

教师录入课程分数功能

管理员搜索学生选课信息功能

管理员搜索教师开课信息功能

管理员批准教师开课功能

学生选课功能设计

学生课程VO

学生课程表

id 自增

lessonId 课程id

stuId 学生id

score 分数

state 选课状态 (默认可以选择: 0 ,选课后: 1, 不能选课: 2)

教师申请开课功能设计

教师课程VO

id 教师课程表自增id

teacherId 教师id

lessonId 课程id(自动生成 L+时间2019年11月03日22点17分33秒) 例如 L20191103221733

date 申请时间

state 申请状态(管理员修改状态 0: 待审核, 1: 审核通过,2: 审核未通过)

首先教师创建课程,课程创建成功后,课程的信息记录到课程表中,课程id写入到教师课程表中,

管理员审核课程功能设计

只有管理员审核通过(教师课程表中课程状态为1课程才能显示在学生用户界面)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.