1、第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.2.1 界面设计打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。图2-1 计算器用户界面2.2.2 属性设置窗体和各控件的属性设置如表2-1所示。表2-1 窗体和各控件的属性控件类型控件名称属性设置结果FormForm1Text计算器StartPositionCenterScr
3、eenMaximizeBoxFalseAutoSizeModeGrowAndShrinkTextBoxTextBox1NametxtReadoutReadOnlyTrueButtonButton1NamebtnNum7Text7Button2NamebtnNum8Text8Button3NamebtnNum9Text9Button4NamebtnAddText+ForeColorRedButton5NamebtnSubText-ForeColorRedButton6NamebtnNum4Text4Button7NamebtnNum5Text5Button8NamebtnNum6Text6But
4、ton9NamebtnMulText*ForeColorRedButton10NamebtnDivText/ForeColorRedButton11NamebtnNum1Text1Button12NamebtnNum2Text2Button13NamebtnNum3Text3Button14NamebtnNum0Text0Button15NamebtnDotText.Button16NamebtnCTextCForeColorRedButton17NamebtnAmountText=ForeColorRed2.3 编写代码本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否
5、为小数等,因此首先在代码的通用段声明以下变量:/*double num1, num2, result; / 操作数及运算结果bool decimalFlag = false; / 判断输入的是否为小数string myOperator; / 操作类型/*接下来编写一个名为“NumClick”的方法,单击数字按钮时,调用NumClick方法,将输入的数字追加到文本框中,代码如下:/*/ 单击数字按钮时,调用如下NumClick方法/*public void NumClick(int myNumber) if (decimalFlag) / 输入小数 txtReadout.Text = txtRe
6、adout.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, EventArg
7、s 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_Cli
8、ck(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) N
9、umClick(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, Event
10、Args 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, EventA
11、rgs 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, Ev
12、entArgs 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;/*/*最后编写【=】按钮的单击事件代码如下:/*/ 【=】按钮的单击事件代码
13、/*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;
14、 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所示。图2-4 加法运算单击【C】按钮,再计算减法“2.3 - 18”,结果如图2-5所示。图2-5 减法运算单击【C】按钮,再计算乘法“2.3 1.8”,结果如图2-6所示。图2-6
15、 乘法运算单击【C】按钮,再计算除法“23.18 0”,结果如图2-7所示。图2-7 除数为“0”的除法运算单击【C】按钮,再计算除法“2.3 1.8”,结果如图2-8所示。图2-8 除法运算作业2一、选择题1. 若要使窗体在运行时,用户不可以使用鼠标托拽窗体边缘的方法来改变窗体的大小,应当将窗体的( )属性设为“GrowAndShrink”。A. MaximizeBox B. MinimizeBoxC. StartPosition D. AutoSizeMode2. 在Visual C# 2005中,用于连接两个字符串的运算符是( )。A. B. &C. + D. 3. 确定文本框控件中文本
16、对齐方式的属性是( )。A. TextAlign B. TextC. ReadOnly D. Anchor4. Substring()用于( )。A. 清除字串前后所有空格 B. 截取字符串的一部分C. 获取字符串的长度 D. 将字符串中的子字符串替换成另外一个字符串二、填空题1. 用于确定窗体第一次出现时的位置的属性是 。2. 用于确定窗体标题栏的右上角的最小化按钮是否可用的属性是 。三、问答题1. 解释代码:/*txtReadout.Text = txtReadout.Text.Substring 0, txtReadout.Text.Length - 1) + myNumber + .;/*2. 解释代码:/*txtReadout.TextAlign = HorizontalAlignment.Right;/*四、上机操作题1. 完善本章介绍的计算器程序,实现sqrt、1/x、%运算。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1