这个计算器的程序我该怎么分类才能简化

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
    {

        public double number1, number2, result;
        public double input;
        public int pointnum;
        public enum Operator { none, Plus, Minus, Multiplication, Division, square, evolution, power, Sin, Cos, Tan, Ln, Log, fu }
        public Operator mode = Operator.none;
        public bool isequal = false, ispoint = false;
        public Form1()
        {
            InitializeComponent();
        }
        public void Input(double n)
        {

            if (pointnum == 0)
            {
                if (mode == Operator.none)
                {
                    number1 = number1 * 10 + n;

                    lableout.Text = Convert.ToString(number1);
                }
                else
                {
                    number2 = number2 * 10 + n;

                    lableout.Text = Convert.ToString(number2);
                }
            }
            else
            {
                pointnum = pointnum + 1;
                if (mode == Operator.none)
                {
                    number1 = number1 + n / Math.Pow(10, pointnum - 1);

                    lableout.Text = Convert.ToString(number1);
                }
                else
                {
                    number2 = number2 + n / Math.Pow(10, pointnum - 1);

                    lableout.Text = Convert.ToString(number2);
                }

            }

        }
        private void Num1_Click(object sender, EventArgs e)
        {
            input = 1;
            Input(input);
        }

        private void Num2_Click(object sender, EventArgs e)
        {
            input = 2;
            Input(input);
        }

        private void Num3_Click(object sender, EventArgs e)
        {
            input = 3;
            Input(input);
        }

        private void Num4_Click(object sender, EventArgs e)
        {
            input = 4;
            Input(input);
        }

        private void Num5_Click(object sender, EventArgs e)
        {
            input = 5;
            Input(input);
        }

        private void Num6_Click(object sender, EventArgs e)
        {
            input = 6;
            Input(input);
        }

        private void Num7_Click(object sender, EventArgs e)
        {
            input = 7;
            Input(input);
        }

        private void Num8_Click(object sender, EventArgs e)
        {
            input = 8;
            Input(input);
        }

        private void Num9_Click(object sender, EventArgs e)
        {
            input = 9;
            Input(input);
        }

        private void Num0_Click(object sender, EventArgs e)
        {
            input = 0;
            Input(input);
        }
        private void Plus_Click(object sender, EventArgs e)
        {

            mode = Operator.Plus;
            switchmode();
        }
        private void Minus_Click(object sender, EventArgs e)
        {

            mode = Operator.Minus;
            switchmode();
        }
        private void Multiplication_Click(object sender, EventArgs e)
        {

            mode = Operator.Multiplication;
            switchmode();
        }

        private void division_Click(object sender, EventArgs e)
        {

            mode = Operator.Division;
            switchmode();

        }
        private void square_Click(object sender, EventArgs e)
        {
            mode = Operator.square;
            switchmode();
        }
        private void evolution_Click(object sender, EventArgs e)
        {
            mode = Operator.evolution;
            switchmode();
        }
        private void power_Click(object sender, EventArgs e)
        {
            mode = Operator.power;
            switchmode();
        }
        private void Sin_Click(object sender, EventArgs e)
        {
            mode = Operator.Sin;
            switchmode();
        }

        private void Cos_Click(object sender, EventArgs e)
        {
            mode = Operator.Cos;
            switchmode();
        }

        private void Tan_Click(object sender, EventArgs e)
        {
            mode = Operator.Tan;
            switchmode();
        }
        private void In_Click(object sender, EventArgs e)
        {
            mode = Operator.Ln;
            switchmode();
        }

        private void Log_Click(object sender, EventArgs e)
        {
            mode = Operator.Log;
            switchmode();
        }
        private void fu_Click(object sender, EventArgs e)
        {
            mode = Operator.fu;
            switchmode();
        }
        private void equal_Click(object sender, EventArgs e)
        {
            jisuan();
            isequal = true;
            reclean();
        }
        private void clean_Click(object sender, EventArgs e)
        {
            number1 = 0;
            lableout.Text = Convert.ToString(number1);
            pointnum = 0;
        }
        private void Back_Click(object sender, EventArgs e)
        {
            if (ispoint == false)
            {
                if (mode == Operator.none)
                {
                    if (number1 >= 10 || number1 <= -10)
                    {
                        number1 = Convert.ToDouble(Convert.ToString(number1).Substring(0, Convert.ToString(number1).Length - 1));
                        lableout.Text = number1.ToString();
                    }
                    else
                    {
                        number1 = 0;
                        lableout.Text = number1.ToString();
                    }
                }
            }
        }
        private void point_Click(object sender, EventArgs e)
        {

            ispoint = true;
            if (ispoint == true)
            {
                pointnum = 1;
                if (mode == Operator.none)
                {
                    lableout.Text = Convert.ToString(number1) + ".";
                }
                else
                {

                    lableout.Text = Convert.ToString(number2) + ".";

                }
            }
        }
        public void reclean()
        {
            if (isequal == true)
            {
                result = number1;
                lableout.Text = Convert.ToString(result);
            }
            number1 = result;
            number2 = 0;
            labelup.Text = "";
            labeldown.Text = "";
            isequal = false;
            mode = Operator.none;
        }

        public void switchmode()
        {
            switch (mode)
            {
                case Operator.Plus:
                    labeldown.Text = "+";
                    break;
                case Operator.Minus:
                    labeldown.Text = "-";
                    break;
                case Operator.Multiplication:
                    labeldown.Text = "*";
                    break;
                case Operator.Division:
                    labeldown.Text = "÷";
                    break;
                case Operator.square:
                    labeldown.Text = "^2";
                    break;
                case Operator.evolution:
                    labeldown.Text = "√";
                    break;
                case Operator.power:
                    labeldown.Text = "^";
                    break;
                case Operator.Sin:
                    labeldown.Text = "sin";
                    break;
                case Operator.Cos:
                    labeldown.Text = "cos";
                    break;
                case Operator.Tan:
                    labeldown.Text = "tan";
                    break;
                case Operator.Ln:
                    labeldown.Text = "ln";
                    break;
                case Operator.Log:
                    labeldown.Text = "log";
                    break;
                case Operator.fu:
                    labeldown.Text = "-";
                    break;
            }

            ispoint = false;
            pointnum = 0;
            labelup.Text = Convert.ToString(number1);
            lableout.Text = Convert.ToString(number2);

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            lableout.Text = Convert.ToString(number1);
        }
        public void jisuan()
        {

            switch (mode)
            {
                case Operator.Plus:
                    number1 = number1 + number2;
                    break;
                case Operator.Minus:
                    number1 = number1 - number2;
                    break;
                case Operator.Multiplication:
                    number1 = number1 * number2;
                    break;
                case Operator.Division:
                    number1 = number1 / number2;
                    break;
                case Operator.square:
                    number1 = number1 * number1;
                    break;
                case Operator.evolution:
                    number1 = Math.Pow(number1, 0.5);
                    break;
                case Operator.power:
                    number1 = Math.Pow(number1, number2);
                    break;
                case Operator.Sin:
                    number1 = Math.Sin(number1);
                    break;
                case Operator.Cos:
                    number1 = Math.Cos(number1);
                    break;
                case Operator.Tan:
                    number1 = Math.Tan(number1);
                    break;
                case Operator.Ln:
                    number1 = Math.Log10(number1);
                    break;
                case Operator.Log:
                    number1 = Math.Log(number2, number1);
                    break;
            }

        }
    }
}
   

可以参考下这个文章,代码比较简洁:https://blog.csdn.net/ChrisKevin0221/article/details/114822099

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632