【软件工程Ⅱ】作业四 |个人项目-小学四则运算 “软件”之初版(C语言)
本次作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
本次作业代码的github地址:https://github.com/Molly134/lianxi.git
一、题目要求
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:
任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11
二、小学四则运算 “软件”之初版
1.需求分析
1.1 四则运算需求分析
2.系统流程图
1.2 系统流程图
3.代码实现
本次作业是用C语言来实现的,其代码以及可运行程序已经上传至github的arithmetic(1)文件夹中。
代码实现:
#include<stdio.h> #include<math.h> #include<windows.h> int right=0; int wrong=0; void add() { //加法运算 int a,b,c,d; a=rand()%100; b=rand()%100; c=rand()%100; printf("请回答:\n\t\t %d + %d + %d = ",a,b,c); scanf("%d",&d); if(a+b+c==d) { printf("回答正确!\n"); right++; } else { printf("回答错误!\n"); wrong++; } } void minus() { //减法运算 int a,b,c,d; a=rand()%100; b=rand()%100; c=rand()%100; printf("请回答:\n\t\t %d - %d - %d = ",a,b,c); scanf("%d",&d); if(a-b-c==d) { printf("回答正确!\n"); right++; } else { printf("回答错误!\n"); wrong++; } } void multiply() { //乘法运算 int a,b,c,d; a=rand()%100; b=rand()%100; c=rand()%100; printf("请回答:\n\t\t %d * %d * %d = ",a,b,c); scanf("%d",&d); if(a*b*c==d) { printf("回答正确!\n"); right++; } else { printf("回答错误!\n"); wrong++; } } void divide() { //除法运算 int a,b,c,d; a=rand()%100; b=rand()%100; c=rand()%100; printf("请回答:\n\t\t %d / %d / %d = ",a,b,c); scanf("%d",&d); if(a/b/c==d) { printf("回答正确!\n"); right++; } else { printf("回答错误!\n"); wrong++; } } void main() { int choise; int con=0; int i=0,j=0; printf("\n\t\t\t欢迎进入简易四则运算\n\n"); while(1) { printf("请选择:\n"); printf("\t\t\t 加法运算(请输入1)\n"); printf("\t\t\t 减法运算(请输入2)\n"); printf("\t\t\t 乘法运算(请输入3)\n"); printf("\t\t\t 除法运算(请输入4)\n"); printf("\t\t\t 退出运算(请输入5)\n"); if(con==0) scanf("%d",&choise); switch(choise) { case 1://加法 printf("请输入题目数目:"); scanf("%d",&i); if(i>0) { for(j=0; j<i; j++) { add(); } } else printf("输入错误,请重新输入!"); break; case 2://减法 printf("请输入题目数目:"); scanf("%d",&i); if(i>0) { for(j=0; j<i; j++) { minus(); } } else printf("输入错误,请重新输入!"); break; case 3://乘法 printf("请输入题目数目:"); scanf("%d",&i); if(i>0) { for(j=0; j<i; j++) { multiply(); } } else printf("输入错误,请重新输入!"); break; case 4://除法 printf("请输入题目数目:"); scanf("%d",&i); if(i>0) { for(j=0; j<i; j++) { divide(); } } else printf("输入错误,请重新输入!"); break; case 5: return; } printf("\n\t\t\t继续运算?(请输入1)\n"); printf("\n\t\t\t重新选择?(请输入2)\n"); printf("\n\t\t\t退出运算?(请输入3)\n"); scanf("%d",&con); if(con==1) con=1; else if(con==2) con=0; else if(con==3) break; else printf("抱歉!,你输入的指令有误!请重新输入!\n"); } printf("您总共完成了 %d 道题\n正确 %d 道\n错误 %d 道\n",right+wrong,right,wrong); }
4.运行结果
1.3 开始界面
1.4 加法运算
1.5 减法运算
1.6 乘法运算
1.7 除法运算
1.8 结束界面
三、个人软件过程耗时估计与统计表(注:因为此项目还未完成,所以此表暂空)
PSP2.1 | Personal Software Process Stages | Time |
Planning | 计划 | |
·Estimate | 估计这个任务需要多少时间 | |
Development | 开发 | |
·Analysis | 需求分析 (包括学习新技术) | |
·Design Spec | 生成设计文档 | |
· Design Review | 设计复审 | |
· Coding Standard | 代码规范 | |
· Design | 具体设计 | |
· Coding | 具体编码 | |
· Code Review | 代码复审 | |
· Test | 测试(自我测试,修改代码,提交修改) | |
·Reporting | 报告 | |
· | 测试报告 | |
· | 计算工作量 | |
· | 并提出过程改进计划 |