本人刚学C#没多久,萌新一枚。本篇的计算器是我独立完成的第一个作品,有不足的地方还请多多包涵;
计算器本体大概长这样:
除了基本的加减乘除以外我还加入了常用的平方、根号等的 计算。整体思路还是按照每个按钮的功能来写的;关于显示的问题,我是用4个文本框组合成的,第一排显示输入的第一个数值,第二排只会显示运算符号,第三排是第二个数值,最后一排则显示计算结果。4个文本框的命名分别为txt1~txt4;
以下是详细的代码:
目录
首先看一下整个代码需要定义的变量和其所表示的功能:
//构建所需的函数;
int i = 1;//用于表示数序,等于1表示输入第一个数,等于2表示输入第2个数。
int j = 0;//用于表示运算法则,1为加法;2为减法;3为乘法;4为除法。
int x = 0;//用于指示小数点输入,等于1表示开始输入小数。
int y = 0;//用于暂存小数的位数,y值应等于当前数值的小数位数。
int z = 0;//用于表示负数关系,等于1表示只有第一个数为负数,等于2表示只有第二个数为负数,等于3表示两个都为负数。
int g = 0;//用于表示根号,等于1表示只有第一个数开根,等于2表示只有第二个数开根,等于3表示两个都需要开根。
int p = 0;//用于表示平方,等于1表示只有第一个数平方,等于2表示只有第二个数平方,等于3表示两个都需要平方。
int sin = 0;//用于表示sin求值的开关,等于1表示对输入的第一个数求正弦,等于2表示对第二个数求正弦。
int cos = 0;//用于表示cos求值的开关,等于1表示对输入的第一个数求余弦,等于2表示对第二个数求余弦。
bool clear = false;//清零开关,用于每次运算结束的自动清零。
double str = 0;//用于存放临时数据。
double num1 = 0;//用于存放输入的第一个数值。
double num2 = 0;//用于存放输入的第二个数值。
double num3 = 0;//用于存放运算结果。
1.0~9的数字键:
//0到9的数字键输入:
private void but0_Click(object sender, EventArgs e)
{
shuzi(0);
}
private void but1_Click(object sender, EventArgs e)
{
shuzi(1);
}
private void but2_Click(object sender, EventArgs e)
{
shuzi(2);
}
private void but3_Click(object sender, EventArgs e)
{
shuzi(3);
}
private void but4_Click(object sender, EventArgs e)
{
shuzi(4);
}
private void but5_Click(object sender, EventArgs e)
{
shuzi(5);
}
private void but6_Click(object sender, EventArgs e)
{
shuzi(6);
}
private void but7_Click(object sender, EventArgs e)
{
shuzi(7);
}
private void but8_Click(object sender, EventArgs e)
{
shuzi(8);
}
//数字输入函数,主要包含数字的输入和小数点转化.
void shuzi(double num)
{
if (clear == true)//每次计算完成后对数据进行自动清零。
{
j = 0;
g = 0;
p = 0;
sin = 0;
cos = 0;
num1 = 0;
num2 = 0;
num3 = 0;
txt1.Text = "";
txt2.Text = "";
txt3.Text = "";
txt4.Text = "";
clear = false;
}
//txt1输入小数:
if (x == 1 && i==1)
{
y += 1;
for(int z=1; z<=y; z++)
{
num = num / 10;
}
num1 = num1 + num;
if (z == 1&&g!=1)
{
txt1.Text = Convert.ToString("-"+num1);
}
else if(z==0&&g==1)
{
txt1.Text = Convert.ToString("√"+num1);
}
else if (z == 0 && sin == 1)
{
txt1.Text = Convert.ToString("Sin" + num1);
}
else if (z == 0 && cos == 1)
{
txt1.Text = Convert.ToString("Cos" + num1);
}
else
{
txt1.Text = Convert.ToString(num1);
}
}
//txt3输入小数:
if (x == 1 && i == 2)
{
y += 1;
for (int z = 1; z <= y; z++)
{
num = num / 10;
}
num2 = num2 + num;
if ((z == 2 || z == 3)&&(g!=2||g!=3))
{
txt3.Text = Convert.ToString("-"+num2);
}
else if ((z != 2 || z != 3) && (g == 2 || g == 3))
{
txt3.Text = Convert.ToString("√" + num2);
}
else if ((z != 2 || z != 3) && (sin == 2 || sin == 3))
{
txt3.Text = Convert.ToString("Sin" + num2);
}
else if ((z != 2 || z != 3) && (cos == 2 || cos == 3))
{
txt3.Text = Convert.ToString("Cos" + num2);
}
else
{
txt3.Text = Convert.ToString(num2);
}
}
//txt1输入整数:
if (x==0&&i == 1)
{
num1 = num1 * 10 + num;
if (z == 1&&g!=1)
{
txt1.Text = Convert.ToString("-" + num1);
}
else if (z == 0 && g == 1)
{
txt1.Text = Convert.ToString("√" + num1);
}
else if (z == 0 && sin == 1)
{
txt1.Text = Convert.ToString("Sin" + num1);
}
else if (z == 0 && cos == 1)
{
txt1.Text = Convert.ToString("Cos" + num1);
}
else
{
txt1.Text = Convert.ToString(num1);
}
}
//txt3输入整数:
if (x==0&&i == 2)
{
num2 = num2 * 10 + num;
if ((z == 2 || z == 3) && (g != 2 || g != 3))
{
txt3.Text = Convert.ToString("-" + num2);
}
else if ((z != 2 || z != 3) && (g == 2 || g == 3))
{
txt3.Text = Convert.ToString("√" + num2);
}
else if ((z != 2 || z != 3) && (sin == 2 || sin == 3))
{
txt3.Text = Convert.ToString("Sin" + num2);
}
else if ((z != 2 || z != 3) && (cos == 2 || cos == 3))
{
txt3.Text = Convert.ToString("Cos" + num2);
}
else
{
txt3.Text = Convert.ToString(num2);
}
}
}
由于计算器的每一步输入都要显示出来,所以文本框每一次的显示都是需要单独写出来的。
2.加减乘除的基本运算:
//“+”号按钮;
private void butadd_Click(object sender, EventArgs e)
{
if (j == 0||j==5)
{
i = 2;
j = 1;
x = 0;
txt2.Text = "