前言
考研期间还得抽空做实验,而且这个好像网上很难找,周围同学都焦头烂额的,哈哈…
为造福后人,特此开源!
忙于考研,代码可能等考研才放上来,目前先放出 题目、数据库设计、项目演示、文档。
驾校学员驾考成绩管理系统
课题描述
设计一个驾校学员的驾考成绩管理系统,成绩管理信息包括:考试人员编号(001,002…),姓名,理论考试成绩,倒桩移库成绩,小三项成绩,路考成绩,并能够自动生成考试结果(是否取得驾照)。注:上述4项考试必须均在90分以上才可获取驾照。
基本要求
1、 实现三种不同权限的用户登录和管理功能——
(1)管理员登陆:具有查看、编辑修改和添加删除任意一条学员考试记录的功能,并能够查看本次考试的所有学员的考试结果统计信息(包括:总体通过率和各项通过率);
(2)教练员登陆:具有查看和编辑修改功能但是没有添加和删除的功能;
(3)学员登陆:只有查看功能,且只能查看本人的考试结果。
2、 在管理员模式下,实现对学员信息的录入,生成考试结果(显示出每项成绩和是否获得驾照),并可将此次考试结果保存为文件。
3、 在管理员模式下,实现对已保存文件的读取,以便获得过往考试结果的历史信息。
4、 三类用户在查看学员考试结果时,均可按照学员姓名或编号,对某个学员的考试记录进行单独查询
5、 管理员和教练员在查看本次考试的全体学员的考试结果时,均可按照学员姓名首字母(学员姓名录入时,只需录入其拼音字母即可)或考试编号进行正序或逆序排序。
6、 管理员和教练员均可进行统计查询,即仅查询获取驾照或未能获取驾照的人员名单、仅查询某单项考试的通过和未通过学员的名单、仅查询某单项考试的通过率。
提高要求
1、设计友好的用户界面
2、实现数据库查询、插入、删除等功能
3、管理员具备新建教练员或学员账号的功能,三类用户均具备更改登录密码的功能
数据库设计
学员人员表(t_user):
- 学员编号(id):001,002…
- 姓名(name):luzhenyu
- 用户名(username):yusael
- 用户密码(password):1234
CREATE TABLE `t_student` (
`id` varchar(50) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`), KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
教练员(t_coach):
- 教练员编号(id):C001、C002…
- 姓名(name):大河马
- 用户名(username):zhenyu
- 用户密码(password):99999
CREATE TABLE `t_coach` ( `id` varchar(20) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
管理员(t_admin):
- 管理员编号(id):A001、A002…
- 用户名(username):admin
- 用户密码(password):123456
CREATE TABLE `t_admin` (
`id` varchar(50) NOT NULL,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
学员考试成绩表(t_exam):
- 科目一理论考试(exam1):95
- 科目二小路考(exam2):95
- 科目三大路考(exam3):95
- 科目四理论考试(exam4):95
- 是否取得驾照(getLicence):yes
- 学员编号(studentid):001
- (学员姓名(name):luzhenyu)这个字段没有放到表里…
CREATE TABLE `t_exam` (
`id` varchar(50) NOT NULL,
`exam1` int(5) DEFAULT NULL,
`exam2` int(5) DEFAULT NULL,
`exam3` int(5) DEFAULT NULL,
`exam4` int(5) DEFAULT NULL,
`getLicence` varchar(5) DEFAULT NULL,
`studentid` varchar(20) NOT NULL,
PRIMARY KEY (`studentid`),
CONSTRAINT `t_exam_ibfk_1` FOREIGN KEY (`studentid`) REFERENCES `t_student` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
项目演示
功能较多,这里演示一些主要功能。
登陆界面:若未登录,没有头像且不可点击导航栏(只有驾考主页可以访问)
三种权限登录后的导航栏,分别是:学员,教练,管理员
然后我们以功能最多的管理员登录,进入驾考主页:上方是轮播图;
下方是一些信息咨询,并且可以展开如下:
进入学员管理页面,管理员是功能全开的,其他权限登录的话,有些按钮是不能点的:
比如学员登录后,只可查看自己的信息,并且不能点击其他任何按钮。
管理员登录后,可以查看所有人信息,并且所有按钮都是有效的:
点击删除:
编辑学员考试信息,学员号是不可改变的:
可以查看总体通过率和单科通过率:
学员账号管理可以管理学院账号,教练账号同理:
点击历史记录,进入后,上传历史文件即可查看历史记录:一开始没有文件:
上传历史文件后,可以查看到历史记录:
实验报告
概要设计
项目架构:前后端分离的 WEB 项目(SPA)
- 前端技术栈:ElementUi + Vue.js + Axios
- 后端技术栈:SpringBoot —— (Spring + SpringMVC + MyBatis)
技术栈简述:
本项目中采用的前端技术中,ElementUI 是饿了么团队开发的前端组件库,也就是前端精美漂亮的页面效果是由这个库完成的。 Vue.js 是国人尤雨溪开发的 javascript 库,拥有独特的 MVVM(双向绑定) 机制,十分适合前后端分离的架构。
后端采用 Java 框架 —— SpringBoot,SpringBoot 实际上就是简化配置版的 Spring + SpringMVC + MyBatis,其中 Spring 使用工厂设计模式来管理类,最大的特点是解耦合(大项目可以更好的体现);SpringMVC 扮演的是视图层,主要完成页面的跳转以及过滤器等功能;MyBatis 是 数据库层,用于完成数据库相关操作。
前后端的联系通过 Axios 建立,Axios 是一个基于 promise 的 HTTP 库。前端利用 Axios 向后台发送请求(通过 JSON 来传递数据),后端接收到前端传来的 JSON 数据后,将之转化为 Java 对象,然后可以进行相应的业务处理。
开发工具环境:
• 开发系统:Windows 10
• 前端工具 —— Visual Studio Code
• 后端工具 —— Intellij Idea
• 数据库工具:MySQL 5.7
页面构成:
本项目是 SPA (单页面富应用程序)项目,因此项目其实整体就一张界面,而 Vue.js 的开发模式是 组件式开发,因此项目的点击导航栏的页面跳转实际上是通过 router(路由)控制的组件的跳转。
本项目主要有以下几个组件:登录界面、驾考主页、学员管理、学员账号管理、教练账号管理、历史记录。
页面的导航栏:
项目总体结构图
UML图:
ET图:
(1)学员与驾考成绩的ER图
(2)管理员ER图、教练ER图
详细设计
。。。后面的有空再继续放上来,继续复习考研!