这是一个计算器的简单实现
1
using System;
2
using System.Drawing;
3
using System.Collections;
4
using System.ComponentModel;
5
using System.Windows.Forms;
6
using System.Data;
7![]()
8
namespace Calc
9
{
10
/// <summary>
11
/// 这是一个计算器的简单实现。
12
/// </summary>
13
public class CalcForm : System.Windows.Forms.Form
14
{
15
private System.Windows.Forms.Button btn_0;
16
private System.Windows.Forms.Button btn_1;
17
private System.Windows.Forms.Button btn_2;
18
private System.Windows.Forms.Button btn_3;
19
private System.Windows.Forms.Button btn_4;
20
private System.Windows.Forms.Button btn_5;
21
private System.Windows.Forms.Button btn_6;
22
private System.Windows.Forms.Button btn_7;
23
private System.Windows.Forms.Button btn_8;
24
private System.Windows.Forms.Button btn_9;
25
private System.Windows.Forms.Button btn_add;
26
private System.Windows.Forms.Button btn_sub;
27
private System.Windows.Forms.Button btn_mul;
28
private System.Windows.Forms.Button btn_div;
29
private System.Windows.Forms.Button btn_sqrt;
30
private System.Windows.Forms.Button btn_sign;
31
private System.Windows.Forms.Button btn_equ;
32
private System.Windows.Forms.Button btn_dot;
33
private System.Windows.Forms.Button btn_rev;
34
private System.Windows.Forms.TextBox txtShow;
35
private System.Windows.Forms.Button btn_sqr;
36
/// <summary>
37
/// 必需的设计器变量。
38
/// </summary>
39
private System.ComponentModel.Container components = null;
40![]()
41
public CalcForm()
42
{
43
//
44
// Windows 窗体设计器支持所必需的
45
//
46
InitializeComponent();
47![]()
48
//
49
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
50
//
51
}
52![]()
53
/// <summary>
54
/// 清理所有正在使用的资源。
55
/// </summary>
56
protected override void Dispose( bool disposing )
57
{
58
if( disposing )
59
{
60
if (components != null)
61
{
62
components.Dispose();
63
}
64
}
65
base.Dispose( disposing );
66
}
67![]()
68
Windows Form Designer generated code
333![]()
334
public const int NULL = 0; // 定义操作码
335
public const int ADD = 1;
336
public const int SUB = 2;
337
public const int MUL = 3;
338
public const int DIV = 4;
339
public const int SQR = 5;
340
public const int SQRT = 6;
341
public const int NODOT = 0; // 定义是否点击了小数点
342
public const int HASDOT = 1;
343
private double res = 0; // 记录结果数
344
private double tmp = 0; // 当前输入的操作数
345
private int opt = NULL; // 记录操作码
346
private int dot = NODOT; // 记录是否点击了小数点
347
private int num = 0; // 记录输入操作数的个数
348
private int dotnum = 0; // 记录小数点部分的个数
349
/// <summary>
350
/// 应用程序的主入口点。
351
/// </summary>
352
[STAThread]
353
static void Main()
354
{
355
Application.Run(new CalcForm());
356
}
357![]()
358
/// <summary>
359
/// 当点击一个数字按钮的时候,需要进行判断,如果没有点击
360
/// 小数点,那么就把原来的数值扩大10倍后再加上当前的数值,
361
/// 如果点击了小数点,那么就将当前的数值除以一个权数,再
362
/// 加上原来的数值,得到新的数值。
363
/// </summary>
364
/// <param name="sender"></param>
365
/// <param name="e"></param>
366
private void btn_0_Click(object sender, System.EventArgs e)
367
{
368
System.Windows.Forms.Button btnTmp;
369
double i;
370![]()
371
btnTmp = sender as System.Windows.Forms.Button;
372
if (btnTmp != null)
373
{
374
if (dot == NODOT)
375
{
376
// 没有点击小数点
377
i = double.Parse(btnTmp.Tag.ToString());
378
tmp = tmp * 10 + i;
379
txtShow.Text = tmp.ToString();
380
}
381
else
382
{
383
// 点击了小数点
384
dotnum++;
385
// 生成小数部分的新的数值
386
i = double.Parse(btnTmp.Tag.ToString()) / System.Math.Pow(10,dotnum);
387
tmp = tmp + i;
388
txtShow.Text = tmp.ToString();
389
}
390
}
391
}
392![]()
393
private void btn_equ_Click(object sender, System.EventArgs e)
394
{
395
// 生成结果
396
if (num == 0)
397
{
398
res = 0;
399
tmp = 0;
400
txtShow.Text = res.ToString();
401
return;
402
}
403
switch (opt)
404
{
405
// 加法
406
case ADD:
407
res = res + tmp;
408
break;
409
// 减法
410
case SUB:
411
res = res - tmp;
412
break;
413
// 乘法
414
case MUL:
415
res = res * tmp;
416
break;
417
// 除法
418
case DIV:
419
res = res / tmp;
420
break;
421
// 平方
422
case SQR:
423
res = tmp * tmp;
424
break;
425
// 平方根
426
case SQRT:
427
res = System.Math.Sqrt(tmp);
428
break;
429
default:
430
return;
431
}
432
txtShow.Text = res.ToString();
433
opt = NULL;
434
res = 0;
435
num = 0;
436
}
437![]()
438
private void btn_div_Click(object sender, System.EventArgs e)
439
{
440
// 除法运算
441
opt = DIV;
442
if (num != 0)
443
{
444
if (tmp != 0)
445
res = res / tmp;
446
}
447
else
448
res = tmp;
449
num++;
450
tmp = 0;
451
txtShow.Text = res.ToString();
452
}
453![]()
454
private void btn_mul_Click(object sender, System.EventArgs e)
455
{
456
// 乘法运算
457
opt = MUL;
458
if (num != 0)
459
res = res * tmp;
460
else
461
res = tmp;
462
num++;
463
tmp = 0;
464
txtShow.Text = res.ToString();
465
}
466![]()
467
private void btn_sub_Click(object sender, System.EventArgs e)
468
{
469
// 减法运算
470
opt = SUB;
471
if (num != 0)
472
res = res - tmp;
473
else
474
res = tmp;
475
num++;
476
tmp = 0;
477
txtShow.Text = res.ToString();
478
}
479![]()
480
private void btn_add_Click(object sender, System.EventArgs e)
481
{
482
// 加法运算
483
opt = ADD;
484
if (num != 0)
485
res = res + tmp;
486
else
487
res = tmp;
488
num++;
489
tmp = 0;
490
txtShow.Text = res.ToString();
491
}
492![]()
493
private void btn_sqrt_Click(object sender, System.EventArgs e)
494
{
495
// 开方运算
496
if (tmp > 0)
497
{
498
tmp = Math.Sqrt(tmp);
499
txtShow.Text = tmp.ToString();
500
}
501
}
502![]()
503
private void btn_sqr_Click(object sender, System.EventArgs e)
504
{
505
// 平方运算
506
tmp = tmp * tmp;
507
txtShow.Text = tmp.ToString();
508
}
509![]()
510
private void btn_rev_Click(object sender, System.EventArgs e)
511
{
512
// 求倒数运算
513
tmp = 1 / tmp;
514
txtShow.Text = tmp.ToString();
515
}
516![]()
517
private void btn_dot_Click(object sender, System.EventArgs e)
518
{
519
// 点击了小数点
520
dot = HASDOT;
521
dotnum = 0;
522
}
523![]()
524
private void btn_sign_Click(object sender, System.EventArgs e)
525
{
526
// 点击了符号运算
527
tmp = -tmp;
528
txtShow.Text = tmp.ToString();
529
}
530
}
531
}
532![]()
using System;2
using System.Drawing;3
using System.Collections;4
using System.ComponentModel;5
using System.Windows.Forms;6
using System.Data;7

8
namespace Calc9
{10
/// <summary>11
/// 这是一个计算器的简单实现。12
/// </summary>13
public class CalcForm : System.Windows.Forms.Form14
{15
private System.Windows.Forms.Button btn_0;16
private System.Windows.Forms.Button btn_1;17
private System.Windows.Forms.Button btn_2;18
private System.Windows.Forms.Button btn_3;19
private System.Windows.Forms.Button btn_4;20
private System.Windows.Forms.Button btn_5;21
private System.Windows.Forms.Button btn_6;22
private System.Windows.Forms.Button btn_7;23
private System.Windows.Forms.Button btn_8;24
private System.Windows.Forms.Button btn_9;25
private System.Windows.Forms.Button btn_add;26
private System.Windows.Forms.Button btn_sub;27
private System.Windows.Forms.Button btn_mul;28
private System.Windows.Forms.Button btn_div;29
private System.Windows.Forms.Button btn_sqrt;30
private System.Windows.Forms.Button btn_sign;31
private System.Windows.Forms.Button btn_equ;32
private System.Windows.Forms.Button btn_dot;33
private System.Windows.Forms.Button btn_rev;34
private System.Windows.Forms.TextBox txtShow;35
private System.Windows.Forms.Button btn_sqr;36
/// <summary>37
/// 必需的设计器变量。38
/// </summary>39
private System.ComponentModel.Container components = null;40

41
public CalcForm()42
{43
//44
// Windows 窗体设计器支持所必需的45
//46
InitializeComponent();47

48
//49
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码50
//51
}52

53
/// <summary>54
/// 清理所有正在使用的资源。55
/// </summary>56
protected override void Dispose( bool disposing )57
{58
if( disposing )59
{60
if (components != null) 61
{62
components.Dispose();63
}64
}65
base.Dispose( disposing );66
}67

68
Windows Form Designer generated code333

334
public const int NULL = 0; // 定义操作码335
public const int ADD = 1;336
public const int SUB = 2;337
public const int MUL = 3;338
public const int DIV = 4;339
public const int SQR = 5;340
public const int SQRT = 6;341
public const int NODOT = 0; // 定义是否点击了小数点342
public const int HASDOT = 1;343
private double res = 0; // 记录结果数344
private double tmp = 0; // 当前输入的操作数345
private int opt = NULL; // 记录操作码346
private int dot = NODOT; // 记录是否点击了小数点347
private int num = 0; // 记录输入操作数的个数348
private int dotnum = 0; // 记录小数点部分的个数349
/// <summary>350
/// 应用程序的主入口点。351
/// </summary>352
[STAThread]353
static void Main() 354
{355
Application.Run(new CalcForm());356
}357

358
/// <summary>359
/// 当点击一个数字按钮的时候,需要进行判断,如果没有点击360
/// 小数点,那么就把原来的数值扩大10倍后再加上当前的数值,361
/// 如果点击了小数点,那么就将当前的数值除以一个权数,再362
/// 加上原来的数值,得到新的数值。363
/// </summary>364
/// <param name="sender"></param>365
/// <param name="e"></param>366
private void btn_0_Click(object sender, System.EventArgs e)367
{368
System.Windows.Forms.Button btnTmp;369
double i;370

371
btnTmp = sender as System.Windows.Forms.Button;372
if (btnTmp != null)373
{374
if (dot == NODOT)375
{376
// 没有点击小数点377
i = double.Parse(btnTmp.Tag.ToString());378
tmp = tmp * 10 + i;379
txtShow.Text = tmp.ToString();380
}381
else382
{383
// 点击了小数点384
dotnum++;385
// 生成小数部分的新的数值386
i = double.Parse(btnTmp.Tag.ToString()) / System.Math.Pow(10,dotnum);387
tmp = tmp + i;388
txtShow.Text = tmp.ToString();389
}390
}391
}392

393
private void btn_equ_Click(object sender, System.EventArgs e)394
{395
// 生成结果396
if (num == 0)397
{398
res = 0;399
tmp = 0;400
txtShow.Text = res.ToString();401
return;402
}403
switch (opt)404
{405
// 加法406
case ADD:407
res = res + tmp;408
break;409
// 减法410
case SUB:411
res = res - tmp;412
break;413
// 乘法414
case MUL:415
res = res * tmp;416
break;417
// 除法418
case DIV:419
res = res / tmp;420
break;421
// 平方422
case SQR:423
res = tmp * tmp;424
break;425
// 平方根426
case SQRT:427
res = System.Math.Sqrt(tmp);428
break;429
default:430
return;431
}432
txtShow.Text = res.ToString();433
opt = NULL;434
res = 0;435
num = 0;436
}437

438
private void btn_div_Click(object sender, System.EventArgs e)439
{440
// 除法运算441
opt = DIV;442
if (num != 0)443
{444
if (tmp != 0)445
res = res / tmp;446
}447
else448
res = tmp;449
num++;450
tmp = 0;451
txtShow.Text = res.ToString();452
}453

454
private void btn_mul_Click(object sender, System.EventArgs e)455
{456
// 乘法运算457
opt = MUL;458
if (num != 0)459
res = res * tmp;460
else461
res = tmp;462
num++;463
tmp = 0;464
txtShow.Text = res.ToString();465
}466

467
private void btn_sub_Click(object sender, System.EventArgs e)468
{469
// 减法运算470
opt = SUB;471
if (num != 0)472
res = res - tmp;473
else474
res = tmp;475
num++;476
tmp = 0;477
txtShow.Text = res.ToString();478
}479

480
private void btn_add_Click(object sender, System.EventArgs e)481
{482
// 加法运算483
opt = ADD;484
if (num != 0)485
res = res + tmp;486
else487
res = tmp;488
num++;489
tmp = 0;490
txtShow.Text = res.ToString();491
}492

493
private void btn_sqrt_Click(object sender, System.EventArgs e)494
{495
// 开方运算496
if (tmp > 0)497
{498
tmp = Math.Sqrt(tmp);499
txtShow.Text = tmp.ToString();500
}501
}502

503
private void btn_sqr_Click(object sender, System.EventArgs e)504
{505
// 平方运算506
tmp = tmp * tmp;507
txtShow.Text = tmp.ToString();508
}509

510
private void btn_rev_Click(object sender, System.EventArgs e)511
{512
// 求倒数运算513
tmp = 1 / tmp;514
txtShow.Text = tmp.ToString();515
}516

517
private void btn_dot_Click(object sender, System.EventArgs e)518
{519
// 点击了小数点520
dot = HASDOT;521
dotnum = 0;522
}523

524
private void btn_sign_Click(object sender, System.EventArgs e)525
{526
// 点击了符号运算527
tmp = -tmp;528
txtShow.Text = tmp.ToString();529
}530
}531
}532



浙公网安备 33010602011771号