C#实现按键计算器功能
C#实现按键计算器功能
(一次失败的编程)
界面:

代码如下:
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 按键计算器
{
public partial class Form1 : Form
{
//flag1表示开始输入数字时,该数的位数
//flag2表示在此时运算符(+ - */)的个数
//flag3在输入运算符时用于判断,表示在输入运算符时,前一个运算符为+时等于1, -为2 *为3 /为4
int flag1 =,flag2=,flag3=; //isEqual表示该状态时是否点击了等于按钮
bool isEqual =false;
//isClear表示是否清空了主输入编辑框里的数据
bool isClear = true; //isError表示是否出现错误,数据溢出,该部分还未完善
bool isError = false; //输入等于号的个数,这里程序后面会控制在0和1之间,多余的输入无效
int numEqual = ; //m表示进行计算的第一个数,n表示进行计算的第二个数,一般第一次计算结束后会把结果存储在result中,
int m = , n = ,result=; public Form1()
{
InitializeComponent();
} //将键盘与按钮关联
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.NumPad1||keyData==Keys.D1)
{
this.btn1.Focus();
this.btn1.PerformClick();
}
if (keyData == Keys.NumPad2 || keyData == Keys.D2)
{
this.btn2.Focus();
this.btn2.PerformClick();
}
if (keyData == Keys.NumPad3 || keyData == Keys.D3)
{
this.btn3.Focus();
this.btn3.PerformClick();
}
if (keyData == Keys.NumPad4 || keyData == Keys.D4)
{
this.btn4.Focus();
this.btn4.PerformClick();
}
if (keyData == Keys.NumPad5 || keyData == Keys.D5)
{
this.btn5.Focus();
this.btn5.PerformClick();
}
if (keyData == Keys.NumPad6 || keyData == Keys.D6)
{
this.btn6.Focus();
this.btn6.PerformClick();
}
if (keyData == Keys.NumPad7 || keyData == Keys.D7)
{
this.btn7.Focus();
this.btn7.PerformClick();
}
if (keyData == Keys.NumPad8 || keyData == Keys.D8)
{
this.btn8.Focus();
this.btn8.PerformClick();
}
if (keyData == Keys.NumPad9 || keyData == Keys.D9)
{
this.btn9.Focus();
this.btn9.PerformClick();
}
if (keyData == Keys.NumPad0 || keyData == Keys.D0)
{
this.btn0.Focus();
this.btn0.PerformClick();
}
if (keyData == Keys.Add)
{
this.btnadd.Focus();
this.btnadd.PerformClick();
}
if (keyData == Keys.Subtract || keyData == Keys.OemMinus)
{
this.btnsub.Focus();
this.btnsub.PerformClick();
}
if (keyData == Keys.Multiply)
{
this.btnmul.Focus();
this.btnmul.PerformClick();
}
if (keyData == Keys.Divide)
{
this.btndiv.Focus();
this.btndiv.PerformClick();
}
if (keyData == Keys.Enter || keyData == Keys.Oemplus)
{
this.btnequ.Focus();
this.btnequ.PerformClick();
}
if (keyData == Keys.Back)
{
this.btncle.Focus();
this.btncle.PerformClick();
}
return base.ProcessCmdKey(ref msg, keyData);
} private void btn1_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = ""; textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + ""; flag1++;
} private void btn2_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn3_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn4_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn5_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn6_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn7_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn8_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn9_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btn0_Click(object sender, EventArgs e)
{
if (isEqual)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isEqual = false;
numEqual = ;
}
if (flag1 == ) textBox2.Text = "";
textBox1.Text = textBox1.Text + "";
textBox2.Text = textBox2.Text + "";
flag1++;
} private void btnf_Click(object sender, EventArgs e)
{
// textBox1.Text = textBox1.Text + ".";
} private void btnadd_Click(object sender, EventArgs e)
{
flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1!=)
{
textBox1.Text = textBox1.Text + "+";
if (flag2 == )
{
m = int.Parse(textBox2.Text);
textBox2.Text="";
flag1 = ;
flag2=;
flag3 = ;
isClear = false; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch(flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; } textBox2.Text="";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void textBox1_TextChanged(object sender, EventArgs e)
{ } private void btnmul_Click(object sender, EventArgs e)
{ flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1 != )
{
textBox1.Text = textBox1.Text + "*";
if (flag2 == )
{ m = int.Parse(textBox2.Text);
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isClear = false; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; }
if(isEqual) textBox2.Text = "";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void btndiv_Click(object sender, EventArgs e)
{ flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1 != )
{
textBox1.Text = textBox1.Text + "/";
if (flag2 == )
{ m = int.Parse(textBox2.Text);
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
isClear = false; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; }
textBox2.Text = "";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void btnsub_Click(object sender, EventArgs e)
{ flag2++;
if (isEqual)
{
isEqual = false;
textBox1.Text = "";
textBox1.Text = result.ToString();
}
if (flag1 != )
{
textBox1.Text = textBox1.Text + "-"; if (flag2 == )
{ m = int.Parse(textBox2.Text);
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3=; }
if (flag2 == )
{
if (flag1 != )
{
n = int.Parse(textBox2.Text); switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; } textBox2.Text = "";
textBox2.Text = m.ToString();
flag1 = ;
flag2 = ;
flag3 = ;
} } } } private void btnequ_Click(object sender, EventArgs e)
{ if (flag1 != )
{
if (numEqual == )
{
textBox1.Text = textBox1.Text + "=";
numEqual++;
}
n = int.Parse(textBox2.Text);
switch (flag3)
{
case : m = m + n; break;
case : m = m - n; break;
case : m = m * n; break;
case : m = m / n; break; }
if (flag2 == )
{
if (numEqual == )
{
m = int.Parse(textBox2.Text);
}
}
textBox2.Text = m.ToString();
result = m; flag1 = ; flag2 = ;
flag3 = ;
isEqual = true; }
}
private void btncle_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
flag1 = ;
flag2 = ;
flag3 = ;
numEqual = ;
isClear = true;
} }
}
运行结果:

不足:1.未处理数据溢出的情况
2.只支持整型数据运算,还不能进行浮点运算
C#实现按键计算器功能的更多相关文章
- C#实现按键计算器功能2(增强版)
1. 实验目的 ( 1)熟悉C#语言的使用和语法知识 2. 实验要求 (1)设计简单的含交互界面的计算器软件,具有较强的用户体验感. (2)使用C#语言进行编程,创建窗体应用程序. (3)实 ...
- 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...
- javaWeb 使用 jsp 和 javaBean 实现计算器功能
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- Python-正则表达式实现计算器功能
需求: 用户输入运算表达式,终端显示计算结果 源代码: # !/usr/bin/env/ python3 # -*- coding: utf-8 -*- """用户输入计 ...
- JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
- 【转载】修改Windows下键盘按键对应功能的一些方案
原文见:https://sites.google.com/site/xiangyangsite/home/technical-tips/windows-tips/multi_media_key_cus ...
- 利用PYTHON设计计算器功能
通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3 ...
- Python+Tkinter 实现计算器功能
#=================================================================================== import tkinter ...
- python实现简单的计算器功能
如想实现一个计算器的功能,输入格式为字符串,不能运用python里面的内置方法,出去简单的加减乘除,设计一个相对高级的计算器: a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * ...
随机推荐
- 微信中打开链接,自动打开外部浏览器打开指定URL页面
上半年公司有一个新的APP项目上线,我们在项目首页做个二维码,然后用户用手机扫一扫就能下载了.但是很多用户反映扫一扫之后下载不了,了解之后才知道这些用户都是使用的微信的扫一扫,而我们开发测试人员一般使 ...
- Linux虚机安装配置Tomcat
d第一步:下载Tomcat包,网址http://tomcat.apache.org/ 选择tar.gz包下载,并传到虚机中 第二步:解压下载好的Tomcat包 命令:tar -zxvf apache- ...
- MFC界面分割以及挂载
MFC中文档与视图(二) Last Edit 2013/11/19 这篇主要是介绍一下怎么去分割视图. 视图的分割分为:动态分割,静态分割.所谓的静态分割是指软件一启动视图就分割完成,而动态分割是在 ...
- python-并发初学
一.操作系统简单介绍 1.多道技术:(重点)系统内可同时容纳多个作业.这些作业放在外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,运行作业结束.退出运 ...
- work2:贪吃蛇
学号:2017*****7219 姓名:邰嘉琛我的码云贪吃蛇项目仓库:https://gitee.com/tjc666/sesnake/tree/master2) 给出你的各项任务完成时间估算与实际消 ...
- 错误:Could not find a getter for CreatTime in class
org.hibernate.PropertyNotFoundException: Could not find a getter for CreatTime in class org.com.xk.h ...
- 简单的新手加法运算(基于Struts2)
软件151 王帅 在搭好框架的前提下,首先编写action.java文件: import com.opensymphony.xwork2.ActionSupport; public class Us ...
- Jmeter之正则表达式提取器应用
说到Jmeter正则表达式提取器的应用,就不得不说到关联.所谓关联,就是把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用. Jmeter中关联是通过“添加—后置处 ...
- jedis连接池参数minEvictableIdleTimeMillis和softMinEvictableIdleTimeMillis探索
我们通常在使用JedisPoolConfig进行连接池配置的时候,minEvictableIdleTimeMillis和softMinEvictableIdleTimeMillis这两个参数经常会不懂 ...
- yarn web ui 参数详解
我们经常使用yarn调度,但是我们是否对调度队列显示参数真正了解呢? 下面我们来一一看看这些参数都是做什么用的,代表什么意思 hadoop是通过队列管理集群资源,翻开集群Web UI,找到Sc ...