当前位置:首页 > 计算机相关 > 我的开发 > 正文内容

C# 系统计算器的制作(.net)

piikee14年前 (2009-04-09)我的开发252
实验要求
参照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;
}
}
程序运行效果
1
点击按钮3、+、3、=
显示6
点击按钮 9.0、/、3、=
显示3
[color=#008000]实验总结[/color]
通过此次实验,更好地掌握了课本学到的知识,理解面向对象的思想。其中一些按钮的实现功能需要很多判断,很好的锻炼了思维的严谨。就如等于号,要判断前后两个数字是否有输入,还有运算符。
程序源码下载:
1230131716_6437cd36
版权所有,严禁用于商业用途。

扫描二维码推送至手机访问。

版权声明:本文由萍客小居发布,如需转载请注明出处。

本文链接:https://www.piikee.net/289.html

分享给朋友:

相关文章

Windows XP 任务栏图标修复工具V1.1

Windows XP 任务栏图标修复工具V1.1

Windows XP下的任务栏右下角图标总是无缘无故的消失。有时候是音量图标,有时候是网络图标。最惨的是USB删除图标了,一插U盘或移动硬盘就无法弹出来了,找不到图标!到网上找了很多方法,有很多还是解决不了问题,最后总算找到了一个有效的解决...

邮件伪装者

邮件伪装者

C#.net开发的一个邮件发送软件,可以自定义发件人,伪装发件人发送邮件。用于垃圾邮件发送。。。使用不当后果自负。使用环境配置一,添加IIS服务器。开始菜单中打开“控制面板”,点击“添加添加或删除程序” ,左边面板选择“添加/删除windo...

Windows XP任务栏图标修复工具V1.2

此工具用于用于修复电脑桌面右下角任务栏图标消失的问题。具体使用方法和注意问题,请参考Windows XP任务栏图标修复工具V1.1版本。由于部分用户反映,使用本工具可以解决图标消失问题,但无法彻底解决,有时候启动系统图标还是会消失,又得重新...

alexaSEO软件

alexaSEO软件

ALEXASEO软件,提高网站ALEXA排名的同时,为网站增加大量外链。各大alexa排名查询网站,查询每一个网站之后,会在一段时间留下该网站的链接。此时,如果我们频繁的查询我们的网站,那么就会无形之中为网站留下外链。或者查询时,百度和谷歌...

IP地址修改器bat文件

把以下内容拷入一个记事本,并把文件后缀改为.bat即可。@echo           ################################################@echo           #####      I...

txt文件编码批量转换器V2.11版

用于批量转换txt文本文档的编码格式。通常我们电脑里的txt文件都是ASNI编码,放到手机,MP3等设备里面,打开看到的都是乱码。所以我们必须先把它们转换为Unicode格式,才能够在手机和MP3上面打开。如果有大量的文件,一个一个打开另存...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。