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) * ...
随机推荐
- Linux下手动编译shogun
手动编译shogun,如果按照直接按照官网上的步骤进行,会踩非常多的坑,下面分享一下在下的编译过程,希望能为阁下提供些许借鉴. 1. git clone https://github.com/shog ...
- 用VS2017编写C语言的Hello World
1.新建项目 2.选择新建空项目 3.在源文件处右键单击,选择添加-新建项 4.选择“c++文件”,将名称后缀改成.c即可用C语言编写程序 5.编写代码: #include <stdio.h&g ...
- 二、 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek)
请指教交流! package com.it.hxs.c01; import java.util.Stack; /* 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek) */ ...
- 清除冗余的css
下载旧版的火狐浏览器,如Firefox 48.0.exe, 下载地址:https://ftp.mozilla.org/pub/firefox/releases/48.0/win32/zh-CN 关闭更 ...
- RPA与AI_新技术能给企业业务流程带来怎样的价值?
RPA助力于流程自动化蜕变 RPA是Robotic Process Automation的缩写,意为: 将机器人作为虚拟劳动力,依照预先设定的程序与现有用户系统进行交互并完成设定好的任务流程.RPA可 ...
- python之路-变量
变量定义的规则: - 变量名只能是字母.数字.或下划线的任意组合 - 变量名的第一个字符不能是数字 - 以下关键字不能声明为变量名 ['and','as','assert','break','cla ...
- Vscode下的Markdown的基本使用
1.Vscode默认支持Markdown语法,只需要安装相应的扩展插件,Markdown Preview enhanced. 2.安装完插件后,在Vscode上新建一个文件,然后将文件的语言模式设置为 ...
- LogFilter
(一)Filter 在Java EE中,Filter是一个可以将请求和响应的头部或内容进行转换的一个对象.包括 (1)认证Filter (2)日志和审核Filter (3)图片转换Filt ...
- ubuntu16.04 登陆不进桌面
ubuntu 16.04 登陆不进桌面 问题描述: 系统软件升级之后,重启,在登陆界面输入密码后,回车,闪现一次黑屏和一些代码,然后又重新回到登陆界面. 原因分析: 有两种可能: 1.主目录下的.Xa ...
- CXF 简单创建Webserver 例子
最近在弄webserver,因为公司需要用到,来说说,webserver的常用方式吧 1.什么是webservice 1.1 什么是远程调用技术 远程调用数据定义:是系统和系统之间的调用 先说一说 ...