C#的简单应用——使用VS2017写一个简易计算器

举报
小文's blog 发表于 2017/12/19 12:57:22 2017/12/19
【摘要】 学了一段时间C#,决定写个最简单的应用程序——计算器【记录贴】准备工作所需工具Visual Studio 2017一个机智的大脑 项目开始V1.0主体窗口打开软件,创建Windows应用程序项目,创建如下简易计算器。(17个Button 1个Textbox)设置Textbox属性只读(readonly=true)代码部分在代码通用段定义公共变量用来接收操作数、运算结果以及判断输入的是否为小

学了一段时间C#,决定写个最简单的应用程序——计算器【记录贴】

准备工作

所需工具


  • Visual Studio 2017

  • 一个机智的大脑 :eek:


项目开始V1.0

主体窗口

  • 打开软件,创建Windows应用程序项目,创建如下简易计算器。(17个Button     1个Textbox)5a377fccbf40c.png

  • 设置Textbox属性只读(readonly=true)

代码部分

  • 代码通用段定义公共变量用来接收操作数、运算结果以及判断输入的是否为小数,代码如下。


    1

    2

    double num1, num2, reasult;//num1,num2用于保存操作数,reasult用于保存运算结果

    bool decimalFlag = false;//decimaFlag判断是否为小数,默认为false(不是小数)

     

  • 编写一个名为“NumClick”的方法,单击数字按钮时,调用NumClick方法,将输入的数字追加到文本框中。


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    public void NumClick(int myNumber)

            {

                if (decimalFlag)//输入小数

                {

                    textBox1.Text = textBox1.Text + myNumber;

                }

                else//输入整数

                {

                    if(textBox1.Text == "0.")//如果是整数的第一个数

                        textBox1.Text = myNumber + ".";

                    else

                    textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1) + myNumber + ".";

                }

            }

     

  • 编写窗体载入事件,初始化计算器


    1

    2

    3

    4

    5

    private void Form1_Load(object sender, EventArgs e)

            {

                textBox1.Text = "0."; //计算器屏幕初始显示值

                textBox1.TextAlign = HorizontalAlignment.Right;//计算器屏幕文字输出向右对齐

            }

     

  • 编写数字【0】到【9】单击事件代码(引用NumClick()方法)


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    private void button1_Click(object sender, EventArgs e)

            {

                NumClick(1);

            }

     

    private void button2_Click(object sender, EventArgs e)

            {

                NumClick(2);

            }

     

    private void button3_Click(object sender, EventArgs e)

            {

                NumClick(3);

            }

    /*此处省略部分代码···*/

    private void button10_Click(object sender, EventArgs e)

            {

                NumClick(0);

            }

     

  • 编写小数点按钮【.】的单击事件代码。


    1

    2

    3

    4

    private void button11_Click(object sender, EventArgs e)

    {

                decimalFlag = true;

    }

     

  • 编写复位按钮【C】的单击事件代码。


    1

    2

    3

    4

    5

    6

    7

    private void button12_Click(object sender, EventArgs e)

    {

                num1 = 0;

                num2 = 0;//初始化操作数

                decimalFlag = false;

                textBox1.Text = "0.";//初始化计算器屏幕

    }

     

  • 编写【+】、【-】、【*】、【/】按钮的单击事件代码。


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    private void button13_Click(object sender, EventArgs e)

            {

                myOperator = "add";//保存运算符 加号

                num1 = double.Parse(textBox1.Text);//保存操作数1

                textBox1.Text = "0.";//初始化计算器屏幕,待输入操作数2

                decimalFlag = false;

            }

     

            private void button14_Click(object sender, EventArgs e)

            {

                myOperator = "sub";//保存运算符 减号

                num1 = double.Parse(textBox1.Text);

                textBox1.Text = "0.";

                decimalFlag = false;

            }

     

            private void button15_Click(object sender, EventArgs e)

            {

                myOperator = "mul";//保存运算符 乘号

                num1 = double.Parse(textBox1.Text);

                textBox1.Text = "0.";

                decimalFlag = false;

            }

     

            private void button16_Click(object sender, EventArgs e)

            {

                myOperator = "div";//保存运算符 除号

                num1 = double.Parse(textBox1.Text);

                textBox1.Text = "0.";

                decimalFlag = false;

            }

     

  • 最后编写【=】按钮的单击事件代码。


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    private void button17_Click(object sender, EventArgs e)

            {

                num2 = double.Parse(textBox1.Text);//保存操作数2

                switch(myOperator)//用switch进行响应的分支操作

                {

                    case "add"://加号

                        reasult = num1 + num2;

                        textBox1.Text = reasult.ToString();

                        break;

                    case "sub"://减号

                        reasult = num1 - num2;

                        textBox1.Text = reasult.ToString();

                        break;

                    case "mul"://乘号

                        reasult = num1 * num2;

                        textBox1.Text = reasult.ToString();

                        break;

                    case "div"://除号

                        if(num2 == 0)//除数为0报错

                        {

                            textBox1.Text = "除数不能为“0”!";

                        }

                        else {

                            reasult = num1 / num2;

                            textBox1.Text = reasult.ToString();

                        }

                        break;

                }

            }

     

至此,一个简易的计算器1.0就完成了。编译运行,程序成品为程序文件夹/bin/Debug/目录下的exe文件,你也可以直接下载

成品预览

Calculator_v1.0.gif

计算器V1.0下载

 成品下载         源码下载

升级改进V2.0

升级记录

  1. 新增 右边运算记录

  2. 修复 一次运算结束后,按数字键会出错的问题

  3. 修复 多次点击等号,一直输出的问题

  4. 打开程序部分按钮禁止点击

5a378f1a515b3.png

成品预览

Calcultor_V2.0.gif

计算器V2.0下载

 成品下载         源码下载

 

原文地址:https://www.qcgzxw.cn/?p=2490


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。