使用Visual C# 2005开发简易计算器的设计

20115659 贡献于2013-11-16

作者 李志中  创建于2008-03-14 09:04:00   修改者李志中  修改于2009-02-23 01:30:00字数6874

文档摘要:   Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。
关键词:

第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 窗体和各控件的属性 控件类型 控件名称 属性 设置结果 Form Form1 Text 计算器 StartPosition CenterScreen MaximizeBox False AutoSizeMode GrowAndShrink TextBox TextBox1 Name txtReadout ReadOnly True Button Button1 Name btnNum7 Text 7 Button2 Name btnNum8 Text 8 Button3 Name btnNum9 Text 9 Button4 Name btnAdd Text + ForeColor Red Button5 Name btnSub Text - ForeColor Red Button6 Name btnNum4 Text 4 Button7 Name btnNum5 Text 5 Button8 Name btnNum6 Text 6 Button9 Name btnMul Text * ForeColor Red Button10 Name btnDiv Text / ForeColor Red Button11 Name btnNum1 Text 1 Button12 Name btnNum2 Text 2 Button13 Name btnNum3 Text 3 Button14 Name btnNum0 Text 0 Button15 Name btnDot Text . Button16 Name btnC Text C ForeColor Red Button17 Name btnAmount Text = ForeColor Red 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所示。 图2-4 加法运算 单击【C】按钮,再计算减法“2.3 - 18”,结果如图2-5所示。 图2-5 减法运算 单击【C】按钮,再计算乘法“2.3 × 1.8”,结果如图2-6所示。 图2-6 乘法运算 单击【C】按钮,再计算除法“23.18 ÷ 0”,结果如图2-7所示。 图2-7 除数为“0”的除法运算 单击【C】按钮,再计算除法“2.3 ÷ 1.8”,结果如图2-8所示。 图2-8 除法运算 作业2 一、选择题 1. 若要使窗体在运行时,用户不可以使用鼠标托拽窗体边缘的方法来改变窗体的大小,应当将窗体的( )属性设为“GrowAndShrink”。 A. MaximizeBox B. MinimizeBox C. StartPosition D. AutoSizeMode 2. 在Visual C# 2005中,用于连接两个字符串的运算符是( )。 A. @ B. & C. + D. ~ 3. 确定文本框控件中文本对齐方式的属性是( )。 A. TextAlign B. Text C. ReadOnly D. Anchor 4. 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、%运算。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档