項目技術規格說明書
簡述
網站整體結構
數據庫技術
在alpha階段,我們使用sqlite作為數據庫。在beta階段時,我們將其移植到MySQL。
前端技術
前端框架我們打算繼續沿用之前項目所采用的bootstrap框架,對頁面進行完善和重構設計。之前項目中所采用的部分JavaScript可以繼續使用,在此基礎上進行更多JavaScript的編寫。
后端技術
這個項目是接手學長的項目,考慮到該項目的后端框架使用的是Django,我們也沒有理由更換新的框架。
不僅如此Django具有以下特點:
- 功能完善、要素齊全:該有的、可以沒有的都有,自帶大量常用工具和框架,無須你自定義、組合、增刪及修改。
- 完善的文檔:經過十多年的發展和完善,Django有廣泛的實踐案例和完善的在線文檔。開發者遇到問題時可以搜索在線文檔尋求解決方案。
- 強大的數據庫訪問組件:Django的Model層自帶數據庫ORM組件,使得開發者無須學習其他數據庫訪問技術(SQL、pymysql、SQLALchemy等)。
- 靈活的URL映射:Django使用正則表達式管理URL映射,靈活性高。新版的2.0,進一步提高了URL編寫的優雅性。
- 豐富的Template模板語言:類似jinjia模板語言,不但原生功能豐富,還可以自定義模板標簽,並且與其ORM的用法非常相似。
- 自帶后台管理系統admin:只需要通過簡單的幾行配置和代碼就可以實現一個完整的后台數據管理控制平台。
- 完整的錯誤信息提示:在開發調試過程中如果出現運行錯誤或者異常,Django可以提供非常完整的錯誤信息幫助定位問題。
前端技術規格
前端分為主頁,登陸界面,注冊界面,個人信息,搜索結果頁面,課程信息頁面,評論頁面七個部分。主頁、登錄、注冊和個人信息將常駐,各個頁面均可點擊查看。其具體關系如下圖:
后端技術規格
數據庫結構規格
數據庫ER圖如下所示:
接口規格
接口名 | 模式 | 傳入需求 | 傳出內容 | 說明 |
---|---|---|---|---|
sign_up | POST | 至少包含 username, password, mail 三個鍵 | {'status':1,'length':1,'body':{'message': "新建用戶{0}成功".format(username)},errMsg='',} | 注冊 |
update_user | POST | 必須包含username, role, gender, selfintroduction | {'status':1,'length':1,'body':{'message': "用戶{0}信息更新成功".format(username)},errMsg='',} | 更新用戶信息 |
search_teacher | GET | 教師姓名,空為任意教師 | {'status': 1,'length': len(teacher_list),'body': retlist,errMsg=""} | retlist=[{'name': self.name, 'website': self.website,'title': self.title},...] |
search_course | GET | 同上,搜索課程 | {'status': 1,'length': len(course_list),'body': retlist,errMsg=""} | retlist=[{'name': self.name, 'website': self.website,'course_ID': self.course_ID,'description': self.description,'course_type': self.course_type,'credit': self.credit},...] |
search_user | GET | 同上,搜索用戶 | {'status': 1,'length': len(user_list),'body': retlist,errMsg=""} | retlist=[{'username': self.username,'mail': self.mail,'role': self.role, 'gender': self.gender,'self_introduction': self.self_introduction},...] |
add_teacher | POST | 包含新增教師的一些信息,至少包括name,title鍵,website鍵可選 | {'status': 1,'length': 1,'body': {'message': "新建教師{0}成功".format(name) }}或失敗 | 增加教師信息 |
add_course | POST | 包含新增課程的一些信息,包括以下鍵:name:名字 website:網站 courseID:ID description:描述 courseType:類型 credit:學分 | {'status': 1, 'length': 1,'body': {'message': "新建課程{0}成功".format(name)}} | 增加課程信息 |
add_teachCourse | POST | 包含新增課程的一些信息,包括以下鍵: teacherList 教師列表 course 課程列表 department 部門列表 | {'status': 1,'length': 1, 'body': {'message': "新建授課信息成功"}} | 增加教師授課信息 |
make_comment | POST | username,course_ID,content | 成功:{'status':1,'length':1,'body':{'message': "評論發布成功".format(username)},errMsg='',}失敗:{'status'=-1} | 發表評論 |
get_comment | GET | course_ID | 在body中返回一個list,每項包含rdict['username']=i.user.username,rdict['content']=i.comment.content ,rdict['editTime']=i.comment.edit_time,rdict['createTime']=i.comment.create_time,rdict['commentID']=i.id | 獲得評論信息 |
edit_comment | POST | comment_ID,content | {'status': 0,'length': 1, 'body':{'username':username}} | 編輯評論 |
sign_in | POST | 至少包含 username, password 兩個鍵 | {'status': 0,'length': 1,'body':{'username':username}} | 用戶登陸 |
update_teacher | POST | 包含修改教師的一些信息 | 成功:{'status':1,'length':1,'body':{'message': "教師{0}信息更新成功".format(username)},errMsg='',}失敗:{'status'=-1} | 更新教師信息 |
update_course | POST | 包含修改課程的一些信息 | 成功:{'status':1,'length':1,'body':{'message': "課程{0}信息更新成功".format(username)},errMsg='',}失敗:{'status'=-1} | 更新課程信息 |
update_teachCourse | POST | 包含修改教師授課的一些信 | 成功:{'status':1,'length':1,'body':{'message': "授課信息{0}信息更新成功".format(username)},errMsg='',}失敗:{'status'=-1} | 更新教師授課信息 |
select_course | POST | 學生id,選課(教師授課)id | 成功:{'status':1,'length':1,'body':{'message': "添加課程關注成功".format(username)},errMsg='',}失敗:{'status'=-1} | 學生選課 |
unselect_course | POST | 學生id,退課(教師授課)id | 成功:{'status':1,'length':1,'body':{'message': "移除關注成功".format(username)},errMsg='',}失敗:{'status'=-1} | 學生退課 |
rank_course | POST | 學生評價課程(分數,兩個ID) | 成功:{'status':1,'length':1,'body':{'message': "評分更新成功".format(username)},errMsg='',}失敗:{'status'=-1} | 學生評價課程 |
get_rank | GET | 目標課程ID | 成功:{'status':1,'length':1,'body':{‘rank’:評分},errMsg='',}失敗:{'status'=-1} | 獲得某節課的成績 |