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里的字符,將會輸出:"輸入無效!"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM