首页 > 开发 > 综合 > 正文

用C#写计算器程序

2024-07-21 02:29:51
字体:
来源:转载
供稿:网友

   一、设计思路
  
    用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:[email protected]
  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网友们抛砖引玉,其功能上还有很多不完善的地方,欢迎网友们将其完善。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表