using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace caculator
{
publicpartialclasscaculator1Form
{
String//定义两个操作数
bool//标识小数点是否存在
int//记录操作数个数
String//指示上一次按键事件的类型
int//指示将要进行的操作类型
bool//指示是否已经进行过操作
String TempReadout;
public caculator1()
{
//初始化界面控件
}
privatevoidobjectEventArgs//对变量进行初始化赋值
{
false; //小数点标志赋为false
false; //尚未进行过操作
//操作数个数为
"NONE";
OpFlag = 0;
"0."; //文本框中初始值为“.”
}
publicvoidint//接收操作数
{
if//判断是否点击过操作符,初始值为false如果没有点击操作符
{
if//判断是否点击过小数点,初始值为false如果已经点击过小数点
{
//直接把点击的数字加在框中现有数据的后面小数点后点击的数字直接追加
}
else//未曾点击过小数点则进行如下操作
{
if"0.")
{
"."; //如果输入框中此时为“0.”,则在输入数字的后面加上小数点,如此时输入,则显示“.”
}
Else
{
"."; //框中数据后面加上小数点
}
}
}
else
{
"."; //点击过操作符之后,输入的数字后面仍然加个小数点(为了显示的一致性,即任何时候框中的数据都是*.)
}
// DecimalFlag = false;
false;
}
privatevoidobjectEventArgs//正负切换(+/-)
{
if"0.") //此时框中的数值不为“0.”
{
if"NUMS") //上次输入的数为正数
{
"NEG"; //把LastInput置为“NEG”,表明最后一次输入的数是负数
"-"//给文本框中的数值前添上“-”号
}
elseif"NEG") //如果上次输入为负数
{
"NUMS"; //把LastInput置为“NUMS”,表明最后一次输入的数是正数
//把框中的数据最前面的符号去掉(重新变成正数)
}
else//正常情况下默认此时文本框中的数值是正数,点击+/-后,变成负数
{
"NEG";
"-" + ReadOut.Text;
}
}
else
{
"NUMS"; //为“0.”时的情况
}
}
privatevoidobjectEventArgs//小数点(.)
{
iftrue)
{
"0.";
}
true;
}
publicvoidString//规范化显示
{
if".") == -1)
{
".";
}
else
{
ReadOut.Text=s;
}
}
privatevoidobjectEventArgs//点击对应的数字键时调用方法
{
calculate(0);
}
privatevoidobjectEventArgs e)
{
calculate(1);
}
privatevoidobjectEventArgs e)
{
calculate(2);
}
privatevoidobjectEventArgs e)
{
calculate(3);
}
privatevoidobjectEventArgs e)
{
calculate(4);
}
privatevoidobjectEventArgs e)
{
calculate(5);
}
privatevoidobjectEventArgs e)
{
calculate(6);
}
privatevoidobjectEventArgs e)
{
calculate(7);
}
privatevoidobjectEventArgs e)
{
calculate(8);
}
privatevoidobjectEventArgs e)
{
calculate(9);
}
publicvoidint//接收操作符
{
if(!OperaterFlag) //判断以前是否单击过操作符,避免连击操作符错误
{
NumOps = NumOps + 1;
}
switch (NumOps)
{
case 0:
true;
break;
case 1:
op1 = ReadOut.Text;
true;
break;
case 2:
op2 = ReadOut.Text;
switch (OpFlag)
{
case 1:
Double.Parse(op1) + Double.Parse(op2)).ToString(); //加
break;
case 3:
Double.Parse(op1) - Double.Parse(op2)).ToString(); //减
break;
case 2:
Double.Parse(op1) * Double.Parse(op2)).ToString();//乘
break;
case 0:
ifDouble.Parse(op2) == 0) //除
{
MessageBox.Show("除数不能为", "计算器");
}
else
{
try
{
Double.Parse(op1) / Double.Parse(op2)).ToString();
}
catchException e)
{
Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
}
}
break;
case 4:
//等
break;
}
TempReadout = op1;
this.StandardizationShow(TempReadout);
NumOps = 1;
break;
}
if(NumOps!=0)
{
OpFlag = MyOperator;
}
true;
false;
// LastInput = "NUMS";
}
privatevoidobjectEventArgs e)
{
OperatorCal(1);
}
privatevoidobjectEventArgs e)
{
OperatorCal(3);
}
privatevoidobjectEventArgs e)
{
OperatorCal(2);
}
privatevoidobjectEventArgs e)
{
OperatorCal(0);
}
privatevoidobjectEventArgs e)
{
OperatorCal(4);
}
privatevoidobjectEventArgs//%
{
Double.Parse(ReadOut.Text) / 100).ToString();
NumOps = NumOps + 1;
true;
}
privatevoidobjectEventArgs//C
{
"0.";
"";
"";
this, newEventArgs());
}
privatevoidobjectEventArgs//CE
{
"0.";
false;
"CE";
}
privatevoidobjectEventArgs//求倒数(/x)
{
Double.Parse(ReadOut.Text)).ToString();
}
privatevoidobjectEventArgs//复制
{
if(ReadOut.Text.Equals(""))
{
return;
}
Clipboard.SetDataObject(ReadOut.Text,true);
}
privatevoidobjectEventArgs//粘贴
{
ifClipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
this.paste.Enabled = true;
"";
this.ReadOut.Paste();
}
else
{
this.paste.Enabled = false;
}
}
privatevoidobjectEventArgs//删除(BackSpace)
{
if"0.")
{
try
{
".";
}
catchException ex)
{
Console.WriteLine("Generic Exception Handler: {0}", ex.ToString());
}
if(ReadOut.Text==".")
{
"0.";
}
}
}
privatevoidobjectEventArgs e)
{
this.ReadOut.Text;
this.ReadOut.Text = System.Convert.ToString(Math.Sqrt(System.Convert.ToDouble(TempReadout)));
}
}
}
龙腾一族至尊龙骑