Calculators code.rar
(63.24 KB, 售价: 1 E币)
如题。计算器的运行界面如下
Visual studio c#计算器源程序如下:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Text.RegularExpressions;
- using System.Collections;
- namespace Calculators
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void ShowAsStandard()//“标准型”模式
- {
- groupT.Location = new Point(6, 78);//groupT中存放标准型模式下的按钮控件
- txtEnterBox.Size = new Size(250, 23);
- txtExpression.Size = new Size(250, 14);
- groupShowWindow.Size = new Size(260, 49);
- groupS.Location = new Point(-333, 77);//groupT中存放科学型模式下特有的按钮控件
- this.Size = new Size(290, 349);
- }
- private void ShowAsScience()//“科学型”模式
- {
- groupT.Location = new Point(268, 78);
- txtEnterBox.Size = new Size(511, 23);
- txtExpression.Size = new Size(511, 14);
- groupShowWindow.Size = new Size(517, 49);
- groupS.Location = new Point(3, 77);
- this.Size = new Size(551, 349);
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- //界面初始化为“标准型”的样子
- ShowAsStandard();
- }
- //================标志================================================
- private Expression leftValue = null;//左操作数
- bool txtEnterBoxClearFlag = true;//是否清除txtEnterBox的标志,是否可启用backspace的标志
- bool txtExpressionClearFlag = true;//是否清除txtExpression的标志
- bool txtExpressionInsertFlag = true;//是否在txtExpression中插入新数据的标志
- bool btnBackSpaceEnableFlag = true;//是否启用BackSpace键
- //====================================================================
- string op;//操作符
- Expression expression = null;//表达式对象
- private void btn0_Click(object sender, EventArgs e)//数字及点号按钮被按下时触发该事件
- {
- Button btn = sender as Button;
- if (txtEnterBoxClearFlag)
- {
- txtEnterBox.Clear();
- }
- if (txtExpressionClearFlag)
- {
- txtExpression.Clear();
- }
- txtEnterBox.Text += btn.Text;
- txtEnterBoxClearFlag = false;
- txtExpressionClearFlag = false;
- btnBackSpaceEnableFlag = true;
- }
- private void buttonClear_Click(object sender, EventArgs e)
- {
- #region 清除数字显示框、表达式显示框及左操作数
- txtEnterBox.Text = "0";
- txtExpression.Text = "";
- leftValue = null;//左操作数清空
- #endregion
- }
- private void txtEnterBox_TextChanged(object sender, EventArgs e)
- {
- #region 检查输入数字是否规范
- if (Regex.IsMatch(txtEnterBox.Text, "^[0]+[1-9]+")) //1.非小数数字不能以0开头。
- {
- txtEnterBox.Text = Regex.Replace(txtEnterBox.Text, "^0+", "");
- }
- if (Regex.IsMatch(txtEnterBox.Text, "^0+"))//2.数字开头不能连续输入多个0,最多只能输入一个
- {
- txtEnterBox.Text = Regex.Replace(txtEnterBox.Text, "^0+", "0");
- }
- if (Regex.IsMatch(txtEnterBox.Text, "[.].*[.]"))//3.数字中小数点个数不能超过1
- {
- txtEnterBox.Text = Regex.Replace(txtEnterBox.Text, "[.]{1}[ DISCUZ_CODE_0 ]quot;, "");
- }
- #endregion
- }
- private void btnNegative_Click(object sender, EventArgs e)
- {
- #region 将输入框中的数字乘以-1
- double dTemp = Convert.ToDouble(txtEnterBox.Text);
- dTemp = dTemp * (-1);
- txtEnterBox.Text = dTemp.ToString();
- #endregion
-
- }
- private void btnAdd_Click(object sender, EventArgs e)//双目运算符:加减乘除、取余按钮按下时触发该事件
- {
- Button btn = sender as Button;
- if (txtExpressionInsertFlag)
- {
- txtExpression.Text += txtEnterBox.Text + btn.Text;//表达式显示控件添加数值输入控件中的值和操作符的值
- }
- else
- {
- txtExpression.Text += btn.Text;//表达式显示控件仅添加操作符的值
- }
- if (leftValue == null)
- {
- leftValue = new Constant(Convert.ToDouble(txtEnterBox.Text));//创建左操作数
- }
- else
- {
- Constant RightVaue = new Constant(Convert.ToDouble(txtEnterBox.Text));//创建右操作数
- expression = new Operation(leftValue, op, RightVaue);//创建表达式
- leftValue = expression;//将表达式赋值给左操作数
- txtEnterBox.Text = expression.Evaluate().ToString();//数值输入控件显示当前计算值
- }
- op = btn.Text;//更新操作符
- txtEnterBoxClearFlag = true;
- txtExpressionClearFlag = false;
- txtExpressionInsertFlag = true;
- btnBackSpaceEnableFlag = false;
- }
- private void btnEvaluate_Click(object sender, EventArgs e)//按下等于号按钮
- {
-
- if (leftValue != null)
- {
- Constant RightVaue = new Constant(Convert.ToDouble(txtEnterBox.Text));//创建右操作数
- expression = new Operation(leftValue, op, RightVaue);//创建表达式
- leftValue = null;//清空左操作数
- txtEnterBox.Text = expression.Evaluate().ToString();
-
- }
- else
- {
- leftValue = new Constant(Convert.ToDouble(txtEnterBox.Text));//创建左操作数
- }
- txtExpression.Clear();
- txtEnterBoxClearFlag = true;
- btnBackSpaceEnableFlag = false;
- }
- private void btnSqrt_Click(object sender, EventArgs e)//单目运算符:计算平方根,求倒数按钮按下时触发该事件
- {
- Button btn = sender as Button;
- txtExpression.Text +=(string)btn.Tag+ "(" + txtEnterBox.Text + ")";//表达式显示控件显示当前表达式
- leftValue = new Constant(Convert.ToDouble(txtEnterBox.Text));//创建左操作数
- expression = new Operation(leftValue, btn.Text, null);//创建表达式
- leftValue = null;
- txtEnterBox.Text = expression.Evaluate().ToString();
- txtEnterBoxClearFlag = true;
- txtExpressionClearFlag = true;
- txtExpressionInsertFlag = false;
- btnBackSpaceEnableFlag = false;
-
- }
- private void btnBackSpace_Click(object sender, EventArgs e)
- {
- if (btnBackSpaceEnableFlag)
- {
- int strLength = txtEnterBox.Text.Length;
- if (strLength==1)
- {
- txtEnterBox.Text = "0";//只剩一个字符时,将该字符修改为0
- ……………………
- …………限于本文篇幅 余下代码请下载附件…………
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|