数据库第二次实验课—C#简易计算器

**

数据库第二次实验课—C#简易计算器

**

前言

最近对于可视化制作确实有兴趣,但是因为转专业的原因,没有学习Java,看着情况估计要等到大三再补了,C也是在学习的路上,越来越觉得学无止境,hhhh,这节课正好满足我对可视化制作的体验感,还是很爽的,用比较少的语句就可以实现一个可以用的小软件。下面我将从前期准备和写作过程来进行阐述。

一、开发工具的安装。

  • 首先说一下使用软件:Visual studio 2019版本。
  • 因为Vs的功能强大以至于完整安装需要内存比较大,所以我只是安装了C++的那一小部分工具,以至于没有找到合适的建立选项。在这一步系统会提示你是否需要继续安装其他工具。
  • 在这里插入图片描述
    **-如上图所示,我们只需要选择前两列的就可以了。
  • 在安装后我们选择新建立一个项目,选择C#中的Windows里面的控制台,然后选择第一个,结果如下所示。**

在这里插入图片描述

建立项目出现的一些问题

  • 在建立完项目后我出现了如图所示的界面

在这里插入图片描述

  • 我们可以看到,没有可以操作的空间,此时需要我们手动打开工具箱。

  • 我们首先点击项目,找到工具箱然后点击就可以在左侧生成一个悬浮窗,如下图所示。

在这里插入图片描述
在这里插入图片描述

  • 本次实验我只用到两个小工具,分别是
    Button和Textbox,其实Button是一个可以点击的小安就,Textbox就是一个小的显示条(注意显示的是字符串)。

**

二、写作过程简单的介绍

**

首先来看一下我们生成的界面

在这里插入图片描述

  • 功能介绍

**

  • 首先我们看到有两个显示框,最上面的我们显示的是一切输入的数字,以便后续检查,第二个显示框表示的是计算的结果,在这里我们要说明的是,这个计算器是仿照电脑自带计算器写的,也就是如果出现1+1+1的情况,在第二个加号出现之前就是会把前两个数字已经计算好的。
  • AC:作用相当于清零,使用后会恢复为初始状态。****
  • C的作用:为删除一个数字,比如你输入-1111,你发现多输入了一个1,那么只要C一下就可以变成-111.
  • -/+:是变负数,比如你输入了11,作用完就可以变为-11。

**

  • 写作代码及其思路

**


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CalculatorAPP
{
    public partial class 计算器 : Form
    {
        public 计算器()
        {
            InitializeComponent();
        }
        String flag,endflag="0";
        Double leftnum, rightnum, result,Start=0, againinput=0;

        private void button1_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//1部分
            textBox1.Text += "1";
            textBox6.Text += "1";
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button10_Click(object sender, EventArgs e)
        {
            textBox1.Text += ".";//.部分
            textBox6.Text += ".";
        }

        private void button11_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//0部分
            if (againinput==1) againinput = 0;
            textBox1.Text += "0";
            textBox6.Text += "0";
        }

        private void button12_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";//ac部分
            textBox6.Text = "";
            flag = "";
            endflag = "0";
            leftnum = rightnum = result = last = 0;
            Start = againinput = 0;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//2部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "2";
            textBox6.Text += "2";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//3部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "3";
            textBox6.Text += "3";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//4部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "4";
            textBox6.Text += "4";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//5部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "5";
            textBox6.Text += "5";
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//6部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "6";
            textBox6.Text += "6";
        }

        private void button7_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//7部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "7";
            textBox6.Text += "7";
        }

        private void button8_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//8部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "8";
            textBox6.Text += "8";
        }

        private void button14_Click(object sender, EventArgs e)
        {
            textBox1.Text += "-";//-部分
            if (endflag=="1")
            {
                rightnum = Convert.ToDouble(textBox6.Text);
                if (flag == "+")
                {
                   result = leftnum + rightnum;
                }
                if (flag == "-")
                {
                    result = leftnum - rightnum;
                }
                if (flag == "*")
                {
                    result = leftnum * rightnum;
                }
                if (flag == "/")
                {
                    result = leftnum / rightnum;
                }
                leftnum = result;
                textBox6.Text = Convert.ToString(result);
                Start = 1;
            }
            else
            {
                leftnum = Convert.ToDouble(textBox6.Text);
                textBox6.Text = "";
                endflag = "1";
            }
            flag = "-";
        }

        private void button19_Click(object sender, EventArgs e)
        {
            string a = "-";//-+/部分
            int temp = textBox1.Text.Length;
            textBox1.Text = textBox1.Text.Substring(0,temp- textBox6.Text.Length);
            a += textBox6.Text;
            textBox6.Text = a;
            textBox1.Text += a;
        }

        private void button18_Click(object sender, EventArgs e)
        {
            int temp = textBox1.Text.Length;//c部分
            int temp1 = textBox6.Text.Length;
            textBox1.Text = textBox1.Text.Substring(0, temp-1);
            textBox6.Text = textBox6.Text.Substring(0, temp1-1);
        }

        private void button17_Click(object sender, EventArgs e)
        {
            rightnum = Convert.ToDouble(textBox6.Text);//=部分
            if (flag == "+")
            {
                result = leftnum + rightnum;
            }
            if (flag == "-")
            {
                result = leftnum - rightnum;
            }
            if (flag == "*")
            {
                result = leftnum * rightnum;
            }
            if (flag == "/")
            {
                result = leftnum / rightnum;
            }
            leftnum = result;
            textBox6.Text = Convert.ToString(result);
            endflag = "0";
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button15_Click(object sender, EventArgs e)
        {
            textBox1.Text += "*";//*部分
            if (endflag == "1")
            {
                rightnum = Convert.ToDouble(textBox6.Text);
                if (flag == "+")
                {
                    result = leftnum + rightnum;
                }
                if (flag == "-")
                {
                    result = leftnum - rightnum;
                }
                if (flag == "*")
                {
                    result = leftnum * rightnum;
                }
                if (flag == "/")
                {
                    result = leftnum / rightnum;
                }
                leftnum = result;
                textBox6.Text = Convert.ToString(result);
                Start = 1;
            }
            else
            {
                leftnum = Convert.ToDouble(textBox6.Text);
                textBox6.Text = "";
                endflag = "1";
            }
            flag = "*";
        }

        private void button16_Click(object sender, EventArgs e)
        {
            textBox1.Text += "/";///部分
            if (endflag == "1")
            {
                rightnum = Convert.ToDouble(textBox6.Text);
                if (flag == "+")
                {
                    result = leftnum + rightnum;
                }
                if (flag == "-")
                {
                    result = leftnum - rightnum;
                }
                if (flag == "*")
                {
                    result = leftnum * rightnum;
                }
                if (flag == "/")
                {
                    result = leftnum / rightnum;
                }
                leftnum = result;
                textBox6.Text = Convert.ToString(result);
                Start = 1;
            }
            else
            {
                leftnum = Convert.ToDouble(textBox6.Text);
                textBox6.Text = "";
                endflag = "1";
            }
            flag = "/";
        }

        private void button9_Click(object sender, EventArgs e)
        {
            if (Start == 1) { textBox6.Text = ""; Start = 0; }//9部分
            if (againinput == 1) againinput = 0;
            textBox1.Text += "9";
            textBox6.Text += "9";
        }

        private void button13_Click(object sender, EventArgs e)
        {
            //+部分

            textBox1.Text += "+";
                if (endflag == "1")
                {
                    rightnum = Convert.ToDouble(textBox6.Text);
                    if (flag == "+")
                    {
                        result = leftnum + rightnum;
                    }
                    if (flag == "-")
                    {
                        result = leftnum - rightnum;
                    }
                    if (flag == "*")
                    {
                        result = leftnum * rightnum;
                    }
                    if (flag == "/")
                    {
                        result = leftnum / rightnum;
                    }
                    leftnum = result;
                    textBox6.Text = Convert.ToString(result);
                    Start = 1;
                }
                else
                {
                    leftnum = Convert.ToDouble(textBox6.Text);
                    textBox6.Text = "";
                    endflag = "1";
                }
            
            flag = "+";
        }
    }
}

  • 由于代码重复程度是比较高,我就不再切开展示了,因为对于四则运算来说,他们在本计算器的实现原理相同,所以我们就挑+的运算来展示。

  • +的运算:对于+法来说,如果我们要实现可以边输入边计算的话,首先我们可以考虑一个明显的分界线—第一次输入。这时候我定义了一个全局变量endflag,如果我们是第一次输入的话,那么就将目前已经输入好的数字保存到leftnum中,此时我们要介绍一个函数Convert.Todouble(string)—这个函数可以实现在C#中的强制转换。在保存完后,因为我们第二行的显示框是需要实时更新的,此时我们就需要把第二个操作框的显示改为“”—空。如果我们已经是第二次输入了,那么此时的endflag就是1,我们就可以先判断前面的运算符号是什么—保存在flag全局变量中。

  • 数字的设置:**在这里因为显示框是string类型,所以我们的输入只需要string+=你要输入的数字,就可以实现输入操作。

  • “AC”的设置”:没什么好说的,直接恢复出厂设置。

  • “C”的设置:在这里我采取的是截取字符串的方式,用substring函数来对两个显示框的值进行截取,只截取从0-倒数第一位,这里我们再说一下函数用法吧substring(a,b)—从a开始截取,截取b个单位。

  • “-+/的设置”:这个我采用的方法其实和"C设置"是类似的操作,不再赘述。

  • “=的设置”:在这里要说一下,当我们点击=除了出现计算结果和第二个显示框清零外,我们还需要考虑到其实这就相当于恢复到半个出厂状态,因为此时我们如果输入“+”,前面的运算符已经都运算完毕,所以我们此时就相当于第一次时输入的操作,所以此时我们需要把endflag给设置一下

**

三、总结

**

  • 总的来说其实这个就是采用了比较简单的循环来实现的,虽然代码行数比较长,但是有很多重复部分(四舍五入权当个思路简洁代码吧!)
  • 因为能力有限和时间问题,这个计算器的健壮性并不是很好,可能(应该是肯定)会有输入错误情况出现,因为并没有加入太多的判断来限制输入(好好输入肯定是没有问题的)
  • 经过本次课也真正体会到做东西的乐趣,希望以后能接触到更多新鲜好玩的事情。
  • 最后感叹一句为什么David老师什么都会- -。**
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值