700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 用C#窗体应用做一个简单的计算器

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

时间:2019-06-22 19:54:18

相关推荐

用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); elselabel1.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;} }

效果展示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。