计算器制作实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一简易计算器的制作
一.实验要求
1.参照Windows系统提供的计算器功能,制作一个自己的计算器,至少能完成数据的加减乘除的基本功能。
2.控件的焦点以及Tab键的设置和使用
3.多个控件(按钮)事件的共享
4.键盘的事件的应用
二. 设计思路
1.创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗
口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。
设置两个textBox,一个显示表达式,一个显示运算结果。
2数字1-9,小数点,运算符号的按键的事件处理都是在textBox1中分别添加相对应的数字字符,把数字当成是字符串处理。用赋值语句进行添加。每次点击后textBox1的显示内容变为一个新的表达式。
3四则运算时采用compute方法直接计算表达式。该方法功能强大,优先级和运算规则皆宜考虑在内。但是上次计算的结果不能直接运算,利用括号的作用排除了这一问题。
4三角函数的运算,调运Math类中的方法。
5小数点,归零键,和删除键需仔细设置。
6每个运算方法均用try-catch语句处理异常,异常用MessageBox进行提示,确保程序运行正常。
三核心代码
1 数字1-9,小数点,运算符号的按键的事件处理都是在textBox1中分别添加相对应的数字字符
if (textBox1.Text != "0")
{
textBox1.Text += button8.Text;
}
else
{
textBox1.Text = button8.Text;
}
2 四则运算
{
try
{
DataTable shi = new DataTable();
textBox2.Text = pute(textBox1.Text, "").ToString();//利用Compute方法进行四则用算
textBox1.Text = "(" + textBox1.Text + ")";//为表达式加上括号,使上一步的计算结果直接参与下一步计算
}
catch (Exception err)
{
MessageBox.Show("请检查表达式, 错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
3 三角函数计算
try
{
DataTable shi = new DataTable();
String b = pute(textBox1.Text, "").ToString();
double a = double.Parse(b);
textBox2.Text = Math.Cos(a).ToString();
}//将表达式运算后的结果,进行cos运算;故可直接计算表达式
catch (Exception err)
{
MessageBox.Show("请检查表达式, 错误, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
4 小数点判定
if (textBox1.Text.Contains("."))
{
MessageBox.Show("不能有两个小数点, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}//对是否有两个小数点进行判定
else
{
if (textBox1.Text.Length != 0)
{
textBox1.Text += button20.Text;
}
else
{
textBox1.Text = "0.";//防止小数点出现在开头
}
}
5 设置后退键
int r=textBox1.Text.Length;
if (r > 1)
{
textBox1.Text = textBox1.Text.Remove(r - 1);//删除最右边的字符}
else
{
textBox1.Text = "";//只剩一个字符时直接为空?
}
}//设置后退键
6 设置归零键
textBox1.Text = "";
textBox2.Text = "";
}//归零键设置:使表达式结果为空
四程序运行后如图1 四则运算
2 上一步计算结果直接进行三角运算
五实验总结
1首次亲自做出一个计算器,感觉颇有成就感。在制作的过程中,才深刻感受到面向对象的真正含义。比
如设置小数点的代码时,需要考虑实际操作过程中的各
种情况,再逐一解决。这种设计思想的确高效快捷。
2之前只学过Java的控制台程序,故首次学习VS窗体程序感觉比较陌生。通过这次的学习有了大致的了
解,也对VS强大的功能感到震撼,比如try-catch异常
处理语句颇为实用;并产生了浓厚的兴趣,希望自己也
可以设计更多实用软件。
3觉得学习编程语言一方面需掌握一下处理基本事件的方法,如如何获得输入的字符串等;另一方面,需要
对软件本身提供的各类方法有一定映像,比如本实验中
应用的compute方法,可以提高很大效率。
4有个疑问,设置后退键时,能否设置其事件为触发键盘事件,即按下Ctrl+Z作用?还没设置成功,但会继
续探讨。