标题:[转帖]用C#写计算器程序,适合初学者
取消只看楼主
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
 问题点数:0 回复次数:5 
[转帖]用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+=new 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; }
  程序中所涉及到的一些问题,都给解决了,现在我们动手吧!操上我的利器,去完成任务吧!

[此贴子已经被作者于2005-4-4 22:04:34编辑过]

搜索更多相关主题的帖子: 计算器 转帖 
2005-03-30 14:26
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
得分:0 
二、开发过程   下面跟我们一步步学习吧.   先启动vs.net,建一个空的C#项目,如下(pic1.jpg)
  名称用wincalc,位置就自己设定好了。确定后,从vs.net开发环境中右边的工具箱中加入控件表的控件,,注意修改txtCalc的如属性ReadOnly=True,RightTOLeft=Yes(从右至左输入),最后画面如何(pic2) 添加代码如源程序所示:
  最后大功告成,按Ctrl+F5吧,看看结果.如图(pic3.jpg)

2005-03-30 14:27
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
得分:0 
三、源程序
//基本的计算器 //蚕蛹 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(); // // TOD 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网友们抛砖引玉,其功能上还有很多不完善的地方,欢迎网友们将其完善。

2005-03-30 14:28
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
得分:0 
不是我写的,转贴的
嘿嘿!

2005-03-30 16:56
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
得分:0 
标题搞错了 真是不好意思

2005-03-30 16:58
幻风幻云
Rank: 1
等 级:新手上路
帖 子:762
专家分:0
注 册:2005-1-14
得分:0 
可以编译

[此贴子已经被作者于2005-3-31 16:28:21编辑过]



2005-03-31 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-14383-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.421022 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved