1.项目地址
2.PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 120 |
Estimate | 估计这个任务需要多长时间 | 10 | 10 |
Analysis | 需求分析(包括学习新技术) | 300 | 300 |
Design Spec | 生成设计文档 | 60 | 120 |
Design Review | 设计复审 | / | / |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 60 | 60 |
Design | 具体设计 | 180 | 180 |
Coding | 具体编码 | 300 | 420 |
Code Review | 代码复审 | 120 | 120 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 240 |
Test Report | 测试报告 | 60 | 60 |
Postmortem&Process Improvement Plan | 事后总结,并提出改进计划 | 180 | 120 |
总计 | 1450 | 1750 |
3.解题思路
此阶段主要实现程序的扩展要求,要求如下:
将程序变成一个Windows图形界面程序,增加倒计时功能,每个题目必须在20s内完成,如果完不成,则得0分并进入下一题。增加“历史记录”功能,把用户做题成绩记录下来,并可以展现历史记录。
进行需求分析可知,此阶段的任务有一下三点:
- 设计并编写图形界面,实现基本做题功能,包括出题、判断正误。
- 增加倒计时功能,限制每题时间为20s。
- 增加做题历史记录功能。
基于前后端分离的思想,后端应该实现可以生成不限数量题目的工具类,并提供接口,每次调用返回一道题目与答案。并且应该保证每次运行程序后生成的所有题目均不相同。前端实现上述的三个需求。
前端部分采用Qt5.12 LTS实现,布局采用QGridLayout以便可以在调整大小的时候依然保证正确的相对位置。但是相应的,这种做法无法采用Qt设计器拖拽实现,所以增加了工作量。
4.设计实现过程
4.1 前后端接口
- 题目的数据结构
题目采用formula
类进行封装,其中包括题目编号,题目与答案,并提供检查输入答案的方法。该类也是前端调用所提供的接口后返回的数据格式。
其声明如下:
class formula
{
public:
int id;//题目编号
string problem;//题目
string answer;//答案
formula();
formula(string P, string A);
formula(const formula& F);
void init();
void init(string P, string A