4.2数据库设计
4.2.1 数据库概念结构设计
一个网站的成功上线运营,离不开强大的数据库支持。一个设计良好的数据库是支撑拥有多种功能网站的关键所在。我在设计网站的时候采用的是MySQL数据库,其与Java、Apache服务器的完美结合,构造成了WEB中的铁三角。
数据根据教师指导与调查分析,信息世界的基本要素包括实体和关联。现实存在且彼此可区别的事物称为实体。实体可以是实际的人、事或物,还可以是抽象化的概念或联络。在系统中将“教师、课程信息、课程成绩、加入课程、班级信息、加入班级”等作为实体,它们的局部E-R如图4-2所示。
图4-6局部E-R图
4.2.2 数据库逻辑结构设计
用MySQL设置数据库概念结构,并将其转换为由MySQL系统支持的实际数据模式,即数据库的逻辑结构,然后使用MySQL设置数据库及存储程序。如下表所示。
表4-1:课程成绩
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kechengma | varchar | 200 | 课程码 | ||
fengmian | longtext | 4294967295 | 封面 | ||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
xuehao | varchar | 200 | 学号 | ||
xingming | varchar | 200 | 姓名 | ||
kechengfenshu | double | 课程分数 | |||
pingyu | longtext | 4294967295 | 评语 | ||
pingfenriqi | date | 评分日期 |
表4-2:班级信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
banjima | varchar | 200 | 班级码 | ||
banji | varchar | 200 | 班级 | ||
banjixiangqing | longtext | 4294967295 | 班级详情 | ||
dengjiriqi | date | 登记日期 | |||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
clicknum | int | 点击次数 | 0 |
表4-3:加入课程
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengma | varchar | 200 | 课程码 | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kemu | varchar | 200 | 科目 | ||
banji | varchar | 200 | 班级 | ||
fengmian | longtext | 4294967295 | 封面 | ||
yaoqingma | varchar | 200 | 邀请码 | ||
jiarushijian | datetime | 加入时间 | |||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
xuehao | varchar | 200 | 学号 | ||
xingming | varchar | 200 | 姓名 | ||
crossuserid | bigint | 跨表用户id | |||
crossrefid | bigint | 跨表主键id | |||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-4:加入班级
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
banjima | varchar | 200 | 班级码 | ||
banji | varchar | 200 | 班级 | ||
jiaruyuanyin | longtext | 4294967295 | 加入原因 | ||
shenqingshijian | datetime | 申请时间 | |||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
xuehao | varchar | 200 | 学号 | ||
xingming | varchar | 200 | 姓名 | ||
touxiang | longtext | 4294967295 | 头像 | ||
crossuserid | bigint | 跨表用户id | |||
crossrefid | bigint | 跨表主键id | |||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-5:教师评价
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kemu | varchar | 200 | 科目 | ||
banji | varchar | 200 | 班级 | ||
fengmian | longtext | 4294967295 | 封面 | ||
pingjiaxuesheng | varchar | 200 | 评价学生 | ||
xuexitaidu | varchar | 200 | 学习态度 | ||
pingyu | longtext | 4294967295 | 评语 | ||
pingjiashijian | datetime | 评价时间 | |||
xuehao | varchar | 200 | 学号 | ||
xingming | varchar | 200 | 姓名 | ||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 |
表4-6:教师
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
mima | varchar | 200 | 密码 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
xingbie | varchar | 200 | 性别 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
banji | varchar | 200 | 班级 | ||
xueyuan | varchar | 200 | 学院 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-7:考试记录表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
username | varchar | 200 | 用户名 | ||
paperid | bigint | 试卷id(外键) | |||
papername | varchar | 200 | 试卷名称 | ||
questionid | bigint | 试题id(外键) | |||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
ismark | bigint | 是否批卷 | 0 | ||
type | bigint | 试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空) 4:主观题 | 0 | ||
myscore | bigint | 试题得分 | 0 | ||
myanswer | varchar | 200 | 考生答案 |
表4-8:学生评价
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kemu | varchar | 200 | 科目 | ||
banji | varchar | 200 | 班级 | ||
fengmian | longtext | 4294967295 | 封面 | ||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
pingjiakecheng | varchar | 200 | 评价课程 | ||
jiaoxuezhiliang | varchar | 200 | 教学质量 | ||
pingjiashijian | datetime | 评价时间 | |||
pingyu | longtext | 4294967295 | 评语 | ||
xuehao | varchar | 200 | 学号 | ||
xingming | varchar | 200 | 姓名 |
表4-9:试题库表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
type | bigint | 试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空) 4:主观题 | 0 | ||
sequence | bigint | 试题排序,值越大排越前面 | 100 |
表4-10:学生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
xuehao | varchar | 200 | 学号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
shouji | varchar | 200 | 手机 | ||
banji | varchar | 200 | 班级 | ||
xueyuan | varchar | 200 | 学院 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-11:试题表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
paperid | bigint | 所属试卷id(外键) | |||
papername | varchar | 200 | 试卷名称 | ||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
type | bigint | 试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空)4:主观题 | 0 | ||
sequence | bigint | 试题排序,值越大排越前面 | 100 |
表4-12:消息中心
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
banji | varchar | 200 | 班级 | ||
jianjie | longtext | 4294967295 | 简介 | ||
fabushijian | date | 发布时间 | |||
fengmian | longtext | 4294967295 | 封面 | ||
neirong | longtext | 4294967295 | 内容 | ||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
clicknum | int | 点击次数 | 0 |
表4-13:试卷表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
name | varchar | 200 | 试卷名称 | ||
time | int | 考试时长(分钟) | |||
status | int | 试卷状态 | 0 |
表4-14:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
image | varchar | 200 | 头像 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-15:科目信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kemu | varchar | 200 | 科目 |
表4-16:课程信息评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 4294967295 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-17:课程信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengma | varchar | 200 | 课程码 | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kemu | varchar | 200 | 科目 | ||
banji | varchar | 200 | 班级 | ||
kejian | longtext | 4294967295 | 课件 | ||
kaikeshijian | datetime | 开课时间 | |||
jieshushijian | datetime | 结束时间 | |||
fengmian | longtext | 4294967295 | 封面 | ||
kechengneirong | longtext | 4294967295 | 课程内容 | ||
jiaoshizhanghao | varchar | 200 | 教师账号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
discussnum | int | 评论数 | 0 |
表4-18:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
5 系统实现
按照软件工程的流程来说,在系统的详细设计与实现阶段,要把模块、视图、模板进行相应的组合完成一个个所需的功能,此章将会把设计中模块一一说明如何设计和实现的。
5.1小程序端实现
5.1.1登录界面的实现
首先双击打开小程序客户端,连上网络之后会显示出本系统的登录界面,这是进入小程序的初始页面“登录”,能成功进入到该登录界面则代表小程序的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能。登录界面如图5-1所示。
图5-1 登录界面
5.1.2注册界面的实现
第一次使用本小程序的使用者,首先是要进行注册,点击“注册”,然后就会进入到注册的页面里面,将用户信息录入注册表,确认信息正确后,系统才会进入登录界面,用户登录成功后可使用本小程序所提供的所有功能。注册界面如图5-2所示。
图5-2 注册界面
5.1.3 小程序首页功能的实现
小程序首页是用户注册登录后进入的第一个界面,在这里,人们能够看到小程序的导航条,内容包括首页、班级信息、课程信息、考试、我的等。小程序首页界面如图5-3所示。
图5-3 小程序首页界面图
班级信息:在班级信息页面可以查看到班级、班级位置、图片、登记日期、教师账号、教师姓名、点击次数、班级详情等详情信息,并根据需要进行加入班级操作。班级信息详情如图5-4所示。
图5-4班级信息详情界面图
课程信息:在课程信息页面可以查看到课程名称、图片、科目、班级、开课时间、结束时间、教师账号、教师姓名、点击次数、课程内容等详情信息,并根据需要进行加入课程操作。课程信息详情如图5-5所示。
图5-5课程信息详情界面图
5.1.4学生功能
学生登录成功后,点击“我的”可以对个人中心、加入班级、加入课程、学生评价、教师评价、考试记录、错题本、修改密码等进行详细操作。学生功能界面如图5-6所示。
图5-6学生功能界面图
5.2后台模块实现
在登录流程中,用户首先在uni前端界面输入用户名和密码。这些信息通过HTTP请求发送到Java后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许用户访问系统。这个过程涵盖了从用户输入到系统验证和响应的全过程。如图5-7所示。
图5-7 后台登录界面
5.2.1管理员功能实现
管理员进入主页面,主要功能包括对学生、教师、班级信息、科目信息、加入班级、课程信息、加入课程、学生评价、教师评价、消息中心、试卷管理、试题管理、轮播图管理、考试管理、我的信息等进行操作。管理员主页面如图5-8所示:
图5-8管理员主界面
学生功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写学生表单。这些学生表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除学生信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便学生功能可以看到最新的信息或相应的操作反馈。如图5-9所示:
图5-9学生界面
教师功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写教师表单。这些教师表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除教师信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便教师功能可以看到最新的信息或相应的操作反馈。如图5-10所示:
图5-10教师界面
科目信息功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写科目信息表单。这些科目信息表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除科目信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便科目信息功能可以看到最新的信息或相应的操作反馈。如图5-11所示:
图5-11科目信息界面
5.2.2教师功能实现
教师进入主页面,主要功能包括对学生、班级信息、加入班级、课程信息、加入课程、学生评价、教师评价、试题管理、试卷管理、考试管理、我的信息等进行操作。教师主页面如图5-12所示:
图5-12教师主界面
课程信息功能在视图层(view层)进行交互,比如点击“查询、添加或删除”按钮或填写课程信息表单。这些课程信息表单动作被视图层捕获并作为请求发送给相应的控制器层(controller层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如查看、修改或删除课程信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便课程信息功能可以看到最新的信息或相应的操作反馈。如图5-13所示:
图5-13课程信息界面
5.3小结
本章介绍了系统的各个模块和实现功能,对模块下的关键功能进行了介绍,并通过图片展示了实现效果。
第五章 系统测试
在把机器的硬件和软件资源和系统的操作看成是整体的条件下,系统测试被用来观察和解决系统可能的问题,并能够更好的提高系统的效率。
5.1 测试环境
CPU | 系统配置 AMD4400+以上 |
内存 | 2G |
硬盘 | 160G |
操作系统 | Windows 7 |
5.2 测试过程
5.2.1 功能测试
测试目标 | 核实所有功能均已正常实现,即是否与需求一致 |
测试范围 | 核实以下内容:页面显示规则、常用字段输入类型及长度、各功能模块的业务规则的验证、数据精确度、数据类型、业务功能等相关方面的正确性。 |
技术 | 采用黑盒测试、边界测试、等价类划分等测试方法 |
工具与方法 | 手工测试 |
5.2.2 用户界面(UI) 测试
测试目标 | 请检查下列事项:1. 搜索登录界面可以正确反映商务功能和要求事项。这类搜索类型包含窗口和域间搜索。2窗口的实体及特性(例如:标志、按钮、输入框、大小、位置、状态和中央)符合标准。3. 简单操作和熟练接口(包括布局、配色、字体、使用方便等),界面和用户之间的对话型接口测试(包括所有商务可能的进入/退出的方法等)。可能的密钥按键的 操作,各类界面间所有可能的跳转、焦点切换,界面、菜单 显示的正确性)。 |
方法 | 手工测试、目测 |
完成标准 | UI 符合可接受标准,能够保证用户界面的友好性、易操作性, 而且符合用户操作习惯 |
5.2.3 兼容性测试
测试范围 | 1.使用不同版本的不同浏览器、分辨率、操作系统 分别进行测试。 2.不同操作系统、浏览器、分辨率和各种运行软件 等各种条件的组合测试。 |
测试目标 | 核实系统在不同的软件和硬件配置中运行稳定 |
技术 | 黑盒测试 |
工具与方法 | 手工测试 |