项目技术规格说明书
简述
网站整体结构
数据库技术
在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} | 获得某节课的成绩 |