• C#控制台->>四则运算


    用户需求:

    要求编写一个0-10之间的整数进行四则运算,程序能接收输入的整数答案,并判断对错,程序结束时,统计出答对、答错的题目数量!并且0-10的整数是随机生成的,用户可以用键盘输入来选择四则运算中的一种。比如输入1代表加法运算,用户用键盘来输入一个字符来结束程序的运行并显示!统计出结果!

    设计思路:

    1、既然要编写一个0-10之间的整数,那么我就定义三个数据类型为int的变量,其中两个用来存整数,另一个用来存最后的计算结果。
    2、需要判断对错,那么我可以用if(){}...else{}进行判断。
    3、程序结束要求统计答对与答错的数量,所以再定义两个int类型的变量来存储数量,并用“自增”来达到每次的计数。
    4、0-10是随机的,我就用Random()方法来生成。
    5、既然用来进行四则运算,我就声明4个运算方法。再声明一个统计结果的方法用来调用
    6、用键盘来选择运算中的一种,可以用switch(){case:  break;}来做选择。

    具体的代码实现:

    1、这个是用来显示菜单栏的,我们可以通过选择'1' '2' '3'...等来决定用哪一种算法!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _Random
    {
        class Program
        {
            static void Main(string[] args)
            {
                mathvoid op = new mathvoid();
                string Z = "";
                do
                {
                    Console.WriteLine("-------------------------------四则运算-------------------------");
                    Console.WriteLine("");
                    Console.WriteLine("请选择您使用的运算方法:1.加法 2.减法 3.乘法 4.除法 5.退出!");
                    Z = Console.ReadLine();
                    switch (Z)
                    {
                        case "1":
                            op.mathjia();
                            continue;
                        case "2":
                            op.mathjian();
                            continue;
                        case "3":
                            op.mathcheng();
                            continue;
                        case "4":
                            op.mathchu();
                            continue;
                        case "5":
                            op.result();
                            break;
                        default:
                            Console.WriteLine("输入无效!");
                            continue;
                    }
                    break;
                }
                while (true);
            }
        }
    }

    2、下面这个是用来调用的方法!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _Random
    {
        public class mathvoid
        {
            public static int right = 0;                          //记录答对的总数!
            public static int wrong = 0;                          //记录答错的总数!
    
            public void mathjia()                                 //加法运算!
            {
                int a, b;
                int result;
                Random rd = new Random();
                a = rd.Next(0, 11);
                b = rd.Next(0, 11);
                Console.WriteLine("请计算:{0}+{1}=?", a, b);
                result = Convert.ToInt32(Console.ReadLine());
                if (result == a + b)
                {
                    Console.WriteLine("回答正确!");
                    right++;
                }
                else
                {
                    Console.WriteLine("错误,继续努力!");
                    wrong++;
                }
    
            }
            public void mathjian()                                //减法运算!
            {
                int a, b;
                int result;
                Random rd = new Random();
                a = rd.Next(0, 11);
                b = rd.Next(0, 11);
                Console.WriteLine("请计算:{0}-{1}=?", a, b);
                result = Convert.ToInt32(Console.ReadLine());
                if (result == a - b)
                {
                    Console.WriteLine("回答正确!");
                    right++;
                }
                else
                {
                    Console.WriteLine("错误,继续努力!");
                    wrong++;
                }
            }
            public void mathcheng()                               //乘法运算!
            {
                int a, b;
                int result;
                Random rd = new Random();
                a = rd.Next(0, 11);
                b = rd.Next(0, 11);
                Console.WriteLine("请计算:{0}*{1}=?", a, b);
                result = Convert.ToInt32(Console.ReadLine());
                if (result == a * b)
                {
                    Console.WriteLine("回答正确!");
                    right++;
                }
                else
                {
                    Console.WriteLine("错误,继续努力!");
                    wrong++;
                }
    
    
            }
            public void mathchu()                                 //除法运算!
            {
                int a, b;
                int result;
                Random rd = new Random();
                a = rd.Next(0, 11);
                b = rd.Next(0, 11);
                if (b != 0)
                {
                    Console.WriteLine("请计算:{0}/{1}=?", a, b);
                    result = Convert.ToInt32(Console.ReadLine());
                    if (result == a / b)
                    {
                        Console.WriteLine("回答正确!");
                        right++;
                    }
                    else
                    {
                        Console.WriteLine("错误,继续努力!");
                        wrong++;
                    }
    
                }
                else
                {
                    if (a != 0)
                    {
                        Console.WriteLine("请计算:{0}/{1}=?", b, a);
                        result = Convert.ToInt32(Console.ReadLine());
                        if (result == b / a)
                        {
                            Console.WriteLine("回答正确!");
                            right++;
                        }
                        else
                        {
                            Console.WriteLine("错误,继续努力!");
                            wrong++;
                        }
                    }
                }
            }
            public void result()                                  //统计结果!
            {
                Console.WriteLine("总共做了{0}道题:你做对了{1}道题,做错了{2}道题。",right+wrong,right,wrong);
            }
        }
    }

    3、最后这个是运行的控制台!

    PSP耗时分析 :

    1、首先,预测完成这个任务我需要的时间是12个小时,实际用了9个小时左右吧。
    2、需求分析:感觉30分钟就够了
    3、生成设计文档:刚开始接到这个作业的时候,我就在纸上画了一个大概需要哪些方法的草图,需要用什么。这个计划差不多用了20分钟列了一个大致的草图。
    4、设计复审:仔细检查了一下,觉得不需要的地方就先放在一旁,第一次没有想到的再加上去。这是一个思路,还会发生改变的!耗时:30分钟左右
    5、代码规范:这个是便于浏览整个结构框体,不是太费时间10分钟左右吧。
    6、具体设计:耗时1小时左右!
    7、具体编码:这个最耗时了,因为要不停地改动,每当有一个错误都要仔细检查具体的错误原因。这样才好解决问题!还有就是具体的方法应该在哪里调用,哪个地方放什么东西要根据你的原计划来进行编码。还有时而的变动。当有一个错误不通过的时候,就要想好久来解决!花费4.5个小时左右。
    8、代码复审:这个还可以吧,仔细浏览,大概花费20分钟。
    9、测试:因为只有测试才能知道哪里有不足,所以有不足的地方又花费了我的时间来进行改动。花了1个多小时!

    总结:

    当接到一个项目的时候,大概看一下客户的要求是什么!预测一下大概需要花费多少时间,这是给自己的一个标准。
    然后根据客户的具体需求,来进行仔细分析。大概需要用到什么方法,列一个方案,生成设计文档!再根据自己的设计思路来进行代码编写,在代码编写的时候可能会有新的思路,那就要灵活变通。客户需要什么,我们就完成什么。如果你有新的想法,想为客户添加新的功能,我觉得最好还是不要这样做,因为这会浪费时间和精力,还会带来不必要的麻烦。我们所需要做的就是完成客户的需求。


    我的疑问:

    在除法的方法中,会产生类似于9/7=?这样的式子,作业要求是用户接收整数结果,那么9/7=1,这是一个正确的答案。可在实际生活中,就不符合我们的习惯!那么如果我改成数据类型为double的result,我该如何答题???

    思考题:

    如果用户要求处理的范围是0-100,程序应如何应对扩展性。

    答:把产生随机数的范围改一下,改成
    Random rd = new Random();
    a = rd.Next(0, 101);
    b = rd.Next(0, 101);
    附加题:

    程序能处理用户的错误输入,比如用户输入一个小数或一个字符

    答:在switch() {case : }里面,我添加了default,如果输入的不是switch里的字符,将会输出:"输入无效!"

  • 相关阅读:
    五种提高 SQL 性能的方法
    join 使用详解方式
    关于MagicAjax的用法
    收藏几段SQL Server语句和存储过程
    ubuntu nfs配置 以及mount.nfs:access denied by server while mounting问题解决
    Hisi开发板上 SQLite3.3.8移植
    父进程非阻塞回收子进程(适用LINUX下C语言的clientserver模型)
    busybox asm/page.h: No such find.
    ubuntu11.10 samba服务器配置
    errno定义
  • 原文地址:https://www.cnblogs.com/yumaster/p/4839583.html
Copyright © 2020-2023  润新知