职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 2817|回复: 4

C#数据库编程:用C#写计算器程序

[复制链接]
梦段桥 发表于 2007-9-9 15:18 | 显示全部楼层 |阅读模式
一、设计思路

   用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;
}
   程序中所涉及到的一些问题,都给解决了,现在我们动手吧!操上我的利器,去完成任务吧!
   二、开发过程

   下面跟我们一步步学习吧.

   先启动vs.net,建一个空的C#项目,如下(pic1.jpg)


   名称用wincalc,位置就自己设定好了。确定后,从vs.net开发环境中右边的工具箱中加入控件表的控件,,注意修改txtCalc的如属性ReadOnly=True,RightTOLeft=Yes(从右至左输入),最后画面如何(pic2)
添加代码如源程序所示:


   最后大功告成,按Ctrl+F5吧,看看结果.如图(pic3.jpg)


   三、源程序

//基本的计算器
//蚕蛹 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();
th


is.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网友们抛砖引玉,其功能上还有很多不完善的地方,欢迎网友们将其完善。
匿名  发表于 2008-7-31 20:47

Hello I'm new here

I've recently joined and wanted to introduce myself :)
匿名  发表于 2008-8-6 16:03

Hiringtones

auto insurance quotes
ringtones

http://www.answerbag.com/profile/about_me?id=466216

http://eventful.com/groups/G0-001-007296931-0/info
一路顺风 发表于 2008-8-6 20:05 | 显示全部楼层
好的东西就是要跟大家分享!谢咯!
蓝色梦幻 发表于 2008-8-25 11:07 | 显示全部楼层
顶下
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 20:18 , Processed in 0.145180 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表