简单的计算器制作

来源:互联网 发布:意大利语初学软件 编辑:程序博客网 时间:2024/04/29 04:47

今天上机的时候,因为老师的留得作业差不多做完了,就试着做了这样一个简单的计算器,刚开始的时候的代码是这个样子:

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

namespace Calculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string str = null;//保存算术表达式的字符串
        char a='0';
        public double ShowResult(char a,string str)
        {
            string[] num= str.Split('a');//这个地方的错误,使我预计的分割下来的两个参数不能成功的分割,应该不用单引号括起来的
            double result=0;
            try
            {
                switch (a)
                {
                    case '+':
                        result = Convert.ToDouble(num[0]) + Convert.ToDouble(num[1]);
                        break;
                    case '-':
                        result = Convert.ToDouble(num[0]) - Convert.ToDouble(num[1]);
                        break;
                    case '*':
                        result = Convert.ToDouble(num[0]) * Convert.ToDouble(num[1]);
                        break;
                    case '/':
                        result = Convert.ToDouble(num[0]) / Convert.ToDouble(num[1]);
                        break;
                }
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
               
            }
            return result;

        }
       private void btnOne_Click(object sender, EventArgs e)//将算术表达式中的字符添加到字符串里
        {
            str += btnOne.Text;
            txtShow.Text = str;
        }

        private void btnTwo_Click(object sender, EventArgs e)
        {
            str += btnTwo.Text;
            txtShow.Text = str;
        }

        private void btnThree_Click(object sender, EventArgs e)
        {
            str += btnThree.Text;
            txtShow.Text = str;
        }

        private void btnFour_Click(object sender, EventArgs e)
        {
            str += btnFour.Text;
            txtShow.Text = str;
        }

        private void btnFive_Click(object sender, EventArgs e)
        {
            str += btnFive.Text;
            txtShow.Text = str;
        }

        private void btnSix_Click(object sender, EventArgs e)
        {
            str += btnSix.Text;
            txtShow.Text = str;
        }

        private void btnSeven_Click(object sender, EventArgs e)
        {
            str += btnSeven.Text;
            txtShow.Text = str;
        }

        private void btnEight_Click(object sender, EventArgs e)
        {
            str += btnEight.Text;
            txtShow.Text = str;
        }

        private void btnNine_Click(object sender, EventArgs e)
        {
            str += btnNine.Text;
            txtShow.Text = str;
        }

        private void btnZero_Click(object sender, EventArgs e)
        {
            str += btnZero.Text;
            txtShow.Text = str;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (a != '0')
            {
                str = txtShow.Text;
            }
            else
            {
                a = '+';
                str += btnAdd.Text;
            }
            txtShow.Text = str;
        }

        private void btnSub_Click(object sender, EventArgs e)
        {
            if (a != '0')
            {
                str = txtShow.Text;
            }
            else
            {
                a = '-';
                str += btnSub.Text;
            }
            txtShow.Text = str;
        }

        private void btnMul_Click(object sender, EventArgs e)
        {
            if (a != '0')
            {
                str=txtShow.Text;
            }
            else
            {
                a = '*';
                str += btnMul.Text;
            }
            txtShow.Text = str;
        }

        private void btnDiv_Click(object sender, EventArgs e)
        {
            if (a != '0')                             
            {
                str = txtShow.Text;
            }
            else                        //else即为a已经被赋值运算符了
            {
                a = '/';
                str += btnDiv.Text;
            }
            txtShow.Text = str;
        }

        private void btnEqual_Click(object sender, EventArgs e)
        {
 
            double re;
            re=ShowResult(a,str);
            txtShow.Text = Convert.ToString(re);
            str = null;//在这部分里,我把str赋值为null这样子的话就不能够使算下来的结果再次进行加减,所以这句话后来我改成了

                              //str= Convert.ToString(re);
                              //之后我又加上了a='0',这样做也同样是为了起一次的结果能够再次进行运算,也就是a能够继续被赋值其他预算符
        }

        private void btnAc_Click(object sender, EventArgs e)
        {
            str = null;
            txtShow.Text = null;
        }

        private void btnSpot_Click(object sender, EventArgs e)
        {
            str += btnSpot.Text;
            txtShow.Text = str;
        }

     }
}

经过修改后,这个计算器已经能够进行简单的操作了,不过它与一般我们用的计算机相比还是有一些不方便。一般计算机,当我们写入1+2以后,如果再写入+3就会自动把1+2计算出来,然后再+3,但我做的必须是1+2=以后才能够再+3的。呵呵,不足之处,请多多指教了

原创粉丝点击