C#01项目——计算器
实现需求:
可以连续相加,并记录计算表达式。
实现逻辑
1、利用字符串加减原则,获取相加的数值。
2、将数值存入到列表中,需要计算最终结果时,遍历列表中数值,全部相加
数字键
- 判断计算式长度是否超出上限
- 根据运算符号不同,执行字符串相加或加数清零的操作
运算键
+:将加数添加到列表中。
=:遍历列表中的数,相加返回结果。
关键代码
private List<double> G_list_Value = new List<double>();//记录累加数值
private bool G_bl_add = false;//判断是否刚刚按下+号
private bool G_bl_value = false;//判断是否刚刚按下=号
private bool G_bl_key = false;//防止连续按+号
private void button10_Click(object sender, EventArgs e)
{
if(tbxValue.Text.Length <9)
{
//如果按下+号,清空输入框,
if(G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "0";//输入数字0
tbxExpression.Text += "0";
G_bl_key = false;//打开+号键开关
}
}
private void btn1_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "1";//输入数字1
tbxExpression.Text += "1";
G_bl_key = false;//打开+号键开关
}
}
private void btn2_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "2";//输入数字2
tbxExpression.Text += "2";
G_bl_key = false;//打开+号键开关
}
}
private void btn3_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "3";//输入数字3
tbxExpression.Text += "3";
G_bl_key = false;//打开+号键开关
}
}
private void btn4_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "4";//输入数字4
tbxExpression.Text += "4";
G_bl_key = false;//打开+号键开关
}
}
private void btn5_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "5";//输入数字0
tbxExpression.Text += "5";
G_bl_key = false;//打开+号键开关
}
}
private void btn6_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "6";//输入数字0
tbxExpression.Text += "6";
G_bl_key = false;//打开+号键开关
}
}
private void btn7_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "7";//输入数字0
tbxExpression.Text += "7";
G_bl_key = false;//打开+号键开关
}
}
private void btn8_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "8";//输入数字0
tbxExpression.Text += "8";
G_bl_key = false;//打开+号键开关
}
}
private void btn9_Click(object sender, EventArgs e)
{
if (tbxValue.Text.Length < 9)
{
if (G_bl_add)
{
tbxValue.Clear();
G_bl_add = false;
}
tbxValue.Text += "9";//输入数字0
tbxExpression.Text += "9";
G_bl_key = false;//打开+号键开关
}
}
private void btnPlus_Click(object sender, EventArgs e)
{
G_bl_value = false;
if (!G_bl_key)
{
G_list_Value.Add(double.Parse(tbxValue.Text));
tbxExpression.Text += "+";
G_bl_add = true;
G_bl_key = true;
}
}
public double GetValue()
{
double P_Double_temp = 0;
foreach(double d in G_list_Value)
{
P_Double_temp += d;//计算累计结果
}
G_list_Value.Clear();
return P_Double_temp;
}
public string GetString()
{
string P_str_temp = string.Empty;
for(int i =0;i<G_list_Value.Count;i++)
{
if(i!=0)
{
P_str_temp += "+" + G_list_Value[i].ToString();
}
else
{
P_str_temp = G_list_Value[i].ToString();
}
}
return P_str_temp;
}
private void btnAnd_Click(object sender, EventArgs e)
{
G_bl_key = false;
if (!G_bl_value)
{
G_list_Value.Add(double.Parse(tbxValue.Text));
tbxValue.Text = GetValue().ToString();
tbxExpression.Text += "=" + tbxValue.Text;
G_bl_value = true;
}
}
private void btnClean_Click(object sender, EventArgs e)
{
G_list_Value.Clear();
tbxExpression.Text = GetString();
tbxValue.Clear();
}
效果图
小技巧
1、变量命名可以遵循A_B_C;其中A代表变量含义,B代表变量类型,C代表变量属性。比如需要一个临时的整型变量记录数值的结果。Result_Int_Temp。命名规格可参考帕斯卡命名法。
源代码