📜  c# 计算器 - C# (1)

📅  最后修改于: 2023-12-03 14:39:47.977000             🧑  作者: Mango

C# 计算器

C# 计算器是一种基于 C# 编写的计算器,它可以执行常见的数学运算,如加、减、乘、除等,并且可以实现科学计算和统计学计算等复杂运算。

功能特点
  • 支持基本的数学运算:加、减、乘、除等。
  • 支持科学计算:平方、开方、立方等。
  • 支持统计学计算:平均数、中位数、众数等。
  • 支持使用括号进行优先级的控制。
  • 支持数字格式的自定义,如保留小数位数等。
  • 支持历史记录功能,可以查看之前输入的历史数据,并进行编辑和重新计算。
代码实现

C# 计算器采用面向对象的编程方式实现,主要涉及的类包括:

  • Calculator:计算器类,负责进行数学运算和数据的保存。
  • Display:显示器类,负责显示输入的数字和计算结果。
  • Keyboard:键盘类,负责捕获用户的输入和向计算器传递指令。
  • History:历史记录类,负责保存用户输入的历史记录和进行历史记录的管理。

以下为 C# 计算器的主要代码片段:

// Calculator.cs
public class Calculator
{
    public decimal Result { get; private set; }

    public void Add(decimal value)
    {
        Result += value;
    }

    public void Subtract(decimal value)
    {
        Result -= value;
    }

    public void Multiply(decimal value)
    {
        Result *= value;
    }

    public void Divide(decimal value)
    {
        if (value == 0)
        {
            throw new ArgumentException("除数不能为 0!");
        }

        Result /= value;
    }
}

// Display.cs
public class Display
{
    public void ShowInput(string input)
    {
        // 显示用户输入的数字或指令
    }

    public void ShowResult(decimal result)
    {
        // 显示计算结果
    }
}

// Keyboard.cs
public class Keyboard
{
    public event Action<decimal> NumberPressed;
    public event Action<string> CommandPressed;

    public void PressNumber(decimal number)
    {
        NumberPressed?.Invoke(number);
    }

    public void PressCommand(string command)
    {
        CommandPressed?.Invoke(command);
    }
}

// History.cs
public class History
{
    public void Add(string input)
    {
        // 将用户输入的字符串加入历史记录中
    }

    public void Remove(int index)
    {
        // 根据索引移除历史记录中的一项
    }

    public string[] GetHistory()
    {
        // 返回历史记录数组
    }
}
使用示例

以下为 C# 计算器的使用示例:

var calculator = new Calculator();
var display = new Display();
var keyboard = new Keyboard();
var history = new History();

keyboard.NumberPressed += calculator.Add;
keyboard.NumberPressed += display.ShowInput;
keyboard.NumberPressed += history.Add;

keyboard.CommandPressed += command =>
{
    if (command == "+")
    {
        calculator.Add(calculator.Result);
    }
    else if (command == "-")
    {
        calculator.Subtract(calculator.Result);
    }
    else if (command == "*")
    {
        calculator.Multiply(calculator.Result);
    }
    else if (command == "/")
    {
        calculator.Divide(calculator.Result);
    }

    display.ShowResult(calculator.Result);
    history.Add(command);
};
总结

C# 计算器是一种功能强大且简单易用的计算器,它可以满足大部分用户的数学计算需求。它采用了面向对象的编程方式实现,使得代码易于维护和扩展。如果您需要一个可以执行常见数学运算和实现科学计算和统计学计算等复杂运算的计算器,那么 C# 计算器是一个不错的选择。