Java web技术的驾校培训管理软件之预约排班子系统
第四章 系统设计
管理员登录后会有课程设置的选项,点击该选项会跳出课程设置界面,可以进行课程的设置,如输入课程不合法会有相应的提示,直至输入正确才可以设置成功。这主要送为了驾校可以根据自己的现状来设置课程。如图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]。