很久沒更新博客了,最近一個月都在忙學校的課程設計,那就在這裏記錄一下吧!前端
數據庫系統概述課程設計,本小組設計了一個在線教育網站--」魚書在線「,爲了儘量的完善該網站的功能,咱們對市面上的大部分在線教育網站進行了調查研究,同時咱們也分紅前期和後期對該網站進行了需求分析調查。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;頁面上部分顯示課程標題、課程難度、課程學習時長、課程學習人數;
右側:資料下載,將課程後臺上傳的資源文件進行展現,並提供下載連接,點擊便可下載資料;
講師提示:顯示該課程的講師頭像、名字、工做職位、還有課程須知、老師告訴你能學到什麼;
右下角一欄:該課程的同窗還學過什麼課程
章節信息欄:顯示課程公告、課程章節信息、每一個章節名稱以及每一小節的時長,用戶點擊每一個小節能夠跳到相關視頻頁面。
課程評論欄:用戶能夠在該頁面提供相關評論,下方會實時更新用戶評論,顯示會顯示用戶頭像、用戶暱稱、評論內容、評論時間。
左側以列表的形式顯示教師信息,右側顯示教師排行榜
教師列表頁顯示全部信息,可分頁;
每一行顯示一位教師,展現其頭像、姓名、工做年限、工做職位、就任公司、年齡、教學特色等
點擊該行還能夠跳轉至該教師詳情詳情頁
教師詳情頁除了顯示該教師基本信息,還顯示該教師在平臺的所有課程,顯示該用戶是否收藏該教師
右側顯示該教師所在的授課機構、用戶是否收藏機構
下側顯示教師排行榜。
用戶能夠根據
機構類別
、所在地區
進行賽選用戶能夠向平臺諮詢相關課程
用戶能夠查看課程機構排名
顯示相關課程機構信息,提供刪除功能
顯示相關教師信息,提供刪除功能
顯示相關課程信息,提供刪除功能
左側爲各個表的選項欄
這只是簡單的記錄,後期有時間會更新具體實現相關的文章,盡請期待!