第4章 系统设计
一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专业。
4.1 设计原则
本系统在设计过程中需要依照一定的设计原则进行,目的就是为了让开发的系统具备高质量,齐全完备的功能,方便简单的操作,如此才可以最大限度的满足使用者的要求。系统设计原则除了基本的易操作原则,安全性原则外,还有准确性原则,实用性原则,可维护性原则。
第一个设计原则:易操作原则,针对本系统设计的功能要完备齐全,编码时,设计的各个接口要具备友好性,使用者一旦使用本系统时,要能够轻松上手,操作本系统处理数据时,要具备便利性。此外,也需要设计一些必要提示,引导使用者操作系统。
第二个设计原则:安全性原则,本系统在登录模块要对各个访问者进行身份验证,系统会通过访问者输入的信息进行判断,使用提前编写的安全验证代码进行数据比对,引导匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者窃取系统的数据。
第三个设计原则:准确性原则,为了保证使用者登记的数据是正确的,需要提前设计数据纠错机制,让使用者可以通过系统的报错提示,仔细检查登记的错误信息,并及时纠正错误,填写规范正确的信息。比如设置密码时,要求密码的长度不能低于6个字符,且数据类型要求不能全部是数字等都能进行规范。
第四个设计原则:实用性原则,本系统主要用于处理信息,在实际工作中,要帮助使用者完成信息处理任务,同时本系统在面对特殊情况时,也要能够满足信息处理的需要。另外,为了后期便于在本系统中进行功能的扩充,也需要提前预留好空间。
第五个设计原则:可维护性原则,本系统在实际使用期间,难免会遇到一些故障,因此,本系统在应对故障时,要能够进行诊断并弱化故障,可以在短时间内进行自维护。
4.2 功能结构设计
在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的结构图(见下图)。
4.3 数据库设计
开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合,存储在一起的这些数据也是按照一定的组织方式进行的。目前,数据库能够服务于多种应用程序,则是源于它存储方式最佳,具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段时间的发展,从最初的不为人知,到现在的人尽皆知,其相关技术也越发成熟,同时也拥有着坚实的理论基础。
(1)下图是教师信息实体和其具备的属性。
教师信息实体属性图
(2)下图是考试记录表实体和其具备的属性。
考试记录表实体属性图
(3)下图是意见反馈实体和其具备的属性。
意见反馈实体属性图
(4)下图是学生考勤详情实体和其具备的属性。
学生考勤详情实体属性图
(5)下图是答题详情表实体和其具备的属性。
答题详情表实体属性图
(6)下图是学校简介实体和其具备的属性。
学校简介实体属性图
(7)下图是公告信息实体和其具备的属性。
公告信息实体属性图
(8)下图是学生考勤实体和其具备的属性。
学生考勤实体属性图
(9)下图是试卷选题实体和其具备的属性。
试卷选题实体属性图
(10)下图是错题表实体和其具备的属性。
错题表实体属性图
(11)下图是课程信息实体和其具备的属性。
课程信息实体属性图
(12)下图是通讯录实体和其具备的属性。
通讯录实体属性图
(13)下图是课程留言实体和其具备的属性。
课程留言实体属性图
(14)下图是论坛实体和其具备的属性。
论坛实体属性图
(15)下图是试卷表实体和其具备的属性。
试卷表实体属性图
(16)下图是学生实体和其具备的属性。
学生实体属性图
(17)下图是通知信息实体和其具备的属性。
通知信息实体属性图
(18)下图是作业实体和其具备的属性。
作业实体属性图
(19)下图是试题表实体和其具备的属性。
试题表实体属性图
(20)下图是学生请假实体和其具备的属性。
学生请假实体属性图
(21)下图是课程收藏实体和其具备的属性。
课程收藏实体属性图
4.3.1 数据库物理设计
本数据库是关系型数据库,因此对二维表的结构设计也比较关键。毕竟二维表格模型就是关系型数据库中的关系模型。而一些常用的关系模型中的概念也需要了解,才可以对关系模型进行设计。下面就简单介绍关系,元组,属性,域,关键字等常用概念的含义。
关系:关系就是数据库中的一张数据表,每张数据表都有命名,也就是每个关系也有名字,那就是数据表名;
元组:元组就是数据表中的一行记录;
属性:属性就是数据表中的字段,也就是数据表中的一列;
域:域就是对数据表中属性的取值进行限定;
关键字:关键字就是数据表中的主键;
在了解了表结构设计的常用概念后,接下来就需要使用前面绘制的E-R模型完成表结构的设计工作,并在数据库中创建数据表,并为各个数据表进行命名。以下就对设计的结果通过表格形式进行展示。
表4.1意见反馈表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 提问学生 | 是 |
3 | chat_issue | String | 问题 | 是 |
4 | issue_time | Date | 问题时间 | 是 |
5 | chat_reply | String | 回复 | 是 |
6 | reply_time | Date | 回复时间 | 是 |
7 | zhuangtai_types | Integer | 状态 | 是 |
8 | chat_types | Integer | 数据类型 | 是 |
9 | insert_time | Date | 创建时间 | 是 |
表4.2字典表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | dic_code | String | 字段 | 是 |
3 | dic_name | String | 字段名 | 是 |
4 | code_index | Integer | 编码 | 是 |
5 | index_name | String | 编码名字 | 是 |
6 | super_id | Integer | 父字段id | 是 |
7 | beizhu | String | 备注 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.3试卷表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | exampaper_name | String | 试卷名称 | 是 |
3 | exampaper_date | Integer | 考试时长(分钟) | 是 |
4 | exampaper_myscore | Integer | 试卷总分数 | 是 |
5 | kemu_types | Integer | 科目 | 是 |
6 | exampaper_types | Integer | 试卷状态 | 是 |
7 | zujuan_types | Integer | 组卷方式 | 是 |
8 | exampaper_delete | Integer | 逻辑删除(1代表未删除 2代表已删除) | 是 |
9 | create_time | Date | 创建时间 | 是 |
表4.4试卷选题表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | exampaper_id | Integer | 试卷 | 是 |
3 | examquestion_id | Integer | 试题 | 是 |
4 | exampapertopic_number | Integer | 试题分数 | 是 |
5 | create_time | Date | 创建时间 | 是 |
表4.5试题表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | examquestion_name | String | 试题名称 | 是 |
3 | kemu_types | Integer | 科目 | 是 |
4 | examquestion_options | String | 选项,json字符串 | 是 |
5 | examquestion_answer | String | 正确答案 | 是 |
6 | examquestion_analysis | String | 答案解析 | 是 |
7 | examquestion_types | Integer | 试题类型 | 是 |
8 | examquestion_sequence | Integer | 试题排序,值越大排越前面 | 是 |
9 | create_time | Date | 创建时间 | 是 |
表4.6考试记录表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | examrecord_uuid_number | String | 考试编号 | 是 |
3 | yonghu_id | Integer | 考试学生 | 是 |
4 | exampaper_id | Integer | 所属试卷id(外键) | 是 |
5 | total_score | Integer | 所得总分 | 是 |
6 | insert_time | Date | 考试时间 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.7答题详情表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | examredetails_uuid_number | String | 试卷编号 | 是 |
3 | yonghu_id | Integer | 学生id | 是 |
4 | examquestion_id | Integer | 试题id(外键) | 是 |
5 | examredetails_myanswer | String | 考生答案 | 是 |
6 | examredetails_myscore | Integer | 试题得分 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.8错题表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 学生id | 是 |
3 | exampaper_id | Integer | 试卷(外键) | 是 |
4 | examquestion_id | Integer | 试题id(外键) | 是 |
5 | examredetails_myanswer | String | 考生作答 | 是 |
6 | insert_time | Date | 记录时间 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.9论坛表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | forum_name | String | 帖子标题 | 是 |
3 | yonghu_id | Integer | 学生 | 是 |
4 | jiaoshi_id | Integer | 教师 | 是 |
5 | users_id | Integer | 管理员 | 是 |
6 | forum_content | String | 发布内容 | 是 |
7 | super_ids | Integer | 父id | 是 |
8 | forum_state_types | Integer | 帖子状态 | 是 |
9 | insert_time | Date | 发帖时间 | 是 |
10 | update_time | Date | 修改时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.10教师信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | jiaoshi_name | String | 教师名称 | 是 |
3 | jiaoshi_types | Integer | 教师类型 | 是 |
4 | jiaoshi_photo | String | 教师头像 | 是 |
5 | jiaoshi_phone | String | 联系方式 | 是 |
6 | jiaoshi_shichang | String | 工作时长 | 是 |
7 | jiaoshi_content | String | 教师简介 | 是 |
8 | jiaoshi_delete | Integer | 逻辑删除 | 是 |
9 | insert_time | Date | 录入时间 | 是 |
10 | create_time | Date | 创建时间 | 是 |
表4.11课程信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | kecheng_name | String | 课程名称 | 是 |
3 | kecheng_types | Integer | 课程类型 | 是 |
4 | kecheng_photo | String | 课程封面 | 是 |
5 | kecheng_video | String | 学习视频 | 是 |
6 | kecheng_file | String | 课件 | 是 |
7 | kemu_types | Integer | 科目 | 是 |
8 | banji_types | Integer | 星期 | 是 |
9 | jiaoshi_id | Integer | 上传教师 | 是 |
10 | kecheng_content | String | 课程简介 | 是 |
11 | kecheng_delete | Integer | 逻辑删除 | 是 |
12 | insert_time | Date | 录入时间 | 是 |
13 | create_time | Date | 创建时间 | 是 |
表4.12课程收藏表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | kecheng_id | Integer | 课程 | 是 |
3 | yonghu_id | Integer | 学生 | 是 |
4 | kecheng_collection_types | Integer | 类型 | 是 |
5 | insert_time | Date | 收藏时间 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.13课程留言表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | kecheng_id | Integer | 课程 | 是 |
3 | yonghu_id | Integer | 学生 | 是 |
4 | kecheng_liuyan_text | String | 留言内容 | 是 |
5 | insert_time | Date | 留言时间 | 是 |
6 | reply_text | String | 回复内容 | 是 |
7 | update_time | Date | 回复时间 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.14公告信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | news_name | String | 公告标题 | 是 |
3 | news_types | Integer | 公告类型 | 是 |
4 | news_photo | String | 公告图片 | 是 |
5 | insert_time | Date | 添加时间 | 是 |
6 | news_content | String | 公告详情 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.15通讯录表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | tongxunlu_name | String | 联系人名称 | 是 |
3 | tongxunlu_phone | String | 联系人方式 | 是 |
4 | tongxunlu_shenfen | String | 联系人身份 | 是 |
5 | tongxunlu_content | String | 备注 | 是 |
6 | insert_time | Date | 添加时间 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.16通知信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | tongzhi_name | String | 通知标题 | 是 |
3 | tongzhi_types | Integer | 通知类型 | 是 |
4 | insert_time | Date | 添加时间 | 是 |
5 | tongzhi_content | String | 通知详情 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.17学校简介表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | xuexiaojianjie_name | String | 标题 | 是 |
3 | xuexiaojianjie_types | Integer | 简介类型 | 是 |
4 | xuexiaojianjie_photo | String | 封面 | 是 |
5 | insert_time | Date | 添加时间 | 是 |
6 | xuexiaojianjie_content | String | 详情 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.18学生表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_name | String | 学生姓名 | 是 |
3 | yonghu_photo | String | 头像 | 是 |
4 | yonghu_id_number | String | 身份证号 | 是 |
5 | yonghu_phone | String | 联系方式 | 是 |
6 | yonghu_email | String | 电子邮箱 | 是 |
7 | yonghu_delete | Integer | 逻辑删除 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.19学生考勤表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_kaoqin_uuid_number | String | 考勤唯一编号 | 是 |
3 | yonghu_kaoqin_name | String | 考勤标题 | 是 |
4 | yonghu_kaoqin_content | String | 考勤详情 | 是 |
5 | insert_time | Date | 考勤发起时间 | 是 |
6 | jiezhi_time | Date | 考勤截止时间 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.20学生考勤详情表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 学生 | 是 |
3 | yonghu_kaoqin_id | Integer | 考勤 | 是 |
4 | yonghu_kaoqin_list_types | Integer | 打卡状态 | 是 |
5 | insert_time | Date | 添加时间 | 是 |
6 | update_time | Date | 打卡时间 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.21学生请假表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_id | Integer | 学生 | 是 |
3 | yonghuqingjia_name | String | 请假标题 | 是 |
4 | yonghuqingjia_text | String | 请假缘由 | 是 |
5 | yonghuqingjia_types | Integer | 请假类型 | 是 |
6 | insert_time | Date | 申请时间 | 是 |
7 | yonghuqingjia_time | Date | 请假时间 | 是 |
8 | yonghuqingjia_number | Integer | 请假天数 | 是 |
9 | yonghuqingjia_yesno_types | Integer | 申请状态 | 是 |
10 | yonghuqingjia_yesno_text | String | 处理意见 | 是 |
11 | yonghuqingjia_shenhe_time | Date | 审核时间 | 是 |
12 | create_time | Date | 创建时间 | 是 |
表4.22作业表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | jiaoshi_id | Integer | 老师 | 是 |
3 | zuoye_uuid_number | String | 作业唯一编号 | 是 |
4 | zuoye_name | String | 作业名称 | 是 |
5 | zuoye_types | Integer | 作业类型 | 是 |
6 | kemu_types | Integer | 科目 | 是 |
7 | insert_time | Date | 作业发布时间 | 是 |
8 | zuoye_file | String | 作业文件 | 是 |
9 | zuoye_content | String | 作业详情 | 是 |
10 | create_time | Date | 创建时间 | 是 |
表4.23管理员表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | username | String | 用户名 | 是 |
3 | password | String | 密码 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增时间 | 是 |
第5章 系统实现
进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于一些不合理的设计需求,也是可以及时发现。因为设计的方案是完全指导系统的编码过程的。
5.1学生信息管理
如图5.1显示的就是学生信息管理页面,此页面提供给管理员的功能有:学生信息的查询管理,可以删除学生信息、修改学生信息、新增学生信息,
还进行了对用户名称的模糊查询的条件
图5.1 学生信息管理页面
5.2 作业信息管理
如图5.2显示的就是作业信息管理页面,此页面提供给管理员的功能有:查看已发布的作业信息数据,修改作业信息,作业信息作废,即可删除,还进行了对作业信息名称的模糊查询 作业信息信息的类型查询等等一些条件。
图5.2 作业信息管理页面
5.3公告信息管理
如图5.3显示的就是公告信息管理页面,此页面提供给管理员的功能有:根据公告信息进行条件查询,还可以对公告信息进行新增、修改、查询操作等等。
图5.3 公告信息管理页面
5.4论坛信息管理
如图5.4显示的就是论坛信息管理页面,此页面提供给管理员的功能有:根据论坛信息进行新增、修改、查询操作等等。
图5.4 论坛信息管理页面