使用C#开发简易计算器

需积分: 26 2 下载量 196 浏览量 更新于2024-09-15 收藏 363KB DOCX 举报
"简易计算机的c#编程教程" 在本教程中,我们将学习如何使用C#语言和Visual Studio 2013开发环境创建一个简易的计算器应用,该应用能够执行基本的数学运算,包括加法、减法、乘法和除法。以下是详细步骤和相关知识点: 1. **界面设计**:首先,我们需要启动Visual Studio 2013并创建一个新的Windows窗体应用程序项目。接着,在设计视图中,添加一个TextBox控件用于显示计算结果,以及17个Button控件分别代表数字0-9、小数点、加、减、乘、除、等于和清除等操作。 2. **属性设置**:每个控件都需要进行适当的属性配置。例如,TextBox的Text属性初始设置为"0",并且TextAlign属性应设置为Right,使得数值显示时右对齐。Button控件的Text属性应设置为对应的数字或运算符,以便用户识别。 3. **背景图片**:为了提升计算器的视觉效果,我们可以在窗体上设置背景图片。这可以通过在窗体的Properties窗口中设置BackgroundImage属性,并选择本地资源中的图片实现。 4. **源代码编写**: - `InitializeComponent()` 方法是自动生成的,用于初始化窗体和控件。在这里,我们还设置了`txtReadout.Text` 的初始值为"0",并设定其文本对齐方式。 - 定义变量`num1`, `num2`, 和 `result` 来存储操作数和运算结果,`decimalFlag` 用于判断当前输入是否为小数,`myOperator` 存储当前的操作类型(加、减、乘、除)。 - 编写方法如`NumClick` 用于处理数字按钮的点击事件。当点击数字按钮时,根据`decimalFlag` 的状态决定是否在文本框中添加小数点。 - 对于其他运算符按钮,如加法、减法、乘法和除法,需要创建相应的事件处理函数,将当前的数值和操作类型存储起来,等待下次按键或等号键触发计算。 - 当点击等号键时,调用计算逻辑,执行相应的数学运算,并将结果显示在文本框中。 - 清除按钮通常会重置所有变量和文本框的内容,以便进行新的计算。 5. **C#基础语法**:本项目涉及了C#的基本语法,如类、对象、事件处理和控件交互。`using` 关键字用于引入命名空间,如System.Windows.Forms,使得我们可以使用窗体和控件相关的类。此外,还涉及到变量声明、条件语句(如`if`)以及方法定义。 6. **事件驱动编程**:在Windows Forms应用程序中,用户与控件的交互是通过事件驱动的。例如,当用户点击按钮时,相应的事件处理函数会被调用。在本例中,我们为每个数字和运算符按钮定义了点击事件处理程序。 7. **数学运算**:在C#中,可以使用内置的数学运算符(+,-,*,/)来进行加、减、乘、除运算。在计算过程中,需要注意数据类型转换和异常处理,比如除以零的情况。 8. **窗体布局**:虽然这里没有详细讲述,但布局管理也是Windows Forms开发中的一个重要方面。开发者可以使用布局容器(如FlowLayoutPanel或TableLayoutPanel)来帮助自动调整控件的位置和大小。 通过这个简单的计算器项目,我们可以学习到C#编程的基础,以及如何利用Visual Studio创建具有用户交互性的桌面应用程序。这只是一个起点,随着技能的提升,可以添加更多功能,如科学计算、括号支持、更复杂的错误处理等。
2012-07-17 上传
简单的四则运算 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace 简单计算机 { public partial class Form1 : Form { string st = ""; double a=0, b=0; int i = 1; int flag,flag2;//初次执行算法的代号与再次执行算法的代号 bool format = false;//flag=true无需按清除,在执行下一次算法时候自动初始化 public Form1() { InitializeComponent(); textBox1.Text = Convert.ToString(0);//初始化,无操作时候,屏幕显示“0” } private void button1_Click(object sender, EventArgs e)//数字“1” { if (flag!=0)//以“=”的结果执行下一次加减乘除的初始化 { format = false; i = 1; } if (format == true)//执行下一次算法的初始化 { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button1.Text; textBox1.Text = st; } private void button2_Click(object sender, EventArgs e)//数字“2” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button2.Text; textBox1.Text = st; } private void button3_Click(object sender, EventArgs e)//数字“3” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button3.Text; textBox1.Text = st; } private void button4_Click(object sender, EventArgs e)//数字“4” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button4.Text; textBox1.Text = st; } private void button5_Click(object sender, EventArgs e)//数字“5” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button5.Text; textBox1.Text = st; } private void button6_Click(object sender, EventArgs e)//数字“6” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button6.Text; textBox1.Text = st; } private void button7_Click(object sender, EventArgs e)//数字“7” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button7.Text; textBox1.Text = st; } private void button8_Click(object sender, EventArgs e)//数字“8” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button8.Text; textBox1.Text = st; } private void button9_Click(object sender, EventArgs e)//数字“9” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button9.Text; textBox1.Text = st; } private void button10_Click(object sender, EventArgs e)//数字“0” { if (flag != 0) { format = false; i = 1; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; i = 1; } if (a != 0) textBox1.Text = ""; st = st + button10.Text; textBox1.Text = st; } private void button18_Click(object sender, EventArgs e)//数字“.” { if (flag != 0) { format = false; } if (format == true) { a = b = 0; flag = flag2 = 0; format = false; } if (a != 0) textBox1.Text = ""; if (st == "")//第一个数字是小数时候无需按“0”,直接显示“0” st = Convert.ToString(0); if (i == 1) { st = st + button18.Text; i++; } textBox1.Text = st; } private void button11_Click(object sender, EventArgs e)//初始化 { st = ""; a = b = 0; i = 1; flag = flag2 = 0; format = false; textBox1.Text = Convert.ToString(0); } private void button13_Click(object sender, EventArgs e)//相加 { flag = 1; if (a == 0) { if (st == "") st = "0"; a = Convert.ToDouble(st); } else if (st != "" && a != 0) b = Convert.ToDouble(st); if (Convert.ToString(b)!="") { textBox1.Text = ""; if (flag2 == 5) { a = a + b; } if (flag2 == 6) { a = a - b; } if (flag2 == 7) { a = a * b; } if (flag2 == 8) { if (b == 0) MessageBox.Show("被除数不能为0", "警告", MessageBoxButtons.RetryCancel); else { a = a / b; } } textBox1.Text = Convert.ToString(a); b = 0; st = ""; } flag2 = 5; } private void button14_Click(object sender, EventArgs e)//相减 { flag = 2; if (a == 0) { if (st == "") st = "0"; a = Convert.ToDouble(st); } else if (st != "" && a != 0) b = Convert.ToDouble(st); if (Convert.ToString(b) != "") { textBox1.Text = ""; if (flag2 == 5) { a = a + b; } if (flag2 == 6) { a = a - b; } if (flag2 == 7) { a = a * b; } if (flag2 == 8) { if (b == 0) MessageBox.Show("被除数不能为0", "警告", MessageBoxButtons.RetryCancel); else { a = a / b; } } textBox1.Text = Convert.ToString(a); b = 0; st = ""; } flag2 = 6; } private void button15_Click(object sender, EventArgs e)//相乘 { flag = 3; if (a == 0) { if (st == "") st = "0"; a = Convert.ToDouble(st); } else if (st != "" && a != 0) b = Convert.ToDouble(st); if (Convert.ToString(b) != "") { textBox1.Text = ""; if (flag2 == 5) { a = a + b; } if (flag2 == 6) { a = a - b; } if (flag2 == 7) { a = a * b; } if (flag2 == 8) { if (b == 0) MessageBox.Show("被除数不能为0", "警告", MessageBoxButtons.RetryCancel); else { a = a / b; } } textBox1.Text = Convert.ToString(a); b = 0; st = ""; } flag2 = 7; } private void button16_Click(object sender, EventArgs e)//相除 { flag = 4; if (a == 0) { if (st == "") st = "0"; a = Convert.ToDouble(st); } else if (st != "" && a != 0) b = Convert.ToDouble(st); if (Convert.ToString(b) != "") { textBox1.Text = ""; if (flag2 == 5) { a = a + b; } if (flag2 == 6) { a = a - b; } if (flag2 == 7) { a = a * b; } if (flag2 == 8) { if (b == 0) MessageBox.Show("被除数不能为0", "警告", MessageBoxButtons.RetryCancel); else { a = a / b; } } textBox1.Text = Convert.ToString(a); b = 0; st = ""; } flag2 = 8; } private void button17_Click(object sender, EventArgs e)//等于 { format = true; textBox1.Text = ""; if(st!="") b = Convert.ToDouble(st); if (flag == 1) { a = a + b; } if (flag == 2) { a =a - b; } if (flag == 3) { a = a * b; } if (flag == 4) { if (b == 0) MessageBox.Show("被除数不能为0","警告",MessageBoxButtons.RetryCancel); else { a = a / b; } } textBox1.Text = Convert.ToString(a); b = 0; flag = flag2 = 0; st = ""; } private void button12_Click(object sender, EventArgs e) { Application.Exit(); } } }