实验二 结对编程第二阶段

一 实验目标
  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++语言的遗忘,在编程过程中遇到了很多困难,

但是队友愿意积极沟通,并且愿意给我详细的讲解,令我十分感动,同时也明白了自己的缺陷,结对

编程最重要的就是沟通。在以后的学习中,要尽量的将之前落下的知识捡起来。

posted @ 2020-04-06 00:49  计算机周阳  阅读(162)  评论(0编辑  收藏  举报