好久没更新博客了,最近一个月都在忙学校的课程设计,那就在这里记录一下吧!
背景
数据库系统概述课程设计,本小组设计了一个在线教育网站--”鱼书在线“,为了尽可能的完善该网站的功能,我们对市面上的大部分在线教育网站进行了调查研究,同时我们也分成前期和后期对该网站进行了需求分析调查。
定义
鱼书在线:鱼书
意为学生可以向鱼儿那般在知识的海洋中悠然自得。这是一个为各类学生提供在线视频,学生可以通过在线的方式来学习相关课程。
相关配置
- web框架:Django
- 后台管理系统:xadmin
- 操作系统:win10
- 数据库:mysql
需求分析
系统功能需求:
1.1.1 提供用户注册登录功能。
1.1.2 后台上传数据功能(学习视频、学习资料等)。
1.1.3 前端页面展示相关课程、授课机构、授课讲师。
1.1.4 前端可以查看相关课程详情信息。
后期系统需求分析
2.1 系统功能需求:
2.1.1 登录注册功能完善: 为了防止一个人注册多个用户账号,我们选择采用“一机一号”的形式进行注册;
2.1.2 首页需求分析: 首页顶部显示用户昵称,提供进入“个人中心”“退出登陆”接口;
Title部分显示网站logo及全局搜索功能;
主体分为四部分:
- 轮播图:可以理解为广告位,即管理员可在后台将相关广告图片、图片点击跳转链接添加,前端就会时时更新,并循环播放;
- 公开课:在数据库中选取六个课程将其信息以卡片的形式进行展现;
- 授课机构:在数据库中选取十五个授课将其信息以卡片的形式进行展现;
- 页脚:显示logo、平台联系电话等;
公开课页需求分析:
- 用户可以通过顶端的tab切换至公开课页面;
- 提供全局搜索框;
- 公开课页面以列表卡片的形式展示课程信息(课程封面图、课程名称、课程时长、学习人数等);
- 右侧显示热门课程推荐(课程封面图、课程名称、课程难度等);
- 所有课程信息展示卡片点击可跳转到相关课程详情页;
- 课程列表可通过后台数据量进行分页;
- 课程列表信息可以进行不同类比的排序(热门程度、学习人数等);
- 页脚:显示logo、平台联系电话等;
授课教师页面需求分析:
- 用户可以通过顶端的tab切换至授课教师页面;
- 提供全局搜索框;
- 授课教师页面以列表卡片的形式展示讲师信息(头像、姓名、工作年限、工作职位、就职公司、年龄、教学特点等);
- 点击某行还可以跳转至该教师详情详情页;
- 右侧显示讲师排行榜(头像、姓名、工作年限等);
- 教师列表可通过后台数据量进行分页;
- 教师列表信息可以进行不同类比的排序(人气等);
- 页脚:显示logo、平台联系电话等;
授课机构页面需求分析:
- 用户可以通过顶端的tab切换至授课机构页面;
- 提供全局搜索框;
- 授课机构页面以列表卡片的形式展示机构信息(图标、名称、课程数、学习人数、机构地址、经典课程等);
- 提供课程机构多条件筛选;
- 点击某行还可以跳转至该机构详情页;
- 右侧显示机构排名;
- 提供咨询提交输入框;
- 机构列表可通过后台数据量进行分页;
- 页脚:显示logo、平台联系电话等;
课程详情页面需求分析:
- 用户可以通过点击某课程卡片切换至课程详情页面;
- 展示课程相关信息(课程图片、课程名称、课程简介、课程时长、课程章节数量、课程类别、学习这门课程的用户,还有收藏、开始学习入口。)
- 显示课程出自于哪个机构,标签显示该机构的相关信息:机构图标、该用户是否收藏这个机构、机构拥有课程数量、机构拥有教师数量、机构所在地、机构是否认证。
- 提供全局搜索框;
- 显示相关课程推荐:通过课程标签在数据库中搜索相关课程.
- 课程详情,通过富文本的形式,将后台编辑好的页面直接展示。
- 页脚:显示logo、平台联系电话等;
开始学习页面需求分析:
- 当用户在课程详情页面点击开始学习后进入,并在后台的数据表中将该课程的学习人数加1;
- 页面上部分显示课程标题、课程难度、课程学习时长、课程学习人数;
- 右侧显示资料下载,将课程后台上传的资源文件进行展示,并提供下载链接,点击即可下载资料;
- 讲师提示:显示该课程的讲师头像、名字、工作职位、还有课程须知、老师告诉你能学到什么;
- 章节信息栏:显示课程公告、课程章节信息、每个章节名称以及每一小节的时长,用户点击每个小节可以跳到相关视频页面。
- 课程评论栏:用户可以在该页面提供相关评论,下方会实时更新用户评论,显示会显示用户头像、用户昵称、评论内容、评论时间。
讲师详情页需求分析:
- 教师详情页除了显示该教师基本信息,还显示该教师在平台的全部课程,显示该用户是否收藏该教师;
- 显示该教师所在的授课机构、用户是否收藏机构
- 显示教师排行榜。
个人中心页面需求分析:
- 展示个人信息
- 提供修改头像功能
- 提供修改个人信息功能
- 提供修改密码功能
- 展示该用户收藏课程
- 展示用户消息;
数据库设计
数据库ER图
1. 用户相关
Djando
创建userprofile表
# 昵称 最长为50 可空
nick_name = models.CharField(max_length=50, verbose_name="昵称", default="")
# 生日 允许为空
birthday = models.DateField(verbose_name="生日", null=True, blank=True)
# 性别 必填
gender = models.CharField(verbose_name="性别", choices=GENDER_CHOICES, max_length=6)
# 地址 必填,如果一开始没有填,就设置为空 default=""
address = models.CharField(max_length=100, verbose_name="地址", default="")
# 手机号 不可为空,不能相同 unique=True
mobile = models.CharField(max_length=11, verbose_name="手机号")
# 头像
image = models.ImageField(verbose_name="用户头像", upload_to="head_image/%Y%m", default="default.jpg")
2.课程相关
课程表
# 外键
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, verbose_name="讲师")
course_org = models.ForeignKey(CourseOrg, null=True, blank=True, on_delete=models.CASCADE, verbose_name="课程机构")
name = models.CharField(verbose_name="课程名", max_length=50)
desc = models.CharField(verbose_name="课程描述", max_length=300)
learn_times = models.IntegerField(default=0, verbose_name="学习时长(分钟数)")
degree = models.CharField(verbose_name="难度", choices=(("cj", "初级"), ("zj", "中级"), ("gj", "高级")), max_length=2)
students = models.IntegerField(default=0, verbose_name='学习人数')
fav_nums = models.IntegerField(default=0, verbose_name='收藏人数')
click_nums = models.IntegerField(default=0, verbose_name="点击数")
notice = models.CharField(verbose_name="课程公告", max_length=300, default="")
category = models.CharField(default=u"后端开发", max_length=20, verbose_name="课程类别")
tag = models.CharField(default="", verbose_name="课程标签", max_length=10)
youneed_know = models.CharField(default="", max_length=300, verbose_name="课程须知")
teacher_tell = models.CharField(default="", max_length=300, verbose_name="老师告诉你")
is_classics = models.BooleanField(default=False, verbose_name="是否是经典课程")
# 富文本编辑器
detail = UEditorField(verbose_name="课程详情", width=600, height=300, imagePath="courses/ueditor/images/",
filePath="courses/ueditor/files/", default="")
is_banner = models.BooleanField(default=False, verbose_name="是否广告位")
image = models.ImageField(upload_to="courses/%Y/%m", verbose_name="封面图", max_length=100)
课程标签表
课程章节信息表
课程视频表
课程资源表
3.教育机构相关
课程机构表
name = models.CharField(max_length=50, verbose_name="机构名称")
desc = UEditorField(verbose_name="机构描述", width=600, height=300, imagePath="courses/ueditor/images/",
filePath="courses/ueditor/files/", default="")
tag = models.CharField(default="全国知名", max_length=10, verbose_name="机构标签")
category = models.CharField(default="pxjg", verbose_name="机构类别", max_length=4,
choices=(("pxjg", "培训机构"), ("gr", "个人"), ("gx", "高校")))
click_nums = models.IntegerField(default=0, verbose_name="点击数")
fav_nums = models.IntegerField(default=0, verbose_name="收藏数")
image = models.ImageField(upload_to="org/%Y/%m", verbose_name="logo", max_length=100)
address = models.CharField(max_length=150, verbose_name="机构地址")
students = models.IntegerField(default=0, verbose_name="学习人数")
course_nums = models.IntegerField(default=0, verbose_name="课程数")
is_auth = models.BooleanField(default=False, verbose_name="是否认证")
is_gold = models.BooleanField(default=False, verbose_name="是否金牌")
# 设置外键来方便后台添加城市
city = models.ForeignKey(City, on_delete=models.CASCADE, verbose_name="所在城市")
机构教师表
user = models.OneToOneField(UserProfile, on_delete=models.SET_NULL, null=True, blank=True,verbose_name="用户")
org = models.ForeignKey(CourseOrg, on_delete=models.CASCADE, verbose_name="所属机构")
name = models.CharField(max_length=50, verbose_name="教师名")
work_years = models.IntegerField(default=0, verbose_name="工作年限")
work_company = models.CharField(max_length=50, verbose_name="就职公司")
work_position = models.CharField(max_length=50, verbose_name="公司职位")
points = models.CharField(max_length=50, verbose_name="教学特点")
click_nums = models.IntegerField(default=0, verbose_name="点击数")
fav_nums = models.IntegerField(default=0, verbose_name="收藏数")
age = models.IntegerField(default=18, verbose_name="年龄")
image = models.ImageField(upload_to="teacher/%Y/%m", verbose_name="头像", max_length=100)
机构城市表
4.用户操作相关
用户收藏表
用户咨询表
课程评论表
# 外键
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE, verbose_name="用户")
course = models.ForeignKey(Course, on_delete=models.CASCADE, verbose_name="课程")
comments = models.CharField(max_length=200, verbose_name="评论内容")
用户消息表
用户课程表
轮播图
title = models.CharField(max_length=100, verbose_name="标题")
image = models.ImageField(upload_to="banner/%Y/%m", max_length=200, verbose_name="轮播图")
url = models.URLField(max_length=200, verbose_name="访问地址")
index = models.IntegerField(default=0, verbose_name="顺序")
功能模块
登录注册页面
注册
注册页面采用
一号一用户
模式,即一个手机号只能注册一个用户,注册时通过第三方平台云片网
加图片验证码
进行注册,并在注册后自动跳转至登录界面
登录
登录页面提供两种登录模式:
账号登录
:即使用账号密码登录;动态登录
:即使用手机号发送动态验证码加图片验证码进行登录。不登录不能访问个人中心
相关页面
首页
首页:提供
tab
菜单切换,可切换至首页
、公开课
、授课教师
、授课机构
页面,提供全局关键字搜索
可搜索课程、公开课、授课教师;首页还提供课程跳转、授课机构跳转、个人中心跳转等。
轮播图
轮播图:可以理解为广告位,即管理员可在后台将相关广告图片、图片点击跳转链接添加,前端就会时时更新,并循环播放。
显示课程
课程显示栏:左侧为图片点击链接,可以跳转至所有课程,右侧有一个课程轮播图,在后台可以将相关课程设置于这个广告位上,其他的就在非广告位课程中选出六个课程并将其展示
显示课程机构
课程机构显示:左侧为图片点击链接,可以跳转至所有授课机构,右侧授课机构分三行显示,每行5个机构,在鼠标移动至相关课程时,会显示相关课程
标签
公开课页面
公开课页面:点击
tab
栏的公开课可以跳转,在公开课页面有左右两栏:左侧所有课程,可按最新
、最热门
、参与人数
进行排序,右侧是热门课程推荐
课程列表
课程列表页:每个课程以卡片的形式展示,显示课程封面、课程名称、课程时长、课程学习人数、课程机构、收藏人数;点击课程卡片即可跳转至相关课程详情页面,同时课程列表页还具有分页功能。
热门课程推荐
热门课程推荐:显示课程封面、课程名称、课程难度;课程推荐后台按点击数将其排序,前端只选择其中3门
课程排序
最热门按照点击数排序、参与人数按照课程学习人数排序
课程详情页
课程详情页分为4部分:
中间为课程基本信息:课程图片、课程名称、课程简介、课程时长、课程章节数量、课程类别、学习这门课程的用户,还有收藏、开始学习入口。
右侧第一部分显示课程出自于哪个机构,标签显示该机构的相关信息:机构图标、该用户是否收藏这个机构、机构拥有课程数量、机构拥有教师数量、机构所在地、机构是否认证。
右侧第二部分显示相关课程推荐:通过
课程标签
在数据库中搜索相关课程.最后一部分:课程详情,通过富文本的形式,将后台编辑好的页面直接展示。
开始学习页面
当用户在课程详情页面点击
开始学习
后进入,并在后台的数据表中将该课程的学习人数加1;页面上部分显示课程标题、课程难度、课程学习时长、课程学习人数;
右侧:资料下载,将课程后台上传的资源文件进行展示,并提供下载链接,点击即可下载资料;
讲师提示:显示该课程的讲师头像、名字、工作职位、还有课程须知、老师告诉你能学到什么;
右下角一栏:该课程的同学还学过什么课程
章节信息栏:显示课程公告、课程章节信息、每个章节名称以及每一小节的时长,用户点击每个小节可以跳到相关视频页面。
课程评论栏:用户可以在该页面提供相关评论,下方会实时更新用户评论,显示会显示用户头像、用户昵称、评论内容、评论时间。
授课教师页面
左侧以列表的形式显示教师信息,右侧显示教师排行榜
授课教师列表
教师列表页显示所有信息,可分页;
每一行显示一位教师,展示其头像、姓名、工作年限、工作职位、就职公司、年龄、教学特点等
点击该行还可以跳转至该教师详情详情页
教师详情页
教师详情页除了显示该教师基本信息,还显示该教师在平台的全部课程,显示该用户是否收藏该教师
右侧显示该教师所在的授课机构、用户是否收藏机构
下侧显示教师排行榜。
教师排行榜(按点击数取前三)
授课机构页面
用户可以根据
机构类别
、所在地区
进行赛选用户可以向平台咨询相关课程
用户可以查看课程机构排名
授课机构列表
根据类别筛选
按学习人数排序
按课程数量排序
我要学习-咨询窗口
授课机构排名
个人中心
个人资料页面
修改头像
修改密码
我的课程
我的收藏
课程机构
显示相关课程机构信息,提供删除功能
授课教师
显示相关教师信息,提供删除功能
公开课程
显示相关课程信息,提供删除功能
我的消息
后台管理系统
左侧为各个表的选项栏
修改用户
增加、修改课程信息
结语
这只是简单的记录,后期有时间会更新具体实现相关的文章,尽请期待!