简单计算器

1、系统概述

本次实验的主要内容是设计开发一个支持连续计算的简单计算器,其过程包括设计目标、系统设计与算法流程、界面设计、和运行调试。

2、系统设计

2.1 设计目标

简单计算器开发及其项目扩展

2.2 设计分析与算法流程

在这里插入图片描述

2.3 界面设计

在这里插入图片描述

2.4 关键类图

在这里插入图片描述

3、系统实现(运行调试)

在这里插入图片描述

4、系统扩展

在计算器myCalculator开发的基础上,从不同的角度进一步拓展项目的功能和使用范围,本实验中我拓展了求绝对值和三角函数的功能。

5、总结

通过该项目的开发,使我进一步了解基于图形用户界面的Windows应用程序的开发过程,并通过项目实训的扩展练习加深印象,为开发较为复杂的应用程序打下基础。

具体代码如下:

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 myCalculator2
{
public partial class Form_Main : Form
{
Stack st = new Stack();
double num1, num2, tempresult, a;
string Operator;
public Form_Main()
{
InitializeComponent();

}
bool isRun = true;
private void btn_clear_Click(object sender, EventArgs e)
{
txtDisplay.Text = "";
st.Clear();
}

private void btn_0_Click(object sender, EventArgs e)
{
txtDisplay.Text += "0";
}

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

private void btn_2_Click(object sender, EventArgs e)
{
txtDisplay.Text += "2";
}

private void btn_3_Click(object sender, EventArgs e)
{
txtDisplay.Text += "3";
}

private void btn_4_Click(object sender, EventArgs e)
{
txtDisplay.Text += "4";
}

private void btn_5_Click(object sender, EventArgs e)
{
txtDisplay.Text += "5";
}

private void btn_6_Click(object sender, EventArgs e)
{
txtDisplay.Text += "6";
}

private void btn_7_Click(object sender, EventArgs e)
{
txtDisplay.Text += "7";
}

private void btn_8_Click(object sender, EventArgs e)
{
txtDisplay.Text += "8";
}

private void btn_9_Click(object sender, EventArgs e)
{
txtDisplay.Text += "9";
}

private void btn_point_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtDisplay.Text))
txtDisplay.Text = "0.0";
else if (!txtDisplay.Text.Contains("."))
txtDisplay.Text += ".";
}

private void btn_add_Click(object sender, EventArgs e)
{
try
{
st.Push(txtDisplay.Text);
if (st.Count >= 3)
{
num1 = Convert.ToDouble(st.Pop());
Operator = Convert.ToString(st.Pop());
num2 = Convert.ToDouble(st.Pop());
tempresult = num1 + num2;
st.Push(tempresult);
if (Operator == "+")
{
tempresult = num2 + num1;
st.Push(tempresult);
}
else if (Operator == "-")
{
tempresult = num2 - num1;
st.Push(tempresult);
}
else if (Operator == "×")
{
tempresult = num2 * num1;
st.Push(tempresult);
}
else if (Operator == "÷")
{
tempresult = num2 / num1;
st.Push(tempresult);
}
txtDisplay.Text = tempresult.ToString();
}
st.Push("+");
txtDisplay.Text = "";
}
catch (Exception)
{
MessageBox.Show("先输入数字才能进行此运算!", "错误", MessageBoxButtons.OK);
}
}

private void btn_sub_Click(object sender, EventArgs e)
{
try
{
st.Push(txtDisplay.Text);
if (st.Count >= 3)
{
num1 = Convert.ToDouble(st.Pop());
Operator = Convert.ToString(st.Pop());
num2 = Convert.ToDouble(st.Pop());
tempresult = num1 + num2;
st.Push(tempresult);
if (Operator == "+")
{
tempresult = num2 + num1;
st.Push(tempresult);
}
else if (Operator == "-")
{
tempresult = num2 - num1;
st.Push(tempresult);
}
else if (Operator == "×")
{
tempresult = num2 * num1;
st.Push(tempresult);
}
else if (Operator == "÷")
{
tempresult = num2 / num1;
st.Push(tempresult);
}
txtDisplay.Text = tempresult.ToString();
}
st.Push("-");
txtDisplay.Text = "";
}
catch (Exception)
{
MessageBox.Show("先输入数字才能进行此运算!", "错误", MessageBoxButtons.OK);
}
}

private void btn_multi_Click(object sender, EventArgs e)
{
try
{
st.Push(txtDisplay.Text);
if (st.Count >= 3)
{
num1 = Convert.ToDouble(st.Pop());
Operator = Convert.ToString(st.Pop());
num2 = Convert.ToDouble(st.Pop());
tempresult = num1 + num2;
st.Push(tempresult);
if (Operator == "+")
{
tempresult = num2 + num1;
st.Push(tempresult);
}
else if (Operator == "-")
{
tempresult = num2 - num1;
st.Push(tempresult);
}
else if (Operator == "×")
{
tempresult = num2 * num1;
st.Push(tempresult);
}
else if (Operator == "÷")
{
tempresult = num2 / num1;
st.Push(tempresult);
}
txtDisplay.Text = tempresult.ToString();
}
st.Push("×");
txtDisplay.Text = "";
}
catch (Exception)
{
MessageBox.Show("先输入数字才能进行此运算!", "错误", MessageBoxButtons.OK);
}
}

private void btn_Abs_Click(object sender, EventArgs e)
{
tempresult = num1 > 0 ? num1 : (-num1);
st.Push(tempresult);
}

private void btn_sin_Click(object sender, EventArgs e)
{
tempresult = Math.Sin(num1);
st.Push(tempresult);
}

private void btn_cos_Click(object sender, EventArgs e)
{
tempresult = Math.Cos(num1);
st.Push(tempresult);
}

private void btn_tan_Click(object sender, EventArgs e)
{
tempresult = Math.Tan(num1);
st.Push(tempresult);
}

private void btn_五彩缤纷_Click(object sender, EventArgs e)
{
while (isRun)
{
for(int c=0;c<254;c++)
{
this.BackColor = Color.FromArgb(c, 255 - c, c);
Application.DoEvents();
System.Threading.Thread.Sleep(5);
}
}
}

private void Form_Main_Load(object sender, EventArgs e)
{

}

private void btn_div_Click(object sender, EventArgs e)
{
try
{
st.Push(txtDisplay.Text);
if (st.Count >= 3)
{
num1 = Convert.ToDouble(st.Pop());
Operator = Convert.ToString(st.Pop());
num2 = Convert.ToDouble(st.Pop());
tempresult = num1 + num2;
st.Push(tempresult);
if (Operator == "+")
{
tempresult = num2 + num1;
st.Push(tempresult);
}
else if (Operator == "-")
{
tempresult = num2 - num1;
st.Push(tempresult);
}
else if (Operator == "×")
{
tempresult = num2 * num1;
st.Push(tempresult);
}
else if (Operator == "÷")
{
tempresult = num2 / num1;
st.Push(tempresult);
}
txtDisplay.Text = tempresult.ToString();
}
st.Push("÷");
txtDisplay.Text = "";
}
catch (Exception)
{
MessageBox.Show("先输入数字才能进行此运算!", "错误", MessageBoxButtons.OK);
}
}

private void btn_equal_Click(object sender, EventArgs e)
{
try
{
st.Push(txtDisplay.Text);
if (st.Count >= 3)
{
num1 = Convert.ToDouble(st.Pop());
Operator = Convert.ToString(st.Pop());
num2 = Convert.ToDouble(st.Pop());
tempresult = num1 + num2;
st.Push(tempresult);
if (Operator == "+")
{
tempresult = num2 + num1;
st.Push(tempresult);
}
else if (Operator == "-")
{
tempresult = num2 - num1;
st.Push(tempresult);
}
else if (Operator == "×")
{
tempresult = num2 * num1;
st.Push(tempresult);
}
else if (Operator == "÷")
{
tempresult = num2 / num1;
st.Push(tempresult);
}
txtDisplay.Text = tempresult.ToString();
}
txtDisplay.Text = tempresult.ToString();
st.Clear();
}
catch (Exception)
{
MessageBox.Show("先输入数字才能进行此运算!", "错误", MessageBoxButtons.OK);
}
}
private void btn_backspace_Click(object sender, EventArgs e)
{
try
{
txtDisplay.Text = txtDisplay.Text.Substring(0, txtDisplay.Text.Length - 1);
}
catch (Exception)
{
MessageBox.Show("已经为中,无法再退格了!", "错误", MessageBoxButtons.OK);
}
}
}
}

具体的C#文件压缩包如下链接所示:
https://download.csdn.net/download/qq_41509200/11584028

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值