C# Windows窗体应用程序设计综合实例------简易计算器的实现

简易计算器的实现(C#)

欢迎观看本期的博文,本期博文的目的是做一个简单的计算器,我将从布局分析、整体布局、代码实现等几个方面进行阐述并与大家交流。(文末有源代码)

布局分析

功能实现
基础运算(加减乘除)添加10个数字键(bottom)
小数点添加一个bottom
清除添加一个bottom
结算与等于添加两个bottom
输入/输出添加两个textbottom

整体布局

1.打开vs2019,创建一个新的Windows form项目。
2.按照布局分析,从工具箱拖动相应控件。可以先将from的大小调整一下,所写代码中的size为624,568.可以根据自己的情况进行界面大小设置。
3.给每个控件更改text属性。按照布局分析的结果来看,需要2个textbottom和14个bottom控件。分别按照布局分析命名。
4.整体布局的效果如下:
在这里插入图片描述
总结:可以根据自己的习惯来进行布局和命名,在修改name属性时应做到见名知义。例如加法按钮的name属性可以改bottom/sum。

添加代码

在本次综合实例中,包括加减乘除的实现、输入输出、小数点、等于、清空、回退一个的代码。下面就以几个比较重要部分的代码讲具体的实现过程吧。

加减乘除的实现:
一共四种运算,在用户随意输入数据并进行随意运算时,能准确地计算结果。所以整体就会有两种选择,一种是if-else嵌套或者用switch-case语句。在这里,为了方便编写且形成容易看出的逻辑关系,我们采用switch-case来写。
(此处不代表真正的代码,仅做为示例)

switch(a)
{case'+':
------------
case'-':
------------
case*’:
------------
case/:
-----------
}

然而考虑到在实际的应用中出现其他非正常的操作,例如并不输入符号的情况,我们就需要进行判定。也就是说单纯用switch-case语句是不能完全满足实际的应用。需要在外面嵌套一个if-else语句进行判定
真实的代码如下:

private void button4_Click(object sender, EventArgs e) //加减乘除
        {
            //事件源转换为按钮
            Button btn = sender as Button;
            //上次按了数字
            if (prev == 1)
            {
                txttop.Text += btn.Text;//进行显示拼接
                switch (prevysf)
                {
                    case "+":
                        zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;
                    case "-":
                        zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;
                    case "*":
                        zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;
                    case "/":
                        zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;                   
                }

                txtbottom.Text = zjjg.ToString();
            }
            //上次按了运算符
            else
            {
                if (txttop.Text != "")
                {
                    string s = txttop.Text;
                    s = s.Substring(0, s.Length - 1);
                    s = s + btn.Text;
                    txttop.Text = s;
                }
                else
                {
                    txttop.Text = txtbottom.Text + btn.Text;
                }
            }
            //点击了运算符
            prev = 2;
            //记录下运算符
            prevysf = btn.Text;
        }

清空的代码:

 private void button9_Click(object sender, EventArgs e) //清空
        {
            txttop.Text = "";
            txtbottom.Text = "";
            prevysf = "+";
            prev = 0;
            zjjg = 0;
        }

等于的代码:由于结果需要符号和输入决,所以跟前面一样,真是的代码如下

  private void button11_Click(object sender, EventArgs e) //等于
        {

            //上次按了数字
            if (prev == 1)
            {
                txttop.Text += "=";//进行显示拼接  
                //事件源转换为按钮
                Button btn = sender as Button;
                switch (prevysf)
                {
                    case "+":
                        try
                        {
                            zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        }
                        catch (Exception)
                        {
                            zjjg = 0;
                        }
                        break;
                    case "-":
                        zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;
                    case "*":
                        zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;
                    case "/":
                        zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
                        break;
                    default:
                        zjjg = 0;
                        break;
                }
                txtbottom.Text = zjjg.ToString();
                prevysf = "";
                prev = 2;
            }
            if (txtbottom.Text=="0.")
            {
                txtbottom.Text = "";
                prevysf = "";
                prev = 2;
            }            
        }

具体其他的代码,文末有源代码相关链接,供下载学习使用。

运行示例

运行后,我们输入7+8,可以看到,在下一栏的结果栏可以看到结果15.当然,其他的运算也是同样的道理进行检验。
在这里插入图片描述
这样一个简易的计算器就完成了,有觉得可以改进的小伙伴也可以在源代码的基础上去改进,实现更多功能。
如果对你有帮助的话,请多多支持,有问题欢迎小伙伴在评论区留言或者私信。

本期源代码:
链接:https://pan.baidu.com/s/1xVreom1EWg7YxWgoJ5L1_A
提取码:4ygg

ps:最近准备考研,更新得比较慢,进度落下一大堆,后面也就这个情况了,尽量一周更新两篇有用的东西。希望谅解。祝各位学习的小伙伴更上一层楼。成功的人总是会伴随着各种挑战与困难的,加油.

敬请期待下一期,有兴趣的小伙伴可以关注一下。
下期预告:
1.C#核心语法(二)&&俄罗斯方块的设计与编写
在这里插入图片描述
2.纪念日管理系统&&python从安装到卸载(二)
其他系列不定时定量更新。

  • 26
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思维矩阵K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值