资源描述
C#程序设计 简单计算器
大家都知道,计算器是日常生活中不可缺少的一个工具,在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 除法运算
程序,实现sqrt、1/x、%运算。
展开阅读全文