实战项目-用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;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2019-10-11 C# MVC文件上传注意点
2019-10-11 C# MVC文件上传
2019-10-11 博客园怎么转载别人的文章
2019-10-11 MVC 控制器向View传值的三种方法(转) C#