版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、首先,面板布局如下:控件命名规律为:1:bt1, 2:bt2 .以此类推,从程序中可以很容易看出来.下面就是详细的程序代码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;namespace 科学计算器 public partial class Form1 : Form public Form1(
2、) InitializeComponent(); txt_result.Text += ;/默认打开计算器时屏幕显示空格 #region 数字按键的屏幕显示 private void bt1_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) =0)/判断是否已经输入了数字 / txt_result.Text = 1; /如果已经输入,并且不是0,则加1 /else txt_result.Text += 1; private void bt2_Click(object sender, EventArgs e)
3、/if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 2;/如果已经输入,并且不是0,则加2 /else txt_result.Text += 2; private void bt3_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 3;/如果已经输入,并且不是0,则加3 /else txt_result.Text += 3; private
4、 void bt4_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 4;/如果已经输入,并且不是0,则加4 /else txt_result.Text += 4; private void bt5_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 5;/如果已经输入,并
5、且不是0,则加5 /else txt_result.Text += 5; private void bt6_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 6;/如果已经输入,并且不是0,则加6 /else txt_result.Text += 6; private void bt7_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/
6、判断是否已经输入了数字 / txt_result.Text += 7;/如果已经输入,并且不是0,则加7 /else txt_result.Text += 7; private void bt8_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 8;/如果已经输入,并且不是0,则加8 /else txt_result.Text += 8; private void bt9_Click(object sender, EventArgs
7、 e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 9;/如果已经输入,并且不是0,则加9 /else txt_result.Text += 9; private void bt0_Click(object sender, EventArgs e) /if (float.Parse(txt_result.Text) != 0)/判断是否已经输入了数字 / txt_result.Text += 0;/如果已经输入,并且不是0,则加0 /else txt_result.Text += 0; /上述
8、判断是否输入数字的方法在小数点以及运算符处还没有实现,先用别的方法代替一下 private void btpoint_Click(object sender, EventArgs e)/小数点 txt_result.Text += .; private void btc_Click(object sender, EventArgs e)/C键的功能实现 txt_result.Text = ; private void bttuige_Click(object sender, EventArgs e)/退格的功能实现 if (txt_result.Text != ) txt_result.Tex
9、t = txt_result.Text.Substring(0, txt_result.Text.Length - 1); private void btadd_Click(object sender, EventArgs e) txt_result.Text += +; private void btsub_Click(object sender, EventArgs e) txt_result.Text += -; private void btpro_Click(object sender, EventArgs e) txt_result.Text += *; private void
10、btdiv_Click(object sender, EventArgs e) txt_result.Text += /; private void btinv_Click(object sender, EventArgs e) txt_result.Text += ; private void btevo_Click(object sender, EventArgs e) txt_result.Text += ; private void btzuo_Click(object sender, EventArgs e) txt_result.Text += (; private void bt
11、you_Click(object sender, EventArgs e) txt_result.Text += ); #endregion #region =计算功能实现 private void btequ_Click(object sender, EventArgs e) string str = txt_result.Text; List lists = new List(); string temp = ; int index = 0, sum = str.Length; foreach (char c in str) /循环遍历计算式的每个字符,并逐一识别 index+; if (
12、c != + & c != - & c != * & c != / & c != ( & c != ) & c != & c != ) temp += c; else if (temp != ) lists.Add(temp); lists.Add(c.ToString(); temp = ; if (index = sum & temp != ) lists.Add(temp); /开始运算 try #region 遍历表达式是否存在括号 index = 0; for (int i = 0; i 0 & listsi - 1 != ) & listsi = ) /首先进行幂运算 listsi
13、 + 1 = Make(i - 1, listsi - 1, listsi + 1, listsi).ToString(); lists.RemoveAt(i - 1); lists.RemoveAt(i - 1); i -= 1; if (listsi = ) /表达式中有括号的情况 for (int j = i; j = 0; j-) if (listsj = ()/j i 分别为左右括号的位置 index = j + 1; do string type1 = listsindex + 1;/遍历找符号,列表顺序 if (type1 = + | type1 = -) if (i - j =
14、 5) if (listsindex + 2 = ) listsindex + 2 = kaigen(Int32.Parse(listsindex + 3).ToString(); lists.RemoveAt(index + 3); i -= 1; else listsindex + 2 = Make(index, listsindex, listsindex + 2, type1).ToString(); lists.RemoveAt(index); lists.RemoveAt(index); i -= 2; /定义一级运算 else string type2 = listsindex
15、+ 3; string type3 = listsindex + 4; if (type3 = )/定义三级运算 开根 listsindex + 4 = kaigen(Int32.Parse(listsindex + 5).ToString(); lists.RemoveAt(index + 5); i -= 1; else if (type2 = * | type2 = / | type2 = )/定义二级运算 listsindex + 2 = Make(index + 2, listsindex + 2, listsindex + 4, type2).ToString(); lists.R
16、emoveAt(index + 3); lists.RemoveAt(index + 3); i -= 2; else listsindex + 2 = Make(index, listsindex, listsindex + 2, type1).ToString(); lists.RemoveAt(index); lists.RemoveAt(index); i -= 2; else listsindex + 2 = Make(index, listsindex, listsindex + 2, type1).ToString(); lists.RemoveAt(index); lists.
17、RemoveAt(index); i -= 2; if (i - j = 2) lists.RemoveAt(j); lists.RemoveAt(j + 1); i -= 2; break; /跳出while循环 while (1 = 1); break; /跳出for(j)循环 #endregion #region 表达式中没括号的情况 index = 0; do if (lists.Count = 1) txt_result.Text += = + lists0; break; string type1 = listsindex + 1; if (type1 = + | type1 =
18、-) if (lists.Count = 4) if (listsindex + 2 = ) listsindex + 2 = kaigen(Int32.Parse(listsindex + 3).ToString(); lists.RemoveAt(index + 3); else listsindex + 2 = Make(index, listsindex, listsindex + 2, type1).ToString(); lists.RemoveAt(index); lists.RemoveAt(index); else string type2 = listsindex + 3;
19、 if (type2 = * | type2 = / | type2 = ) listsindex + 2 = Make(index + 2, listsindex + 2, listsindex + 4, type2).ToString(); lists.RemoveAt(index + 3); lists.RemoveAt(index + 3); else listsindex + 2 = Make(index, listsindex, listsindex + 2, type1).ToString(); lists.RemoveAt(index); lists.RemoveAt(inde
20、x); else listsindex + 2 = Make(index, listsindex, listsindex + 2, type1).ToString(); lists.RemoveAt(index); lists.RemoveAt(index); if (lists.Count = 1) txt_result.Text += = + lists0; break; while (1 = 1); #endregion catch (Exception ex) MessageBox.Show(请输入正确的运算表达式 + ex.Message, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error); #endregion #region make定义 private object Make(int index, string noStr1, string noStr2, string type) double tempSum = 0, no1 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理护理查房专业态度查房
- 护士健康宣教音频资料
- 化工安全口诀记忆讲解
- 开发商房屋验收外包合同
- 中建外聘劳务外包合同
- 学校灯具安装外包合同
- 白蚁防治劳务外包合同
- 医疗产品开发外包合同
- 汽车行业供应链外包合同
- 酒店餐饮开荒外包合同
- 2017年福建省中考英语试题及答案
- 《中药制剂技术》期末考试复习题库(含答案)
- 中国诗词大会飞花令大全(通用9篇)
- 诊断学基本检查法一般检查
- 腹腔镜下肾切除术的手术配合-课件
- 登高作业SOP文档
- GB/T 2282-2022焦化轻油类产品馏程的测定方法
- GB/T 7306.1-200055°密封管螺纹第1部分:圆柱内螺纹与圆锥外螺纹
- 02-车轮定位仪操作指导(VAS-6292)课件
- 海上固定平台的安全规则
- 《虞美人》课件(共30张PPT)
评论
0/150
提交评论