zoukankan      html  css  js  c++  java
  • WinForm 制作一个简单的计算器

      1 namespace WindowsFormsApplication6
      2 {
      3     public partial class Form1 : Form
      4     {
      5         //存储上次点击了什么按钮,0代表什么都没有点击,1代表数字按钮,2代表点击了运算符
      6         private int prev = 0;
      7         //存储计算的中间结果
      8         private decimal zjjg = 0;
      9         //记录上次按得什么运算符
     10         private string prevysf = "+";
     11 
     12         public Form1()
     13         {
     14             InitializeComponent();
     15         }
     16 
     17         private void button1_Click(object sender, EventArgs e) //输入的数
     18         {
     19             //将事件源转换为按钮
     20             Button btn = sender as Button;
     21             //替换(文本框内容为0,点击了运算符)
     22             if (prev == 2 || txtbottom.Text == "0")
     23             {
     24                 txtbottom.Text = btn.Text;
     25             }
     26             //追加(内容不为0,并且上次没有点击运算符)
     27             else
     28             {
     29                 txtbottom.Text += btn.Text;
     30             }
     31             //点击了按钮数字
     32             prev = 1;
     33         }
     34 
     35         private void button4_Click(object sender, EventArgs e) //加减乘除
     36         {
     37             //事件源转换为按钮
     38             Button btn = sender as Button;
     39             //上次按了数字
     40             if (prev == 1)
     41             {
     42                 txttop.Text += txtbottom.Text + btn.Text;//进行显示拼接
     43                 switch (prevysf)
     44                 {
     45                     case "+":
     46                         zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
     47                         break;
     48                     case "-":
     49                         zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
     50                         break;
     51                     case "*":
     52                         zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
     53                         break;
     54                     case "/":
     55                         zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
     56                         break;
     57                 }
     58 
     59                 txtbottom.Text = zjjg.ToString();
     60             }
     61             //上次按了运算符
     62             else
     63             {
     64 
     65                 if (txttop.Text != "")
     66                 {
     67                     string s = txttop.Text;
     68                     s = s.Substring(0, s.Length - 1);
     69                     s = s + btn.Text;
     70                     txttop.Text = s;
     71                 }
     72                 else
     73                 {
     74                     
     75                     txttop.Text = txtbottom.Text + btn.Text;
     76                 }
     77             }
     78             //点击了运算符
     79             prev = 2;
     80             //记录下运算符
     81             prevysf = btn.Text;
     82         }
     83 
     84         private void button9_Click(object sender, EventArgs e) //清空
     85         {
     86             txttop.Text = "";
     87             txtbottom.Text = "0";
     88             prevysf = "+";
     89             prev = 0;
     90             zjjg = 0;
     91         }
     92 
     93         private void button11_Click(object sender, EventArgs e) //等于
     94         {
     95             //事件源转换为按钮
     96             Button btn = sender as Button;
     97                 switch (prevysf)
     98                 {
     99                     case "+":
    100                         zjjg = zjjg + Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
    101                         break;
    102                     case "-":
    103                         zjjg = zjjg - Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
    104                         break;
    105                     case "*":
    106                         zjjg = zjjg * Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
    107                         break;
    108                     case "/":
    109                         zjjg = zjjg / Convert.ToDecimal(txtbottom.Text); //计算上次运行的结果
    110                         break;
    111                 }
    112                 txtbottom.Text = zjjg.ToString();
    113                 txttop.Text = "";
    114                 prevysf = "";               
    115                 prev = 2;
    116         }
    117 
    118         private void button17_Click(object sender, EventArgs e) //回退一个
    119         {
    120             string s = txtbottom.Text;
    121             if (s.Length >1)
    122             {
    123                 s = s.Substring(0, s.Length - 1);
    124                 txtbottom.Text = s;
    125             }
    126             else if(s.Length==1)
    127             {
    128                 txtbottom.Text = "0";
    129             }
    130         }
    131 
    132         private void Form1_Load(object sender, EventArgs e)
    133         {
    134 
    135         }
    136     }
    137 }
  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/ShenG1/p/5834009.html
Copyright © 2011-2022 走看看