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

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

piikee14年前 (2009-04-09)我的开发303
实验要求
参照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

分享给朋友:

相关文章

flex小程序(算算你在这个世界上存活了多少天)

flex代码<code><?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxm...

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

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

Discuz论坛批量发贴机

一、 Discuz论坛批量发贴机简介Discuz论坛批量发贴机,采用.net平台开发。该发贴机使用模块化开发,运用了多线程和xml存储技术。适用于通用的Discuz论坛程序的批量发帖。可以设置一个帖子发布到N个论坛,或者N个帖子发布到一个论...

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

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

Discuz论坛批量发贴机V2.0

一、 Discuz论坛批量发贴机V2.0简介Discuz论坛批量发贴机,采用.net平台开发。该发贴机使用模块化开发,运用了多线程和xml存储技术。目前只开发了discuz发帖模块,适用于通用的Discuz论坛程序的批量发帖。可以设置一个帖...

萍客asp网站自动更新插件

该插件属于SEO类型插件,插件根据日期,每天读取一个内容进行显示,使得网站每天有不同的内容从而促使网站百度快照更新。特别适合单页面的SEO。data和piikee.asp放入网站根目录。要使用插件的asp页面,随便地方加入 <!--...

发表评论

访客

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