一、需求分析
二、功能设计
- 基本功能
- 每个数字定义为一个包含分子、分母、符号的结构体
- 随机生成数字
- 随机生成四则运算符号
- 随机生成括号
- 在重新定义的数字上实现通分、约分、以及加减乘除的基本操作
- 并将统计结果保存到txt文件
- 通过命令行传递参数
三、设计实现
- 整体思路上就是生成表达式后,结果形式使用分数来表示,所以主要在于分子分母的计算以及约分,最后的结果我只记录了一个结果总数。
四、代码说明
void Question_CreateAndPrint(int count, char ** answer, int range) { srand(time(NULL)); for(int i = 0; i < count; i++) { //生成数值 int array[4]; Array_Num_Create(array, range); int tmp = rand()%4; switch (tmp) { case 0: { printf("%d. %d/%d+%d/%d ", i+1, array[0], array[1], array[2], array[3]); int n1 = array[0]*array[3]+array[1]*array[2]; int n2 = array[1]*array[3]; if (n1%n2 == 0) { sprintf(answer[i], "%d", n1/n2); } else { yuefen(n1, n2); sprintf(answer[i], "%d/%d", n1, n2); } break; } case 1: { printf("%d. %d/%d-%d/%d ", i+1, array[0], array[1], array[2], array[3]); int n1 = array[0]*array[3]-array[1]*array[2]; int n2 = array[1]*array[3]; if (n1 > 0) { if (n1%n2 == 0) { sprintf(answer[i], "%d", n1/n2); } else { yuefen(n1, n2); sprintf(answer[i], "%d/%d", n1, n2); } } else if (n1 < 0) { n1*=-1; if (n1%n2 == 0) { sprintf(answer[i], "-%d", n1/n2); } else { yuefen(n1, n2); sprintf(answer[i], "-%d/%d", n1, n2); } } else if (n1 == 0) { sprintf(answer[i], "%d", 0); } break; } case 2: { printf("%d. %d/%d*%d/%d ", i+1, array[0], array[1], array[2], array[3]); int n1 = array[0]*array[2]; int n2 = array[1]*array[3]; if (n1%n2 == 0) { sprintf(answer[i], "%d", n1/n2); } else { yuefen(n1, n2); sprintf(answer[i], "%d/%d", n1, n2); } break; } case 3: { printf("%d. %d/%d/%d/%d ", i+1, array[0], array[1], array[2], array[3]); int n1 = array[0]*array[3]; int n2 = array[1]*array[2]; if (n1%n2 == 0) { sprintf(answer[i], "%d", n1/n2); } else { yuefen(n1, n2); sprintf(answer[i], "%d/%d", n1, n2); } break; } default: break; } } }
五.PSP展示(单位:天)
PSP2.1 |
Personal Software Process Stages |
Time Senior Student |
Time |
|
Planning |
计划 |
1.5 |
1 |
|
· Estimate |
估计这个任务需要多少时间 |
1.5 |
1 |
|
Development |
开发 |
1.2 |
0.8 |
|
· Analysis |
需求分析 (包括学习新技术) |
10分钟 |
10分钟 |
|
· Design Spec |
生成设计文档 |
5分钟 |
0分钟 |
|
· Design Review |
设计复审 |
5分钟 |
0分钟 |
|
· Coding Standard |
代码规范 |
5分钟 |
2分钟 |
|
· Design |
具体设计 |
20分钟 |
20分钟 |
|
· Coding |
具体编码 |
1天 |
0.8天 |
|
· Code Review |
代码复审 |
10分钟 |
5分钟 |
|
· Test |
测试(自我测试,修改代码,提交修改) |
20分钟 |
10分钟 |
|
Reporting |
报告 |
20分钟 |
20分钟 |
|
· |
测试报告 |
5分钟 |
0 |
|
· |
计算工作量 |
5分钟 |
0 |
|
· |
并提出过程改进计划 |
50分钟 |
0 |
|
|
|
|
|
|
六、小结
简单写了一下作业,之前那篇没写实际内容,这篇补上。
最后附上代码地址:https://git.coding.net/helloc14/Demo.git