zoukankan      html  css  js  c++  java
  • C#实现按键计算器功能

    C#实现按键计算器功能

    (一次失败的编程)

    界面

    代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 按键计算器
    {
        public partial class Form1 : Form
        {
            //flag1表示开始输入数字时,该数的位数
            //flag2表示在此时运算符(+ - */)的个数
            //flag3在输入运算符时用于判断,表示在输入运算符时,前一个运算符为+时等于1,  -为2  *为3  /为4 
            int flag1 =0,flag2=0,flag3=5;
    
            //isEqual表示该状态时是否点击了等于按钮
            bool isEqual =false;
            //isClear表示是否清空了主输入编辑框里的数据
            bool isClear = true;
    
            //isError表示是否出现错误,数据溢出,该部分还未完善
            bool isError = false;
    
            //输入等于号的个数,这里程序后面会控制在0和1之间,多余的输入无效
            int numEqual = 0;
    
            //m表示进行计算的第一个数,n表示进行计算的第二个数,一般第一次计算结束后会把结果存储在result中,    
            int m = 0, n = 0,result=0;
                
            public Form1()
            {
                InitializeComponent();
            }
    
            //将键盘与按钮关联
            protected override bool ProcessCmdKey(ref   Message msg, Keys keyData)        
            {       
                if (keyData == Keys.NumPad1||keyData==Keys.D1)            
                {
                    this.btn1.Focus();
                    this.btn1.PerformClick(); 
                 }
                if (keyData == Keys.NumPad2 || keyData == Keys.D2)
                {
                    this.btn2.Focus();
                    this.btn2.PerformClick();
                }
                if (keyData == Keys.NumPad3 || keyData == Keys.D3)
                {
                    this.btn3.Focus();
                    this.btn3.PerformClick();
                }
                if (keyData == Keys.NumPad4 || keyData == Keys.D4)
                {
                    this.btn4.Focus();
                    this.btn4.PerformClick();
                }
                if (keyData == Keys.NumPad5 || keyData == Keys.D5)
                {
                    this.btn5.Focus();
                    this.btn5.PerformClick();
                }
                if (keyData == Keys.NumPad6 || keyData == Keys.D6)
                {
                    this.btn6.Focus();
                    this.btn6.PerformClick();
                }
                if (keyData == Keys.NumPad7 || keyData == Keys.D7)
                {
                    this.btn7.Focus();
                    this.btn7.PerformClick();
                }
                if (keyData == Keys.NumPad8 || keyData == Keys.D8)
                {
                    this.btn8.Focus();
                    this.btn8.PerformClick();
                }
                if (keyData == Keys.NumPad9 || keyData == Keys.D9)
                {
                    this.btn9.Focus();
                    this.btn9.PerformClick();
                }
                if (keyData == Keys.NumPad0 || keyData == Keys.D0)
                {
                    this.btn0.Focus();
                    this.btn0.PerformClick();
                }
                if (keyData == Keys.Add)
                {
                    this.btnadd.Focus();
                    this.btnadd.PerformClick();
                }
                if (keyData == Keys.Subtract || keyData == Keys.OemMinus)
                {
                    this.btnsub.Focus();
                    this.btnsub.PerformClick();
                }
                if (keyData == Keys.Multiply)
                {
                    this.btnmul.Focus();
                    this.btnmul.PerformClick();
                }
                if (keyData == Keys.Divide)
                {
                    this.btndiv.Focus();
                    this.btndiv.PerformClick();
                }
                if (keyData == Keys.Enter || keyData == Keys.Oemplus)
                {
                    this.btnequ.Focus();
                    this.btnequ.PerformClick();
                }
                if (keyData == Keys.Back)
                {
                    this.btncle.Focus();
                    this.btncle.PerformClick();
                }      
            return base.ProcessCmdKey(ref   msg, keyData);  
            }  
    
    
            private void btn1_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
             
                textBox1.Text = textBox1.Text + "1";
                textBox2.Text = textBox2.Text + "1";
                
                flag1++;
            }
    
            private void btn2_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "2";
                textBox2.Text = textBox2.Text + "2";
                flag1++;
            }
    
            private void btn3_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "3";
                textBox2.Text = textBox2.Text + "3";
                flag1++;
            }
    
            private void btn4_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "4";
                textBox2.Text = textBox2.Text + "4";
                flag1++;
            }
    
            private void btn5_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "5";
                textBox2.Text = textBox2.Text + "5";
                flag1++;
            }
    
            private void btn6_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "6";
                textBox2.Text = textBox2.Text + "6";
                flag1++;
            }
    
            private void btn7_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "7";
                textBox2.Text = textBox2.Text + "7";
                flag1++;
            }
    
            private void btn8_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "8";
                textBox2.Text = textBox2.Text + "8";
                flag1++;
            }
    
            private void btn9_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "9";
                textBox2.Text = textBox2.Text + "9";
                flag1++;
            }
    
            private void btn0_Click(object sender, EventArgs e)
            {
                if (isEqual)
                {
                    textBox1.Text = "";
                    textBox2.Text = "";
                    flag1 = 0;
                    flag2 = 0;
                    flag3 = 0;
                    isEqual = false;
                    numEqual = 0;
                }
                if (flag1 == 0) textBox2.Text = "";
                textBox1.Text = textBox1.Text + "0";
                textBox2.Text = textBox2.Text + "0";
                flag1++;
            }
    
            private void btnf_Click(object sender, EventArgs e)
            {
              //  textBox1.Text = textBox1.Text + ".";
            }
    
            private void btnadd_Click(object sender, EventArgs e)
            {          
                flag2++;
                    if (isEqual)
                {
                    isEqual = false;
                    textBox1.Text = "";
                    textBox1.Text = result.ToString();                        
                }
                if (flag1!=0)
                {
                    textBox1.Text = textBox1.Text + "+";
                    if (flag2 == 1)
                    {
                        m = int.Parse(textBox2.Text);
                            textBox2.Text="";
                            flag1 = 0; 
                             flag2=1;
                             flag3 = 1;
                             isClear = false;
    
                    
                    }
                    if (flag2 == 2)
                    {
                        if (flag1 != 0)
                        {
                            n = int.Parse(textBox2.Text);
    
                            switch(flag3)
                            {
                                case 1: m = m + n; break;
                                case 2: m = m - n; break;
                                case 3: m = m * n; break;
                                case 4: m = m / n; break;
                                  
                            }
                            
                            textBox2.Text="";
                            textBox2.Text = m.ToString();
                            flag1 = 0;
                            flag2 = 1;
                            flag3 = 1;
                        }
    
                    }
                
                }
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void btnmul_Click(object sender, EventArgs e)
            {
             
                flag2++;
                if (isEqual)
                {
                    isEqual = false;
                    textBox1.Text = "";
                    textBox1.Text = result.ToString();
                }
                if (flag1 != 0)
                {
                    textBox1.Text = textBox1.Text + "*";
                    if (flag2 == 1)
                    {
                       
                            m = int.Parse(textBox2.Text);
                            textBox2.Text = "";
                            flag1 = 0;
                            flag2 = 1;
                            flag3 = 3;
                            isClear = false;
    
                    }
                    if (flag2 == 2)
                    {
                        if (flag1 != 0)
                        {
                            n = int.Parse(textBox2.Text);
    
                            switch (flag3)
                            {
                                case 1: m = m + n; break;
                                case 2: m = m - n; break;
                                case 3: m = m * n; break;
                                case 4: m = m / n; break;
                               
                            }
                            if(isEqual)
                            
                            textBox2.Text = "";
                            textBox2.Text = m.ToString();
                            flag1 = 0;
                            flag2 = 1;
                            flag3 = 3;
                        }
    
                    }
    
                }
    
            }
    
            private void btndiv_Click(object sender, EventArgs e)
            {
              
                flag2++;
                if (isEqual)
                {
                    isEqual = false;
                    textBox1.Text = "";
                    textBox1.Text = result.ToString();
                }
                if (flag1 != 0)
                {
                    textBox1.Text = textBox1.Text + "/";
                    if (flag2 == 1)
                    {
                        
                            m = int.Parse(textBox2.Text);
                            textBox2.Text = "";
                            flag1 = 0;
                            flag2 = 1;
                            flag3 = 4;
                            isClear = false;
                        
    
                    }
                    if (flag2 == 2)
                    {
                        if (flag1 != 0)
                        {
                            n = int.Parse(textBox2.Text);
    
                            switch (flag3)
                            {
                                case 1: m = m + n; break;
                                case 2: m = m - n; break;
                                case 3: m = m * n; break;
                                case 4: m = m / n; break;
                            
                            }
                            textBox2.Text = "";
                            textBox2.Text = m.ToString();
                            flag1 = 0;
                            flag2 = 1;
                            flag3 = 4;
                        }
    
                    }
    
                }
    
            }
    
            private void btnsub_Click(object sender, EventArgs e)
            {
                
                flag2++;
                if (isEqual)
                {
                    isEqual = false;
                    textBox1.Text = "";
                    textBox1.Text = result.ToString();
                }
                if (flag1 != 0)
                {
                    textBox1.Text = textBox1.Text + "-";
    
                    if (flag2 == 1)
                    {
                        
                            m = int.Parse(textBox2.Text);
                            textBox2.Text = "";
                            flag1 = 0;
                            flag2 = 1;
                            flag3=2;
    
                        
    
                    }
                    if (flag2 == 2)
                    {
                        if (flag1 != 0)
                        {
                            n = int.Parse(textBox2.Text);
    
                            switch (flag3)
                            {
                                case 1: m = m + n; break;
                                case 2: m = m - n; break;
                                case 3: m = m * n; break;
                                case 4: m = m / n; break;
                            
                            }
                            
                            textBox2.Text = "";
                            textBox2.Text = m.ToString();
                            flag1 = 0;
                            flag2 = 1;
                            flag3 = 2;
                        }
    
                    }
    
                }
    
            }
    
            private void btnequ_Click(object sender, EventArgs e)
            {
              
    
                if (flag1 != 0)
                {
                    if (numEqual == 0)
                    {
                        textBox1.Text = textBox1.Text + "=";
                        numEqual++;
                    }
                    n = int.Parse(textBox2.Text);
                    switch (flag3)
                    {
                        case 1: m = m + n; break;
                        case 2: m = m - n; break;
                        case 3: m = m * n; break;
                        case 4: m = m / n; break;
                   
                    }
                 if (flag2 == 0)
                  {
                      if (numEqual == 1)
                        {
                            m = int.Parse(textBox2.Text);
                        }
                  }
                    textBox2.Text = m.ToString();
                    result = m;
                    
                    flag1 = 1;
                   
                    flag2 = 0;
                    flag3 = 5;
                    isEqual = true;
                    
                }
            }
            private void btncle_Click(object sender, EventArgs e)
            {
                textBox1.Text = "";
                textBox2.Text = "";
                flag1 = 0;
                flag2 = 0;
                flag3 = 0;
                numEqual = 0;
                isClear = true;
            }
    
        }
    }

     运行结果:

    不足:1.未处理数据溢出的情况

       2.只支持整型数据运算,还不能进行浮点运算

  • 相关阅读:
    DataGrid 的鼠标点击
    Menu菜单
    密码问题
    Combobox代码
    EndpointContracts
    the Differences between abstract class & interface in C#接口和抽象类的区别
    How to get MetaData on client side in WCF?如何在客户端获取WCF service的元数据
    Endpoint
    Assembly Essence 程序集深入探讨:程序集结构及部署
    EndpointBinding
  • 原文地址:https://www.cnblogs.com/junjunjun123/p/9777372.html
Copyright © 2011-2022 走看看