软件工程结对作业01
2016-03-26 12:34
225 查看
一.设计思路
1.输入一个数控制题目个数
2.输入一个数控制取值范围(小于100)
3.输入一个数控制是否有正负数
4.输入一个数控制是否有余数
5.输入一个数控制是否有乘除法
6.输入一个数控制是否有括号
7.生成一个随机数,控制每道题的参数个数
8.在一个for循环里,生成随机数,如果生成的随机数大于输入的取值,则重新输入,否则进行下一步
9.用if语句分模块,分别判断是否有正负号,余数,乘除法,括号的情况
10.If是有负数的情况,要考虑生成的运算符是减号的情况,这种情况下,要变成加号,同时负号去掉
11.生成随机数(0-3),用于控制运算符,当运算符是除号时,要考虑除法有无余数,并记录除号的位置
12.If语句执行有乘除法的情况,并计算
13.If语句执行只有有加减法的情况,并计算
14.有括号的情况,如果只生成两个数,自动不加括号,若多个参数,则对符号位置设置随机数,进行括号位置的确定
15.计算时,有括号先计算括号里面的*/,在计算+-,然后计算括号外面的,还是先*/,在+-
16.计算式输出后,输入结果,精确到整数,不足1不进位
17.输入的结果与计算机储存的结果比较,如果相等,则正确,正确计数器+1,若错误,则错误计数器+1
18.For循环用户输入的次数
二.源代码:
三.运行结果截图
四.按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志
周活动总结表
姓名:牛俊燕 日期:2016.3.26
学生:牛俊燕 日期:3/26/2016
教师:王建民 课程:软件工程概论
缺陷记录日志示例
学生:牛俊燕
日期:3/26/2016
教员:王建民老师
程序号:4,5
五.一起合作的照片
1.输入一个数控制题目个数
2.输入一个数控制取值范围(小于100)
3.输入一个数控制是否有正负数
4.输入一个数控制是否有余数
5.输入一个数控制是否有乘除法
6.输入一个数控制是否有括号
7.生成一个随机数,控制每道题的参数个数
8.在一个for循环里,生成随机数,如果生成的随机数大于输入的取值,则重新输入,否则进行下一步
9.用if语句分模块,分别判断是否有正负号,余数,乘除法,括号的情况
10.If是有负数的情况,要考虑生成的运算符是减号的情况,这种情况下,要变成加号,同时负号去掉
11.生成随机数(0-3),用于控制运算符,当运算符是除号时,要考虑除法有无余数,并记录除号的位置
12.If语句执行有乘除法的情况,并计算
13.If语句执行只有有加减法的情况,并计算
14.有括号的情况,如果只生成两个数,自动不加括号,若多个参数,则对符号位置设置随机数,进行括号位置的确定
15.计算时,有括号先计算括号里面的*/,在计算+-,然后计算括号外面的,还是先*/,在+-
16.计算式输出后,输入结果,精确到整数,不足1不进位
17.输入的结果与计算机储存的结果比较,如果相等,则正确,正确计数器+1,若错误,则错误计数器+1
18.For循环用户输入的次数
二.源代码:
#include<iostream> #include<ctime> #include<cstdlib> using namespace std; void main() { int num; //输入题目个数 int rnum; //输入取值范围 int zfnum; //输入是否有正负数 int ys; //输入是否有余数 int fhn; //输入是否有乘除法 int kh; //输入是否有括号 cout<<"请输入题目个数:"<<endl; //输入提示 cin>>num; //输入题目个数 cout<<"请输入取值范围:(小于100)"<<endl; //输入提示 cin>>rnum; //输入取值范围 cout<<"请输入是否有正负数:(1.有 2.没有)"<<endl; //输入提示 cin>>zfnum; //输入是否有正负数 cout<<"除法是否有余数:(3.有 4.没有)"<<endl; //输入提示 cin>>ys; //输入是否有余数 cout<<"请输入是否有乘除法:(5.有 6.没有)"<<endl; //输入提示 cin>>fhn; //输入是否有乘除法 cout<<"请输入是否有括号:(7.有 8.没有)"<<endl; //输入提示 cin>>kh; //输入是否有括号 int sz[10]; int jg,zhjg; int n1=0; int n2=0; int f=0; //正负数的数字表示 int fhnum=0; //运算符号的数字表示 char zf[10]={'+'}; //正负数的符号表示 char fh[10]; //运算符号的符号表示 int jl; //记录除法的位置 int kh1; //记录括号的位置 srand(time(0)); for(int l=0;l<num;l++) { int sznum=rand()%9+2; //每道题的数字个数 2-10 for(int i=0;i<=sznum;i++) //生成数字 { sz[i]=rand()%100+1; for(;;) //控制数的范围 { if(sz[i]>rnum) sz[i]=rand()%100+1; else break; } if(zfnum==1) //计算有负数 f=rand()%2; if(f==1) //负数 zf[i]='-'; if(zf[i]=='-') sz[i]=sz[i]*(-1); } for(int i=0;i<sznum;i++) //生成运算符号 { if(fhn==5) //计算有乘除法 { fhnum=rand()%4; if(fhnum==0) fh[i]='+'; if(fhnum==1) fh[i]='-'; if(fhnum==2) fh[i]='*'; if(fhnum==3) { fh[i]='/'; if(ys==3) //计算除法时有余数 { jl=i; //确定除法符号的位置 for(;;) { if(sz[i]%sz[i+1]!=0) break; else { sz[i]=rand()%100+1; sz[i+1]=rand()%100+1; } } } if(ys==4) //计算除法时没有余数 { jl=i; //确定除法符号的位置 for(;;) { if(sz[i]%sz[i+1]!=0) { sz[i]=rand()%100+1; sz[i+1]=rand()%100+1; } else break; } } } } if(fhn==6) //计算无乘除法 { fhnum=rand()%2; if(fhnum==0) fh[i]='+'; if(fhnum==1) fh[i]='-'; } } cout<<l+1<<": "<<sz[0]; if(sznum==2) //如果一个题只有2个数字时不加括号 kh=8; if(kh==7) //有括号时 { kh1=rand()%(sznum-2)+1; //对符号位置设置随机数,进行括号位置的确定 for(int i=0;i<kh1-1;i++) { cout<<fh[i]<<sz[i+1]; } cout<<fh[kh1-1]<<"("<<sz[kh1]<<fh[kh1]<<sz[kh1+1]<<")"; for(int i=kh1+1;i<sznum;i++) { cout<<fh[i]<<sz[i+1]; } jg=sz[0]; //计算括号里的结果 if(fh[kh1]=='+') { sz[kh1]=sz[kh1]+sz[kh1+1]; sz[kh1+1]=0; } if(fh[kh1]=='-') { sz[kh1]=sz[kh1]-sz[kh1+1]; sz[kh1+1]=0; } if(fh[kh1]=='*') { sz[kh1]=sz[kh1]*sz[kh1+1]; sz[kh1+1]=1; } if(fh[kh1]=='/') { sz[kh1]=sz[kh1]/sz[kh1+1]; sz[kh1+1]=1; } //先算*/ for(int i=0;i<sznum;i++) { if(fh[i]=='*') { sz[i]=sz[i]*sz[i+1]; sz[i+1]=1; } if(fh[i]=='/') { sz[i]=sz[i]/sz[i+1]; sz[i+1]=1; } } //最后+ - for(int i=0;i<sznum;i++) { if(fh[i]=='+') jg=jg+sz[i+1]; if(fh[i]=='-') jg=jg-sz[i+1]; if(fh[i]=='*') jg=jg*sz[i+1]; if(fh[i]=='/') jg=jg/sz[i+1]; } } if(kh==8) //没有括号时 { for(int i=1;i<sznum;i++) { cout<<fh[i]<<sz[i+1]; } jg=sz[0]; for(int i=0;i<sznum;i++) { if(fh[i]=='*') { sz[i]=sz[i]*sz[i+1]; sz[i+1]=1; } if(fh[i]=='/') { sz[i]=sz[i]/sz[i+1]; sz[i+1]=1; } } for(int i=0;i<sznum;i++) { if(fh[i]=='+') jg=jg+sz[i+1]; if(fh[i]=='-') jg=jg-sz[i+1]; if(fh[i]=='*') jg=jg*sz[i+1]; if(fh[i]=='/') jg=jg/sz[i+1]; } } cout<<"="<<endl; cout<<"请输入结果,精确到整数,不足1不进位:"<<endl; cin>>zhjg; if(zhjg-jg<0.001) { n1++; cout<<"正确!"<<endl; } else { n2++; cout<<"错误!"<<endl; } } cout<<"正确的个数:"<<n1<<",错误的个数:"<<n2<<endl; }
三.运行结果截图
四.按照PSP0级的要求记录开发过程中的项目计划日志、时间记录日志、缺陷记录日志
周活动总结表
姓名:牛俊燕 日期:2016.3.26
日期\任务 | 听课 | 编写程序 | 阅读课本 | 日总计 |
周日 | ||||
周一 | 100分钟 | 120分钟 | 220分钟 | |
周二 | 120分钟 | 120分钟 | 240分钟 | |
周三 | 140分钟 | 110分钟 | 250分钟 | |
周四 | ||||
周五 | 100分钟 | 100分钟 | ||
周六 | 90分钟 | 60分钟 | 150分钟 | |
周总计 | 100分钟 | 570分钟 | 290分钟 | 960分钟 |
教师:王建民 课程:软件工程概论
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/21 | 8:00 | 9:50 | 10分钟 | 100分钟 | 听课 | 上课 |
13:00 | 15:00 | 120分钟 | 编程序 | 作业4 | ||
3/22 | 15:30 | 16:50 | 80分钟 | 讨论 | 作业5 | |
16:50 | 17:30 | 40分钟 | 编程序 | 作业5 | ||
18:00 | 20:00 | 120分钟 | 看书 | 构建之法 | ||
3/23 | 14:00 | 16:30 | 10分钟 | 140分钟 | 编程序 | 作业5 |
16:30 | 19:10 | 110分钟 | 写精读 | 阅读笔记 | ||
3/25 | 17:30 | 19:10 | 100分钟 | 编程序 | 作业5 | |
3/26 | 9:00 | 11:30 | 180分钟 | 写总结 | 精读,进度条等 |
学生:牛俊燕
日期:3/26/2016
教员:王建民老师
程序号:4,5
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
3/21 | 1 | 7 | 编码 | 编译 | 2min | |
描述:MAX没有初始化 | ||||||
2 | 23 | 编码 | 编译 | 5min | ||
描述:创建数组有错误,通过new创建数组 | ||||||
3 | 40 | 编码 | 编译 | 20min | ||
描述:try......catch......finally语句的处理 | ||||||
3/22 | 4 | 54 | 编码 | 编译 | 30min | |
描述:当随机生成数是负数时,且运算符是减号,要将运算符变成加号,且随机生成数不带负号,运行时出不来想要的结果 | ||||||
3/23 | 5 | 72 | 设计 | 编译 | 50min | |
描述:有乘除时,在除法有余数时,没有考虑记录除法符号的位置 | ||||||
6 | 114 | 编码 | 编译 | 20min | ||
描述:对符号位置设置随机数,进行括号位置的确定有错误 | ||||||
3/25 | 7 | 208 | 编码 | 编译 | 15min | |
描述:cin输入的名称有问题 |
相关文章推荐
- 渲染的概念
- 渲染的概念
- PAT (Advanced Level) Practise 1099 Build A Binary Search Tree (30)
- 第五周上机实践项目——项目1-三角形类雏形-(5)
- 对象深复制之输出流转输入流
- IOS 中block结构的简单用法
- 栈的应用——圆括号的匹配检验
- python从零安装
- 栈的应用——圆括号的匹配检验
- python--函数每天熟悉一个
- 算法训练 最大的算式
- 诚招运维小弟一名
- HRBUST-1909-理工门外的树
- 诚招运维小弟一名
- Qt的Graphics-View框架和OpenGL结合详解
- Android中的Http通信(二)
- HDU3336 Count the string KMP+递推
- 【杭电-oj】-1236排名-(结构体应用)
- 什么是SVG和SVG常用的形状
- Hexo静态博客搭建教程