当前位置:文档之家› 第02讲 简易计算器的设计

第02讲 简易计算器的设计

第02讲计算器2.1 计算器简介大家都知道,计算器是日常生活中不可缺少的一个工具,在Microsoft的Windows操作系统中,附带了一个计算器程序,有标准型和科学型两种模式。

Windows XP下的标准型和科学型计算器程序分别如图2-1和图2-2所示。

图2-1 Windows XP下的标准型计算器图2-2 Windows XP下的科学型计算器Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。

接下来详细的介绍简易计算器的设计方法和步骤。

2.2 界面设计及属性设置用户界面设计是软件开发中非常重要的一个部分,用户界面的好坏直接影响软件的质量,本节将介绍如何设计简易计算器的用户界面以及界面上各控件的属性设置。

2.2.1 界面设计打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。

图2-1 计算器用户界面2.2.2 属性设置窗体和各控件的属性设置如表2-1所示。

表2-1 窗体和各控件的属性2.3 编写代码本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否为小数等,因此首先在代码的通用段声明以下变量://******************************************************************double num1, num2, result; // 操作数及运算结果bool decimalFlag = false; // 判断输入的是否为小数string myOperator; // 操作类型//******************************************************************接下来编写一个名为“NumClick”的方法,单击数字按钮时,调用NumClick 方法,将输入的数字追加到文本框中,代码如下://******************************************************************// 单击数字按钮时,调用如下NumClick方法//******************************************************************public void NumClick(int myNumber){if (decimalFlag) // 输入小数{txtReadout.Text = txtReadout.Text + myNumber;}else{if (txtReadout.Text == "0.") // 输入整数{// 输入的是整数的第一个数字txtReadout.Text = myNumber + ".";}else{// 输入的不是整数的第一个数字txtReadout.Text = txtReadout.Text.Substring(0, txtReadout.Text.Length - 1) + myNumber + ".";}}}//******************************************************************//******************************************************************编写窗体的载入事件代码如下://******************************************************************// 窗体载入事件代码//******************************************************************private void Form1_Load(object sender, EventArgs e){txtReadout.Text = "0.";// 指定文本框的对齐方式为右对齐txtReadout.TextAlign = HorizontalAlignment.Right;}//******************************************************************//******************************************************************编写数字按钮【0】~【9】的单击事件代码如下://******************************************************************// 数字按钮【0】~【9】的单击事件代码//******************************************************************private void btnNum0_Click(object sender, EventArgs e){NumClick(0);}private void btnNum1_Click(object sender, EventArgs e){NumClick(1);}private void btnNum2_Click(object sender, EventArgs e){NumClick(2);}private void btnNum3_Click(object sender, EventArgs e){NumClick(3);}private void btnNum4_Click(object sender, EventArgs e){NumClick(4);}private void btnNum5_Click(object sender, EventArgs e){NumClick(5);}private void btnNum6_Click(object sender, EventArgs e){NumClick(6);}private void btnNum7_Click(object sender, EventArgs e){NumClick(7);}private void btnNum8_Click(object sender, EventArgs e){NumClick(8);}private void btnNum9_Click(object sender, EventArgs e){NumClick(9);}//****************************************************************** //****************************************************************** 编写小数点按钮【.】的单击事件代码如下://******************************************************************// 【.】按钮的单击事件代码//****************************************************************** private void btnDot_Click(object sender, EventArgs e){decimalFlag = true; // 输入小数点}//******************************************************************//****************************************************************** 编写复位按钮【C】的单击事件代码如下://******************************************************************// 【C】按钮的单击事件代码//****************************************************************** private void btnC_Click(object sender, EventArgs e){num1 = 0;num2 = 0;txtReadout.Text = "0.";decimalFlag = false;}//******************************************************************//****************************************************************** 编写【+】、【-】、【*】、【/】按钮的单击事件代码如下://******************************************************************// 【+】、【-】、【*】、【/】按钮的单击事件代码//****************************************************************** private void btnAdd_Click(object sender, EventArgs e){myOperator = "add";num1 = double.Parse(txtReadout.Text);txtReadout.Text = "0.";decimalFlag = false;}private void btnSub_Click(object sender, EventArgs e){myOperator = "Sub";num1 = double.Parse(txtReadout.Text);txtReadout.Text = "0.";decimalFlag = false;}private void btnMul_Click(object sender, EventArgs e){myOperator = "Mul";num1 = double.Parse(txtReadout.Text);txtReadout.Text = "0.";decimalFlag = false;}private void btnDiv_Click(object sender, EventArgs e){myOperator = "Div";num1 = double.Parse(txtReadout.Text);txtReadout.Text = "0.";decimalFlag = false;}//****************************************************************** //****************************************************************** 最后编写【=】按钮的单击事件代码如下://****************************************************************** // 【=】按钮的单击事件代码//****************************************************************** private void btnAmount_Click(object sender, EventArgs e){num2 = double.Parse(txtReadout.Text);switch (myOperator){case "add":result = num1 + num2;txtReadout.Text = result.ToString();break;case "Sub":result = num1 - num2;txtReadout.Text = result.ToString();break;case "Mul":result = num1 * num2;txtReadout.Text = result.ToString();break;case "Div":if (num2 == 0){txtReadout.Text = "除数不能为“0”!";}else{result = num1 / num2;txtReadout.Text = result.ToString();}break;}}//****************************************************************** //******************************************************************2.4 运行结果运行程序,计算加法“23 + 1.8”,结果如图2-4所示。

相关主题