一 实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三 需求分析
1)能够自动出题
2)包含“+,—,*,/,()” 的四则运算。
3)能够自定义出题目的数量
4)能确定所有题目的数值在初始的规定范围之中。
5)能够判别答案的正确与否
6)能根据所答情况打分
四 实验过程
1)所使用的编程工具
本次实验主要使用了 Visual C++ 作为编程工具。
2)代码规范
在实验过程中,要遵循最基本的代码输入规范,并且要尽量使代码精简,看起来十分美观。
代码的书写一般要对齐,并且缩进也要遵循规范,不能没有缩进,那样会使代码整体看起来不美观,给人一种十分凌乱的感觉。
其次就是对于注释的使用,注释对于我们看懂自己或他人的代码有着很大的帮助,但是注释不宜过多,只需要在关键的地方给出即可。
对于换行与空格符号的使用应该根据代码的本身来运用。
3)程序的总体设计
本次编写的程序为简单的四则运算,包含+.-*./,但是对于数的范围和取值有着一定的要求。
使用代码表示,首先要定义变量,其中有sun ,num1,num2,i,j等几个主要使用的变量,对于所使用的变量要定义其类型,方便后面的使用。
主要程序的设计,主要程序应该满足使用的要求,能在规定的范围内产生随机数,并且在后面产生的四则运算式子要同时满足数学运算
法则,最简单的如0不能作为被除数等等,并且要有判断功能。输入输出功能。
4)流程图
5)结对编程的过程
与组队伙伴的沟通以及在编程过程中的角色互换
6)系统功能的实现
实验代码如下
#include "iostream" #include<stdlib.h> #include<time.h> #include<math.h> using namespace std; int main() { system("color 71"); cout<<endl; cout<<"**************************小学数学四则运算试题****************************"<<endl; cout<<endl; cout<<endl; Again: double Ques1=1; int Ques01; int Ques2=1; int Ques3=100; char Ques4; int Ques5=0; char Ques6=‘n‘; char Ques7=‘n‘; double ans=0; int right=0; cout<<" 一.请输入题目数量:"; cin>>Ques1; Ques01=floor(Ques1); // cout<<"请输入每行打印题目数(1-5):"; // cin>>Ques2; cout<<" 二.请输入算式中数值的最大值:"; cin>>Ques3; cout<<"`````````````````````````````````````````````````````````````````````````"<<endl; cout<<"开始答题:"<<endl; srand(time(NULL)); while(1) { if(Ques1<1) { cout<<"输入有误,请重新输入题目数量:"; cin>>Ques1; Ques01=floor(Ques1); } else { for(int j=0; j<Ques01; j++) { if(j!=0&&j%Ques2==0) { for(int i=0; i<Ques5; i++) { cout<<endl; } } int num1=rand()%Ques3; int num2=rand()%Ques3; int sign=rand()%4; switch(sign) { case 0: cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<" "; cin>>ans; if(ans==num1+num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1+num2<<endl; } break; case 1: if(Ques7==‘y‘) { cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" "; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } } else { if(num1>num2) { cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<" "; cin>>ans; if(ans==num1-num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1-num2<<endl; } } else { cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<" "; cin>>ans; if(ans==num2-num1) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num2-num1<<endl; } } } break; case 2: cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<" "; cin>>ans; if(ans==num1*num2) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<num1*num2<<endl; } break; case 3: if(num2!=0) { int t=rand()%30; int num3=num1*t; cout<<j+1<<":"<<" "<<num3<<"/"<<num1<<"="<<" "; cin>>ans; if(ans==(float)num3/(float)num1) { cout<<"正确"<<endl; right++; } else { cout<<"答错了!"<<endl; cout<<"正确答案是:"<<(float)num3/(float)num1<<endl; } } else { j--; } break; } } break; } } cout<<"共答对"<<right<<"道题;"<<"答错"<<Ques01-right<<"道题。"; cout<<"继续努力!"<<endl; cout<<endl; while(1) { cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)"; cin>>Ques6; if(Ques6==‘y‘) { goto Again; } if(Ques6==‘n‘) { goto Exit; } else { cout<<"输入有误,请重新输入:"; } } Exit: return
7)项目github地址
https://github.com/zghzy123456789/my-travel-plans
8)实验小结
在本次结对编程实验过程中,由于自己的时间安排问题和电脑问题,导致拖累了队友的进度,但是
队友还是十分的耐心,而且在整个过程中,由于对于c++语言的遗忘,在编程过程中遇到了很多困难,
但是队友愿意积极沟通,并且愿意给我详细的讲解,令我十分感动,同时也明白了自己的缺陷,结对
编程最重要的就是沟通。在以后的学习中,要尽量的将之前落下的知识捡起来。
原文:https://www.cnblogs.com/0516zy/p/12640142.html