using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Study
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int opMain = 0; // 运算类型,其中1(加法) 2(减法) 3(乘法) 4(除法)
private double mainNum1 = 0; // 存储第一个数
private double mainNum2 = 0; // 存储第二个数
private bool isSecond = false; // 用来判断输入的是第一个还是第二个数
private bool isDone = false; // 用来判断是否按了等于按钮
private bool isDecimal = false; // 用来判断是否有小数
private bool isNokeydown = false;// 用来判断是否没输入第二个数而按了"="号键
private bool isKeyupclear = true;//用来判断是否按了clear键,程序开始前默认按了;
public void setText(string textest) //设置文本框的值
{
if (textest.Equals("clear"))
{
textBox1.Text = "0.";
isSecond = false;
isDone = false;
isDecimal = false;
isKeyupclear = true;
}
else
{
if (isSecond)
{
textBox1.Text = textest;
isSecond = false;
isDecimal = false;
}
else
{
if (isDone)
{
textBox1.Text = textest;
isDone = false;
}
else
{
if (isKeyupclear) //对是否按下clear键的判断
{
textBox1.Text = textest;
isKeyupclear = false;
}
else
textBox1.Text += textest;
}
}
}
btnEqual.Select(); //设置"="号的焦点
}
public void Calc(double num1, double num2, int op)
{
double answer = 0;
switch (op) //判断所进行的运算
{
case 1:
answer = num1 + num2;
break;
case 2:
answer = num1 - num2;
break;
case 3:
answer = num1 * num2;
break;
case 4:
answer = num1 / num2;
break;
case 5:
answer = num1 % num2;
break;
}
setText(answer.ToString()); //显示结果
}
//执行运算
private void doEquals()
{
if (isNokeydown) //判断已经输入第二个数后按了"="号键
{
mainNum2 = double.Parse(textBox1.Text);
setText("clear");
Calc(mainNum1, mainNum2, opMain);
isDone = true;
isNokeydown = false;
}
}
//切换正负
private void changeSign()
{
double storNum;
if (textBox1.Text.Length > 0)
{
storNum = double.Parse(textBox1.Text);
storNum *= -1;
textBox1.Text = storNum.ToString();
}
btnEqual.Select(); //设置"="号的焦点
}
//设置运算类型
private void setOperator(int operation)
{
if (textBox1.Text.Length > 0)
{
opMain = operation;
mainNum1 = double.Parse(textBox1.Text);
isSecond = true;
isDone = false;
isNokeydown = true;
btnEqual.Select(); //设置"="号的焦点
}
}
//设置小数点
private void setDecimal()
{
if (!isDecimal)
{
setText(".");
isDecimal = true;
}
btnEqual.Select(); //设置"="号的焦点
}
//开平方
private void doSquart()
{
double storNum;
storNum = double.Parse(textBox1.Text);
if (storNum > 0)
{
storNum = Math.Sqrt(storNum);
textBox1.Text = storNum.ToString();
}
else
textBox1.Text = "负数不能开平方。";
btnEqual.Select(); //设置"="号的焦点
}
//求倒数
private void doreciprocal()
{
double storNum;
storNum = double.Parse(textBox1.Text);
if (storNum != 0)
{
storNum = 1 / storNum;
textBox1.Text = storNum.ToString();
}
else
textBox1.Text = "除数不能为零。";
btnEqual.Select();
}
private void btn7_Click(object sender, EventArgs e)
{
setText("7");
}
private void btn8_Click(object sender, EventArgs e)
{
setText("8");
}
private void btn9_Click(object sender, EventArgs e)
{
setText("9");
}
private void btn4_Click(object sender, EventArgs e)
{
setText("4");
}
private void btn5_Click(object sender, EventArgs e)
{
setText("5");
}
private void btn6_Click(object sender, EventArgs e)
{
setText("6");
}
private void btn1_Click(object sender, EventArgs e)
{
setText("1");
}
private void btn2_Click(object sender, EventArgs e)
{
setText("2");
}
private void btn3_Click(object sender, EventArgs e)
{
setText("3");
}
private void btn0_Click(object sender, EventArgs e)
{
setText("0");
}
private void btnPoint_Click(object sender, EventArgs e)
{
setDecimal();
}
private void btnSubtract_Click(object sender, EventArgs e)//正负号交换
{
changeSign();
}
private void btnEqual_Click(object sender, EventArgs e)
{
doEquals();
}
private void btnAdd_Click(object sender, EventArgs e)
{
setOperator(1);
}
private void btnSub_Click(object sender, EventArgs e)
{
setOperator(2);
}
private void btnMulti_Click(object sender, EventArgs e)
{
setOperator(3);
}
private void btnDivide_Click(object sender, EventArgs e)
{
setOperator(4);
}
private void btnC_Click(object sender, EventArgs e)//清除键
{
isSecond = false;
setText("clear");
}
private void btnSqrt_Click(object sender, EventArgs e)//开平方
{
doSquart();
}
private void btnPercentage_Click(object sender, EventArgs e)//求模
{
setOperator(5);
}
private void btnReciprocal_Click(object sender, EventArgs e)//求倒
{
doreciprocal();
}
private void btnCE_Click(object sender, EventArgs e)//CE
{
isSecond = false;
setText("clear");
}
private void btnBackspace_Click(object sender, EventArgs e)//退格键
{
string old = textBox1.Text;
if (old.Length >1&&old!="0.")
textBox1.Text = old.Substring(0, old.Length - 1);
else
textBox1.Text = "0.";
}
}
}
本文档为【用c_编写计算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。