一. 需求分析
在计算机飞速发展的今天,传统的人工出题方式已经接近淘汰。人工出题效率低下,既费时也耗力,而自动生成题目的系统就很好的解决了这个问题,在较短时间生成一套习题。它既可以控制难度也可以控制出题的数量,极大地方便了出题人。
二. 功能设计
1.基础功能
自动生成加减乘除四则运算
2.拓展功能
- 题目数量可控
- 操作数存在可控范围
- 操作数是否含负数
三. 设计实现
我使用C语言实现了自动生成四则运算题,使用了一个主函数和自动生成随机数函数,其包含在头文件<stdio.h>、<stdlib.h>、 <time.h>中。
四. 测试运行
五. 主要代码
1.可以自己控制出题的数量。
1 printf("\n请输入需要生成的题目数量: "); 2 scanf("%d",&N);
2.随机生成运算数,并且判断是否可以为负数。
for(i=0;i<N;i++) { if(m==2) { a=rand()%100; b=rand()%100; } else if(m==3) { a=rand()%100*(rand()%100>0.5?1:-1); b=rand()%100*(rand()%100>0.5?1:-1); }
3.随机生成运算符。
k=rand()%4+1; printf("%d",a); switch(k) { case 1:printf("+");break; case 2:printf("-");break; case 3:printf("*");break; case 4:printf("/");break; }
4人为控制计算结果,避免出现负数。
if(a<b)//判断两个数的大小,避免出现结果为负数 { int m=0; m=a; a=b; b=m; }
5. 导出到外部文件result.txt
FILE *fp=fopen("result.txt","w"); fprintf(fp,"%d+%d=\n",a,b);
六. 总结
一个高效率的软件离不开模块化的程序设计,本程序主要通过了如下几个模块实现功能:
1.随机生成运算数a,b,随机生成运算符+、-、*、\。
2.判断运算数是否可以为负数。
3.判断结果是否为负数。
4.文件导出。
七.PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 10 | 15 |
·Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 50 | 70 |
Development | 开发 | 80 | 98 |
· Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | · 生成设计文档 | 15 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 5 | 6 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 2 | 3 |
· Design | 具体设计 | 10 | 15 |
· Coding | 具体编码 | 40 | 45 |
· Code Review | · 代码复审 | 6 | 9 |
·Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 10 | 14 |
· Test Report | · 测试报告 | 4 | 2 |
·Size Measurement | 计算工作量 | 5 | 5 |
·Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 5 | 6 |