C#计算器.docx
- 文档编号:8798194
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:25
- 大小:198.37KB
C#计算器.docx
《C#计算器.docx》由会员分享,可在线阅读,更多相关《C#计算器.docx(25页珍藏版)》请在冰点文库上搜索。
C#计算器
用C#Form设计的计算器,实现了加减乘除及开次方的基本功能,并且在这个基础上可以扩展,添加更加复杂的计算。
这个程序是自己设计的,也可以用键盘控制,加了点效果使其看着更加可爱,美观。
程序如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace计算
{
publicpartialclass计算器:
Form
{
intx=0,q=0,p=0;//定义变量
StringYsf="";//储存运算符
doublea,b,c;//a为第一个值,b为第二个值,c为结果
longs=1;//小数初始
public计算器()
{
InitializeComponent();
textBox.Text="0";//初始Text数字
}
publicvoid算法(doublei)
{
if(q==1)//如果前面输出为等于值
{
Ysf="";//准备赋值给a的前提初始化
a=0;
}
if(Ysf.Equals(""))//判断是否有运算符
{
if(s==1)//如果没小数
a=a*10+i;
else//如果有小数
{
a=a+i/s;
s=s*10;//下一位小数的位置
}
textBox.Text=a.ToString();//显示第一个值结果
//if(q==1)
q=0;
}
else//有运算符的情况
{
if(c!
=0)//有计算结果的情况
{
b=0;
c=0;
}
if(s==1)//如果没小数
b=b*10+i;
else//如果有小数
{
b=b+i/s;
s=s*10;
}
textBox.Text=b.ToString();
x=0;
}
}
publicvoid计算()
{
if(Ysf.Equals(""))//如果只输入了a值
textBox.Text=textBox.Text;
else
{
if(x==0)//判断输入的值是否给a
{
if(Ysf.Equals("/"))//判断运算符为除号时是否除以0
{
if(b==0)
{
textBox.Text="。
除数不能为零";
return;
}
else//计算除法
c=a/b;
}
else//计算其它算法
{
if(Ysf.Equals("+"))
c=a+b;
if(Ysf.Equals("-"))
c=a-b;
if(Ysf.Equals("*"))
c=a*b;
}
stringn=Convert.ToString(c);//把数值c传给字符串变量n
if(n.IndexOf("-")>=0)//判断是否是负数,如果是就把负号提前
{
n=n.Replace("-","");//把数字负号从光标后提前
stringm=n;
m=m+"-";
n=m;
}
textBox.Text=n.ToString();
a=c;//把结果值赋给a
x=0;
}
}
}
publicvoidfh(stringstr)//接收运算符的方法
{
if(Ysf.Equals(""))//判断是否有运算符
{
Ysf=str;
s=1;
}
else
{
计算();
s=1;
Ysf=str;
}
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
privatevoidbutton0_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(0);
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法
(1);
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法
(2);
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(3);
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(4);
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(5);
}
privatevoidbutton6_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(6);
}
privatevoidbutton7_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(7);
}
privatevoidbutton8_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(8);
}
privatevoidbutton9_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(9);
}
privatevoidbutton相反_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(textBox.Text.IndexOf("-")>=0)//判断是否有负号
{
if(p==0)//判断是哪个数值取反
{
textBox.Text=textBox.Text.Replace("-","");//去掉负号
a=-a;//值取反
}
else
{
textBox.Text=textBox.Text.Replace("-","");
b=-b;
}
}
else//如果是正数,加负号
{
stringm=textBox.Text;
m=m+"-";
textBox.Text=m;
if(p==0)
a=-a;
else
b=-b;
}
}
}
privatevoidbutton点_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(s==1)//判断是否有小数点
{
s=10;
if(q==1)//判断数值是否是等于后出现的值,如果是第一次点小数点则显示0.
textBox.Text=".0";
else//如果不是,则直接在后面添加
{
if(Ysf.Equals(""))
textBox.Text="."+textBox.Text;
else
textBox.Text=".0";
}
}
}
}
privatevoidbutton加_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)//如果c有过值,并且没有用等于计算过,则下个赋值给a的条件判断
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("+");
}
}
privatevoidbutton减_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("-");
}
}
privatevoidbutton乘_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("*");
}
}
privatevoidbutton除_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("/");
}
}
privatevoidbuttonC_Click(objectsender,EventArgse)
{
a=0;
b=0;
c=0;
s=1;
Ysf="";
textBox.Text="0";
}
privatevoidbuttonsqrt_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("-")>=0)//如果负数开次方,则提示错误
{
textBox.Text="!
错误";
}
else
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
doublem=Convert.ToDouble(textBox.Text);//如果正数开次方,则a=m
m=System.Math.Sqrt(m);
textBox.Text=Convert.ToString(m);
a=m;
}
}
}
privatevoidbutton等于_Click(objectsender,EventArgse)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
计算();
x=0;
q=1;p=0;s=1;//计算有值后把中间一些变量初始
}
}
privatevoid计算器_KeyPress(objectsender,KeyPressEventArgse)//键盘输入
{
if(e.KeyChar==42)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("*");
}
}
if(e.KeyChar==43)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("+");
}
}
if(e.KeyChar==45)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("-");
}
}
if(e.KeyChar==47)
{
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
{
if(c!
=0)
x=1;
if(q==1)
{
b=0;
q=0;
}
p=1;
fh("/");
}
}
if(e.KeyChar==48)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(0);
if(e.KeyChar==49)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法
(1);
if(e.KeyChar==50)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法
(2);
if(e.KeyChar==51)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(3);
if(e.KeyChar==52)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(4);
if(e.KeyChar==53)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(5);
if(e.KeyChar==54)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(6);
if(e.KeyChar==55)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(7);
if(e.KeyChar==56)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
textBox.Text="。
除数真不能为零";
else
算法(8);
if(e.KeyChar==57)
if(textBox.Text.IndexOf("!
")>=0)
textBox.Text="!
!
错误";
elseif(textBox.Text.IndexOf("。
")>=0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 计算器