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) * ...
随机推荐
- lr12介绍2
1.HTTP组成 请求1)方法,host ,协议,协议版本 2)请求头:客户端环境 3)请求正文: 响应:1)协议类型,协议版本,状态码 2)服务器环境 3)响应正文 2.cookie是采用客户端保存 ...
- APP下载在微信无法打开 该如何处理
大家是不是经常会遇到微信内点击链接或扫描二维码无法打开指定网页的问题?只要你使用微信转发分享,相信你就一定会遇到,那么打不开的原因很简单了,就是被微信拦截了.这个问题我们只需要实现从微信内直接跳出到外 ...
- 什么样的类才算是一种可重用的组件,即JavaBean?
每一个类实现了Bean的规范才可以由Spring来接管,那么Bean的规范是什么呢? 必须是个公有(public)类 有无参构造函数 用公共方法暴露内部成员属性(getter,setter) 实现这样 ...
- Ehlib 学习
似乎是为了垂直滚动条 SumList.Active := True; SumList.VirtualRecords := True; TDBGridEh 设计时 It is useful to use ...
- spring boot 连接多个数据源
在springboot中有需要连接多个数据源的情况. 首先配置文件application.properties中添加两个数据源连接字符串 mybatis.type-aliases-package=co ...
- Django知识总结(一)
壹 ● 有关http协议 一 ● 全称 超文本传输协议(HyperText Transfer Protocol) 二 ● 协议 双方遵循的规范 http协议是属于应用层的协议(还有ftp, smtp等 ...
- 【基于微信小程序的社区电商平台】需求分析心得——小豆芽
一.项目内容 基于微信小程序,做一个社区电商平台,抓住社区电商的特点,做出特色,与微信集成,实现商品的个性化发布,以及个性化营销. 个性化发布:用户可以在应用上直接发布自己的商品,通过搜索心愿单可以查 ...
- C语言:开平方根sqrt程序02
#include <stdio.h> int sqrt01(int x); void main(void){ int x=49,y; y=sqrt01(x); if(y<0) pri ...
- jQuery 核心函数
$() ;/ jQuery () ; 就代表调用 jQuery 的核心函数. 1. 接收一个函数. $(function(){ alret('hello world'); }); 2. 接收一个字 ...
- C#获取常用的路径
常用的这两个足够了,其他需要的自行百度 //获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名). string str = System.Diagnost ...