标签:
---恢复内容开始---
编写一个能对0--10之间的整数进行四则运算的“软件”程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对、答错的题目数量。补充说明:0——10的整数是随机生成的用户可以用键盘输入来选择四则运算中的一种,比如输入1代表加法运算用户用键盘输入一个字符来结束程序的运行并显示统计结果,比如输入e程序结束并显示统计结果编程语言不限制,命令行输出和图像界面输出都可以。在此基础上,做增量开发。增量内容:1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数的情况,保证是小学水平不出现负数,比如不能出现5-8=-3这种情况; 2)用户可以设定倒计时; 3)用户可以设定随机整数的范围和题目数量;4)用户可以选择哪种计算类型,比如加减乘除,或可选择软件随机生成四则运算中的一种。要求:要有需求分析,具体设计思路,代码实现,测试,书中PSP耗时分析,总结。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Simple_arithmetic //简易四则运算
{
class Program
{
public static void Ni()
{
Console.WriteLine("请输入您想做的运算: ");
Console.WriteLine("输入 【+】 表示加法");
Console.WriteLine("输入 【-】 表示减法");
Console.WriteLine("输入 【*】 表示乘法");
Console.WriteLine("输入 【/】 表示除法");
Console.WriteLine("输入【 -1】表示结束");
Console.WriteLine("====================");
string opt = Console.ReadLine();
switch (opt) //使用switch语句
{
case "+":
Opp.Add();
break;
case "-":
Opp.Sub();
break;
case "*":
Opp.Mul();
break;
case "/":
Opp.Div();
break;
}
Console.ReadLine();
}
static void Main(string[] args)
{
//首先声明
Ni();
}
}
public delegate double Num(double x, double y);//定义委托
public class SimpleMath
{
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 Mul(double x, double y)
{ return x * y; }
public static double Div(double x, double y)
{ return x / y; }
public static double div(double x, double y)
{ return y / x; }
}
public class Opp
{
public static int i = 0;
public static int fault = 0;
public static int right = 0;
public static void Add()//加法,实现加法功能
{
double sum, op;
Random p = new Random();
double x = p.Next(0, 10);
double y = p.Next(0, 10);
sum = x + y;
Console.WriteLine("{0}+{1}=", x, y);
Console.WriteLine("请输入结果:");
op = double.Parse(Console.ReadLine());
Num um = new Num(SimpleMath.Add);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}+{1}={2}", x, y, um(x, y));
if (sum == op)
{
Console.WriteLine("您的结果正确!");
i++;
fault++;
right++;
Add();
}
else if (op == -1)
{
end();
Program.Ni();
}
else
{
Console.WriteLine("您的结果错误!");
i++;
fault++;
Add();
}
}
public static void end()
{
Console.WriteLine("您已退出计算!您共做{0}道题,答对{1}道,答错{2}道", i, fault, right);
}
public static void Sub()//减法,实现减法功能
{
double jan, op;
Random p = new Random();
double x = p.Next(0, 10);
double y = p.Next(0, 10);
if (x > y)
{
jan = x - y;
Console.WriteLine("{0}-{1}=", x, y);
Console.WriteLine("请输入结果:");
op = double.Parse(Console.ReadLine());
Num um = new Num(SimpleMath.Sub);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}-{1}={2}", x, y, um(x, y));
if (jan == op)
{
Console.WriteLine("您的结果正确!");
i++;
fault++;
right++;
Add();
}
else if (op == -1)
{
end();
Program.Ni();
}
else
{
Console.WriteLine("您的结果错误!");
i++;
fault++;
Sub();
}
}
else if (x < y)
{
jan = y - x;
Console.WriteLine("{0}-{1}=", y, x);
Console.WriteLine("请输入结果:");
op = double.Parse(Console.ReadLine());
Num um = new Num(SimpleMath.sub);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}-{1}={2}", y, x, um(y, x));
if (jan == op)
{
Console.WriteLine("您的结果正确!");
i++;
fault++;
right++;
Add();
}
else if (op == -1)
{
end();
Program.Ni();
}
else
{
Console.WriteLine("您的结果错误!");
i++;
fault++;
Sub();
}
}
}
public static void Mul()//乘法,实现乘法功能
{
double cen, op;
Random p = new Random();
double x = p.Next(0, 10);
double y = p.Next(0, 10);
cen = x * y;
Console.WriteLine("{0}*{1}=", x, y);
Console.WriteLine("请输入结果:");
op = double.Parse(Console.ReadLine());
Num um = new Num(SimpleMath.Mul);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}*{1}={2}", x, y, um(x, y));
if (cen == op)
{
Console.WriteLine("您的结果正确!");
fault++;
right++;
Add();
}
else if (op == -1)
{
end();
Program.Ni();
}
else
{
Console.WriteLine("您的结果错误!");
fault++;
Mul();
}
}
public static void Div()//除法,实现除法功能
{
double chu, op;
Random p = new Random();
double x = p.Next(0, 10);
double y = p.Next(0, 10);
if (y != 0)
{
chu = x / y;
Console.WriteLine("{0}/{1}=", x, y);
Console.WriteLine("请输入结果:");
op = double.Parse(Console.ReadLine());
Num um = new Num(SimpleMath.Div);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}/{1}={2}", x, y, um(x, y));
if (chu == op)
{
Console.WriteLine("您的结果正确!");
fault++;
right++;
Add();
}
else if (op == -1)
{
end();
Program.Ni();
}
else
{
Console.WriteLine("您的结果错误!");
fault++;
Div();
}
}
else if(y==0)
{
chu = y / x;
Console.WriteLine("{0}/{1}=", y, x);
Console.WriteLine("请输入结果:");
op = double.Parse(Console.ReadLine());
Num um = new Num(SimpleMath.div);
Console.WriteLine("正确结果是:");
Console.WriteLine("{0}/{1}={2}", y, x, um(x, y));
if (chu == op)
{
Console.WriteLine("您的结果正确!");
fault++;
right++;
Add();
}
else if (op == -1)
{
end();
Program.Ni();
}
else
{
Console.WriteLine("您的结果错误!");
fault++;
Div();
}
}
}
}
}
PSP分析表
《1》 需求分析:
刚开始设计时,按照要求来做的,没有考虑太多。结果总是出错,并且测试起来 ,不像是一个“智能化”的小程序。
后来回想,老师以前说过,做程序要站在用户角度考虑,以用户的身份去设计、分析。这样才能做得相对比较完整。
《2》 具体设计思路:
这个程序做了两遍,刚开始是用窗体做的。先前老师让我们做过类似的例子。结果越做越糟,总是出错。然后我就用
控制台来做的。通过翻查教材,运用了一直不太能熟练掌握的委托和一些循环语句。中间还有我朋友的指导(他学的比我好
通过和他的讨论,到代码的具体实现。感觉自己进步了许多
《3》思考:
通过这次的测试,感觉自己的逻辑思维仍有欠缺。一些简单的语句,需要仔细思考。才能够想明白,与其他同学的差距
仍需要努力才能拉低。不过这次还是有不小的收获的!
---恢复内容结束---
标签:
原文地址:http://www.cnblogs.com/zyfppq/p/4889930.html