第四章 系统设计
管理员登录后会有课程设置的选项,点击该选项会跳出课程设置界面,可以进行课程的设置,如输入课程不合法会有相应的提示,直至输入正确才可以设置成功。这主要送为了驾校可以根据自己的现状来设置课程。如图3.1。
学员需要注册信息,登录后才可进行预约,但是注册模块不属于本论文范畴,在此不过多赘述。学员登录后会有课程预约的选项,点击选项会跳出课程预约界面,可以选择自己需要的课程进行预约。预约的课程必须送管理员设置好的,如果没有就无法预约。如图3.2。
管理员登录后会有排班设置的选项按钮,点击会跳出排班界面,界面中可以查看,并对教练进行排班,完成排班后会生成课表。排班相对于给预约的信息绑定对应的教练。如图 3.3。
排班完成后会有课表生成,课表会对教练及其预约课程的学生进行上课时间的展示,学生和教练都可以通过登录查看自己的课表以完成课程。这里相对于信息展示,没有具体操作。如图3.4。
用户必须登录以后才可以进行以上流程操作,登录是所有操作前提。登录操作是用户系统使用的必备操作,其功能主要功能为了确认用户信息,防止被人恶意进入系统造成信息的泄露以及信息被恶意篡改。同时他也可以防止机器人的不断攻击造成服务器负载。登录操作流程见图4.5。
为了更好的让开发人员以及维护人员认清数据的传输,了解本模块的数据库设计思路,数据库整体的设计和详细信息都以罗列总结。数据库相对于数据的仓库,也是系统的数据源,是存放各种用户信息的关键。
工具:SQL Server 2012
数据库名称:PowerManageDB
(1)所有表的格式都必须为T_XXXXX,其中XXXXX代指表的名称,应为其中文意义的英译字母命名,也可以用英文简称,但不可用汉语拼音以及中文命名。
(2)所有视图的格式都为V_XXXXX,其中XXXXX代指视图的名称,应为其中文意义的英译字母命名,也可以用英文简称,但不可用汉语拼音以及中文命名
(3)表和视图的名称限制在30个字符。
(4)字段限制在50个字符。但是需要大量数据的字段除外,例如test字段。
(5)字段名称,对象,变量等都不可用采用中文字符命名,都应以其中文意义相同的英译命名,且不可在其中添加空格,特殊字符,符号。
(6)保证其字段名和其数据类型匹配,为了以后开发,数据类型应提前设计,不要随意更改,设计阶段就要设计合理。
用户名:sa
密码:123456
权限:admin管理权限
访问链接:localhost
数据库搭建完成后将进行表设计,表设计有利于开发者查看数据类型,主外键约束关系以及其表汇总,以及数据关联和数据连接。表汇总图可以更加直观的可视化查看数据关系,对开发者的工作有极大的增益。模块数据库表汇总详情见图4.6。
图4.6表汇
本模块一共可分为两种实体,一种为用户,其中包括管理员用户,学员用户和教练用户,另一种为课程实体。管理员可以编辑从而生成课程,课程可以被查询出来,学生通过查询出的课程可以预约课程,从而生成课程订单,有了预约订单才可以被排班,最后管理员排班生成课表。课表完成后整体排班流程完成,模块功能结束。详情见图4.7。
用户表用于记录用户基本信息,其中包括用户名,用户密码,用户真实姓名,用户联系方式等基本信息。还记录用户角色信息和其创建时间,由于本论文不涉及权限模块用户角色不做赘述。本模块的用户表主要存放管理员,教练,学员的信息以及其角色信息。详细见表4.1。
表 4.1 用户表
T_User用户 | ||||||||
字段名 | 字段备注 | 类型 | 长度 | 主键/外键 | 非空 | 约束 | 自动编号 | 默认值 |
userid | 用户id | varchar(50) | 50 | 主键 | 非空 | 主键 | 自动编号 |
|
username | 用户名称 | varchar(50)1) | 50 |
|
|
|
|
|
realname | 真实姓名 | varchar(50) | 50 |
| 非空 |
|
|
|
roleId | 角色id | Int |
|
| 非空 | 外键 |
|
|
Pwd | 密码 | varchar(50) | 50 |
| 非空 |
|
|
|
Phone | 用户真实姓名 | varchar(50) | 50 |
| 非空 |
|
|
|
lastlogindate | 注册时间 | datetime |
|
| 非空 |
|
|
|
createtime | 登录状态 | int |
|
| 非空 |
|
|
|
loginstatus | 最后登录时间 | datetime |
|
| 非空 |
|
|
|
Note | 备注 | Text |
|
|
|
|
|
|
课程表是管理员设置生成的课程,其中包括驾校名称,课程项目,课程时间等基本课程信息,课程可以用于发布供学员选择预约,管理员和学员都可以查看,但只有管理员有修改,删除权限。表4.2。
表 4.2 课程表
T_Scheduling课程表 | ||||||||
字段名 | 字段备注 | 类型 | 长度 | 主键/外键 | 非空 | 约束 | 自动编号 | 默认值 |
SchedulingID | 课程编号 | varchar(50) | 50 | 主键 | 非空 | 主键 | 自动编号 |
|
ShoolName | 驾校名称 | varchar(50) | 50 |
|
|
|
|
|
CarNum | 可预约数 | Int | 50 |
| 非空 |
|
|
|
startTime | 教学开始时间 | datetime |
|
| 非空 | 外键 |
|
|
overTime | 教学结束时间 | datetime | 50 |
| 非空 |
|
|
|
NewMan | 创建人 | varchar(50) | 50 |
| 非空 |
|
|
|
NewTime | 创建时间 | datetime |
|
| 非空 |
|
|
|
amendMan | 修改人 | varchar(50) | 50 |
| 非空 |
|
|
|
amendTime | 修改时间 | datetime |
|
| 非空 |
|
|
|
subject | 科目 | varchar(50) | 50 |
| 非空 |
|
|
|
预约表是学员预约情况记录表,主要记录学员的信息和预约的课程,属于中间表其到记录连接作用,并没有实际用户信息,是连接其他表的纽带。详细见表4.3。
表4.3预约记录表
T_Appointment预约表 | ||||||||
字段名 | 字段备注 | 类型 | 长度 | 主键/外键 | 非空 | 约束 | 自动编号 | 默认值 |
AppointmentID | ID | Int | 50 | 主键 | 非空 | 主键 | 自动编号 |
|
SchedulingID | 课程表编号 | Int | 50 |
| 非空 | 外键 |
|
|
userid | 用户编号 | Int | 50 |
| 非空 | 外键 |
|
|
排班表是管理员进行添加的表,他主要记录管理员排班的信息,其中排班依据为预约表信息。详情见表4.4.
表 3.4 排班表
T_TeacherScheduling排班表 | ||||||||
字段名 | 字段备注 | 类型 | 长度 | 主键/外键 | 非空 | 约束 | 自动编号 | 默认值 |
TeacherSchedulingID | ID | Int |
| 主键 | 非空 | 主键 | 自动编号 |
|
AppointmentID | 预约表编号 | Int |
| 外键 |
|
|
|
|
UserID | 教练编号 | Int |
| 外键 | 非空 |
|
|
|
Time | 日期 | datetime |
|
| 非空 | 外键 |
|
|
Morning | 时间段上午 | varchar(50) | 50 |
| 非空 |
|
|
|
Afternoon | 时间段下午 | varchar(50) | 50 |
| 非空 |
|
|
|
Evening | 时间段晚上 | varchar(50) | 50 |
| 非空 |
|
|
|
unit price | 课时单价 | float |
|
| 非空 |
|
|
|
课表是排班后可查询的视图,用于记录排班信息,预约信息和课程信息,详情见表4.5。
表4.5 课表视图
V_Curriculum课程表 | ||||||||
字段名 | 字段备注 | 类型 | 长度 | 主键/外键 | 非空 | 约束 | 自动编号 | 默认值 |
CurriculumID | 课程编号 | Int |
|
| 非空 | 主键 | 自动编号 |
|
ShoolName | 驾校名称 | varchar(50) | 50 |
| 非空 |
|
|
|
Studentname | 学生姓名 | varchar(50) | 50 |
| 非空 |
|
|
|
Teachername | 教练姓名 | varchar(50) | 50 |
| 非空 |
|
|
|
startTime | 开课时间 | datetime |
|
| 非空 | 外键 |
|
|
overtime | 结束时间 | datetime |
|
| 非空 |
|
|
|
Subject | 科目 | varchar(50) | 50 |
| 非空 |
|
|
|
unit price | 课时单价 | float |
|
| 非空 |
|
|
|
模块设计是基于SpringMVC框架,其实也就是把模块的前端需要展示数据用jose传输显示,后台通过Controller进行控制获取和主要的逻辑运算,这样较大的提高开发的效率。其中SpringMVC架构的好处有:
(1)Spring MVC是Spring提供的一个强大而灵活的模块式web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。
(2)SpringMVC是一种基于Java的以请求为驱动类型的轻量级Web框架,其目的是将Web层进行解耦,即使用“请求-响应”模型,从工程结构上实现良好的分层,区分职责,简化Web开发。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。[6]
(3)Spring框架最核心的就是所谓的依赖注入和控制反转。完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。
项目中不同的包存放不同的类,其中:
business.basic存放business相关文件,其主要作用是基类用于连接数据库和进行数据库操作的方法定义。business.dao用于存放方法接口,business.impl用于存放实现类。其中接口设计引用参考文献[8]
common.properties是日志功能记录的包。controller.service用于存放controller.类是用于数据传输逻辑控制的类。
Model为实体类用于映射数据库表单,视图实体类的存放。
Until是存放工具类的包。
WebRoot是存放前端页面。详情见图4.8设计思路参考文献[1]。