控制台计算器(类,枚举,继承)

来源:互联网 发布:淘宝不清洗订单会怎样 编辑:程序博客网 时间:2024/06/02 16:24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public class Calculate:IPrint
    {
        int result = 0;
        public int FirstValue { get; set; }
        public int SecondValue { get; set; }
        bool flag = false;
        public void Operate(Operand operand)
        {
            switch (operand)
            {
                case Operand.Addition:
                    result = FirstValue + SecondValue;
                    break;
                case Operand.Subtraction:
                    result = FirstValue - SecondValue;
                    break;
                case Operand.Multiplication:
                    result = FirstValue * SecondValue;
                    break;
                case Operand.Division:
                    result = FirstValue / SecondValue;
                    flag = true;
                    break;
                default:
                    break;
            }
        }


        #region IPrint 成员


        public void Print()
        {
            if (flag && FirstValue % SecondValue!=0)
            {
                Console.WriteLine("结果为" + FirstValue + "/" + SecondValue);
                flag = false;
            }
            else
            {
                Console.WriteLine("结果为:{0}", result);
            }
            
        }


        #endregion
    }

}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public interface IPrint
    {
        void Print();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public class Menu:IPrint
    {
        string choice = string.Empty;
        string inputValue = string.Empty;
        string inputValue1 = string.Empty;
        bool flag = false;
        #region IPrint 成员
        ValidationMenu validationMenu = new ValidationMenu();
        ValidationByZero validationByZero = new ValidationByZero();
        ValidationInputFormat validationInputFormat = new ValidationInputFormat();
        public void Print()
        {
            do
            {
                Console.WriteLine("+-------------------------------------------+");
                Console.WriteLine("|-加法计算 选择 1      减法计算    选择2   -|");
                Console.WriteLine("|-乘法计算 选择 3      除法计算    选择4   -|");
                Console.WriteLine("|-退出     选择 0                          -|");
                Console.WriteLine("+-------------------------------------------+");
                Console.WriteLine("请输入要选择的项:                           ");
                choice = Console.ReadLine();
                
                flag=validationMenu.Check(choice);
                if (choice != "0" && flag)
                {
                    Calculate calculate = new Calculate();
                    Console.WriteLine("请输入第一个数");
                    inputValue =Console.ReadLine();
                    
                    if (!validationInputFormat.Check(inputValue))
                    {
                        validationInputFormat.Print();
                    }
                    else
                    {
                        Console.WriteLine("请输入第二个数");
                        inputValue1 = Console.ReadLine();
                        if (!validationInputFormat.Check(inputValue1))
                        {
                            validationInputFormat.Print();
                        }
                        else
                        {
                            calculate.FirstValue = int.Parse(inputValue);
                            calculate.SecondValue = int.Parse(inputValue1);


                            //second Value
                            switch (choice)
                            {
                                case "1":
                                    calculate.Operate(Operand.Addition);
                                    calculate.Print();
                                    break;
                                case "2":
                                     calculate.Operate(Operand.Subtraction);
                                     calculate.Print();
                                    break;
                                case "3":
                                     calculate.Operate(Operand.Multiplication);
                                     calculate.Print();
                                    break;
                                case "4":
                                    if (!validationByZero.Check(calculate.SecondValue))
                                    {
                                       
                                        
                                        break;
                                    }
                                    else{
                                        calculate.Operate(Operand.Division);
                                        calculate.Print();
                                        break;
                                    };
                                default:
                                    break;
                            }
                        }
                    }
                }
                else if (choice == "0")
                {
                    Console.WriteLine("你是否要真的退出?Y/N");
                   string a =  Console.ReadLine();
                    if(a=="Y")
                        break; ;
                }
                
            } while (true);
            


        }


        #endregion
            }
    }

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public enum Operand
    {
        Addition=1,
        Subtraction=2,
        Multiplication=3,
        Division=4
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Menu menu = new Menu();
            menu.Print();


        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public abstract class Validation
    {
        //验证输入
        public abstract bool Check(object value);
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public class ValidationByZero:Validation,IPrint
    {
        public override bool Check(object value)
        {
            Int32 num = Convert.ToInt32(value);
            if (num == 0)
            {
                Print();
                return false;
            }
            else
            {
                return true;
            }
            
        }


        #region IPrint 成员


        public void Print()
        {
            Console.WriteLine("除数为0不能做除法");
        }


        #endregion
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public class ValidationMenu : Validation, IPrint
    {
        public override bool Check(object value)
        {
            string value2 = Convert.ToString(value);
            Int32 value1 = 0;
            //TODO: 检查用户输入是否正确
            System.Text.RegularExpressions.Regex rex =
            new System.Text.RegularExpressions.Regex(@"^[0-9]*$");
            if (!rex.IsMatch(value2))
            {
                Print();
                return false;
            }
            else
            {
                value1 = Convert.ToInt32(value);
            }
            if (value1 != Convert.ToInt32(Operand.Addition) && value1 != Convert.ToInt32(Operand.Subtraction) && value1 != Convert.ToInt32(Operand.Multiplication) && value1 != Convert.ToInt32(Operand.Division) && value1 != 0)
            {
                Print();


                return false;


            }
            else
            {
                return true;
            }
           
        }


        #region IPrint 成员


        public void Print()
        {
            Console.WriteLine("菜单选择项录入的不合法合法,请重新操作");
        }


        #endregion
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Calculator
{
    public class ValidationInputFormat : Validation, IPrint
    {
        public override bool Check(object value)
        {
            string value1 = Convert.ToString(value);
            //TODO: 检查用户输入是否正确
            System.Text.RegularExpressions.Regex rex =
            new System.Text.RegularExpressions.Regex(@"^[0-9]*$");
            if (rex.IsMatch(value1))
            {
                
                return true;
            }
            else
                return false;
        }


        #region IPrint 成员


        public void Print()
        {
            Console.WriteLine("您输入的格式不正确!");
        }


        #endregion
    }
}

0 0