就是windows系统上自带的计算器我是C#初学者,是一名北大青鸟的学生,请高手帮我讲讲思路。

解决方案 »

  1.   

    http://search.download.csdn.net/search/c%23%20%E8%AE%A1%E7%AE%97%E5%99%A8
      

  2.   

    http://www.dnbcw.com/biancheng/c/fdmt69777.htmlhttp://download.csdn.net/source/1706464
      

  3.   

    public class Operation  
      {  
      private double _numberA = 0;  
      private double _numberB = 0;  
      public double NumberA  
      {  
      get  
      {  
      return _numberA;  
      }  
      set  
      {  
      _numberA = value;  
      }  
      }  
      public double NumberB  
      {  
      get  
      {  
      return _numberB;  
      }  
      set  
      {  
      _numberB = value;  
      }  
      }  
      public virtual double GetResult()  
      {  
      double result = 0;  
      return result;  
      }  
      public static string checkNumberInput(string currentNumber, string inputString)  
      {  
      string result = "";  
      if (inputString == ".")  
      {  
      if (currentNumber.IndexOf(".") < 0)  
      {  
      if (currentNumber.Length == 0)  
      result = "0" + inputString;  
      else  
      result = currentNumber + inputString;  
      }  
      }  
      else if (currentNumber == "0")  
      {  
      result = inputString;  
      }  
      else  
      {  
      result = currentNumber + inputString;  
      }    return result;  
      }  
      }  
      class OperationAdd : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      result = NumberA + NumberB;  
      return result;  
      }  
      }  
      class OperationSub : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      result = NumberA - NumberB;  
      return result;  
      }  
      }  
      class OperationMul : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      result = NumberA * NumberB;  
      return result;  
      }  
      }  
      class OperationDiv : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      if (NumberB == 0)  
      throw new Exception("除数不能为0。");  
      result = NumberA / NumberB;  
      return result;  
      }  
      }  
      class OperationSqr : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      result = NumberB * NumberB;  
      return result;  
      }  
      }  
      class OperationSqrt : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      if (NumberB < 0)  
      throw new Exception("负数不能开平方根。");  
      result = Math.Sqrt(NumberB);  
      return result;  
      }  
      }  
      class OperationReverse : Operation  
      {  
      public override double GetResult()  
      {  
      double result = 0;  
      result = -NumberB;  
      return result;  
      }  
      }  
    public class OperationFactory  
    {  
      public static Operation createOperate(string operate)  
      {  
      Operation oper = null;  
      switch (operate)  
      {  
      case "+":  
      {  
      oper = new OperationAdd();  
      break;  
      }  
      case "-":  
      {  
      oper = new OperationSub();  
      break;  
      }  
      case "*":  
      {  
      oper = new OperationMul();  
      break;  
      }  
      case "/":  
      {  
      oper = new OperationDiv();  
      break;  
      }  
      case "sqr":  
      {  
      oper = new OperationSqr();  
      break;  
      }  
      case "sqrt":  
      {  
      oper = new OperationSqrt();  
      break;  
      }  
      case "+/-":  
      {  
      oper = new OperationReverse();  
      break;  
      }  
      }    return oper;  
      }  
      private void buttonAdd_Click(object sender, EventArgs e)  
      {  
      if (txtShow.Text != "")  
      {  
      oper = OperationFactory.createOperate(((Button)sender).Text);  
        
      oper.NumberA = Convert.ToDouble(txtShow.Text);  
        
      bOperate = true;  
      }  
      }  
    private void buttonEqual_Click(object sender, EventArgs e)  
      {  
      if (txtShow.Text != "")  
      {  
      if (((Button)sender).Text != "=")  
      {  
      oper = OperationFactory.createOperate(((Button)sender).Text);  
      }  
      oper.NumberB = Convert.ToDouble(txtShow.Text);  
      txtShow.Text = oper.GetResult().ToString();  
      bOperate = true;  
      }  
      }  
      

  4.   

    5楼的同学,我刚学,get set 的用法还不明白。能不能讲下思路
      

  5.   

    我自己做的namespace WindowsApplication1
    {
        public partial class Form3 : Form
        {
            public Form3()
            {
                InitializeComponent();
            }        private void textBox1_TextChanged(object sender, EventArgs e)
            {        }        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {        }        private void textBox2_TextChanged(object sender, EventArgs e)
            {
            }        private void button1_Click(object sender, EventArgs e)
            {            double A, B;
                string C=comboBox1.Text;
                if (textBox1.Text == "")
                {
                    MessageBox.Show("请输入第一个数", "错误提示");
                }
                else if (comboBox1.Text == "")
                {
                        MessageBox.Show("请选择运算符", "错误提示");
                 }             else if (textBox2.Text == "")
                 {
                       MessageBox.Show("请输入第二个数", "错误提示");
                 }
                        A = Convert.ToDouble(textBox1.Text);
                        B = Convert.ToDouble(textBox2.Text);
                        switch (C)
                        {
                            case "+":
                                textBox3.Text = Convert.ToString((A + B));
                                break;
                            case "-":
                                textBox3.Text = Convert.ToString((A - B));
                                break;
                            case "*":
                                textBox3.Text = Convert.ToString((A * B));
                                break;
                            case "/":
                                textBox3.Text = Convert.ToString((A / B));
                                break;
                        }
                }        private void button2_Click(object sender, EventArgs e)
            {
                DialogResult button2 = MessageBox.Show("确定要退出吗?", "提示",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (button2 == DialogResult.Yes) { Application.Exit(); }
            }        }
        }