C#winform 实现简单的计算器

目的:

生成一个一个简单的计算器程序。能够进行简单的二元计算,一个操作符,两个操作数的运算。

思路:

首先要生成一系列的成员变量,用来记录当前操作为第几操作数第几操作符,记录操作数和操作符信息。
然后每一次操作button就将button的值存入对应的成员变量,然后最后在等于操作的时候,将记录操作数和操作符的变量进行计算。

界面

如图:
这里写图片描述
如下控件:

       private System.Windows.Forms.GroupBox groupBox1;
        private System.Windows.Forms.Button button18;
        private System.Windows.Forms.Button button12;
        private System.Windows.Forms.Button button11;
        private System.Windows.Forms.Button button9;
        private System.Windows.Forms.Button button8;
        private System.Windows.Forms.Button button7;
        private System.Windows.Forms.Button button6;
        private System.Windows.Forms.Button button5;
        private System.Windows.Forms.Button button4;
        private System.Windows.Forms.Button button3;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.GroupBox groupBox2;
        private System.Windows.Forms.Button button10;
        private System.Windows.Forms.Button button17;
        private System.Windows.Forms.Button button16;
        private System.Windows.Forms.Button button15;
        private System.Windows.Forms.Button button14;
        private System.Windows.Forms.Button button13;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.GroupBox groupBox3;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox2;

开始:

首先

生成五个成员变量:

        /// <summary>
        /// 用来存第一操作数,默认为零
        /// </summary>
        string num1;
        /// <summary>
        /// 用来存第二操作数
        /// </summary>
        string num2;
        /// <summary>
        /// 判断为第几操作数
        /// </summary>
        bool check = true;
        /// <summary>
        /// 爆low计算器只能计算两操作数,用来判断
        /// </summary>
        int count = 0;
        /// <summary>
        /// 记录操作符
        /// </summary>
        string str = "";

数字键的点击操作
每次往操作数变量中插值是对check进行一次判断看当前插入的为第几操作数
check == true为第一操作数
check== false为第二操作数

         if (check == true)
            {
                Button b = (Button)sender;
                textBox1.Text += b.Text;
                num1 += b.Text;
            }
            else
            {
                Button b = (Button)sender;
                textBox1.Text += b.Text;
                num2 += b.Text;
            }

操作符按钮点击事件(+ - * /)
以下为+的事件;

            Button b = (Button)sender;
            textBox1.Text += b.Text;
            str = "+";
            //标识操作符上限
            count += 1;
            //标识第二操作数
            check = false;

等于事件
在等于事件中我们对我们输入的数进行简单的判断

  • 如果count大于1则操作数大于2;
  • 如果第一或者第二操作数为空则报错
  • 如果第二操作数为0,报错
    否则将num1和num2中的值转换为float,再根据str进行swith进行运算
            check = true;
            if (count > 1) { MessageBox.Show("高级计算器,只能计算俩个数!", "罢工!"); return; }
            double Num1 = 0, Num2 = 0,Num3 = 0;
            if (num1 == null || num2 == null) { MessageBox.Show("分母或分子为空!", "罢工!"); return; }
            else
            {
                Num1 = double.Parse(num1);
                Num2 = double.Parse(num2);
            }
            if (str == "/" && Num2 == 0) { MessageBox.Show("分母为零!", "罢工!");return; }
            switch (str)
            {
                case "+":
                    Num3 = Num1 + Num2;
                    break;
                case "-":
                    Num3 = Num1 - Num2;
                    break;
                case "*":
                    Num3 = Num1 * Num2;
                    break;
                case "/":
                    Num3 = Num1 / Num2;
                    break;
            }
            textBox2.Text = Num3.ToString();

清除操作
就是把成员变量初始化

            textBox1.Text = "";
            textBox2.Text = "";
            num1 = null;
            num2 = null;
            check = true;
            count = 0;

最后

查看执行后的效果:
这里写图片描述

©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页