军舰队-软件工程之现场编程实战
这个作业属于哪个课程 | |
---|---|
一、PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 80 | 120 |
· Design Spec | · 生成设计文档 | 20 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
· Design | · 具体设计 | 30 | 30 |
· Coding | · 具体编码 | 240 | 420 |
· Code Review | · 代码复审 | 30 | 10 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 20 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 30 | 60 |
· Size Measurement | · 计算工作量 | 20 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 45 | 60 |
合计 | 575 | 810 |
二、GitHub&&接口文档链接
https://github.com/m1nme/votesystem
https://www.showdoc.com.cn/1123459570872814?page_id=5728959415008677
三、组员职责分工
四、提交日志截图
五、程序运行截图
后端代码测试
以下测试均为通过POSTMAN测试部署在服务器上动态可用的接口
学生端
学生端登陆功能测试
- 未登录无法访问其它页面
-
登陆
-
登陆后可以正常访问其它接口
-
学生获取投票列表功能测试
-
学生获取投票列表
学生获取某一具体投票内容
-
学生获取某一具体投票内容
学生投票
-
学生投票
-
当投票给自己时返回错误
-
重复投票
学生获取投票结果
-
学生获取投票结果
教师端
教师登陆
-
教师登入
教师新建投票
-
教师新建投票
教师获得投票列表
-
教师获得投票列表
教师获得某一投票结果数据
-
教师获得某一投票结果详细数据
教师删除某一个投票
-
教师删除某一个投票
系统测试
教师端
-
教师登陆,从首页(http://106.54.91.96:8080/static/teacher/teacher_login.html)进入,或者从学生端首页点击管理员登陆即可进入教师端登陆界面
-
登陆成功后将看到所有投票的列表
-
可以对列表中的投票进行查看或者删除,同时可以在左上角新建投票,我们在这里新建一个投票试试
点击提交之后就可以在投票列表中看到我们刚刚新建的投票
我们尝试将第一个测试投票删除
-
点击查看就可以看到具体的投票详情及投票结果,教师端可以具体看到每一支队伍有哪一些人给他投票
学生端
-
进入首页(http://106.54.91.96:8080/static/student/student_login.html),输入学号姓名和组号进行登陆
-
登陆完之后就进入投票列表页面,可以查看当前存在的所有投票
-
点击查看进入投票,查看投票详情
-
首先,后端添加了验证。无法为自己的队伍投票!
-
其次,只能根据投票类型进行投票,所选小组不能超过限选组数
-
以及投过一次票之后就不能进行第二次投票
-
投票成功之后就可以查看投票的结果,学生端只能够看到最终的投票数,无法查看具体投票内容
六、程序运行环境
CentOS7+Python+Django+sqlite3
七、贡献分比例
八、成员总结
应俊杰:
这次限时编程对我来说印象深刻,虽然题目看起来简单,但是做起来还是感到困难,我来简要说明一下我们遇到的问题
- 1.分工问题
我们队伍9人在场7人,2位因为种种原因来不了,在我们紧张刺激的讨论之后,把这个投票系统分成了三个部分:学生网页端,管理员网页端、后端,在布置好大概的方向、要实现的功能之后,我让前端们去实现前端样式、后端实现登录注册的功能,而我来写前后端对接的 文档 - 2.跨域问题
在开发中,前端的样式开发大家都没问题,而当对接的时候,大家就都头疼了,因为后端用 django 的自带鉴权的模块(需要通过前端传 cookie ) 这可难倒了我们,而且我们的成员大部分甚至不会前后端交互,尽管后端完成了登入注册接口、但我们仍然卡在了对接上,整个上午都停滞不前 - 3.对跨域问题的解决方案和几种尝试
1).后端配置 后端修改跨域信息使任何请求都可以被后端接受但我们采用原生的 ajax 构造的 http 请求无能为力,只能实现登录、后面的鉴权都做不了。
2). nginx 反向代理,这个最靠谱的方式,竟然也失败了,我们头疼了半天,后面想出了原因 当时我是把 nginx 配置在前端这里 而静态文件构造的 ajax 请求和本地的跨域还是会冲突 解决办法应该是把静态文件放进nginx里做到可以访问,才能解决跨域问题
3). 迫于无奈,我们只能暂时取消前后端分离的开发方式、前端开发者要同时跑后端代码,这样在本地进行开发,最后我们是通过这种方式解决了问题
4). 反思 下次再也不会用 cookie 了 ,jwt 不香吗? 总之我们学习到了很多,成员们对前后端分离都有了大概的了解
陈龙辉:
这一次的限时编程我主要是负责后端的编写。由于代码写的不熟练,导致现场的三小时只写了个注册登陆。还是太菜了,不过最终还是花了十个小时左右写完了后端。也算是比较圆满的完成的这次的任务。菜是原罪。不过这次限时编程也学到了不少东西,为接下来的小程序后端的编写做了一定的铺垫。冲冲冲!
陈凯强:
无助。被分到了学生端前端的页面设计,在最开始面向CSDN和百度的情况下写出了第一版的页面(但最后被舍弃了),在编码过程中似乎只能给大佬们端茶递水揉肩捶腿,希望在今后的实践中能加紧学习,不再拖队伍后腿,辛苦队友们了。
刘国强:
look了一上午组长和队友的编程,分配到了教师端的查看结果的页面,但是由于框架使用不够熟练,最后还是要靠组长来完成我的任务,深刻认识到了自己的不足,不过还是对接下来的任务抱有期待,希望能够帮上团队的忙,分担队友的压力.最后表示组长和大家辛苦了- -
王延鹏:
这次编程任务我要写的是新建投票的网页,在这个任务中我学习了一下如何使用bootstrap框架,虽然只会复制粘贴组件,但是至少对它有了一点点认知。虽然最后只写了一点界面和基本的函数。
总结是平时要多学习,不然短时间内自己肯定做不好;同时也要感谢组里的大佬们,他们对这次任务的贡献非常大。
杨静:
尝试利用 JQuery 通过后台获取数据遍历到前端,虽然没有成功,学到了很多知识,初步认识了ajax,进一步学习了JQuery、JavaScript等等,深刻认识到自己还有很大的不足,需要学习的还有很多,还要更加努力,不拖团队的后腿。
张雨晗:
这次软工限时编程总体还是很有挑战性的,主要是之前也并没有团队开发的经。我主要是负责前端(学生端)的一些页面设计,由于时间紧张,再加上对于html和css,js掌握不是那么强,所以在上机的时间变成了面向csdn的编程,结果做出来的网页虽然能用,但是美观性大打折扣,框架什么的也没有考虑,全是大佬在带飞。接下来就要阿尔法冲刺了,希望小程序的前端能够顺顺利利,自已也能从前端的工作中有所收获吧。