C#.Net作业 计算器.doc_第1页
C#.Net作业 计算器.doc_第2页
C#.Net作业 计算器.doc_第3页
C#.Net作业 计算器.doc_第4页
C#.Net作业 计算器.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津工业大学C#语言编程设计课程实验报告学 院 理学院 年 级 2009级 班 级 信计091 学 号 0910820104 姓 名 储博雄 2011年 11 月 1 日实验:计算器1. 实验目的制作一个计算器,掌握控件的应用。2. 实验内容3. 设计代码见附录。4. 实验结果5. 说明体会主要的问题是连加的操作不容易实现,还有运算级的问题。6. 附录代码:namespace 计算机 public partial class Form1 : Form public Form1() InitializeComponent(); string last = ; string text1 = ; string text2 = ; int p = 0; int back = 0; int bade = 0; count result = new count(); private void button1_Click(object sender, EventArgs e) if (label2.Text != 0) if (bade = 0) label2.Text += 0; private void button_point_Click(object sender, EventArgs e) count c = new count(); if (label2.Text != ) label2.Text = c.point(label2.Text); last = point; private void button_change_Click(object sender, EventArgs e) count c = new count(); if (label2.Text != ) label2.Text = c.chang(label2.Text); last = chang; private void button_1_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 1; private void button_2_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 2; private void button_3_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 3; private void button_4_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 4; private void button_5_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 5; private void button_6_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 6; private void button_7_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 7; private void button_8_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 8; private void button_9_Click(object sender, EventArgs e) if (bade = 0) label2.Text += 9; private void button_back_Click(object sender, EventArgs e) count c = new count(); if (back = 0) label2.Text = c.back(label2.Text); last = back; private void button_ln_Click(object sender, EventArgs e) count c = new count(); string b = ln; if (p= 0) text1 = label1.Text; c.public_0(); label1.Text = label1.Text + ln + label2.Text; p = 1; else label1.Text = c.public_1(text1, b, label1.Text); label2.Text = c.ln(label2.Text); last = ln; back = 1; bade = 1; text2 = label2.Text; private void button_sqrt_Click(object sender, EventArgs e) count c = new count(); string b = sqrt; if (p = 0) text1 = label1.Text; c.public_0(); label1.Text = label1.Text + sqrt + label2.Text; p = 1; else label1.Text = c.public_1(text1, b, label1.Text); label2.Text = c.sqrt(label2.Text); last = sqrt; back = 1; bade = 1; text2 = label2.Text; private void button_plus_Click(object sender, EventArgs e) if (label2.Text != |last=) if(label2.Text!=) text2 = label2.Text; result.pluse(text2 ); label1.Text += label2.Text + +; label2.Text = ; bade = 0; private void button_minus_Click(object sender, EventArgs e) if (label2.Text != |last=) if(label2.Text!=) text2 = label2.Text; result.minus(text2 ); label1.Text += label2.Text + -; label2.Text = ; bade = 0; private void button_multiply_Click(object sender, EventArgs e) if (label2.Text != |last=) if(label2.Text!=) text2 = label2.Text; result.mutiply(text2 ); label1.Text += label2.Text + *; label2.Text = ; bade = 0; private void button_divide_Click(object sender, EventArgs e) if(label2.Text!=|last=) if(label2.Text!=) text2 = label2.Text; result.divide(text2 ); label1.Text+=label2.Text+/; label2.Text=; bade=0; private void button_equal_Click(object sender, EventArgs e) if (last != =) label1.Text += label2.Text; if (label2.Text != ) label2.Text = result.equal_1(label2.Text); if (label2.Text = ) label2.Text = result.equal_0(); else label1.Text = label2.Text; last = =; private void button_clear_Click(object sender, EventArgs e) label2.Text = ; label1.Text = ; last = ; text1 = ; text2 = ; p = 0; back = 0; bade = 0; count result = new count(); public class node public string data; public node prior, next; public node() prior = null; next = null; data = ; public class stack node rear, head; int length = 0; public int stack_length() return length; public void stack_in(string data) if (head = null) head = new node(); head.data = data; rear = head; length+; else head.next = new node(); head.next.data = data; head.next.prior = head; head = head.next; length+; public string stack_out() if (length = 0) Console.WriteLine(错误110:栈中无数据); return ; else string data = head.data; head = head.prior; length-; return data; public void clear() head = null; public string stack_gettop() if (length = 0) return ; else node cur = new node(); cur = head; return cur.data; class count string m = ; string l = ; int n = 0; stack d = new stack(); stack r = new stack(); public string chang(string text) string s = text; string a = ; if (double.Parse(s) 0) int i; for (i = 1; i s.Length; i+) a = a + si; else a = - + s; return a; public string point(string text) string s = text; string a = ; int b = 0; for (int i = 0; i 0) for (int i = 0; i s.Length - 1; i+) a = a + si; return a; public string ln(string text) string s = text; string a = ; if (s != ) a = Math.Log(double.Parse(s).ToString(); return a; public string sqrt(string text) string s = text; string a = ; if (s != ) a = Math.Sqrt(double.Parse(s).ToString(); return a; public string public_1(string text1, string b, string text) n+; m = b + ( + text + ); for (int i = 0; i n - 1; i+) m = b + ( + m + ); return text1 + m; public void public_0() m = ; public int compare(string a, string b) int c = 0; string sp = a + b; if (b = ) return 0; else switch (sp) case +: c = 1; break; case +-: c = 1; break; case -: c = 1; break; case -+: c = 1; break; case +*: c = 1; break; case -*: c = 1; break; case *: c = 1; break; case */: c = 1; break; case /: c = 1; break; case /*: c = 1; break; return c; public string run(string text) string a, b, c; double p = 0; a = d.stack_out(); b = text; c = r.stack_out(); switch (c) case +: p = double.Parse(a) + double.Parse(b); break; case -: p = double.Parse(a) - double.Parse(b); break; case *: p = double.Parse(a) * double.Parse(b); break; case /: p = double.Parse(a) / double.Parse(b); break; return p.ToString(); public void pluse(string text) string a = +; string b = r.stack_gettop(); string s = text; int m; m = compare(a, b); if (m = 1) s = run(s); pluse(s); else d.stack_in(s); r.stack_in(+); public void minus(string text) string a = -; string b = r.stack_gettop(); string s = text; int m; m = compare(a, b); if (m = 1) s = run(s); minus(s); else d.stack_in(s); r.stack_in(-); public void mutiply(string text) string a = *; string b = r.stack_gettop(); string s = text; int m; m = compare(a, b); if (m = 1) s = run(s); mutiply(s); else d.stack_in(s); r.stack_in(*); public void divide(string text) string a = /; string

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论