魚書在線教育平臺

很久沒更新博客了,最近一個月都在忙學校的課程設計,那就在這裏記錄一下吧!前端

背景

數據庫系統概述課程設計,本小組設計了一個在線教育網站--」魚書在線「,爲了儘量的完善該網站的功能,咱們對市面上的大部分在線教育網站進行了調查研究,同時咱們也分紅前期和後期對該網站進行了需求分析調查。python

定義

魚書在線:魚書意爲學生能夠向魚兒那般在知識的海洋中怡然自得。這是一個爲各種學生提供在線視頻,學生能夠經過在線的方式來學習相關課程。mysql

相關配置

  • web框架:Django
  • 後臺管理系統:xadmin
  • 操做系統:win10
  • 數據庫: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及全局搜索功能;

主體分爲四部分:

  1. 輪播圖:能夠理解爲廣告位,即管理員可在後臺將相關廣告圖片、圖片點擊跳轉連接添加,前端就會時時更新,並循環播放;
  2. 公開課:在數據庫中選取六個課程將其信息以卡片的形式進行展示;
  3. 授課機構:在數據庫中選取十五個授課將其信息以卡片的形式進行展示;
  4. 頁腳:顯示logo、平臺聯繫電話等;

公開課頁需求分析:

  1. 用戶能夠經過頂端的tab切換至公開課頁面;
  2. 提供全局搜索框;
  3. 公開課頁面以列表卡片的形式展現課程信息(課程封面圖、課程名稱、課程時長、學習人數等);
  4. 右側顯示熱門課程推薦(課程封面圖、課程名稱、課程難度等);
  5. 全部課程信息展現卡片點擊可跳轉到相關課程詳情頁;
  6. 課程列表可經過後臺數據量進行分頁;
  7. 課程列表信息能夠進行不一樣類比的排序(熱門程度、學習人數等);
  8. 頁腳:顯示logo、平臺聯繫電話等;

授課教師頁面需求分析:

  1. 用戶能夠經過頂端的tab切換至授課教師頁面;
  2. 提供全局搜索框;
  3. 授課教師頁面以列表卡片的形式展現講師信息(頭像、姓名、工做年限、工做職位、就任公司、年齡、教學特色等);
  4. 點擊某行還能夠跳轉至該教師詳情詳情頁;
  5. 右側顯示講師排行榜(頭像、姓名、工做年限等);
  6. 教師列表可經過後臺數據量進行分頁;
  7. 教師列表信息能夠進行不一樣類比的排序(人氣等);
  8. 頁腳:顯示logo、平臺聯繫電話等;

授課機構頁面需求分析:

  1. 用戶能夠經過頂端的tab切換至授課機構頁面;
  2. 提供全局搜索框;
  3. 授課機構頁面以列表卡片的形式展現機構信息(圖標、名稱、課程數、學習人數、機構地址、經典課程等);
  4. 提供課程機構多條件篩選;
  5. 點擊某行還能夠跳轉至該機構詳情頁;
  6. 右側顯示機構排名;
  7. 提供諮詢提交輸入框;
  8. 機構列表可經過後臺數據量進行分頁;
  9. 頁腳:顯示logo、平臺聯繫電話等;

課程詳情頁面需求分析:

  1. 用戶能夠經過點擊某課程卡片切換至課程詳情頁面;
  2. 展現課程相關信息(課程圖片、課程名稱、課程簡介、課程時長、課程章節數量、課程類別、學習這門課程的用戶,還有收藏、開始學習入口。)
  3. 顯示課程出自於哪一個機構,標籤顯示該機構的相關信息:機構圖標、該用戶是否收藏這個機構、機構擁有課程數量、機構擁有教師數量、機構所在地、機構是否定證。
  4. 提供全局搜索框;
  5. 顯示相關課程推薦:經過課程標籤在數據庫中搜索相關課程.
  6. 課程詳情,經過富文本的形式,將後臺編輯好的頁面直接展現。
  7. 頁腳:顯示logo、平臺聯繫電話等;

開始學習頁面需求分析:

  1. 當用戶在課程詳情頁面點擊開始學習後進入,並在後臺的數據表中將該課程的學習人數加1;
  2. 頁面上部分顯示課程標題、課程難度、課程學習時長、課程學習人數;
  3. 右側顯示資料下載,將課程後臺上傳的資源文件進行展現,並提供下載連接,點擊便可下載資料;
  4. 講師提示:顯示該課程的講師頭像、名字、工做職位、還有課程須知、老師告訴你能學到什麼;
  5. 章節信息欄:顯示課程公告、課程章節信息、每一個章節名稱以及每一小節的時長,用戶點擊每一個小節能夠跳到相關視頻頁面。
  6. 課程評論欄:用戶能夠在該頁面提供相關評論,下方會實時更新用戶評論,顯示會顯示用戶頭像、用戶暱稱、評論內容、評論時間。

講師詳情頁需求分析:

  1. 教師詳情頁除了顯示該教師基本信息,還顯示該教師在平臺的所有課程,顯示該用戶是否收藏該教師;
  2. 顯示該教師所在的授課機構、用戶是否收藏機構
  3. 顯示教師排行榜。

我的中心頁面需求分析:

  1. 展現我的信息
  2. 提供修改頭像功能
  3. 提供修改我的信息功能
  4. 提供修改密碼功能
  5. 展現該用戶收藏課程
  6. 展現用戶消息;

數據庫設計

數據庫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;

頁面上部分顯示課程標題、課程難度、課程學習時長、課程學習人數;

右側:資料下載,將課程後臺上傳的資源文件進行展現,並提供下載連接,點擊便可下載資料;

講師提示:顯示該課程的講師頭像、名字、工做職位、還有課程須知、老師告訴你能學到什麼;

右下角一欄:該課程的同窗還學過什麼課程

章節信息欄:顯示課程公告、課程章節信息、每一個章節名稱以及每一小節的時長,用戶點擊每一個小節能夠跳到相關視頻頁面。

課程評論欄:用戶能夠在該頁面提供相關評論,下方會實時更新用戶評論,顯示會顯示用戶頭像、用戶暱稱、評論內容、評論時間。

授課教師頁面

左側以列表的形式顯示教師信息,右側顯示教師排行榜

授課教師列表

教師列表頁顯示全部信息,可分頁;

每一行顯示一位教師,展現其頭像、姓名、工做年限、工做職位、就任公司、年齡、教學特色等

點擊該行還能夠跳轉至該教師詳情詳情頁

教師詳情頁

教師詳情頁除了顯示該教師基本信息,還顯示該教師在平臺的所有課程,顯示該用戶是否收藏該教師

右側顯示該教師所在的授課機構、用戶是否收藏機構

下側顯示教師排行榜。

教師排行榜(按點擊數取前三)

授課機構頁面

用戶能夠根據機構類別所在地區進行賽選

用戶能夠向平臺諮詢相關課程

用戶能夠查看課程機構排名

授課機構列表

根據類別篩選

按學習人數排序

按課程數量排序

我要學習-諮詢窗口

授課機構排名

我的中心

我的資料頁面

修改頭像

修改密碼

個人課程

個人收藏

課程機構

顯示相關課程機構信息,提供刪除功能

授課教師

顯示相關教師信息,提供刪除功能

公開課程

顯示相關課程信息,提供刪除功能

個人消息

後臺管理系統

左側爲各個表的選項欄

修改用戶

增長、修改課程信息

結語

這只是簡單的記錄,後期有時間會更新具體實現相關的文章,盡請期待!

相關文章
相關標籤/搜索