当前位置: 首页 > news >正文

C#01项目——计算器

实现需求:

可以连续相加,并记录计算表达式。

实现逻辑

1、利用字符串加减原则,获取相加的数值。

2、将数值存入到列表中,需要计算最终结果时,遍历列表中数值,全部相加

数字键

  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。命名规格可参考帕斯卡命名法。

源代码

相关文章:

  • react传递函数与回调函数原理
  • 在Win11电脑上安装mysql并成功登录
  • MongoDB 常用命令速查表
  • 【JavaEE进阶】IoC详解
  • 芯麦GC6208:革新摄像机与医疗设备的智能音频解决方案
  • 单位切换且后换算得方法
  • 【Java八股】JVM
  • springboot如何将lib和jar分离
  • 配置Mysql8读写分离(未完成)
  • Node.js 调用 DeepSeek API 完整指南
  • AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率
  • 达梦 跟踪日志诊断
  • 附录 面向对象
  • C++ ——构造函数
  • C语言简单练习题
  • Python自动化实现思路
  • 安科瑞光储充一体化微电网系统的设计与优化研究-安科瑞 蒋静
  • Windows 找不到文件gpedit.msc,没有组策略编辑器,解决办法附上
  • 前端知识速记—JS篇:JS数组方法
  • CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display
  • 四川鼎能建设集团网站/关键词的优化方法
  • 营销单页网站/公司宣传软文
  • php网站开发核心技术/seo实战培训课程
  • 网站主机有什么用/尚硅谷培训机构官网
  • asp动态网站开发实验报告/万网域名注册查询网
  • wordpress 插件太多/沈阳关键词优化报价