简易OJ(福州大学软件工程实践作业)
Github链接:https://github.com/YjjLinnn/SimpleOJ
1. 在开始实现程序之前,在下述PSP表格记录下你估计将後序的各个模块的开发上耗费的时间。然 后在你实现煮序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。
| PSP | Personal Software Process tages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 30 |
| Estimate | 估计这个任务需要多少时间 | 30 | 30 |
| Development | 开发 | 255 | 260 |
| Analysis | 需求分析 (包括学习新技术) | 30 | 30 |
| Design Spec | 生成设计文档 | 10 | 10 |
| Design Review | 设计复审 | 5 | 5 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
| Design | 具体设计 | 20 | 20 |
| Coding | 具体编码 | 90 | 90 |
| Code Review | 代码复审 | 30 | 30 |
| Test | 测试(自我测试,修改代码,提交修改) | 60 | 60 |
| Reporting | 报告 | 30 | 30 |
| Test Report | 测试报告 | 10 | 10 |
| Size Measurement | 计算工作量 | 10 | 10 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 10 |
| 合计 | 315 | 320 |
2.记录每周的学习条(见附录)
| 第N次 | 新增代码(行) | 累计代码(行) | 本次学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
|---|---|---|---|---|---|
| 1 | 100 | 100 | 8 | 8 | 学会了如何限制登录后使用功能 |
| 2 | 100 | 200 | 8 | 16 | 学会了注册账号 |
| 3 | 100 | 300 | 8 | 24 | 学会了代码评测 |
| 4 | 100 | 400 | 8 | 32 | 学会了前后端的链接 |
| 5 | 100 | 500 | 8 | 40 | 学会了网站测试 |
3.评测模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间 关系如何,关键函数是否需要画出瞧图?说明你的设计的关键(不必列出源代码),以及独到之 处。
大体可分为四步:
- 利用js向后端judge.php发起评测请求,并将用户代码作为参数进行发送
- 用GET方式获取到js从前端传递过来的代码后,利用php的文件操作将其写入本地的文件中
- php执行外部指令,调用写好的python评测脚本,python评测脚本会找到刚刚写入代码的文件,并用编译器将其编译为可执行程序,随后开一个子进程,将子进程的输入重定向到测试样例的输入文件,得到子进程的输出后与测试样例的的输出文件进行比对,然后返回比对结果。
- php获取到python脚本传回来的比对结果后,再将其传递给前端的js,由js控制html来向用户反馈评测结果。
4.评测模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测式依据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。
- 创建请求对象
- 设置回调函数
- 防止中文乱码,对获取到的代码进行编码
- 发生请求
|
|
5.评测模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择T•单元 测试样例发布在博客中,并指明错误对应的场景。
- 在创建请求对象的时候,为了防止浏览器兼容性的问题进行了异常处理,如果浏览器支持创建ActiveXObject 对象,否则创建XMLHttpRequest对象
6.遇到的困难及解决方法。
- 在搭建apache、PHP和Mysql的时候因为不熟悉系统不会搭建,就在博客上寻找别人的教程
7.在本次作业的当中的感想与收获。
- 一个人真的是太难了,一个人的团队,只存在和过去某个时间的自己或者现在的自己的沟通,沟通成本无限降低,也不需要同步工作进度,没有人会来催进度,一切尽在掌握之中。
- 除了不小心掉坑,代码风格一致,代码质量高,单元测试丰富。目标清晰,没有讨论和争论。一个人疲惫且安逸66




浙公网安备 33010602011771号