20194643 自动生成四则运算第一版报告
1.需求分析
解决小学老师给学生出题,(+-*/)四则运算.
2. 功能设计
基本功能
(1)题目数量可定制
(2)控制是否包含乘法和除法
(3)操作数数值范围可控(如操作数 在100以内 还是1000以内)
(4)操作数是否含负数
扩展功能
(1)带答案供老师参考
3. 设计实现
4. 测试运行
5. 粘贴自己觉得比较独特的或满意的代码片段,用博客园正确的代码控件来显示。
输出函数,主要功能接受用户需求,输出数据。
void printf_equation(int number,int chengchu,int fanwei,int fushu)
{
FILE *fp=fopen("suanshu.txt","at");
while(1)
{
int result ;
int x1=Number(fanwei,fushu);
char x2=Sign(chengchu);
int x3=Number(fanwei,fushu);
switch(x2)
{
case '+': result =x1+x3;break;
case '-': result =x1-x3;break;
case '*': result =x1*x3;break;
case '/': result =x1/x3;break;
}
if(result<=100&&result>=-100)
{
fprintf(fp,"%d %c %d = %d\n",x1,x2,x3,result);
number--;
}
if(!number)break;
}
char ch;
if((fp=fopen("suanshu.txt","r"))==NULL)
{
printf(" \n 保存失败 \n");
exit(0);
}
else
{
printf(" \n 保存在suanshu.txt成功 \n");
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
操作数函数主要功能控制操作数范围,和正负
int Number(int x,int symbol)
{
if(symbol)
return rand()%x+1 ;
else
{
int flag = rand()%2;
if(flag)
{
return (rand()%x+1)*-1;
}
else
{
return (rand()%x+1);
}
}
}
6. 总结:你设计的程序如何实现软件设计的“模块化”原则。
函数分别实现具体功能
7. 尝试撰写PSP,这个环节重要的是让自己看到自己的估计和实际消耗时间,哪个环节耗时最多,哪个环节估计和实践相差巨大?为什么?
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
2 |
30 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
8 |
5 |
Development |
开发 |
400 |
500 |
·· Analysis |
需求分析 (包括学习新技术) |
6 |
10 |
· Design Spec |
· 生成设计文档 |
5 |
10 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
4 |
10 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
3 |
0 |
· Design |
具体设计 |
10 |
10 |
· Coding |
具体编码 |
36 |
10 |
· Code Review |
· 代码复审 |
7 |
20 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
13 |
10 |
Reporting |
报告 |
9 |
30 |
·· Test Report |
· 测试报告 |
3 |
10 |
· Size Measurement |
计算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
3 |
3 |