天天看點

簡單電腦C#源代碼

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Calculater

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

         private void lable1_Click(object sender, EventArgs e)

         {

        }

       // private void txt_result.TextChanged(object sender, EventArgs e)

        //{

        //}

        //定義操作數A

        double dblNumA = 0;

        //定義操作數B

        double dblNumB = 0;

        //定義操作符

        static string oper = "";

        //定義操作數是否有小數點

        static bool point = false;

        //記錄小數點後數字的個數

        int dotnum = 0;

        //用于儲存最初的操作數,以便進行連續敲擊等号運算

        double dblNnm = 0;

        //用于記錄是否連續敲擊等号按鈕

        bool takeEqual = true;

        //顯示函數

        private void display(int i)

        {

            if (point)

            {

                dotnum++;

                if (i == 0) { this.txt_result.Text = this.txt_result.Text + "0"; }

                if (i != 0)

                {

                    this.txt_result.Text = Convert.ToString(Convert.ToDouble(this.txt_result.Text) + i / (Math.Pow(10, dotnum)));

                }

            }

            else

            {

                this.txt_result.Text += ".";

                this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length-1);

                this.txt_result.Text = Convert.ToString(Convert.ToDouble(this.txt_result.Text) * 10 + i);

                this.txt_result.Text = this.txt_result.Text + ".";

            }

        }

        //0按鈕的響應函數

        private void button0_Click(object sender, EventArgs e)

        {

            display(0);

        }

        //1按鈕的響應函數

        private void button1_Click(object sender, EventArgs e)

        {

            display(1);

        }

        //2按鈕的響應函數

        private void button2_Click(object sender, EventArgs e)

        {

            display(2);

        }

        //3按鈕的響應函數

        private void button3_Click(object sender, EventArgs e)

        {

            display(3);

        }

        //4按鈕的響應函數

        private void button4_Click(object sender, EventArgs e)

        {

            display(4);

        }

        //5按鈕的響應函數

        private void button5_Click(object sender, EventArgs e)

        {

            display(5);

        }

        //6按鈕的響應函數

        private void button6_Click(object sender, EventArgs e)

        {

            display(6);

        }

        //7按鈕的響應函數

        private void button7_Click(object sender, EventArgs e)

        {

            display(7);

        }

        //8按鈕的響應函數

        private void button8_Click(object sender, EventArgs e)

        {

            display(8);

        }

        //9按鈕的響應函數

        private void button9_Click(object sender, EventArgs e)

        {

            display(9);

        }

        //符号函數

        private void operat(string sign)

        {

            dblNumA = double.Parse(this.txt_result.Text);

            point = false;

            this.txt_result.Text = "0";

            oper = sign;

            takeEqual = true;

        }

        //   /按鈕響應函數

        private void button_div_Click(object sender, EventArgs e)

        {

            operat("/");

        }

        //*按鈕響應函數

        private void button_mul_Click(object sender, EventArgs e)

        {

            operat("*");

        }

        //-按鈕響應函數

        private void button_sub_Click(object sender, EventArgs e)

        {

            operat("-");

        }

        //+按鈕響應函數

        private void button_add_Click(object sender, EventArgs e)

        {

            operat("+");

        }

        //%按鈕響應函數

        private void button_mod_Click(object sender, EventArgs e)

        {

            operat("%");

        }

        //+/-按鈕響應函數

        private void button_sign_Click(object sender, EventArgs e)

        {

            this.txt_result.Text = Convert.ToString(double.Parse(this.txt_result.Text) * -1);

        }

        //開平方—sqrt按鈕響應函數

        private void button_sqrt_Click(object sender, EventArgs e)

        {

            if (double.Parse(this.txt_result.Text) != Convert.ToInt64(double.Parse(this.txt_result.Text)) || point)

            {

                this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length);

                point = false;

            }

            else

            {

                this.txt_result.Text = this.txt_result.Text + "";

                this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);

            }

            this.txt_result.Text = Convert.ToString(Math.Sqrt(Double.Parse(this.txt_result.Text)));

            takeEqual = false;

        }

        //等号按鈕的響應函數

        private void button_equ_Click(object sender, EventArgs e)

        {

            if (takeEqual)

            {

                dblNnm = dblNumB = double.Parse(this.txt_result.Text);

                if (oper == "+")

                {

                    this.txt_result.Text = Convert.ToString(dblNumA + dblNumB);

                }

                if (oper == "-")

                {

                    this.txt_result.Text = Convert.ToString(dblNumA - dblNumB);

                }

                if (oper == "*")

                {

                    this.txt_result.Text = Convert.ToString(dblNumA * dblNumB);

                }

                if (oper == "/")

                {

                    if (dblNumB == 0)

                    {

                        MessageBox.Show("除數為零,非法操作!");

                    }

                    else

                        this.txt_result.Text = Convert.ToString(dblNumA / dblNumB);

                }

                if (oper == "%")

                {

                    this.txt_result.Text = Convert.ToString(dblNumA % dblNumB);

                }

                else

                    if (double.Parse(this.txt_result.Text) == Convert.ToUInt64(double.Parse(this.txt_result.Text)) && 0 != double.Parse(this.txt_result.Text))

                    {

                        this.txt_result.Text = this.txt_result.Text + ".";

                    }

            }

            else WorkLikeFront();

            takeEqual = false;

        }

        //清除按鈕的響應函數

        private void button_c_Click(object sender, EventArgs e)

        {

            this.txt_result.Text = "0";

            oper = "";

            point = false;

            dotnum = 0;

            dblNumA = 0;

            takeEqual = true;

        }

        //倒退按鈕的響應函數

        private void button_backspace_Click(object sender, EventArgs e)

        {

            this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);//否則繼續截取

            if (this.txt_result.Text == "") { this.txt_result.Text = "0."; }

        }

        //1/x按鈕的響應函數

        private void button_rec_Click(object sender, EventArgs e)

        {

            this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);

            this.txt_result.Text = this.txt_result.Text + ".";

            point = true;

        }

        //小數點按鈕的響應函數

        private void button_dot_Click(object sender, EventArgs e)

        {

            this.txt_result.Text = this.txt_result.Text.Substring(0, this.txt_result.Text.Length - 1);

            this.txt_result.Text = this.txt_result.Text + ".";

            point = true;

        }

        //在連續敲擊等号時用同樣的操作數進行上一個運算符的運算

        private void WorkLikeFront()

        {

            double dblNumB2 = double.Parse(this.txt_result.Text);

            if (oper == "+")

            {

                this.txt_result.Text = Convert.ToString(dblNumB2 + dblNnm);

            }

            if (oper == "-")

            {

                this.txt_result.Text = Convert.ToString(dblNumB2 - dblNnm);

            }

            if (oper == "*")

            {

                this.txt_result.Text = Convert.ToString(dblNumB2 * dblNnm);

            }

            if (oper == "/")

            {

                if (dblNnm == 0)

                {

                    MessageBox.Show("除數為零,非法操作");

                }

                else

                    this.txt_result.Text = Convert.ToString(dblNumB2 / dblNnm);

            }

            if (oper == "%")

            {

                this.txt_result.Text = Convert.ToString(dblNumB2 % dblNnm);

            }

            else

                if (double.Parse(this.txt_result.Text) == Convert.ToInt64(double.Parse(this.txt_result.Text)) && 0 != double.Parse(this.txt_result.Text))

                {

                    this.txt_result.Text = this.txt_result.Text + ".";

                }

        }

    }

}

繼續閱讀