结对编程项目——自动出卷系统上线版
paperGenerator-full version
开发人员:何沁泽(后端) 谢英祺(前端)
后端项目说明
本项目已经挂载到服务器上,请直接访问如下地址访问项目👇
服务器地址:
测试用账号(你也可以直接注册自己的账号):
用户名:谢英祺
密码:Xyq123
paper_generator.sql:sql文件,作为导入数据库所用
paperGenerator-back:出卷系统后台
出卷系统
框架:springboot+Mybatis
后端架构和代码说明:
本次结对编程主要参考的是我的个人项目代码,因此后端由我来编写,自动中小学生出卷系统后台架构采用springboot+MyBatis-plus,包含出题模块,登录模块,注册模块,验证码模块,更新(修改密码)模块
设计整体采用一请求一响应的方式
出题模块:
url:http://localhost:9090/task?state=高中 方法:GET
传入参数方法:Query
返回数据示例:
{
"code": "0",//0代表成功
"msg": "成功",
"data": {
"id": 4,
"num": null,//出题数,此字段暂时没用
"state": null,//小学/初中/高中
"content": "sin64*(15+9)*16=",//题目内容
"answerA": "345.136",//A选项
"answerB": "345.146",
"answerC": "344.886",
"answerD": "347.136",
"correct": "A"//正确选项
}
}
本模块是复用个人项目的重点,总体复用了个人项目的出题逻辑,改变了查重逻辑,通过数据库进行查重,通过task类进行题目的出题,然后新增了几个模块,将题目的答案计算出来并保留三位小数,然后随即放在四个选项中,并将正确的选项和答案记录下来。
实机演示:
登录模块:
url:http://localhost:9090/user/login 方法POST
传入参数方法:JSON
{
"username": "何沁泽大帅逼",
"password": "985619714"
}
返回数据示例:
{
"code": "0",
"msg": "成功",
"data": {
"id": 11,
"stage": null,
"username": "何沁泽大帅逼",
"password": "985619714",
"state": null
}
}
登录模块使用post请求,后端访问数据库查证并放行
实机演示:
更新(修改密码模块):
url:http://localhost:9090/user 方法PUT
传入参数方法:JSON
{
"id": 11,//要修改的用户id
"username": "何沁泽大帅逼",//将用户名修改为何沁泽大帅逼
"password":"985619714"//将密码修改为985619714
}
返回数据示例:
{
"code": "0",
"msg": "成功",
"data": null
}
更新模块使用put请求通过id访问数据库并修改用户信息
实机演示:
注册模块:
url:http://localhost:9090/user/register 方法POST
传入参数格式:JSON
{
"username": "卢永昌牛逼",
"password": "123",
"confirm": "123"
}
返回数据示例:
{
"code": "0",
"msg": "成功",
"data": null
}
验证码模块:
采用榛子云短信,后端调用api接口在前端注册界面使用
实机演示:
总结经验教训:
前后端分离式开发需要良好的沟通和提前商量好接口,最好是后端先写完之后将接口文档交付给前端,其次接口文档需要尽可能详细,详细到发请求方式,请求体结构,数据格式和严谨的说明。
由于我的搭档十分优秀,因此我们的沟通十分流畅,开发过程中也没有遇到特别困难的点,但这次开发依然是十分珍贵的经验,这次开发让我们了解了前后端分离式开发的具体流程,以及挂载服务器,申请短信验证码的详细步骤,学到了很多。