分享
 
 
 

设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

//名字空间MyCalClass

//类名: CalClass

//无参的构造函数CalClass()

//6个用到的私有变量

//void PointClick() 按小数点

//string CE() 是计算器复位用的,clear函数

//string BackSpace(string Txt) 倒退键,参数是计算过程中现在显示的计算结果

//string NumClick(string Txt,int NumKey) 0-9数字键按下的响应,Txt是计算的当前结果,NumKey是按下的数字值

//string OpClick(string Txt,int OpKey) +,-,*,/,=几个键按下时的处理,Txt是计算的当前结果,OpKey是按下操作键的数字ID

namespace MyCalClass

{

public class CalClass

{

private string ResultTxt; //Get and Show The Result of the TextBox in application

private bool PointIsDown; //If the radix point was clicked;

private double MidResult; //To Store middle results

private double Results; //To store finally result

private int LastClick; //To sign last clicking button class,is number(1) or operator(2)

private int LastOperator; //To sign last clicked button of operator is who?0 is Null,1 is +,2 is - ,3 is *,4 is /,5 is =;

public CalClass()

{

ResultTxt = "0.";

PointIsDown = false;

MidResult = 0;

Results = 0;

LastClick = 0;

LastOperator = 0;

}

public void PointClick() //按下小数点后的函数处理

{

PointIsDown = true;

return;

}

public string CE() //按下CE键,清理计算器

{

ResultTxt = "0.";

MidResult = 0;

Results = 0;

PointIsDown = false;

LastClick = 0;

LastOperator = 0;

return ResultTxt;

}

public string BackSpace(string Txt) //后退键按下后的处理函数

{

if(LastClick == 2)return Txt; //如果上次的按键是操作,不是数字,直接返回,不能再退回

if (Txt[Txt.Length - 1] == '.') //计算器文本里最后一位是小数点时的情况:

{

if (PointIsDown == true) { PointIsDown = false; return Txt; } //如果小数点按下了,则退去小数点

else

{

if (Txt.Length == 2 && Txt[0] != '0') return "0."; //如果现在只有一位整数,"X."的情况,直接返回"0."

if (Txt.Length > 2) { ResultTxt = Txt.Remove(Txt.Length - 2, 2) + "."; return ResultTxt; }//否则,把最后一位去掉;

}

}

else//如果最后一们不是小数点,很简单,直接把最后一们去掉就行了!

{

ResultTxt = Txt.Remove(Txt.Length - 1, 1);

return ResultTxt;

}

return ResultTxt;//最后还要返回一个东西,程序里要求的,虽然根本运行不到这里!

}

public string NumClick(string Txt, int NumKey)//按下数字键(0-9)后的处理函数

{

//ResultTxt=Txt;

LastClick = 1;//先标志一下,最后一次按键是"数字键"

if (Txt[Txt.Length - 1] == '.')//最后一位是小数点的情况:

{

if (PointIsDown == true)//小数点已经被按下

{

ResultTxt = Txt + NumKey.ToString();//直接把按下的数字加到计算结果字符串上

}

else//小数点没被按下的话

{

if (Txt.Length == 2 && Txt[0] == '0')//如果现在的数值是0.的话,则把现在的数值直接变成按下的数字

{

ResultTxt = Txt.Replace("0", NumKey.ToString());

}

else

{

ResultTxt = Txt.Insert(Txt.Length - 2, NumKey.ToString());否则,就在小数点前加上当前按下的数字

}

}

}

else//最后一位不是小数点的情况:直接把数字加到最后

{

ResultTxt = Txt + NumKey.ToString();

}

return ResultTxt;

}

public string OpClick(string Txt, int OpKey)//运算操作键按下的处理

{

bool HasPoint=false;//用来标志已有的运算结果中,是否有小数点

PointIsDown = false;//按下任意运算键,小数点都设为未按下状态

if (LastClick == 2 && LastOperator != 5)//如果上一次按下的是操作运算键,并且不是等于号,则把上一次按下的内容覆盖,然后直接返回

{

LastClick = 2;

LastOperator = OpKey;

return Txt;

}

Results=double.Parse(Txt);//把现有的计算结果从string转为double型

switch (LastOperator)//根据上一次按下的操作按键来确定这次要做的运算

{

case 0:

MidResult=Results;//如果从未按过运算符键,则把当前的数值做为第一操作数

break;

//以下1-4是计算加,减,乘,除运算

case 1:

Results += MidResult;

break;

case 2:

Results = MidResult - Results;

break;

case 3:

Results *= MidResult;

break;

case 4:

if (Results == 0.0) { throw new System.Exception("Can Div with 0!"); }//除数为零的异常

Results = MidResult / Results;

break;

case 5:

MidResult=Results;//如果上一次按下等于号,同样要把当前的数值做为第一操作数

break;

}

ResultTxt=Results.ToString();

for(int i=0;i<ResultTxt.Length;i++)//整数计算时,最后结尾会没有小数点,这里要加上计算结果里有没有小数点的标志

{

if(ResultTxt[i]=='.'){HasPoint=true;break;}

}

if (HasPoint) return ResultTxt;

else return ResultTxt + ".";

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有