首页 > 其他分享 >实战项目-用winform动手写一个计算器

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

时间:2022-10-11 08:45:19浏览次数:46  
标签:实战 10 ++ number Value flag value 计算器 winform

实战项目-用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

相关文章

  • 盘点一个Python列表(元素多样)处理的实战题目(使用正则表达式也可以实现)
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【凡人不烦人】问了一个Python列表处理的问题,提问截图如下:下面是他的部分数据:lst=['(问答题)(2)假设镀......
  • Java微服务实战 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1ZY5h9JMF13DCijtWdHksug点击这里获取提取码 ......
  • PaaS实现与运维管理:基于Mesos +Docker+ELK的实战指南 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1fs41Qwx9iNLCOCUT85rADg点击这里获取提取码 ......
  • 实战Java虚拟机 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1JF-kB-TyJRnwZQ1HeXqxyQ点击这里获取提取码 ......
  • 大数据技术之HBase原理与实战归纳分享-中
    @目录底层原理Master架构RegionServer架构Region/Store/StoreFile/Hfile之间的关系写流程写缓存刷写读流程文件合并分区JAVAAPI编程准备示例底层原理Master架构Meta......
  • SpringBoot-JavaMailSender接口实战
    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在SpringBoot的Starter模块中也为此提供了自动化配置。下面通过实例来讲解如......
  • git实战
    安装:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git#表示当前文件中所有没被管理起来的文件(标红的)红变绿就是把没管理起来的文件管理起......
  • ctf实战的感悟-第二天
    反射型XSS,恶意代码是在URL中,只会执行一次,经过后端,但是不经过数据库,使用的时候url会发生改变。存储型,攻击者在数据中嵌入代码,经过后端,经过数据库。一直会存储在该网站中,查看......
  • 实战 | 实时的目标检测与识别简单应用
    吃粽子迎端午计算机视觉研究院专栏作者:Edison_G最近总是有很多入门的朋友问我,我进入计算机视觉这个领域难不难?是不是要学习很多知识?到底哪个方向比较好?长按扫描二维码关注我......
  • Jenkins CI&CD 自动化发布项目实战(上篇)
     JenkinsCI&CD自动化发布项目实战(上篇)   作者刘畅时间2020-11-28 实验环境centos7.5主机名ip服务配置软件gitlab172.16.1.712核/4G/60Gdocker、gitlabjenkins-mast......