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.只支持整型數據運算,還不能進行浮點運算

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM