4系统设计
4.1功能模块设计
对本系统进行全面的系统功能的分析,可以得出基于Python《Python程序设计》课程智能问答系统的功能模块图,如图4-1所示。
图4-1 系统功能模块图
4.2数据库设计
4.2.1数据库设计原则
学习程序设计时,若想要深入理解数据库管理系统或根据特定需求开发系统接口,首先需要构建一个数据库管理系统模型以用于数据存储。这一步骤至关重要,因为它能在应用编程过程中避免频繁地将信息加载到操作系统页面,从而提升整体系统的工作效率。数据库管理系统作为管理信息系统的核心与基础,存储着大量数据。它不仅为管理信息系统的构建提供了诸如添加、删除、修改和搜索等关键操作功能,还使得系统能够快速定位并查询所需数据,而无需直接深入程序代码进行搜索。通过采用特定的方法将信息表的各个组成部分整合起来,数据库管理系统能够精确地组织、分类并构建出一个完善的信息管理体系。下面中各个实体关系的E-R图:
用户信息E-R如图4-2所示:
图4-2 用户信息E-R图
试题E-R如图4-3所示:
图4-3 试题E-R图
考试记录E-R如图4-4所示:
图4-4考试记录E-R图
交流论坛E-R如图4-5所示:
图4-5 交流论坛E-R图
系统总体E-R图如下图4-6所
图4-6系统总体E-R图
4.2.3数据库表设计
《Python程序设计》课程智能问答系统的数据是以数据表的形式存储在MySQL数据库中的,这些数据表是系统调取数据的基础。在系统数据库搭建过程中,我们会根据已经设计好的数据表进行优化构建。本系统选用了MySQL数据库,并对各个数据表进行了详尽的说明,具体如下:
表4-1:交流论坛
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 帖子标题 | ||
content | longtext | 4294967295 | 帖子内容 | ||
parentid | bigint | 父节点id | |||
userid | bigint | 用户id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
isdone | varchar | 200 | 状态 | ||
istop | int | 是否置顶 | 0 | ||
toptime | datetime | 置顶时间 | |||
typename | varchar | 200 | 分类名称 | ||
cover | longtext | 4294967295 | 封面 | ||
isanon | int | 是否匿名(1:是,0:否) | 0 | ||
delflag | int | 是否删除(1:是,0:否) | 0 |
表4-2:知识类型
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhishileixing | varchar | 200 | 知识类型 |
表4-3:考试记录表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
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-4:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
shoujihao | varchar | 200 | 手机号 | ||
touxiang | longtext | 4294967295 | 头像 | ||
pquestion | varchar | 200 | 密保问题 | ||
panswer | varchar | 200 | 密保答案 |
表4-5:试题库表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
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-6:学习资料
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
ziliaomingcheng | varchar | 200 | 资料名称 | ||
fengmian | longtext | 4294967295 | 封面 | ||
zhishileixing | varchar | 200 | 知识类型 | ||
jiaoxueshipin | longtext | 4294967295 | 教学视频 | ||
ziliaowenjian | longtext | 4294967295 | 资料文件 | ||
xiangqingneirong | longtext | 4294967295 | 详情内容 | ||
faburiqi | datetime | 发布日期 | |||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
discussnum | int | 评论数 | 0 | ||
totalscore | double | 评分 | 0 | ||
storeupnum | int | 收藏数 | 0 |
表4-7:试题表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
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-8:管理员表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
image | varchar | 200 | 头像 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-9:在线测试表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
name | varchar | 200 | 在线测试名称 | ||
time | int | 考试时长(分钟) | |||
status | int | 在线测试状态 | 0 |
表4-10:系统简介
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
subtitle | varchar | 200 | 副标题 | ||
content | longtext | 4294967295 | 内容 | ||
picture1 | longtext | 4294967295 | 图片1 | ||
picture2 | longtext | 4294967295 | 图片2 | ||
picture3 | longtext | 4294967295 | 图片3 |
表4-11:学习资料评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 4294967295 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
score | double | 评分 | |||
reply | longtext | 4294967295 | 回复内容 | ||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
istop | int | 置顶(1:置顶,0:非置顶) | 0 | ||
tuserids | longtext | 4294967295 | 赞用户ids | ||
cuserids | longtext | 4294967295 | 踩用户ids |
表4-12:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 商品id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名称 | ||
picture | longtext | 4294967295 | 图片 | ||
type | varchar | 200 | 类型 | 1 | |
inteltype | varchar | 200 | 推荐类型 | ||
remark | varchar | 200 | 备注 |
表4-13:课程信息评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 4294967295 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 | ||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
istop | int | 置顶(1:置顶,0:非置顶) | 0 | ||
tuserids | longtext | 4294967295 | 赞用户ids | ||
cuserids | longtext | 4294967295 | 踩用户ids |
表4-14:公告资讯分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
typename | varchar | 200 | 分类名称 |
表4-15:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 | ||
url | varchar | 500 | url |
表4-16:公告资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
typename | varchar | 200 | 分类名称 | ||
name | varchar | 200 | 发布人 | ||
headportrait | longtext | 4294967295 | 头像 | ||
clicknum | int | 点击次数 | 0 | ||
clicktime | datetime | 最近点击时间 | |||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
storeupnum | int | 收藏数 | 0 | ||
picture | longtext | 4294967295 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-17:课程信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
fengmian | longtext | 4294967295 | 封面 | ||
kaikeshijian | datetime | 开课时间 | |||
shangkedidian | varchar | 200 | 上课地点 | ||
kechengneirong | longtext | 4294967295 | 课程内容 | ||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
discussnum | int | 评论数 | 0 | ||
storeupnum | int | 收藏数 | 0 |
表4-18:智能问答
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
adminid | bigint | 管理员id | |||
ask | longtext | 4294967295 | 提问 | ||
reply | longtext | 4294967295 | 回复 | ||
isreply | int | 是否回复 | |||
isread | int | 已读/未读(1:已读,0:未读) | 0 | ||
uname | varchar | 200 | 用户头像 | ||
uimage | longtext | 4294967295 | 用户名 | ||
type | int | 内容类型(1:文本,2:图片,3:视频,4:文件,5:表情) | 1 |
表4-19:交流论坛类型
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
typename | varchar | 200 | 分类名称 |
表4-20:参课信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
baomingbianhao | varchar | 200 | 报名编号 | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
fengmian | longtext | 4294967295 | 封面 | ||
kaikeshijian | varchar | 200 | 开课时间 | ||
shangkedidian | varchar | 200 | 上课地点 | ||
baomingshijian | datetime | 报名时间 | |||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-21:交流论坛举报
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
forumid | bigint | 论坛id | |||
title | varchar | 200 | 帖子标题 | ||
userid | bigint | 举报用户id | |||
username | varchar | 200 | 举报用户名 | ||
reporteduserid | bigint | 被举报用户id | |||
reportedusername | varchar | 200 | 被举报用户名 | ||
reason | longtext | 4294967295 | 举报原因 | ||
picture | longtext | 4294967295 | 图片补充 | ||
handleadvise | longtext | 4294967295 | 处理建议 | ||
status | varchar | 200 | 状态 | 处理中 | |
reporttype | varchar | 200 | 举报类型 | 主题帖举报 |
表4-22:关于我们
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
subtitle | varchar | 200 | 副标题 | ||
content | longtext | 4294967295 | 内容 | ||
picture1 | longtext | 4294967295 | 图片1 | ||
picture2 | longtext | 4294967295 | 图片2 | ||
picture3 | longtext | 4294967295 | 图片3 |
5系统实现
《Python程序设计》课程智能问答系统的开发流程中,在系统分析和系统设计等关键阶段完成后,随即进入系统实施阶段。此阶段的核心任务是实现管理员和用户的功能需求,并通过实践过程不断对代码和逻辑进行优化与调整。由于该模块是直接面向用户的,因此,它不仅要确保功能的全面与完善,还需注重页面设计的美观性,以提供良好的用户体验。
5.1 前台用户功能模块
当访客浏览至系统的网址时,首先映入眼帘的便是首页界面。在这个页面上,访客可以清晰地看到《Python程序设计》课程智能问答系统的导航栏,其中包括首页、学习资料、交流论坛、在线测试、公告资讯、智能问答、个人中心等多个板块。系统首页界面如图5-1所示:
图5-1系统首页界面
在注册流程中,用户在Vue前端填写必要信息(如用户名、密码等)并提交。前端将这些信息通过HTTP请求发送到Python后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知用户完成注册。这个过程实现了新用户的数据收集、验证和存储。如图5-2所示。
图5-2用户注册界面图
在登录流程中,用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Python后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许用户访问系统。这个过程涵盖了从用户输入到系统验证和响应的全过程。如图5-3所示。
图5-3用户登录界面图
用户点击以学习资料页面,随后在该页面的搜索框中输入资料名称等关键词进行查询,查询结果展示后,用户可以查看学习资料的详细信息,包括资料名称、封面、知识类型、教学视频、资料文件、发布日期等;如图5-4所示。
图5-4学习资料界面图
用户点击公告资讯;在公告资讯页面的搜索栏输入标题等信息,进行查询,然后还可以查看公告等信息;如图5-5所示。
图5-5公告资讯界面图
用户点击个人中心,在个人中心页面填写详细信息,进行更新信息操作,还可以对修改密码、我的发布、考试记录、错题本、我的收藏等进行详情操作,如图5-6所示。
图5-6个人中心界面图
5.2 后台管理员功能模块
管理员需通过登录页面,输入其账号和密码等认证信息,以完成登录操作,如图5-7所示。
图5-7管理员登录界面图
管理员成功登录《Python程序设计》课程智能问答系统后,可以访问首页、用户、知识类型、学习资料、交流论坛、试题库管理、试题管理、在线测试管理、论坛分类、系统管理、考试管理、个人中心等多个功能模块进行细致的操作与管理,如图5-8所示。
图5-8管理员功能界面图
用户信息管理功能实现是在Django后端部分,您需要创建一个新的应用,然后在该应用下创建一个模型(models.py)来定义用户信息的数据结构,使用Django的ORM来处理与MySQL数据库的交互,包括用户信息的增删改查等操作。接着,在views.py中编写视图逻辑来处理前端请求,使用Django的URL路由(urls.py)将请求映射到相应的视图函数。对于数据的验证和序列化,可以使用Django的表单或序列化器来实现。在前端Vue.js部分,将创建相应的Vue组件,在这些组件中使用axios或其他HTTP库与Django后端的API进行交互,实现用户信息的展示、添加用户、编辑用户信息和删除用户等功能。状态管理可以通过Vuex来维护,比如在store目录下定义用户模块的状态、突变、动作和获取器。如图5-10所示。
图5-10用户管理界面图
管理员选择进入知识类型管理页面后,可以执行对知识类型信息的查询、新增知识类型以及删除现有知识类型等操作,以便对知识类型进行高效管理;如图5-11所示。
图5-11知识类型管理界面图
学习资料管理功能实现是在Django后端部分,您需要创建一个新的应用,然后在该应用下创建一个模型(models.py)来定义学习资料管理的数据结构,使用Django的ORM来处理与MySQL数据库的交互,包括学习资料管理的增删改查等操作。接着,在views.py中编写视图逻辑来处理前端请求,使用Django的URL路由(urls.py)将请求映射到相应的视图函数。对于数据的验证和序列化,可以使用Django的表单或序列化器来实现。在前端Vue.js部分,将创建相应的Vue组件,在这些组件中使用axios或其他HTTP库与Django后端的API进行交互,实现学习资料的展示、添加学习资料、编辑学习资料管理和删除学习资料管理等功能。状态管理可以通过Vuex来维护,比如在store目录下定义学习资料管理的状态、突变、动作和获取器。如图5-12所示。
图5-12学习资料管理管理界面图
管理员点击交流论坛管理后,会进入相关管理页面。在这个页面上,管理员可以根据帖子标题、分类名称等信息,对交流论坛中的交流论坛进行查询、添加或删除等操作。这些功能如图如图5-13所示。
图5-13交流论坛管理界面图
管理员点击试题库功能后,会进入试题库管理页面。在这个页面上,管理员可以根据试题等信息,对试题库上的留言进行搜索或删除等操作,如图5-14所示。
图5-14试题库界面图
管理员点击试题管理功能后,会进入试题管理页面。在这个页面上,管理员能够依据在线测试、试题等多项信息,对试题进行精确的查询或执行删除等操作,以确保试题管理的准确性和高效性;如图5-15所示。
图5-15试题管理界面图