用C#窗体应用做一个简单的计算器

  • 初步想法:
    1.只进行两个数和三个数之间的运算,降低难度,用两个字符类型变量存储数字之间的运算符,用double类型数组存储数字,长度可设为3。
    2.然后就要考虑四个数字以上的运算,可以在写表达式时进行部分运算,让最后的运算始终是两个数字或者三个数字之间的运算。
    3.用label控件做计算器的显示屏,其余全部为button控件,控件的背景图,字体大小,格式,位置等可以自行调整。

  • 代码实现:
    1.全局变量

public double result;  //存储计算结果
public char operation_1='0';    //记录输入的第一个运算符
public char operation_2='0';     //记录输入的第二个运算符
bool b = true;//判断是第几次点击等于按钮

2.菜单输入举例

private void button1_Click(object sender, EventArgs e)        
         {            
            label1.Text += "1";        
         }

3.清空,删除,显示屏字体显示

private void button18_Click(object sender, EventArgs e)//清空按钮
        {
            b = true;
            operation_1 = '0';
            label1.Text = "";
        }
private void button19_Click(object sender, EventArgs e)//删除按钮        
        {            
           string str = label1.Text;            
           label1.Text = "";            
           char[] ch = new char[str.Length];                 
           for(int i=0;i<str.Length-1;i++)            
                {                
                    ch[i] = str[i];                
                    label1.Text += ch[i].ToString();            
                 }               
          }        
private void label1_TextChanged(object sender, EventArgs e)        
         {//根据输入字符的长度改变字体的大小            
            string str = label1.Text;            
            if (str.Length > 13 && str.Length<18)                    
                    label1.Font = new Font(label1.Font.FontFamily,25);            
            else if(str.Length>=18)                
                    label1.Font = new Font(label1.Font.FontFamily, 20);            
             else                
                    label1.Font = new Font(label1.Font.FontFamily, 36);        
          }

4.运算符按钮举例

//运算符按钮:保证不能同时输入两个运算符号,最开头不能是运算符        
private void button13_Click(object sender, EventArgs e)//加法按钮         
        {            
           string str = label1.Text;            
           int i = str.Length - 1;           
           if(str.Length != 0 && str[i] != '+' && str[i] != '-' && str[i] != 'x' && str[i] != '÷')            
                {                
                   if (operation_1 == '0')                
                        {                    
                          operation_1 = '+';                    
                          label1.Text += "+";                
                         }                
                    else if (operation_1 != '0' && operation_2 == '0')                
                         {                    
                           operation_2 = '+';                    
                           label1.Text += "+";                
                         }                
                    else                
                         {                    
                           string[] str1 = str.Split(new char[] { '+', '-', 'x', '÷' });                    
                           double[] number = new double[str1.Length]; //记录输入的数                    
                           for (int j = 0; j < str1.Length; j++)                        
                                   number[j] = Convert.ToDouble(str1[j]);                    
                                   if ((operation_1 == '+' || operation_1 == '-') && (operation_2 == 'x' || operation_2 == '÷'))                    
                                        {                        
                                          switch (operation_2)                        
                                                 {                            
                                                    case 'x': result = number[1] * number[2]; break;                            
                                                    case '÷': result = number[1] / number[2]; break;                        
                                                  }                        
                                           switch (operation_1)                        
                                                  {                            
                                                    case '+': label1.Text = number[0] + "+" + result; break;                            
                                                    case '-': label1.Text = number[0] + "-" + result; break;                            
                                                    case 'x': label1.Text = number[0] + "x" + result; break;                            
                                                    case '÷': label1.Text = number[0] + "÷" + result; break;                        
                                                  }                        
                                                  operation_2 = '0';                        
                                                  b = true;                    
                                         }                    
                                   else                    
                                         {                        
                                           switch (operation_1)                        
                                                  {                             
                                                    case '+': result = number[0] + number[1]; break;                            
                                                    case '-': result = number[0] - number[1]; break;                            
                                                    case 'x': result = number[0] * number[1]; break;                            
                                                    case '÷': result = number[0] / number[1]; break;                        
                                                  }                        
                                            switch (operation_2)                        
                                                   {                            
                                                     case '+': label1.Text = result + "+" + number[2]; break;                            
                                                     case '-': label1.Text = result + "-" + number[2]; break;                            
                                                     case 'x': label1.Text = result + "x" + number[2]; break;                            
                                                     case '÷': label1.Text = result + "÷" + number[2]; break;                        
                                                   }                        
                                                   operation_1 = operation_2;                        
                                                   operation_2 = '0';                        
                                                   b = true;                    
                                          }                
                             }           
                  }         
        }

5.等于按钮

private void button17_Click(object sender, EventArgs e)//等于按钮        
         {            
            if (b)            
                {                
                   if (label1.Text.Length != 0)                
                      {                    
                        string str = label1.Text;                    
                        string[] str1 = str.Split(new char[] { '+', '-', 'x', '÷' });                    
                        double[] number = new double[str1.Length]; //记录输入的数                    
                        for (int i = 0; i < str1.Length; i++)                        
                                number[i] = Convert.ToDouble(str1[i]);                     
                        if (number.Length == 2)                    
                            {                        
                              switch (operation_1)                        
                                     {                            
                                       case '+':                                result = number[0] + number[1];                                label1.Text += "=" + result; break;                            
                                       case '-':                                result = number[0] - number[1];                                label1.Text += "=" + result; break;                            
                                       case 'x':                                result = number[0] * number[1];                                label1.Text += "=" + result; break;                            
                                       case '÷':                                result = number[0] / number[1];                            label1.Text += "=" + result; break;                        
                                     }                    
                             }                    
                       else if (number.Length == 3)                    
                              {                        
                                if ((operation_1 == '+' || operation_1 == '-') && (operation_2 == 'x' || operation_2 == '÷'))                        
                                  {                            
                                    switch (operation_2)                            
                                           {                                
                                             case 'x': result = number[1] * number[2]; break;                                
                                             case '÷': result = number[1] / number[2]; break;                            
                                           }                            
                                    switch (operation_1)                            
                                           {                                
                                             case '+': result += number[0]; break;                                
                                             case '-': result = number[0] - result; break;                            
                                           }                            
                                     label1.Text += "=" + result;                        
                                   }                        
                                else                        
                                   {                            
                                     switch (operation_1)                            
                                            {                                
                                              case '+': result = number[0] + number[1]; break;                                
                                              case '-': result = number[0] - number[1]; break;                                
                                              case 'x': result = number[0] * number[1]; break;                                
                                              case '÷': result = number[0] / number[1]; break;                            
                                            }                            
                                    switch (operation_2)                            
                                           {                                
                                             case '+': result += number[2]; break;                                
                                             case '-': result -= number[2]; break;                                
                                             case 'x': result *= number[2]; break;                                
                                             case '÷': result /= number[2]; break;                            
                                           }                            
                                      label1.Text += "=" + result;                        
                                   }                    
                              }                    
                       else if (number.Length > 3)                        
                                   label1.Text = "";                
                       }                
                       b = false;            
                 }            
                 else            
                 {                
                    operation_1 = operation_2 = '0';                
                    label1.Text = result.ToString();                
                    b = true;                          
                  }        
          }
  • 效果展示
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值