很久没更新博客了,最近一个月都在忙学校的课程设计,那就在这里记录一下吧!前端
数据库系统概述课程设计,本小组设计了一个在线教育网站--”鱼书在线“,为了尽量的完善该网站的功能,咱们对市面上的大部分在线教育网站进行了调查研究,同时咱们也分红前期和后期对该网站进行了需求分析调查。python
鱼书在线:鱼书
意为学生能够向鱼儿那般在知识的海洋中怡然自得。这是一个为各种学生提供在线视频,学生能够经过在线的方式来学习相关课程。mysql
系统功能需求:web
1.1.1 提供用户注册登陆功能。sql
1.1.2 后台上传数据功能(学习视频、学习资料等)。数据库
1.1.3 前端页面展现相关课程、授课机构、授课讲师。后端
1.1.4 前端能够查看相关课程详情信息。markdown
后期系统需求分析框架
2.1 系统功能需求:数据库设计
2.1.1 登陆注册功能完善: 为了防止一我的注册多个用户帐号,咱们选择采用“一机一号”的形式进行注册;
2.1.2 首页需求分析: 首页顶部显示用户昵称,提供进入“我的中心”“退出登录”接口;
Title部分显示网站logo及全局搜索功能;
主体分为四部分:
公开课页需求分析:
授课教师页面需求分析:
授课机构页面需求分析:
课程详情页面需求分析:
开始学习页面需求分析:
讲师详情页需求分析:
我的中心页面需求分析:
数据库ER图
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") 复制代码
# 外键 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) 复制代码
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) 复制代码
# 外键 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;页面上部分显示课程标题、课程难度、课程学习时长、课程学习人数;
右侧:资料下载,将课程后台上传的资源文件进行展现,并提供下载连接,点击便可下载资料;
讲师提示:显示该课程的讲师头像、名字、工做职位、还有课程须知、老师告诉你能学到什么;
右下角一栏:该课程的同窗还学过什么课程
章节信息栏:显示课程公告、课程章节信息、每一个章节名称以及每一小节的时长,用户点击每一个小节能够跳到相关视频页面。
课程评论栏:用户能够在该页面提供相关评论,下方会实时更新用户评论,显示会显示用户头像、用户昵称、评论内容、评论时间。
左侧以列表的形式显示教师信息,右侧显示教师排行榜
教师列表页显示全部信息,可分页;
每一行显示一位教师,展现其头像、姓名、工做年限、工做职位、就任公司、年龄、教学特色等
点击该行还能够跳转至该教师详情详情页
教师详情页除了显示该教师基本信息,还显示该教师在平台的所有课程,显示该用户是否收藏该教师
右侧显示该教师所在的授课机构、用户是否收藏机构
下侧显示教师排行榜。
用户能够根据
机构类别
、所在地区
进行赛选用户能够向平台咨询相关课程
用户能够查看课程机构排名
显示相关课程机构信息,提供删除功能
显示相关教师信息,提供删除功能
显示相关课程信息,提供删除功能
左侧为各个表的选项栏
这只是简单的记录,后期有时间会更新具体实现相关的文章,尽请期待!