using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Operation { private double _numberA = 0; private double _numberB = 0; /// <summary> /// 数字A /// </summary> public double NumberA { get { return _numberA; } set { _numberA = value; } } /// <summary> /// 数字B /// </summary> public double NumberB { get { return _numberB; } set { _numberB = value; } } /// <summary> /// 得到运算结果 /// </summary> /// <returns></returns> public virtual double GetResult() { double result = 0; return result; } } /// <summary> /// 加法类 /// </summary> class OperationAdd : Operation { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } /// <summary> /// 减法类 /// </summary> class OperationSub : Operation { public override double GetResult() { double result = 0; result = NumberA - NumberB; return result; } } /// <summary> /// 乘法类 /// </summary> class OperationMul : Operation { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } /// <summary> /// 除法类 /// </summary> class OperationDiv : Operation { public override double GetResult() { double result = 0; if (NumberB == 0) { throw new Exception("除法不能为0!"); } result = NumberA / NumberB; return result; } } /// <summary> /// 运算类工厂 /// </summary> class OperationFactory { public static Operation CreateOperate(string strOperate) { Operation oper = null; switch (strOperate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; default: throw new Exception("你输入了非法的操作符"); } return oper; } } class Progrom { static void Main(string[] args) { while (true) { try { Run(); } catch (Exception ex) { Console.WriteLine("您的输入有错!" + ex.Message); } Console.ReadLine(); } } /// <summary> /// 程序启动入口函数 /// </summary> public static void Run() { Operation oper; Console.WriteLine("请输入操作符:"); string strOperate = Console.ReadLine(); //if(strOperate != "+" || strOperate != "-" || strOperate != "*" ||) oper = OperationFactory.CreateOperate(strOperate); Console.WriteLine("请输入数字A:"); string strNumberA = Console.ReadLine(); oper.NumberA = Convert.ToDouble(strNumberA); Console.WriteLine("请输入数字B:"); string strNumberB = Console.ReadLine(); oper.NumberB = Convert.ToDouble(strNumberB); double result = oper.GetResult(); Console.WriteLine(strNumberA + " " + strOperate + " " + strNumberB + " = " + result.ToString()); } } }