sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

实战项目-用winform动手写一个计算器

实战项目--用winform动手写一个“计算器”

实战项目旨在交流学习,欢迎在评论区交流意见。

简介:分享一个简单的软件项目---自己动手写一个“计算器”。

先展示效果:

项目开发环境: Visual Studio 2017 winform 开发

开发语言: C#

demo功能: Windows 窗体程序实现计算器功能

PS:其他版本的VS开发步骤基本一样

首先,打开Visual Sdudio,新建一个winform工程

左上角:文件 - 新建 - 项目

选择Visual C# 的 Windows窗体应用(.NET Framework),名称位置自己设定即可

然后点击确定

接着弹出的窗体设计界面就可以用来进行程序界面设计了:

在左侧工具箱中,拖出需要的按钮,改变其大小和显示标签,如下图所示

这里设定了0~9的数字按键,加减乘除的基本运算按键还有“=”号和清除键“C”,这里按照个人实际需求设计即可,此例只是示范。

然后拖入一个TextBox控件,调整大小和整体布局,使得界面看起开相对规范:

PS:TextBox的属性栏里面,应当将字体改大,以便显示,显示顺序应改为RightToLeft

功能布局颜色等按照自己的需求做一下调整,界面就搞定了

下面代码实现功能:

表示最终结果,中间结果的值的变量在开头先定义清楚,然后后面在每个按键的触发事件中填入内容即可。

感觉挺简单的算法,自己写的时候还是费了些脑经,多次修改测试后,圆满实现效果。

至此项目介绍完毕,项目中的数学计算还是挺有意思的

下面上源码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace calculator

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

double Value = 0;//最终值

double value = 0;//中间值

int[] number = new int[10]; //设定输入数据位数不超过10位

int K = 0;//位数

int flag = 0;//0:加 1:减 2:乘 3:除

private void button0_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 0;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button1_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 1;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i-1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button2_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 2;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button3_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 3;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button4_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 4;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button5_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 5;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button6_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 6;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button7_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 7;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button8_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 8;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

private void button9_Click(object sender, EventArgs e)

{

value = 0;//清空中间值

number[K] = 9;

K++;//位数增加

for (int i = 0; i < K; i++)

{

value += number[i] * System.Math.Pow(10, K - i - 1);//乘方:10的K次方

}

// Value = Value + value;

textBox1.Text = value.ToString();//显示

}

//加

private void button10_Click(object sender, EventArgs e)

{

//运算

if (flag == 0)

{

Value = Value + value;

}

else if (flag == 1)

{

Value = Value - value;

}

else if (flag == 2)

{

Value = Value * value;

}

else if (flag == 3)

{

Value = Value / value;

}

flag = 0;//标记运算符

textBox1.Text = Value.ToString();//显示

value = 0;

K = 0;

}

//减

private void button11_Click(object sender, EventArgs e)

{

//运算

if (flag == 0)

{

Value = Value + value;

}

else if (flag == 1)

{

Value = Value - value;

}

else if (flag == 2)

{

Value = Value * value;

}

else if (flag == 3)

{

Value = Value / value;

}

flag = 1;//标记运算符

textBox1.Text = Value.ToString();//显示

value = 0;

K = 0;

}

//乘

private void button12_Click(object sender, EventArgs e)

{

//运算

if (flag == 0)

{

Value = Value + value;

}

else if (flag == 1)

{

Value = Value - value;

}

else if (flag == 2)

{

Value = Value * value;

}

else if (flag == 3)

{

Value = Value / value;

}

flag = 2;//标记运算符

textBox1.Text = Value.ToString();//显示

value = 0;

K = 0;

}

//除

private void button13_Click(object sender, EventArgs e)

{

//运算

if (flag == 0)

{

Value = Value + value;

}

else if (flag == 1)

{

Value = Value - value;

}

else if (flag == 2)

{

Value = Value * value;

}

else if (flag == 3)

{

Value = Value / value;

}

flag = 3;//标记运算符

textBox1.Text = Value.ToString();//显示

value = 0;

K = 0;

}

//清空

private void button14_Click(object sender, EventArgs e)

{

Value = 0;

value = 0;

K = 0;

flag = 0;

textBox1.Text = "0";

}

//结果显示

private void button15_Click(object sender, EventArgs e)

{

//运算

if (flag == 0)

{

Value = Value + value;

}

else if (flag == 1)

{

Value = Value - value;

}

else if (flag == 2)

{

Value = Value * value;

}

else if (flag == 3)

{

Value = Value / value;

}

textBox1.Text = Value.ToString();//显示

value = 0;

K = 0;

}

}

}

举报/反馈
https://baijiahao.baidu.com/s?id=1692730467104719983&wfr=spider&for=pc
posted on 2022-10-11 08:30  sunny123456  阅读(220)  评论(0编辑  收藏  举报