首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

宝宝的计算器1.0(C#编写)

作者:  时间: 2011-06-17

宝宝的计算器1.0还在调试当中,存在按钮“清空”和键盘按键“="的冲突问题,存在小数不能退格问题。正在修复BUG当中。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication13
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        public string number, Temp, dengyu, number3;
        public double number1, number2, result;
        public int SymbolsJudgement = 0, lian = 0, dengyub = 0;
        public bool xiaoshudian;

        private void Form1_Load(object sender, EventArgs e)
        {
            TextBox.Text = "0";  //初始化为0
            this.KeyDown += new KeyEventHandler(Form1_KeyDown);  //添加键盘
        }

        void Form1_KeyDown(object sender, KeyEventArgs e)  //设置键盘
        {
            string i;
            switch (e.KeyCode)
            {
                case Keys.D1: i = "1"; this.method(i); break;
                case Keys.D2: i = "2"; this.method(i); break;
                case Keys.D3: i = "3"; this.method(i); break;
                case Keys.D4: i = "4"; this.method(i); break;
                case Keys.D5: i = "5"; this.method(i); break;
                case Keys.D6: i = "6"; this.method(i); break;
                case Keys.D7: i = "7"; this.method(i); break;
                case Keys.D8: i = "8"; this.method(i); break;
                case Keys.D9: i = "9"; this.method(i); break;
                case Keys.D0: button10_Click(sender, e); break;
                case Keys.Add: int j = 1; this.yunsuan(j); break;
                case Keys.Subtract: j = 2; this.yunsuan(j); break;
                case Keys.Multiply: j = 3; this.yunsuan(j); break;
                case Keys.Divide: j = 4; this.yunsuan(j); break;
                case Keys.NumPad1: i = "1"; this.method(i); break;
                case Keys.NumPad2: i = "2"; this.method(i); break;
                case Keys.NumPad3: i = "3"; this.method(i); break;
                case Keys.NumPad4: i = "4"; this.method(i); break;
                case Keys.NumPad5: i = "5"; this.method(i); break;
                case Keys.NumPad6: i = "6"; this.method(i); break;
                case Keys.NumPad7: i = "7"; this.method(i); break;
                case Keys.NumPad8: i = "8"; this.method(i); break;
                case Keys.NumPad9: i = "9"; this.method(i); break;
                case Keys.NumPad0: button10_Click(sender,e); break;
                case Keys.Back: Backspace_Click(sender,e); break;
                case Keys.Enter: button15_Click(sender,e); break;
                case Keys.Decimal: point_Click(sender, e); break;
                case Keys.Delete: clear_Click(sender,e); break;
            }
        }

        private void method(string i)  //创建一个1-9数字的方法
        {
            if (TextBox.Text == "0")
            {
                xiaoshudian = false;
                number = i;
                TextBox.Text = Convert.ToString(number);
            }
            else
            {
                number = number + i;
                TextBox.Text = number;
            }
        }

        private void button_click(object sender, EventArgs e)  //根据按钮最后一位的字符判断执行哪个按钮
        {
            if (dengyub == 1)
            {
                number = ""; TextBox.Text = "0"; result = 0.0; number1 = 0.0; lian = 0; number2 = 0.0; dengyub = 0;
            }
            string i;
            int j;
            Button btn = sender as Button;
            string num = btn.Name.Substring(btn.Name.Length - 1);
            switch (num)
            {
                case "1": i = "1"; this.method(i); break;
                case "2": i = "2"; this.method(i); break;
                case "3": i = "3"; this.method(i); break;
                case "4": i = "4"; this.method(i); break;
                case "5": i = "5"; this.method(i); break;
                case "6": i = "6"; this.method(i); break;
                case "7": i = "7"; this.method(i); break;
                case "8": i = "8"; this.method(i); break;
                case "9": i = "9"; this.method(i); break;
                case "a": j = 1; this.yunsuan(j); break;  //加法
                case "s": j = 2; this.yunsuan(j); break;  //减法
                case "m": j = 3; this.yunsuan(j); break;  //乘法
                case "d": j = 4; this.yunsuan(j); break;  //除法
            }
        }

        private void button10_Click(object sender, EventArgs e)  //数字0的按钮
        {
            if (dengyub == 1)
            {
                number = ""; TextBox.Text = "0"; result = 0.0; number1 = 0.0; lian = 0; number2 = 0.0; dengyub = 0;
            }
            if (TextBox.Text != "0")
            {
                number = number + "0";
                TextBox.Text = number;
            }
            else
                xiaoshudian = false;
        }

        private void yunsuan(int j)
        {
            dengyub = 0;
            xiaoshudian = false;
            if (lian == 0)  //检查是否连续运算
            {
                SymbolsJudgement = j;
                if (number == "")
                    number = "0";
                number1 = Convert.ToDouble(number);
                lian++;
                number = "";
            }
            else  //连续运算执行这里
            {
                if (SymbolsJudgement == 1)
                {
                    if (number == "")
                        number = "0";
                    result = Convert.ToDouble(Convert.ToDouble(number1) + Convert.ToDouble(number));
                    number1 = result;
                    TextBox.Text = Convert.ToString(result);
                    number = "";
                }
                else if (SymbolsJudgement == 2)
                {
                    if (number == "")
                        number = "0";
                    result = Convert.ToDouble(Convert.ToDouble(number1) - Convert.ToDouble(number));
                    number1 = result;
                    TextBox.Text = Convert.ToString(result);
                    number = "";
                }
                else if (SymbolsJudgement == 3)
                {
                    if (number == "0")
                        number = "1";
                    if (number == "")
                        number = "0";
                    result = Convert.ToDouble(Convert.ToDouble(number1) * Convert.ToDouble(number));
                    number1 = result;
                    TextBox.Text = Convert.ToString(result);
                    number = "";
                }
                else if (SymbolsJudgement == 4)
                {
                    if (number == "0")
                        number = "1";
                    if (number == "")
                        number = "1";
                    result = Convert.ToDouble(Convert.ToDouble(number1) / Convert.ToDouble(number));
                    number1 = result;
                    TextBox.Text = Convert.ToString(result);
                    number = "";
                }
                SymbolsJudgement = j;
            }
        }

        private void button15_Click(object sender, EventArgs e)  //等于按钮
        {
            xiaoshudian = false;
            switch (SymbolsJudgement)
            {
                case 1:dengyu = Convert.ToString(number1 + Convert.ToDouble(number));
                TextBox.Text = Convert.ToString(number1 + Convert.ToDouble(number));break;
                case 2:dengyu = Convert.ToString(number1 - Convert.ToDouble(number));
                TextBox.Text = Convert.ToString(number1 - Convert.ToDouble(number));break;
                case 3:dengyu = Convert.ToString(number1 * Convert.ToDouble(number));
                TextBox.Text = Convert.ToString(number1 * Convert.ToDouble(number));break;
                case 4:
                    if (TextBox.Text == "0")
                    {
                        TextBox.Text = "除数不能为0";
                        break;
                    }
                    else
                    {
                        dengyu = Convert.ToString(number1 / Convert.ToDouble(number));
                        TextBox.Text = Convert.ToString(number1 / Convert.ToDouble(number));
                        break;
                    }
            }
            number = "0";
            number1 = Convert.ToDouble(dengyu);
            dengyub = 1;
        }

        private void clear_Click(object sender, EventArgs e)  //清空按钮
        {
            number = ""; TextBox.Text = "0"; result = 0.0; number1 = 0.0; lian = 0; number2 = 0.0; dengyub = 0;
        }

        private void point_Click(object sender, EventArgs e)  //小数点按钮
        {
            if (xiaoshudian == false)
            {
                if (TextBox.Text == "0")
                    number += "0.";
                else
                    number += ".";
            }
            xiaoshudian = true;TextBox.Text = Convert.ToString(number);
        }

        private void Backspace_Click(object sender, EventArgs e)  //退格按钮
        {
            if (dengyub != 1)
            {
                number2 = Convert.ToDouble(TextBox.Text);
                if (number2 < 10)
                {
                    TextBox.Text = "0";
                    return;
                }
                if (number2 != 0)
                {
                    number3 = TextBox.Text;
                    TextBox.Text = number3.Substring(0, number3.Length - 1);
                }
                if (number2 == 0)
                {
                    number = ""; TextBox.Text = "0"; result = 0.0; number1 = 0.0; lian = 0; number2 = 0.0; dengyub = 0;
                }
            }
        }

        private void negative_Click(object sender, EventArgs e)  //正负转换按钮
        {
            if (dengyub == 0)
            {
                number = Convert.ToString(0 - Convert.ToDouble(TextBox.Text));
                TextBox.Text = Convert.ToString(number);
            }
            else
            {
                number1 = Convert.ToDouble(0 - Convert.ToDouble(TextBox.Text));
                TextBox.Text = Convert.ToString(number1);
            }
        }

        private void sqrt_Click(object sender, EventArgs e)  //根号按钮
        {
            if (Convert.ToDouble(TextBox.Text) < 0)
                this.TextBox.Text = "负数不能平方根";
            else
            {
                number2 = Convert.ToDouble(TextBox.Text);
                TextBox.Text = Convert.ToString(System.Math.Sqrt(number2));
                if (dengyub == 0)
                    number = TextBox.Text;
                else
                    number1 = Convert.ToDouble(TextBox.Text);
            }
        }

        private void 关于作者ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            help helps = new help();
            helps.Show();
        }

        private void 复制ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Temp = TextBox.Text;
        }

        private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TextBox.Text = Temp;
        }
    }
}