用C#写计算器程序

程序

   一、设计思路
  
    用C#写的比较基础的Windows Form 程序,该计算器实现了基础的数学运算,如加,减,乘,除等任务.主要是通过该程序学习VS.net的
  
    编程环境,以及windows Form程序.主要针对初学者
  
    我们分两部份来实现程序,
  
    第一部份.程序界面
  
    1,以下控件表
  
  控件类型 Name Text
  form calcForm 计算器
  button button1 0
   .....
   button10 9
   bDot .(小数点) 小数点按钮
   bPlus +(加号) 加号按钮
   bSub -(减号) 减号按钮
   bMul *(乘号) 乘号按钮
   bDiv /(除号) 除号按钮
   bEqu =(等号) 等号按钮
   bClr AC 清除按钮
   textBox txtCalc (空值) 用来显示输入及输出结果
  
    第二部份,程序结构
  
    1,定义以下变量
  
  Double dblAcc; //运算数A
  Double dblSec; //运算数B
  bool blnClear,blnFrstOpen;//布尔类型用来判断清除与否,以及第一个显示字符
  String strOper;//通过获取strOper的值来决定运算+,-,*,/,=
  
    2,用以下方法来实现按钮的动作
  
    例: bDot.click+=net EventHandler(btn_clk);//EventHandler类是事件代表类,用来注册事件的处理方法.
  
    //第一个参数是object类型,指向发出事件的对象;
  
    //第二个参数是EventArgs类型,包含了关于这个事件的数据
  
    3,用以下方法来判断运算以及运算操作
  
  private void calc(){
  switch(strOper){
   case "+":
    dblAcc+=dblSec;//加法运算
    break;
   case "-":
    dblAcc-=dblSec;//减法运算
    break;
   case "*":
    dblAcc*=dblSec;//乘法运算
    break;
   case "/":
    dblAcc/=dblSec;//除法运算
    break;
  }
  strOper="=";//等号运算
  blnFrstOpen=true;
  
  txtCalc.Text=Convert.ToString(dblAcc);//将运算结果转换成字符型,并输出结果
  
  dblSec=dblAcc;
  }
  
    4,小数点运算
  
  //先判断是否已经按了小数点按钮,如果按了,最0.x来代替运算变量,并且将转换成Double数型数值
  private void btn_clk(object obj,EventArgs ea){
   if(blnClear)
    txtCalc.Text="";
    Button b3=(Button)obj;
    txtCalc.Text+=b3.Text;
   if(txtCalc.Text==".")
    txtCalc.Text="0.";
    dblSec=Convert.ToDouble(txtCalc.Text);
    blnClear=false;
  }
  
    程序中所涉及到的一些问题,都给解决了,现在我们动手吧!操上我的利器,去完成任务吧!

  源程序
  
  //基本的计算器
  //蚕蛹 2001.11.26
  //Using C#
  //E-mail:sillnet@hotmail.com
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  
  namespace wincalc
  {
  ///
  /// Summary description for calcForm.
  ///
  public class calcForm : System.Windows.Forms.Form
  {
  private System.Windows.Forms.Button button1;
  private System.Windows.Forms.Button button2;
  private System.Windows.Forms.Button button3;
  private System.Windows.Forms.Button button4;
  private System.Windows.Forms.Button button5;
  private System.Windows.Forms.Button button6;
  private System.Windows.Forms.Button button7;
  private System.Windows.Forms.Button button8;
  private System.Windows.Forms.Button button9;
  private System.Windows.Forms.Button button10;
  private System.Windows.Forms.Button bClr;
  private System.Windows.Forms.Button bDot;
  private System.Windows.Forms.Button bPlus;
  private System.Windows.Forms.Button bSub;
  private System.Windows.Forms.Button bMul;
  private System.Windows.Forms.Button bDiv;
  private System.Windows.Forms.Button bEqu;
  private System.Windows.Forms.TextBox txtCalc;
  
  //以下是要添加的代码
  //定义变量
  Double dblAcc;
  Double dblSec;
  bool blnClear,blnFrstOpen;
  String strOper;
  //以上是添加的代码
  ///
  /// Required designer variable.
  ///
  private System.ComponentModel.Container components = null;
  
  public calcForm()
  {
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent();
  
  //
  // TODO: Add any constructor code after InitializeComponent call
  //
  
  //以下是要添加的代码
  //初始化设量
  dblAcc=0;
  dblSec=0;
  blnFrstOpen=true;
  blnClear=true;
  strOper=new string('=',1);
  //以上是添加的代码
  }
  
  ///
  /// Clean up any resources being used.
  ///
  protected override void Dispose( bool disposing )
  {
  if( disposing )
  {
  if(components != null)
  {
  components.Dispose();
  }
  }
  base.Dispose( disposing );
  }
  
  #region Windows Form Designer generated code
  ///
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  ///
  private void InitializeComponent()
  {
  this.bPlus = new System.Windows.Forms.Button();
  this.bMul = new System.Windows.Forms.Button();
  this.bDot = new System.Windows.Forms.Button();
  this.txtCalc = new System.Windows.Forms.TextBox();
  this.bClr = new System.Windows.Forms.Button();
  this.bDiv = new System.Windows.Forms.Button();
  this.bSub = new System.Windows.Forms.Button();
  this.button8 = new System.Windows.Forms.Button();
  this.button9 = new System.Windows.Forms.Button();
  this.bEqu = new System.Windows.Forms.Button();
  this.button10 = new System.Windows.Forms.Button();
  this.button4 = new System.Windows.Forms.Button();
  this.button5 = new System.Windows.Forms.Button();
  this.button6 = new System.Windows.Forms.Button();
  this.button7 = new System.Windows.Forms.Button();
  this.button1 = new System.Windows.Forms.Button();
  this.button2 = new System.Windows.Forms.Button();
  this.button3 = new System.Windows.Forms.Button();
  this.SuspendLayout();
  //
  // bPlus
  //
  this.bPlus.BackColor = System.Drawing.SystemColors.Control;
  this.bPlus.ForeColor = System.Drawing.SystemColors.ControlText;
  this.bPlus.Location = new System.Drawing.Point(208, 112);
  this.bPlus.Name = "bPlus";
  this.bPlus.Size = new System.Drawing.Size(32, 80);
  this.bPlus.TabIndex = 1;
  this.bPlus.Text = "+";
  //以下是要添加的代码
  bPlus.Click += new System.EventHandler(this.btn_Oper);
  //以上是添加的代码
  //
  // bMul
  //
  this.bMul.Location = new System.Drawing.Point(160, 112);
  this.bMul.Name = "bMul";
  this.bMul.Size = new System.Drawing.Size(32, 32);
  this.bMul.TabIndex = 1;
  this.bMul.Text = "*";
  //以下是要添加的代码
  bMul.Click += new System.EventHandler(this.btn_Oper);
  //以上是添加的代码
  //
  // bDot
  //
  this.bDot.ForeColor = System.Drawing.Color.Black;
  this.bDot.Location = new System.Drawing.Point(112, 208);
  this.bDot.Name = "bDot";
  this.bDot.Size = new System.Drawing.Size(32, 32);
  this.bDot.TabIndex = 0;
  this.bDot.Text = ".";
  //以下是要添加的代码
  bDot.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // txtCalc
  //
  this.txtCalc.Location = new System.Drawing.Point(16, 24);
  this.txtCalc.Name = "txtCalc";
  this.txtCalc.ReadOnly = true;
  this.txtCalc.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
  this.txtCalc.Size = new System.Drawing.Size(224, 21);
  this.txtCalc.TabIndex = 2;
  this.txtCalc.Text = "";
  //
  // bClr
  //
  this.bClr.BackColor = System.Drawing.SystemColors.Control;
  this.bClr.ForeColor = System.Drawing.SystemColors.ControlText;
  this.bClr.Location = new System.Drawing.Point(208, 64);
  this.bClr.Name = "bClr";
  this.bClr.Size = new System.Drawing.Size(32, 32);
  this.bClr.TabIndex = 0;
  this.bClr.Text = "AC";
  //以下是要添加的代码
  bClr.Click += new System.EventHandler(this.btn_clr);
  //以上是添加的代码
  //
  // bDiv
  //
  this.bDiv.Location = new System.Drawing.Point(160, 160);
  this.bDiv.Name = "bDiv";
  this.bDiv.Size = new System.Drawing.Size(32, 32);
  this.bDiv.TabIndex = 1;
  this.bDiv.Text = "/";
  //以下是要添加的代码
  bDiv.Click += new System.EventHandler(this.btn_Oper);
  //以上是添加的代码
  //
  // bSub
  //
  this.bSub.Location = new System.Drawing.Point(160, 64);
  this.bSub.Name = "bSub";
  this.bSub.Size = new System.Drawing.Size(32, 32);
  this.bSub.TabIndex = 1;
  this.bSub.Text = "-";
  //以下是要添加的代码
  bSub.Click += new System.EventHandler(this.btn_Oper);
  //以上是添加的代码
  //
  // button8
  //
  this.button8.Location = new System.Drawing.Point(16, 64);
  this.button8.Name = "button8";
  this.button8.Size = new System.Drawing.Size(32, 32);
  this.button8.TabIndex = 0;
  this.button8.Text = "7";
  //以下是要添加的代码
  button8.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button9
  //
  this.button9.Location = new System.Drawing.Point(64, 64);
  this.button9.Name = "button9";
  this.button9.Size = new System.Drawing.Size(32, 32);
  this.button9.TabIndex = 0;
  this.button9.Text = "8";
  //以下是要添加的代码
  button9.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // bEqu
  //
  this.bEqu.BackColor = System.Drawing.SystemColors.Control;
  this.bEqu.ForeColor = System.Drawing.SystemColors.ControlText;
  this.bEqu.Location = new System.Drawing.Point(160, 208);
  this.bEqu.Name = "bEqu";
  this.bEqu.Size = new System.Drawing.Size(80, 32);
  this.bEqu.TabIndex = 1;
  this.bEqu.Text = "=";
  //以下是要添加的代码
  bEqu.Click += new System.EventHandler(this.btn_equ);
  //以上是添加的代码
  //
  // button10
  //
  this.button10.Location = new System.Drawing.Point(112, 64);
  this.button10.Name = "button10";
  this.button10.Size = new System.Drawing.Size(32, 32);
  this.button10.TabIndex = 0;
  this.button10.Text = "9";
  //以下是要添加的代码
  button10.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button4
  //
  this.button4.Location = new System.Drawing.Point(112, 160);
  this.button4.Name = "button4";
  this.button4.Size = new System.Drawing.Size(32, 32);
  this.button4.TabIndex = 0;
  this.button4.Text = "3";
  //以下是要添加的代码
  button4.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button5
  //
  this.button5.Location = new System.Drawing.Point(16, 112);
  this.button5.Name = "button5";
  this.button5.Size = new System.Drawing.Size(32, 32);
  this.button5.TabIndex = 0;
  this.button5.Text = "4";
  //以下是要添加的代码
  button5.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button6
  //
  this.button6.Location = new System.Drawing.Point(64, 112);
  this.button6.Name = "button6";
  this.button6.Size = new System.Drawing.Size(32, 32);
  this.button6.TabIndex = 0;
  this.button6.Text = "5";
  //以下是要添加的代码
  button6.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button7
  //
  this.button7.Location = new System.Drawing.Point(112, 112);
  this.button7.Name = "button7";
  this.button7.Size = new System.Drawing.Size(32, 32);
  this.button7.TabIndex = 0;
  this.button7.Text = "6";
  //以下是要添加的代码
  button7.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button1
  //
  this.button1.BackColor = System.Drawing.SystemColors.Control;
  this.button1.ForeColor = System.Drawing.Color.Black;
  this.button1.Location = new System.Drawing.Point(16, 208);
  this.button1.Name = "button1";
  this.button1.Size = new System.Drawing.Size(80, 32);
  this.button1.TabIndex = 0;
  this.button1.Text = "0";
  //以下是要添加的代码
  button1.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button2
  //
  this.button2.Location = new System.Drawing.Point(16, 160);
  this.button2.Name = "button2";
  this.button2.Size = new System.Drawing.Size(32, 32);
  this.button2.TabIndex = 0;
  this.button2.Text = "1";
  //以下是要添加的代码
  button2.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // button3
  //
  this.button3.Location = new System.Drawing.Point(64, 160);
  this.button3.Name = "button3";
  this.button3.Size = new System.Drawing.Size(32, 32);
  this.button3.TabIndex = 0;
  this.button3.Text = "2";
  //以下是要添加的代码
  button3.Click += new System.EventHandler(this.btn_clk);
  //以上是添加的代码
  //
  // calcForm
  //
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(256, 261);
  this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.txtCalc,
  this.bEqu,
  this.bDiv,
  this.bMul,
  this.bSub,
  this.bPlus,
  this.bDot,
  this.bClr,
  this.button10,
  this.button9,
  this.button8,
  this.button7,
  this.button6,
  this.button5,
  this.button4,
  this.button3,
  this.button2,
  this.button1});
  this.Name = "calcForm";
  this.Text = "计算器";
  this.ResumeLayout(false);
  
  }
  #endregion
  
  //以下是要添加的代码
  //小数点的操作
  private void btn_clk(object obj,EventArgs ea){
  if(blnClear)
  txtCalc.Text="";
  Button b3=(Button)obj;
  txtCalc.Text+=b3.Text;
  if(txtCalc.Text==".")
  txtCalc.Text="0.";
  dblSec=Convert.ToDouble(txtCalc.Text);
  blnClear=false;
  }
  
  //程序开始点
  private static void Main(){
  Application.Run(new calcForm());
  }
  
  private void btn_Oper(object obj,EventArgs ea){
  Button tmp=(Button)obj;
  strOper=tmp.Text;
  if(blnFrstOpen)
  dblAcc=dblSec;
  else
  calc();
  blnFrstOpen=false;
  blnClear=true;
  }
  
  //等号运算
  private void btn_equ(object obj,EventArgs ea){
  calc();
  }
  
  //所有运算操作
  private void calc(){
  switch(strOper){
  case "+":
  dblAcc+=dblSec; //加号运算
  break;
  case "-":
  dblAcc-=dblSec; //减号运算
  break;
  case "*":
  dblAcc*=dblSec; //乘号运算
  break;
  case "/":
  dblAcc/=dblSec; //除号运算
  break;
  }
  strOper="="; //等号运算
  blnFrstOpen=true;
  txtCalc.Text=Convert.ToString(dblAcc);//将运算结果转换成字符类型,并输出
  dblSec=dblAcc;//将运算数A的值放入运算数B中,以便后面运算
  }
  
  //清除按钮
  private void btn_clr(object obj,EventArgs ea){
  clear();
  }
  
  //清除按钮的操作
  private void clear(){
  dblAcc=0;
  dblSec=0;
  blnFrstOpen=true;
  txtCalc.Text="";
  txtCalc.Focus();//设置焦点为txtCalc
  }
  //以上是添加的代码
  }
  
  }
  
    以上只是一个简单的用C#开发的Windows Form程序,在vs.nt bate2+windows 2000专业版编译通过.向正在学习VS.net网友们抛砖引玉,其功能上还有很多不完善的地方,欢迎网友们将其完善。

时间: 2024-10-25 06:26:36

用C#写计算器程序的相关文章

c语言-用C编写计算器程序如何处理减号与负号

问题描述 用C编写计算器程序如何处理减号与负号 用C语言编写一个计算器程序,怎么识别减号和负号,用VC++6.0,只用C语言. 解决方案 很简单,程序初始化的时候,将第一个数字设置为0 如果用户输入减号,那么当作0-xxx 这样程序设计的时候,减号和负号就是一回事了. 解决方案二: 数字和符号可以在一起,减号就是加一个负数吗 解决方案三: 初始为0 只有一个减符号的就是减 有连续两个符号的,第一个是运算符,第二个是减(如果第二个不是减,为非法输入) 解决方案四: 写错了 有连续两个符号的,第一个

c-计算器程序:如何在Qt5中使用C编写科学计算器程序?

问题描述 计算器程序:如何在Qt5中使用C编写科学计算器程序? 如何在Qt5中使用C编写科学计算器程序?最好可以直接是不需要GUI,有程序生成界面的C++程序 解决方案 使用C编写科学计算器程序,你有源代码吗?如果有,移植一下应该不难.如果没有,就算了吧,自己写一个类似功能的:或者,网上下载计算器功能的源代码,做移植修改. 如果原来的程序,不提供非 GUI 调用的接口,那么就只能使用它的 GUI. 解决方案二: 在这个csdn论坛里面有好多关于计算器的源代码,你自己看一下

c++ 编程问题-编写科学计算器程序出现的问题

问题描述 编写科学计算器程序出现的问题 1.求x的阶乘,数值太大,怎样存储? 2.反三角函数怎样写? 解决方案 1.都有函数的 2.可以用别的代替 解决方案二: (1)数值太大,可以用字节数组/字符串数组存储,但是你需要大数运算.当然,计算器未必需要这样的功能,超市买的20一个的科学计算器,只能算到69的阶乘. (2)Math.Atan Math.Acos Math.Asin等等 .net 4.0封装了大数运算 解决方案三: http://www.cnblogs.com/LoveJenny/ar

小程序 求解-这里有一题ACM的小题目,求众神解答。帮写个程序。小弟冰天雪地裸奔哭嚎以示感谢!

问题描述 这里有一题ACM的小题目,求众神解答.帮写个程序.小弟冰天雪地裸奔哭嚎以示感谢! 邮局选址: 在一个按照东西和南北方向划分成规整街区的城市里,n 个居民点散乱的分布在不同的街区中.用X坐标表示东西向,用Y坐标表示南北向,各居民点的位置可以有坐标(XY)表示.街区中任意2点(X1,Y1)和(X2,Y2)质检的距离可以用数值丨X1-X2丨+丨Y1-Y2丨度量.居民们希望在城市中选择建立邮局的最佳位置,使n 个居民点到邮局的距离总和最小. 编程任务: 给定n 个居民点的位置,计算n个居民点到

工程-vc++6.0写的程序用vs2010打开需要改变些什么

问题描述 vc++6.0写的程序用vs2010打开需要改变些什么 要整理一个程序 ,不是自己写的,原来是vc++6.0写的,现在用vs2010打开报一些很奇怪的错,都指向头文件,complex 还有string 搞了很长时间了,哪位大神给解答一下,小弟感激不尽啊,谢谢 解决方案 这可能是头文件的错误.因为不同的编译器可能将库文件放在不同的头文件中,所以要想把错误改正,需要了解需要的头文件放在那个库中.其实用遵循统一标准的编译器就可以避免这些问题,可以用linux gcc 编译器! 解决方案二:

java方式来写js程序(demo)

js|程序  javascript应用是非常广泛的,而且功能特别强大,但是javascript程序就是没有java代码好看,这点是好无疑问的,不过因为js应用太广了,在web应用中几乎离不开它,我初学js,总想像写java程序那样写js. 一个是过滤相同的元素:<script src="core.js"></script><script src="collection.js"></script><script&g

c语言-C语言自己写的程序有个小错,求改下

问题描述 C语言自己写的程序有个小错,求改下 #includeint main(){ int nlkyt1t2t3;char x1x2x3;t1=0;t2=0;t3=0; printf(""请输入现在队伍的列数:n""); scanf(""%d""&n); printf(""拉面的制作时间:n""); scanf(""%d""&l)

tinyos-在tinyOS下写nec程序,在一组无线节点中进行数据包转发及打印

问题描述 在tinyOS下写nec程序,在一组无线节点中进行数据包转发及打印 10C 选取一个节点作为数据源节点,向网络中的其它节点进行数据包的转发,并将数据包中的内容打印出来. 解决方案 tiny OS第一次听说.有空去百度一下看看.先帮楼主顶下先!

如何mvc规范写jsp-view,action,service,dao,domain,如何按照mvc规范写jsp程序

问题描述 view,action,service,dao,domain,如何按照mvc规范写jsp程序 我现在开始学习mvc分层架构,但是是不知道如何下手,知道程序应该差不多是按照控制层action->显示层view->业务层service->数据处理层dao,我先写了domain层,但是又不知道要从哪里接着写了,总是写着写着逻辑就乱了,请问大概要按照什么顺序写逻辑清晰一点呢?各个层之间怎么联系起来?请大大侠们帮忙. 解决方案 domain层是??? 说说我自己的一点看法,可能有点不准确