zoukankan      html  css  js  c++  java
  • 利用C#编写简易计算器

    本例创建一个简易计算器,能进行加减乘除的计算,程序界面如下图所示。

    20120409114358

    程序代码如下。

    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    namespace eg43_addCtrlAtRuntimeApp
    {
    
    	public partial class Calculator1 : Form
    	{
    		private int opMain=0;
    		private double mainNum1=0;
    		private double mainNum2=0;
    		private bool isSecond=false;
    		private bool isDone=false;
    		private bool isDecimal=false;
    		public Calculator1()
    		{
    			InitializeComponent();
    		}
    		
    		void Calculator1KeyDown(object sender, KeyEventArgs e)
    		{
    			filterKeys(e.KeyValue);
    		}
    		
    		void Btn1Click(object sender, EventArgs e)
    		{
    			setText("1");
    		}
    		
    		
    		void Btn2Click(object sender, EventArgs e)
    		{
    			setText("2");
    		}
    		
    		void Btn3Click(object sender, EventArgs e)
    		{
    			setText("3");
    		}
    		
    		void Btn4Click(object sender, EventArgs e)
    		{
    			setText("4");
    		}
    		
    		void Btn5Click(object sender, EventArgs e)
    		{
    			setText("5");
    		}
    		
    		void Btn6Click(object sender, EventArgs e)
    		{
    			setText("6");
    		}
    		
    		void Btn7Click(object sender, EventArgs e)
    		{
    			setText("7");
    		}
    		
    		void Btn8Click(object sender, EventArgs e)
    		{
    			setText("8");
    		}
    		
    		void Btn9Click(object sender, EventArgs e)
    		{
    			setText("9");
    		}
    		
    		void Btn0Click(object sender, EventArgs e)
    		{
    			setText("0");
    		}
    		
    		void BtnAddClick(object sender, EventArgs e)
    		{
    			setOperator(1);
    		}
    		
    		void BtnSubtractClick(object sender, EventArgs e)
    		{
    			setOperator(2);
    		}
    		
    		void BtnMultiplyClick(object sender, EventArgs e)
    		{
    			setOperator(3);
    		}
    		
    		void BtnDivideClick(object sender, EventArgs e)
    		{
    			setOperator(4);
    		}
    		
    		void BtnClearClick(object sender, EventArgs e)
    		{
    			isSecond=false;
    			setText("clear");
    		}
    		
    		void BtnNegativeClick(object sender, EventArgs e)
    		{
    			changeSign();
    		}
    		
    		void BtnDecimalClick(object sender, EventArgs e)
    		{
    			setDecimal();
    		}
    		
    		void BtnEqualsClick(object sender, EventArgs e)
    		{
    			doEquals();
    		}
    		public void setText(string textset)
    		{
    			if(textset.Equals("clear"))
    			{
    				txtResult.Text="";
    				isDone=false;
    				isSecond=false;
    				isDecimal=false;
    			}
    			else
    			{
    				if(isSecond)
    				{
    					txtResult.Text=textset;
    					isSecond=false;
    					isDecimal=false;
    				}
    				else
    				{
    					if(isDone)
    					{
    						txtResult.Text=textset;
    						isDone=false;
    					}
    					else
    					{
    						txtResult.Text+=textset;
    					}
    				}
    			}
    			btnEquals.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;
    			}
    			setText(answer.ToString());
    		}
    		private void doEquals()
    		{
    			mainNum2=double.Parse(txtResult.Text);
    			setText("clear");
    			Calc(mainNum1,mainNum2,opMain);
    			isDone=true;
    		}
    		private void changeSign()
    		{
    			double storNum;
    			if(txtResult.Text.Length>0)
    			{
    				storNum=double.Parse(txtResult.Text);
    				storNum*=-1;
    				txtResult.Text=storNum.ToString();
    			}
    			btnEquals.Select();
    		}
    		private void setOperator(int operation)
    		{
    			if(txtResult.Text.Length>0)
    			{
    				opMain=operation;
    				mainNum1=double.Parse(txtResult.Text);
    				isSecond=true;
    				isDone=false;
    				btnEquals.Select();
    			}
    		}
    		private void setDecimal()
    		{
    			if(!isDecimal)
    			{
    				setText(".");
    				isDecimal=true;
    			}
    			btnEquals.Select();
    		}
    		public void filterKeys(int keyCode)
    		{
    			switch(keyCode)
    			{
    				case 96:
    					setText("0");
    					break;
    				case 97:
    					setText("1");
    					break;
    				case 98:
    					setText("2");
    					break;
    				case 99:
    					setText("3");
    					break;
    				case 100:
    					setText("4");
    					break;
    				case 101:
    					setText("5");
    					break;
    				case 102:
    					setText("6");
    					break;
    				case 103:
    					setText("7");
    					break;
    				case 104:
    					setText("8");
    					break;
    				case 105:
    					setText("9");
    					break;
    				case 67:
    					setText("clear");
    					break;
    				case 107:
    					setOperator(1);
    					break;
    				case 109:
    					setOperator(2);
    					break;
    				case 106:
    					setOperator(3);
    					break;
    				case 111:
    					setOperator(4);
    					break;
    				case 110:
    					setDecimal();
    					break;
    			}
    		}
    		
    	}
    }
    作者:codee
    文章千古事,得失寸心知。


  • 相关阅读:
    中等疾病活动度的RA患者持续传统治疗的结果:来自ERAN的数据
    中信国健临床通讯2011年1月第1期目录
    影像学是否应该纳入RA缓解标准?传统评分与修订后复合评分和影像学评估的比较
    RA患者妊娠期使用依那西普维持缓解
    TNFα拮抗剂减少脊髓损伤大鼠神经元和少突胶质细胞的凋亡
    新近起病的活动性RA患者中达标治疗与常规治疗的疗效比较:来自GUEPARD试验和ESPOIR队列的数据
    TNF抑制剂相关的肿瘤风险:阿达木单抗、依那西普和英夫利昔单抗随机对照试验的荟萃分析
    依那西普治疗日本RA患者的安全性与疗效的上市后监察
    依那西普与柳氮磺吡啶治疗强直性脊柱炎的临床疗效与安全性比较:一项随机双盲研究(ASCEND试验)
    POJ3450 Corporate Identity KMP+枚举
  • 原文地址:https://www.cnblogs.com/bimgoo/p/2437471.html
Copyright © 2011-2022 走看看