使用C#制作的一个小小计算器

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.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace jisuanqi
{
    public partial class Form1 : Form
    {
        bool ise = false;  //判断计算是否完成  
        public Form1()
        {
            InitializeComponent();
            Initialize();
        }
        public void Initialize()   //初始化
        {
            textBox1.Text = "0";
            textBox2.Text = "";
            label1.Text = "";
            ise = false;
        }
        public void AddNum(string num) // 输入数字
        {
            if (ise)
            {
                Initialize();

            }
            if (textBox1.Text == "0" && num!=".")//初始0会被覆盖
            {
                textBox1.Text = num;
            }
            else if(textBox1.Text=="" && num == ".")
            {
                textBox1.Text = "0" + num;
            }
            else 
            { textBox1.Text += num; }
        }
        public void Addop(string op) // 输入运算符
        {
            if (ise)
            {
                textBox2.Text = textBox1.Text;
                textBox1.Text = "";
                ise = false;
            }
            textBox2.Text += textBox1.Text;
            string pattern = @"[0-9]$";
            Match match = Regex.Match(textBox2.Text, pattern);//匹配末尾字符串
            
            if (match.Success==false || textBox1.Text.EndsWith(".")) //匹配成功则回退一格并改变运算符
            {
                textBox2.Text = textBox2.Text[0..^1];
                
            }
            textBox1.Text = "";
            textBox2.Text += op;
        } 
        public void Addot(string str) // 其他运算
        {
            if (textBox1.Text != "" && ise==false)
            {
                
                double a = 0;
                switch (str)
                {
                    case "平方": a = System.Math.Pow(Convert.ToDouble(textBox1.Text), 2); break;
                    case "开根号": a = System.Math.Sqrt(Convert.ToDouble(textBox1.Text));break;
                    case "1/x":  
                        if (textBox1.Text!="0") { a = 1 / Convert.ToDouble(textBox1.Text); }
                        else { label1.Text = "除数不能为0!"; }
                        break;
                }
                textBox1.Text = "";
                textBox1.Text += a;
            } 
        }
        private void timer1_Tick(object sender, EventArgs e)  //显示时间
        {
            DateTime dt = DateTime.Now;
            this.label2.Text = dt.ToString();
        }
        #region 按钮0-9、.
        private void button0_Click(object sender, EventArgs e)
        {
            AddNum("0");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            AddNum("1");
        }
        private void button2_Click(object sender, EventArgs e)
        {
            AddNum("2");
        }
        private void button3_Click(object sender, EventArgs e)
        {
            AddNum("3");
        }
        private void button4_Click(object sender, EventArgs e)
        {
            AddNum("4");
        }
        private void button5_Click(object sender, EventArgs e)
        {
            AddNum("5");
        }
        private void button6_Click(object sender, EventArgs e)
        {
            AddNum("6");
        }
        private void button7_Click(object sender, EventArgs e)
        {
            AddNum("7");
        }
        private void button8_Click(object sender, EventArgs e)
        {
            AddNum("8");
        }
        private void button9_Click(object sender, EventArgs e)
        {
            AddNum("9");
        }
        private void button10_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Contains(".")==false)
            {
                AddNum(".");
               // point = true;
            }
        }
        #endregion
        #region 运算符
        private void button17_Click(object sender, EventArgs e)
        {
            Addop("+");
        }
        private void button16_Click(object sender, EventArgs e)
        {
            Addop("-");
        }
        private void button13_Click(object sender, EventArgs e)
        {
            Addop("×");
        }
        private void button11_Click(object sender, EventArgs e)
        {
            Addop("÷");
        }
        #endregion
        private void button20_Click(object sender, EventArgs e) //全部清零
        {
            Initialize();
        }
        private void button19_Click(object sender, EventArgs e) //回退一格
        {
            if (!ise)
            {
                if (textBox1.Text.Length != 0)
                {
                    textBox1.Text = textBox1.Text[0..^1];
                }
                else if (textBox2.Text.Length != 0)
                {
                    textBox2.Text = textBox2.Text[0..^1];

                }
            }
            else//如果已经运算了就初始化
            {
                Initialize();
            }
            //textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
            //textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
        }
        private void button15_Click(object sender, EventArgs e) //平方
        {
            Addot("平方");
        }
        private void button12_Click(object sender, EventArgs e) //根号√
        {
            Addot("开根号");
        }
        private void button14_Click(object sender, EventArgs e) //  1/x
        {
            Addot("1/x");
        }
        private void button18_Click(object sender, EventArgs e) // "=" 及运算
        {
            if (!ise)
            {
                Addop(null);
                string str = textBox2.Text.Replace('÷', '/').Replace('×', '*');  //替换一下乘号和除号
                label1.Text = "";
                try
                {
                    var sum = new DataTable().Compute(str, null);
                    textBox1.Text = "";
                    textBox2.Text += "=";
                    textBox1.Text += sum;
                    if (textBox1.Text == "∞")
                    {
                        textBox1.Text = "";
                        label1.Text = "除数不能为0!";
                    }
                    ise = true;

                }
                catch
                {
                    label1.Text = "格式错误";
                }
            }
        }

    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值