1.界面:
2.源代码:
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;
using System.Collections;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
int leng=txtDisplay.Text.Length;
for (int i = 0; i < leng; i++)
{
txtDisplay.Text += "1";
}
}
#region 全局变量定义
double num1=0, num2=0, numResult;
string flag = null;
ArrayList num = new ArrayList();//存储算数,用于最后的显示
ArrayList oper = new ArrayList();//存储运算符,用于最后的显示
#endregion
#region 数值事件
private void btn7_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn7.Text;
}
private void btn8_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn8.Text;
}
private void btn9_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn9.Text;
}
private void btn4_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn4.Text;
}
private void btn5_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn5.Text;
}
private void btn6_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn6.Text;
}
private void btn1_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn1.Text;
}
private void btn2_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn2.Text;
}
private void btn3_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn3.Text;
}
private void btn0_Click(object sender, EventArgs e)
{
txtDisplay.Text += btn0.Text;
}
#endregion
#region 单目运算符事件
private void btnExt_Click(object sender, EventArgs e)
{
try
{
num1 = double.Parse(txtDisplay.Text);
txtDisplay.Text = (1 / num1).ToString();
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnSqu_Click(object sender, EventArgs e)
{
try
{
num1 = double.Parse(txtDisplay.Text);
txtDisplay.Text = (num1 * num1).ToString();
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnGen_Click(object sender, EventArgs e)
{
try
{
num1 = double.Parse(txtDisplay.Text);
txtDisplay.Text = (Math.Sqrt(num1)).ToString();
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnMod_Click(object sender, EventArgs e)
{
try
{
if (num1 == 0)
{
}
else
{
txtDisplay.Text = (double.Parse(txtDisplay.Text) / 10).ToString();
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnCe_Click(object sender, EventArgs e)
{
txtDisplay.Text = null;
}
#endregion
#region 双目运算符事件
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
if (num1 != 0)
{
num2 = double.Parse(txtDisplay.Text);
num.Add(num2);
oper.Add("+");
switch (flag)
{
case "+": numResult = num1 + num2; break;
case "-": numResult = num1 - num2; break;
case "x": numResult = num1 * num2; break;
case "/": numResult = num1 / num2; break;
}
flag = "+";
num1 = numResult;
txtDispaly2.Text = numResult.ToString() + " +";
txtDisplay.Text = null;
}
else
{
num1 = double.Parse(txtDisplay.Text);
num.Add(num1);
oper.Add("+");
flag = "+";
txtDispaly2.Text = txtDisplay.Text + " +";
txtDisplay.Text = null;
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnSub_Click(object sender, EventArgs e)
{
try
{
if (num1 != 0)//说明已经进行过一次运算
{
num2 = double.Parse(txtDisplay.Text);//将输入的值赋给num2
num.Add(num2);//将num2添加到数组,用于最后上屏幕的显示
oper.Add("-");//将oper添加到数组,用于最后上屏幕的显示
//运算函数
switch (flag)
{
case "+": numResult = num1 + num2; break;
case "-": numResult = num1 - num2; break;
case "x": numResult = num1 * num2; break;
case "/": numResult = num1 / num2; break;
}
flag = "-";
num1 = numResult;//将结果赋值给num1
txtDispaly2.Text = numResult.ToString() + " -";//上屏幕显示
txtDisplay.Text = null;//清空下屏幕
}
else//第一次运算
{
num1 = double.Parse(txtDisplay.Text);
num.Add(num1);//将num2添加到数组,用于最后上屏幕的显示
oper.Add("-");//将oper添加到数组,用于最后上屏幕的显示
flag = "-";
txtDispaly2.Text = txtDisplay.Text + " -";
txtDisplay.Text = null;
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnMul_Click(object sender, EventArgs e)
{
try
{
if (num1 != 0)
{
num2 = double.Parse(txtDisplay.Text);
num.Add(num2);
oper.Add("x");
switch (flag)
{
case "+": numResult = num1 + num2; break;
case "-": numResult = num1 - num2; break;
case "x": numResult = num1 * num2; break;
case "/": numResult = num1 / num2; break;
}
flag = "x";
num1 = numResult;
txtDispaly2.Text = numResult.ToString() + " x";
txtDisplay.Text = null;
}
else
{
num1 = double.Parse(txtDisplay.Text);
num.Add(num1);
oper.Add("x");
flag = "x";
txtDispaly2.Text = txtDisplay.Text + " x";
txtDisplay.Text = null;
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
private void btnDis_Click(object sender, EventArgs e)
{
try
{
if (num1 != 0)//
{
num2 = double.Parse(txtDisplay.Text);
num.Add(num2);
oper.Add("/");
switch (flag)
{
case "+": numResult = num1 + num2; break;
case "-": numResult = num1 - num2; break;
case "x": numResult = num1 * num2; break;
case "/": numResult = num1 / num2; break;
}
flag = "/";
num1 = numResult;
txtDispaly2.Text = numResult.ToString() + " /";
txtDisplay.Text = null;
}
else
{
num1 = double.Parse(txtDisplay.Text);
num.Add(num1);
oper.Add("/");
flag = "/";
txtDispaly2.Text = txtDisplay.Text + " /";
txtDisplay.Text = null;
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
#endregion
#region 其他功能性运算符事件
//清除运算
private void btnClc_Click(object sender, EventArgs e)
{
try
{
num1 = 0;
num2 = 0;
txtDisplay.Text = null;
txtDispaly2.Text = null;
num.Clear();
oper.Clear();
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
//删除运算
private void btnDel_Click(object sender, EventArgs e)
{
try
{
txtDisplay.Text = txtDisplay.Text.Substring(0, txtDisplay.Text.Length - 1);
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
//改变符号运算
private void btnChange_Click(object sender, EventArgs e)
{
try
{
if (txtDisplay.Text != "-")
{
txtDisplay.Text = "-";
}
else
{
txtDisplay.Text = "+";
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
//小数点运算
private void btnPot_Click(object sender, EventArgs e)
{
try
{
txtDisplay.Text += ".";
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
//结果输出
private void btnCal_Click(object sender, EventArgs e)
{
try
{
if (txtDisplay.Text == null)
{
txtDisplay.Text = num1.ToString();
}
else
{
num2 = double.Parse(txtDisplay.Text);
num.Add(num2);
switch (flag)
{
case "+": numResult = num1 + num2; break;
case "-": numResult = num1 - num2; break;
case "x": numResult = num1 * num2; break;
case "/": numResult = num1 / num2; break;
}
txtDisplay.Text = numResult.ToString();
txtDispaly2.Text = null;
for (int i = 0; i < oper.ToArray().Length; i++)
{
txtDispaly2.Text += num[i].ToString() + oper[i];
}
txtDispaly2.Text += num[num.ToArray().Length - 1].ToString();
txtDispaly2.Text += "=";
txtDispaly2.Text += numResult.ToString();
}
}
catch (Exception ex)
{
txtDisplay.Text = ex.Message;
}
}
#endregion
}
}