实战项目-用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 标签:实战,10,++,number,Value,flag,value,计算器,winform From: https://www.cnblogs.com/sunny3158/p/16778027.html