Calculators code.rar
(63.24 KB, 售價(jià): 1 E幣)
2020-5-3 17:55 上傳
點(diǎn)擊文件名下載附件
售價(jià): 1 E幣 [記錄]
[ 購(gòu)買]
如題。計(jì)算器的運(yùn)行界面如下
1.png (26.15 KB)
下載附件
2020-5-3 17:52 上傳
2.png (30.71 KB)
下載附件
2020-5-3 17:52 上傳
Visual studio c#計(jì)算器源程序如下:
- 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()//“標(biāo)準(zhǔn)型”模式
- {
- groupT.Location = new Point(6, 78);//groupT中存放標(biāo)準(zhǔn)型模式下的按鈕控件
- 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中存放科學(xué)型模式下特有的按鈕控件
- this.Size = new Size(290, 349);
- }
- private void ShowAsScience()//“科學(xué)型”模式
- {
- 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)
- {
- //界面初始化為“標(biāo)準(zhǔn)型”的樣子
- ShowAsStandard();
- }
- //================標(biāo)志================================================
- private Expression leftValue = null;//左操作數(shù)
- bool txtEnterBoxClearFlag = true;//是否清除txtEnterBox的標(biāo)志,是否可啟用backspace的標(biāo)志
- bool txtExpressionClearFlag = true;//是否清除txtExpression的標(biāo)志
- bool txtExpressionInsertFlag = true;//是否在txtExpression中插入新數(shù)據(jù)的標(biāo)志
- bool btnBackSpaceEnableFlag = true;//是否啟用BackSpace鍵
- //====================================================================
- string op;//操作符
- Expression expression = null;//表達(dá)式對(duì)象
- private void btn0_Click(object sender, EventArgs e)//數(shù)字及點(diǎn)號(hào)按鈕被按下時(shí)觸發(fā)該事件
- {
- 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 清除數(shù)字顯示框、表達(dá)式顯示框及左操作數(shù)
- txtEnterBox.Text = "0";
- txtExpression.Text = "";
- leftValue = null;//左操作數(shù)清空
- #endregion
- }
- private void txtEnterBox_TextChanged(object sender, EventArgs e)
- {
- #region 檢查輸入數(shù)字是否規(guī)范
- if (Regex.IsMatch(txtEnterBox.Text, "^[0]+[1-9]+")) //1.非小數(shù)數(shù)字不能以0開頭。
- {
- txtEnterBox.Text = Regex.Replace(txtEnterBox.Text, "^0+", "");
- }
- if (Regex.IsMatch(txtEnterBox.Text, "^0+"))//2.數(shù)字開頭不能連續(xù)輸入多個(gè)0,最多只能輸入一個(gè)
- {
- txtEnterBox.Text = Regex.Replace(txtEnterBox.Text, "^0+", "0");
- }
- if (Regex.IsMatch(txtEnterBox.Text, "[.].*[.]"))//3.數(shù)字中小數(shù)點(diǎn)個(gè)數(shù)不能超過1
- {
- txtEnterBox.Text = Regex.Replace(txtEnterBox.Text, "[.]{1}[ DISCUZ_CODE_0 ]quot;, "");
- }
- #endregion
- }
- private void btnNegative_Click(object sender, EventArgs e)
- {
- #region 將輸入框中的數(shù)字乘以-1
- double dTemp = Convert.ToDouble(txtEnterBox.Text);
- dTemp = dTemp * (-1);
- txtEnterBox.Text = dTemp.ToString();
- #endregion
-
- }
- private void btnAdd_Click(object sender, EventArgs e)//雙目運(yùn)算符:加減乘除、取余按鈕按下時(shí)觸發(fā)該事件
- {
- Button btn = sender as Button;
- if (txtExpressionInsertFlag)
- {
- txtExpression.Text += txtEnterBox.Text + btn.Text;//表達(dá)式顯示控件添加數(shù)值輸入控件中的值和操作符的值
- }
- else
- {
- txtExpression.Text += btn.Text;//表達(dá)式顯示控件僅添加操作符的值
- }
- if (leftValue == null)
- {
- leftValue = new Constant(Convert.ToDouble(txtEnterBox.Text));//創(chuàng)建左操作數(shù)
- }
- else
- {
- Constant RightVaue = new Constant(Convert.ToDouble(txtEnterBox.Text));//創(chuàng)建右操作數(shù)
- expression = new Operation(leftValue, op, RightVaue);//創(chuàng)建表達(dá)式
- leftValue = expression;//將表達(dá)式賦值給左操作數(shù)
- txtEnterBox.Text = expression.Evaluate().ToString();//數(shù)值輸入控件顯示當(dāng)前計(jì)算值
- }
- op = btn.Text;//更新操作符
- txtEnterBoxClearFlag = true;
- txtExpressionClearFlag = false;
- txtExpressionInsertFlag = true;
- btnBackSpaceEnableFlag = false;
- }
- private void btnEvaluate_Click(object sender, EventArgs e)//按下等于號(hào)按鈕
- {
-
- if (leftValue != null)
- {
- Constant RightVaue = new Constant(Convert.ToDouble(txtEnterBox.Text));//創(chuàng)建右操作數(shù)
- expression = new Operation(leftValue, op, RightVaue);//創(chuàng)建表達(dá)式
- leftValue = null;//清空左操作數(shù)
- txtEnterBox.Text = expression.Evaluate().ToString();
-
- }
- else
- {
- leftValue = new Constant(Convert.ToDouble(txtEnterBox.Text));//創(chuàng)建左操作數(shù)
- }
- txtExpression.Clear();
- txtEnterBoxClearFlag = true;
- btnBackSpaceEnableFlag = false;
- }
- private void btnSqrt_Click(object sender, EventArgs e)//單目運(yùn)算符:計(jì)算平方根,求倒數(shù)按鈕按下時(shí)觸發(fā)該事件
- {
- Button btn = sender as Button;
- txtExpression.Text +=(string)btn.Tag+ "(" + txtEnterBox.Text + ")";//表達(dá)式顯示控件顯示當(dāng)前表達(dá)式
- leftValue = new Constant(Convert.ToDouble(txtEnterBox.Text));//創(chuàng)建左操作數(shù)
- expression = new Operation(leftValue, btn.Text, null);//創(chuàng)建表達(dá)式
- 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";//只剩一個(gè)字符時(shí),將該字符修改為0
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)下載附件…………
復(fù)制代碼
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會(huì)員個(gè)人意見,與本論壇立場(chǎng)無關(guān)。2、本站對(duì)所發(fā)內(nèi)容真實(shí)性、客觀性、可用性不做任何保證也不負(fù)任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進(jìn)行交流。3、對(duì)提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請(qǐng)勿將該數(shù)字內(nèi)容進(jìn)行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問題與本站無關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時(shí)本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來,僅供學(xué)習(xí)用途使用,請(qǐng)務(wù)必下載后兩小時(shí)內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請(qǐng)及時(shí)聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|