简易OJ(福州大学软件工程实践作业)

Github链接:https://github.com/YjjLinnn/SimpleOJ

B站链接:https://b23.tv/5oUMgK

 

1. 在开始实现程序之前,在下述PSP表格记录下你估计将後序的各个模块的开发上耗费的时间。然 后在你实现煮序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。

 

PSPPersonal 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.评测模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间 关系如何,关键函数是否需要画出瞧图?说明你的设计的关键(不必列出源代码),以及独到之 处。

大体可分为四步:

  1. 利用js向后端judge.php发起评测请求,并将用户代码作为参数进行发送
  2. 用GET方式获取到js从前端传递过来的代码后,利用php的文件操作将其写入本地的文件中
  3. php执行外部指令,调用写好的python评测脚本,python评测脚本会找到刚刚写入代码的文件,并用编译器将其编译为可执行程序,随后开一个子进程,将子进程的输入重定向到测试样例的输入文件,得到子进程的输出后与测试样例的的输出文件进行比对,然后返回比对结果。
  4. php获取到python脚本传回来的比对结果后,再将其传递给前端的js,由js控制html来向用户反馈评测结果。

 

4.评测模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测式依据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。

  1. 创建请求对象
  2. 设置回调函数 
  3. 防止中文乱码,对获取到的代码进行编码
  4. 发生请求

 

 

5.评测模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择T•单元 测试样例发布在博客中,并指明错误对应的场景。

  • 在创建请求对象的时候,为了防止浏览器兼容性的问题进行了异常处理,如果浏览器支持创建ActiveXObject 对象,否则创建XMLHttpRequest对象

 

6.遇到的困难及解决方法。

  • 在搭建apache、PHP和Mysql的时候因为不熟悉系统不会搭建,就在博客上寻找别人的教程

 

7.在本次作业的当中的感想与收获。

  • 一个人真的是太难了,一个人的团队,只存在和过去某个时间的自己或者现在的自己的沟通,沟通成本无限降低,也不需要同步工作进度,没有人会来催进度,一切尽在掌握之中。
  • 除了不小心掉坑,代码风格一致,代码质量高,单元测试丰富。目标清晰,没有讨论和争论。一个人疲惫且安逸66
posted @ 2020-12-28 22:08  巨嘴怪兽  阅读(127)  评论(0)    收藏  举报