四则运算的进一步完善
编写一个能对0--10之间的整数进行四则运算的“软件”程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对、答错的题目数量。补充说明:0——10的整数是随机生成的用户可以用键盘输入来选择四则运算中的一种,比如输入1代表加法运算用户用键盘输入一个字符来结束程序的运行并显示统计结果,比如输入e程序结束并显示统计结果编程语言不限制,命令行输出和图像界面输出都可以。在此基础上,做增量开发。增量内容:1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数的情况,保证是小学水平不出现负数,比如不能出现5-8=-3这种情况; 2)用户可以设定倒计时; 3)用户可以设定随机整数的范围和题目数量;4)用户可以选择哪种计算类型,比如加减乘除,或可选择软件随机生成四则运算中的一种。要求:要有需求分析,具体设计思路,代码实现,测试,书中PSP耗时分析,总结。
设计思路:由于是结对编程,我们选择我的上次作业为基础进行进一步完善,刚开始的前半小时我在向我的队友讲述上次的步骤以及具体实现的方法,他了解后我们开始修改,开始我们各自思考,大约过去40分钟我们相互交流自己的想法,最后我们找到了最好的方法,然后在在此进行完善,实现在一个界面上实现加减剩除我们采用了if方法,比较简单,处理分母不能为零我们采用了判断语句,实现定时需求时由于我们用的是控制台不能使用timer控件所以梦实现。
总结:对比上次自己做编程,感觉轻松好多,个人做时遇到问题往往会发牢骚,结对编程时,有问题我们会相互交流并鼓励,能使自己静下心来,最重要的是可以相互交流各自的想法能互补一下,能使程序更完善,我个人感觉结对编程是一个不错的方法。能够使我们在结对中共同进步!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
public static void Ni()
{
Console.WriteLine("请输入你想做的运算+,-,*,/ ");
string m = Console.ReadLine();
switch (m)
{
case "+":
Shu.Wo();
break;
case "-":
Shu.Sub();
break;
case "*":
Shu.Sheng();
break;
case "/":
Shu.Chu();
break;
}
Console.ReadLine();
}
static void Main(string[] args)
{
Ni();
}
}
//定义委托
public delegate double Num(double x, double y);
public class Math
{
public static double Add(double x, double y)
{ return x + y; }
public static double Sub(double x, double y)
{ return x - y; }
public static double sub(double x, double y)
{ return y - x; }
public static double Sheng(double x, double y)
{ return x * y; }
public static double Chu(double x, double y)
{ return x / y; }
}
public class Shu
{
public static int o = 0;//获取做错的题数
public static int i = 0;//获取做题总数
public static int right = 0;//获取做错的题数
public static void Wo()
{
double sum, n;
Random r = new Random();
double x = r.Next(0, 10);
double y = r.Next(0, 10);
sum = x + y;
Console.WriteLine("{0}+{1}=", x, y);
Console.WriteLine("请输入你的结果:");
n = double.Parse(Console.ReadLine());
Num nu = new Num(Math.Add);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}", nu(x, y));
if (sum == n)
{
Console.WriteLine("你的结果正确!");
i++;
right++;
Wo();
}
else if (n == 99)//提示输入99表示退出运算,不做其它运算
{
Jieshu();
}
else if (n == 00)//提示输入00退出本次运算可以继续做其它运算
{
Jieshu();
Program.Ni();
}
else
{
Console.WriteLine("你的结果不正确");
i++;
o++;
Wo();
}
}
public static void Jieshu()
{
Console.WriteLine("你好,你已退出计算!你共做{0}道题,答对{1},答错{2}\n", i, right , o);
}
public static void Sub()
{
double sum, n ;
Random r = new Random();
double x = r.Next(0, 10);
double y = r.Next(0, 10);
if (x > y)
{
sum = x - y;
Console.WriteLine("{0}-{1}=", x, y);
Console.WriteLine("请输入你的结果:");
n = double.Parse(Console.ReadLine());
Num nu = new Num(Math.Sub);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}",nu(x, y));
if (sum == n)
{
Console.WriteLine("你的结果正确!");
i++;
right++;
Wo();
}
else if (n == 99)
{
Jieshu();
}
else if (n == 00)
{
Jieshu();
Program.Ni();
}
else
{
Console.WriteLine("你的结果不正确");
i++;
o++;
Sub();
}
}
else if(x<y)
{
sum = y- x;
Console.WriteLine("{0}-{1}=", y, x);
Console.WriteLine("请输入你的结果:");
n = double.Parse(Console.ReadLine());
Num nu = new Num(Math.sub);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}",nu(x, y));
if (sum == n)
{
Console.WriteLine("你的结果正确!");
i++;
right++;
Wo();
}
else if (n == 99)
{
Jieshu();
}
else if (n == 00)
{
Jieshu();
Program.Ni();
}
else
{
Console.WriteLine("你的结果不正确");
i++;
o++;
Sub();
}
}
}
public static void Sheng()
{
double sum, n;
Random r = new Random();
double x = r.Next(0, 10);
double y = r.Next(0, 10);
sum = x * y;
Console.WriteLine("{0}*{1}=", x, y);
Console.WriteLine("请输入你的结果:");
n = double.Parse(Console.ReadLine());
Num nu = new Num(Math.Sheng);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}", nu(x, y));
if (sum == n)
{
Console.WriteLine("你的结果正确!");
i++;
right++;
Wo();
}
else if (n == 99)
{
Jieshu();
}
else if (n == 00)
{
Jieshu();
Program.Ni();
}
else
{
Console.WriteLine("你的结果不正确");
i++;
o++;
Sheng();
}
}
public static void Chu()
{
double sum, n;
Random r = new Random();
double x = r.Next(0, 10);
double y = r.Next(0, 10);
if (y != 0)
{
sum = x / y;
Console.WriteLine("{0}/{1}=", x, y);
Console.WriteLine("请输入你的结果:");
n = double.Parse(Console.ReadLine());
Num nu = new Num(Math.Chu);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}", nu(x, y));
if (sum == n)
{
Console.WriteLine("你的结果正确!");
i++;
right++;
Wo();
}
else if (n == 99)
{
Jieshu();
}
else if (n == 00)
{
Jieshu();
Program.Ni();
}
else
{
Console.WriteLine("你的结果不正确");
i++;
o++;
Chu();
}
}
else
{
sum = y/x ;
Console.WriteLine("{0}/{1}=",y ,x );
Console.WriteLine("请输入你的结果:");
n = double.Parse(Console.ReadLine());
Num nu = new Num(Math.Chu);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}", nu(x, y));
if (sum == n)
{
Console.WriteLine("你的结果正确!");
i++;
right++;
Wo();
}
else if (n == 99)
{
Jieshu();
}
else if (n == 00)
{
Jieshu();
Program.Ni();
}
else
{
Console.WriteLine("你的结果不正确");
i++;
o++;
Chu();
}
}
}
}
}