C#计算器程序设计课程设计报告 第2页
3 3. 功能实现 要实现需求分析中软件各功能,需要设计一些事件的功能代码。利用所需的代码,编写一些计算器的功能,使计算器更加灵活易懂。 3.1计算数字现实的功能代码 以数字“1”为例:(其余的数字同样如此) 当文本框显示为“0”,或flag(按过运算符号按钮后flag=1)后数字会替换当前数字,否则追加 private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "0" || flag == 1) //替换 { textBox1.Text = "1"; flag = 0; } else //追加 {textBox1.Text = textBox1.Text + "1"; } button17.Focus(); //焦距定于等号键,可使enter键用于等号运 } 3.2小数点设置的功能代码 文本框里最多显示一个小数点,利用IndexOf类来查找代码中小数点出现的次数,且当文本框显示为“0”,或flag(按过运算符号按钮后flag=1)后会用“0.”替换当前数字,否则追加 private void button12_Click(object sender, EventArgs e) { if (textBox1.Text.IndexOf(".") == -1) //得到的是这个字符串中字符“.”第一次出现的位置,如果没出现的话,得到的是-1,而且字符串的第一个位置是0。 { if (textBox1.Text == "0" || flag == 1) //替换 { textBox1.Text = "0."; flag = 0; } else { textBox1.Text = textBox1.Text + "."; //追加 } } button17.Focus(); } 3.3连续运算的功能代码
4 以“+”号键为例:(同样如此,-,*,\,只需改变运算符ysf的取值) 用yscs(运算次数)变量判断运算次数,次数为一次时,保存变量。次数为两次以上时,保存变量之后执行等号运算,并且连续运算,继续保存为第一个数,继续进行四则运算。 private void button13_Click(object sender, EventArgs e) //加法运算 { flag = 1; dhcs = 0; //(等号次数) yscs++; // (运算次数) if (yscs == 1) { num1 = Convert.ToDouble(textBox1.Text);//保存输入进去的第一个数 } if (yscs >= 2) { num2 = Convert.ToDouble(textBox1.Text);//保存第二次运算符前的那个数 switch (ysf) { case 1: textBox1.Text = (num1 + num2).ToString(); break; case 2: textBox1.Text = (num1 - num2).ToString(); break; case 3: textBox1.Text = (num1 * num2).ToString(); break; case 4: if (num2 == 0) { MessageBox.Show("分母不能为“0”"); break; } else {textBox1.Text = (num1 / num2).ToString(); break; } } } ysf = 1; //(运算符) num1 = Convert.ToDouble(textBox1.Text);//把第一个数与第二个数求和在保存到第一个数 button17.Focus(); //(聚焦到等号按钮)} 3.4实现键盘控制的功能代码 Kepress事件按钮,功能是锁定键盘上,当你按下键盘上的按钮时就会被追踪记录。键盘控制事件keypress绑定在form上,keypreview必须为TRUE。将键盘敲击的char型转为string型,使用switch语句判断哪个键控制哪个按钮 private void Form1_Load(object sender, EventArgs e) { this.KeyPreview = true;//此语句可使keypress语句在窗口使用 textBox1.Text = "0"; //初始化文本框 button13.Focus(); //转移光标 } private void Form1_KeyPress(object sender, KeyPressEventArgs e) //锁定到键盘上的数字和运算符 { switch (e.KeyChar.ToString())
5 { case "1": button1_Click(sender, e); break; case "2": button2_Click(sender, e); break; case "3": button3_Click(sender, e); break; case "4": button4_Click(sender, e); break; case "5": button5_Click(sender, e); break; case "6": button6_Click(sender, e); break; case "7": button7_Click(sender, e); break; case "8": button8_Click(sender, e); break; case "9": button9_Click(sender, e); break; case "0": button11_Click(sender, e); break; case ".": button12_Click(sender, e); break; case "+": button13_Click(sender, e); break; case "-": button14_Click(sender, e); break; case "*": button15_Click(sender, e); break; case "/": button16_Click(sender, e); break; case "=": button17_Click(sender, e); break; case "\b": button18_Click(sender, e); break; //退格键 case "\r": button17_Click(sender, e); break; //回车键 } if (e.KeyChar == (char)Keys.Escape) { button10_Click(sender, e); } //键盘上的ESC清零键 } 3.5删除的功能代码 使用退格键功能每次字符长度就减少一个,当字符串长度减为0之后,文本
框里显示为初始值0。 private void button18_Click(object sender, EventArgs e) //退格 { string old = textBox1.Text; textBox1.Text = old.Substring(0, old.Length - 1);//字符串长度每次减一个 if (Convert.ToDouble(textBox1.Text.Length - 1) < 0)//删完最后一个数字文本框初始化 { textBox1.Text = "0"; } button17.Focus(); } 4. 设计总结 在这次设计的过程中,我体会到要想开发一个软件,不仅需要相当的专业技术知识,还要有严谨缜密的思文能力。只有思想上清晰了,编程才有意义,否则就是白费力气。同时还要善于捕获细小的方面,因为那往往是这个程序的致命因
上一页 [1] [2]
C#计算器程序设计课程设计报告 第2页下载如图片无法显示或论文不完整,请联系qq752018766