C# 系统计算器的制作(.net)
参照Windows系统提供的计算器功能,制作一个自己的计算器,至少能完成数据的加减乘除的基本功能。
控件的焦点以及Tab键的设置和使用。
多个控件(按钮)事件的共享。
实现键盘输入。
设计思路
创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。控件textBox1,显示输入的信息和显示处理后的结果。
数字1-9的按键的事件处理都是在textBox1中分别添加相对应的数字字符,每按一次就在字符后面继续加入数字的字符,把数字当成是字符串处理。对于加减乘除四则运算按键,事件触发后的处理是判断是否numa与numb都有值,没有的话就先赋值,不做运算,直到numa与numb都有值才进行运算。
程序0-9这十个数字按钮直接用托管实现,所有执行代码置于数字键1的onclick事件中,其他按钮用托管实现。
加减乘除四个按钮实现比较复杂的判断与运算。运算是都是调用相同的计算类Computer进行计算的。
小数点和正负号按钮的实现,主要是用字符检索与字符插入删除操作,判断字符串中是否已经存在此字符。存在小数点的话就不再增加小数点,存在负号就把负号去掉。
核心代码
按钮1的代码
private void button15_Click(object sender, EventArgs e)
{//这是按钮1,其他按钮用托管实现
Button clickBtn;
clickBtn = (Button)sender;
textBox1.Text += clickBtn.Text;
num += clickBtn.Text;
}
除号按钮代码
//除号
private void button4_Click(object sender, EventArgs e)
{
SendNumber(num);
if (sign == null || numb == 10241024)
{
sign = "/";
textBox1.Text = null;
num = null;
return;
}
if (numb!= 10241024)
{
//开始进行计算
Computer ComPro = new Computer(sign,numa,numb);
this.textBox1.Text = ComPro.Comt(out numa).ToString();
//开始初始化数据
sign = "/";
textBox1.Text = null;
numb = 10241024;
num = null;
return;
}
计算类
//计算类
public class Computer
{
private string sign;
private double numa;
private double numb;
public Computer(string str, double first, double second)
{
sign = str;
numa = first;
numb = second;
}
//进行运算
public double Comt(out double first)
{
if (sign == "+")
{
first = numa + numb;
return numa + numb;
}
else if (sign == "-")
{
first = numa - numb;
return numa - numb;
}
else if (sign == "*")
{
first = numa * numb;
return numa * numb;
}
else if (sign == "/")
{
if (numb == 0)
{
first = 1024.1024;
return first;
}
else
{
first = numa/numb;
return first;
}
}
else
{
first = 1024.1024;
return first ;
}
}
}
键盘事件(注意要在FORM1里面把键盘注册即keyPreview设置为true,还有事件里面KEY事件选KeyDown)
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.NumPad0: button20.PerformClick(); break;
case Keys.NumPad1: button15.PerformClick(); break;
case Keys.NumPad2: button14.PerformClick(); break;
case Keys.NumPad3: button13.PerformClick(); break;
case Keys.NumPad4: button10.PerformClick(); break;
case Keys.NumPad5: button9.PerformClick(); break;
case Keys.NumPad6: button8.PerformClick(); break;
case Keys.NumPad7: button1.PerformClick(); break;
case Keys.NumPad8: button2.PerformClick(); break;
case Keys.NumPad9: button3.PerformClick(); break;
case Keys.Add: button17.PerformClick(); break;
case Keys.Subtract: button12.PerformClick(); break;
case Keys.Multiply: button7.PerformClick(); break;
case Keys.Divide: button4.PerformClick(); break;
case Keys.Decimal: button19.PerformClick(); break;
case Keys.Delete: button18.PerformClick(); break;
case Keys.Enter: button16.PerformClick(); break;
default: MessageBox.Show(" 输入错误."); break;
}
}
程序运行效果

点击按钮3、+、3、=
显示6
点击按钮 9.0、/、3、=
显示3
[color=#008000]实验总结[/color]
通过此次实验,更好地掌握了课本学到的知识,理解面向对象的思想。其中一些按钮的实现功能需要很多判断,很好的锻炼了思维的严谨。就如等于号,要判断前后两个数字是否有输入,还有运算符。
程序源码下载:
1230131716_6437cd36
版权所有,严禁用于商业用途。