




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#课程设计学校:华北水利水电学院院系:信息工程学院专业:计算机科学与技术专业班级:2010135班题目:设计一个window窗体计算机程序,可以实现优先级和括号的计算。一、程序代码: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 计算器1 public partial class Form1 : Form Button btn; public Form1() InitializeComponent(); private void button11_Click(object sender, EventArgs e) btn = (Button)sender; richTextBox1.Text = richTextBox1.Text + btn.Text; private void button16_Click(object sender, EventArgs e) btn = (Button)sender; string s = richTextBox1.Text.Trim(); string 数据 = s.Split(new char +, -, *, /, (, ) , StringSplitOptions.RemoveEmptyEntries); char yun=s.ToCharArray(); int k = 0; for (int i = 0; i yun.Length; i+) if (yuni = + | yuni = - | yuni = * | yuni = / | yuni = ( | yuni = ) k+; char 运算符=new chark; int j = 0; for (int i = 0; i yun.Length; i+) if (yuni = + | yuni = - | yuni = * | yuni = / | yuni = ( | yuni = ) 运算符j = yuni; j+; double 整型数据 = convert(数据); int 运算符号 = 转化运算符(运算符); double 结果 = 计算结果(整型数据, 运算符号); richTextBox1.Text += =; richTextBox1.Text += 结果.ToString(); private double convert (string 数) double result = new double数.Length; for (int i = 0; i 数.Length; i+) try resulti = double.Parse(数i); catch (Exception) MessageBox.Show(数i + 无法转化成功!); return result; private int 转化运算符(char 运算符) int yunsuan = new int运算符.Length; for (int i = 0; i 运算符.Length; i+) if (运算符i = +) yunsuani = 1; if (运算符i = -) yunsuani = 2; if (运算符i = *) yunsuani = 4; if (运算符i = /) yunsuani = 5; if (运算符i = () yunsuani = 7; if (运算符i = ) yunsuani = 8; return yunsuan; private double 计算结果(double 数, int 符) double 结果 = 0.0; if (符.Length = 1) switch (符0) case 1: 结果 = 数0 + 数1; break; case 2: 结果 = 数0 - 数1; break; case 4: 结果 = 数0 * 数1; break; case 5: if (数1 != 0)结果 = 数0 / 数1; else MessageBox.Show(除数不能为零!); break; return 结果; else int key=0; for (int i = 0; i 符.Length; i+) if (符i = 7) key = 1; break; /运算符中有括号 if (key = 1) int j = new int2; int x = 0;double a = 0.0; for (int i = 0; i 符.Length; i+) if (符i = 7) j0 = i; if (符i = 8) j1 = i; break; x = j1 + 1; double c = new doublej1 - j0; int d = new intj1 - j0-1; for (int i = 0; i c.Length; i+) if (i = 0) ci = 数j0; else ci = 数j0 + i; for (int i = 0; i d.Length; i+) di = 符j0 + i+1; a = 计算结果(c, d); double e = new double数.Length - j1 + j0+1; int f = new int符.Length - j1+j0-1; for (int i = 0; i e.Length; i+) if (i j0) ei = 数i; else if (i = j0) ei = a; else ei = 数j1; j1 = j1 + 1; if (e.Length = 1) return e0; else for (int i = 0; i f.Length; i+) if (i j0) fi = 符i; else fi = 符x; x = x + 1; 结果 = 计算结果(e, f); return 结果; /运算符中无括号 else double a = 0; if (符0 + 1 符1) switch (符1) case 4: a = 数1 * 数2; break; case 5: a = 数1 / 数2; break; double c = new double数.Length - 1; int d = new int符.Length - 1; for (int i = 0; i c.Length; i+) if (i = 1) ci = a; else if (i = 2) ci = 数+i; else ci = 数i; for (int i = 0; i d.Length; i+) if (i = 1) di = 符+i; else di = 符i; 结果 = 计算结果(c, d); return 结果; else switch (符0) case 1: a = 数0 + 数1; break; case 2: a = 数0 - 数1; break; case 4: a = 数0 * 数1; break; case 5: a = 数0 / 数1; break; double c = new double数.Length - 1; int d = new int符.Length - 1; for (int i = 0; i c.Length; i+) /MessageBox.Show(a.ToString(); if (i = 0) ci = a; else ci = 数i+1; /MessageBox.Show(c1.ToString(); /MessageBox.Show(数i.ToString(); for (int i = 0; i d.Length; i+) di = 符i+1; 结果 = 计算结果(c, d); return 结果; private void button19_Click(object sender, EventArgs e) MessageBox.Show(欢迎使用我的计算器!); private void button20_Click(object sender, EventArgs e) this.richTextBox1.Text = ; private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) Close(); private void 关于aboutToolStripMenuItem_Click(object sender, EventArgs e) Form2 frm = new Form2(); frm.ShowDialog(); private void 复制ctToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Copy(); private void 粘贴CtrlvToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.Paste(); 二、程序运行截图:(1)程序欢迎界面:在打开计算器使用前的提示界面(2)程序运行结果界面(3)除数为零:(4)其他:三、思考与总结:其实这对于我来说并不是一个简单的程序,总的下来不知道自己用了多长时间,但最后结果还是有点不太理想,感觉现在我写的这个程序有点浪费系统的存储空间,建立了很多的数组,其实我想用栈来解决问题会更好一些,但是经过写这个程序我还是有一些收获的,我的程序的总体思路是先将输入的表达式存在一个string字符串中然后经过一定的分割将数据与运算符分隔开在不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省湖州市吴兴区六校联合2023-2024学年七年级第一学期数学期中试卷(含答案)
- (正式版)DB5404∕T 0030-2024 《墨脱特色菜 门巴白椒脆猪皮》
- (正式版)DB2311∕T 057-2022 《集团化办学规范》
- 2026年水果种植公司水果种植机械设备安装与调试管理制度
- (正式版)DB2327∕T 066-2023 《大兴安岭偃松接穗采集与储运技术规程》
- 10.4 一元一次不等式的应用说课稿-2025-2026学年初中数学冀教版2012七年级下册-冀教版2012
- 本章检查站说课稿-2025-2026学年初中信息技术粤高教版B版八年级下册-粤高教版B版
- 2025年老年护理学导论题库及答案
- 第六课 规划健康生活说课稿-2025-2026学年小学心理健康北师大版五年级上册-北师大版
- 八年级地理上册 第一章 人口和民族 教学设计
- 2026届高三语文9月联考诗歌鉴赏试题汇编含答案
- 2026中车广东轨道交通车辆有限公司校园招聘笔试模拟试题及答案解析
- 三年级数学计算题专项练习及答案集锦
- 养殖业危险废物处理方案
- 2025邮政储蓄银行四川省分行社会招聘考试参考试题及答案解析
- 【100题】2025年时政试题及答案
- 江苏苏州高铁枢纽投资开发有限公司招聘笔试题库2025
- 高处作业考证培训课件
- 2024年南京大学公开招聘辅导员笔试题含答案
- 电商助农直播农产品直播团队管理与成长方案
- 学堂在线医学英语词汇进阶(首医)作业单元测验答案
评论
0/150
提交评论