前言
该计算器程序支持二进制、八进制、十进制之间的互相转换,同时也支持二进制、八进制、十进制的计算。但是需要注意的是:程序可能存在着些许错误,请体谅笔者的水平。笔者提供了程序的完整文件,包括程序源代码。
本程序提供了“面向对象”和“面向过程”两种设计思路。
界面效果图
Calculator类的代码
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCalculator
{
public class Calculator
{
//进制类型的枚举
public enum _bases { bin = 2, oct = 8, dec = 10 }
//标志当前运算进制,默认为十进制
public _bases _currentBase = _bases.dec;
//运算符的枚举
public enum _operators { add = 1, subtract = 2, multiply = 3, divide = 4}
//运算符默认为“+”
public _operators _operator = _operators.add;
//进行各种进制下的各种运算
public string calculate(string num1, string num2)
{
string result;
//如果是二进制
if(_currentBase == _bases.bin)
{
if (_operator == _operators.add)
result = BinAdd(num1, num2);
else if (_operator == _operators.subtract)
result = BinSubtract(num1, num2);
else if (_operator == _operators.multiply)
result = BinMultiply(num1, num2);
else
result = BinDivide(num1, num2);
}
//如果是八进制
else if (_currentBase == _bases.oct)
{
if (_operator == _operators.add)
result = OctAdd(num1, num2);
else if (_operator == _operators.subtract)
result = OctSubtract(num1, num2);
else if (_operator == _operators.multiply)
result = OctMultiply(num1, num2);
else
result = OctDivide(num1, num2);
}
//如果是十进制
else
{
if (_operator == _operators.add)
result = DecAdd(num1, num2);
else if (_operator == _operators.subtract)
result = DecSubtract(num1, num2);
else if (_operator == _operators.multiply)
result = DecMultiply(num1, num2);
else
result = DecDivide(num1, num2);
}
return result;
}
//二进制转八进制
public string BinToOct(string bin)
{
string oct;
oct = Convert.ToString(Convert.ToInt32(bin, 2), 8);
return oct;
}
//二进制转十进制
public string BinToDec(string bin)
{
string dec;
dec = Convert.ToInt32(bin, 2).ToString();
return dec;
}
//八进制转二进制
public string OctToBin(string oct)
{
string bin;
bin = Convert.ToString(Convert.ToInt32(oct, 8), 2);
return bin;
}
//八进制转十进制
public string OctToDec(string oct)
{
string dec;
dec = Convert.ToInt32(oct, 8).ToString();
return dec;
}
//十进制转二进制
public string DecToBin(string dec)
{
string bin;
bin = Convert.ToString(Convert.ToInt32(dec), 2);
return bin;
}
//十进制转八进制
public string DecToOct(string dec)
{
string oct;
oct = Convert.ToString(Convert.ToInt32(dec), 8);
return oct;
}
//二进制加法
public string BinAdd(string num1, string num2)
{
string result;
string num1Dec = BinToDec(num1);
string num2Dec = BinToDec(num2);
result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) + Convert.ToInt32(num2Dec)));
return result;
}
//二进制减法
public string BinSubtract(string num1, string num2)
{
string result;
string num1Dec = BinToDec(num1);
string num2Dec = BinToDec(num2);
result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) - Convert.ToInt32(num2Dec)));
return result;
}
//二进制乘法
public string BinMultiply(string num1, string num2)
{
string result;
string num1Dec = BinToDec(num1);
string num2Dec = BinToDec(num2);
result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) * Convert.ToInt32(num2Dec)));
return result;
}
//二进制除法
public string BinDivide(string num1, string num2)
{
string result;
string num1Dec = BinToDec(num1);
string num2Dec = BinToDec(num2);
result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) / Convert.ToInt32(num2Dec)));
return result;
}
//八进制加法
public string OctAdd(string num1, string num2)
{
string result;
string num1Dec = OctToDec(num1);
string num2Dec = OctToDec(num2);
result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) + Convert.ToInt32(num2Dec)));
return result;
}
//八进制减法
public string OctSubtract(string num1, string num2)
{
string result;
string num1Dec = OctToDec(num1);
string num2Dec = OctToDec(num2);
result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) - Convert.ToInt32(num2Dec)));
return result;
}
//八进制乘法
public string OctMultiply(string num1, string num2)
{
string result;
string num1Dec = OctToDec(num1);
string num2Dec = OctToDec(num2);
result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) * Convert.ToInt32(num2Dec)));
return result;
}
//八进制除法
public string OctDivide(string num1, string num2)
{
string result;
string num1Dec = OctToDec(num1);
string num2Dec = OctToDec(num2);
result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) / Convert.ToInt32(num2Dec)));
return result;
}
//十进制加法
public string DecAdd(string num1, string num2)
{
string result;
decimal num1Dec = Convert.ToDecimal(num1);
decimal num2Dec = Convert.ToDecimal(num2);
result = Convert.ToString(num1Dec + num2Dec);
return result;
}
//十进制减法
public string DecSubtract(string num1, string num2)
{
string result;
decimal num1Dec = Convert.ToDecimal(num1);
decimal num2Dec = Convert.ToDecimal(num2);
result = Convert.ToString(num1Dec - num2Dec);
return result;
}
//十进制乘法
public string DecMultiply(string num1, string num2)
{
string result;
decimal num1Dec = Convert.ToDecimal(num1);
decimal num2Dec = Convert.ToDecimal(num2);
result = Convert.ToString(num1Dec * num2Dec);
return result;
}
//十进制除法
public string DecDivide(string num1, string num2)
{
string result;
decimal num1Dec = Convert.ToDecimal(num1);
decimal num2Dec = Convert.ToDecimal(num2);
result = Convert.ToString(num1Dec / num2Dec);
return result;
}
}
}