实验报告 编写一个简易实用的计算器。

合集下载

简单计算器实验报告

简单计算器实验报告

简单计算器实验报告简单计算器实验报告引言:在现代社会,计算器已经成为人们生活中不可或缺的工具之一。

无论是在学校、办公室还是家庭,计算器都扮演着重要的角色。

本实验旨在设计和构建一个简单的计算器,并通过实验验证其功能和准确性。

实验步骤:1. 设计计算器的外观和功能:我们首先对计算器进行了外观设计,选择了简洁、易于使用的界面。

然后确定了计算器的基本功能,包括加法、减法、乘法和除法。

2. 选择合适的硬件和软件:为了构建计算器,我们选择了合适的硬件和软件。

硬件方面,我们选用了一块Arduino开发板、液晶显示屏和按键。

软件方面,我们使用了Arduino编程语言。

3. 连接硬件和编写代码:我们将液晶显示屏和按键与Arduino开发板连接起来,并编写了相应的代码。

代码中包括了计算器的逻辑运算和界面显示。

4. 测试计算器的功能和准确性:在完成硬件连接和代码编写后,我们对计算器进行了测试。

我们输入了一系列的算术表达式,包括简单的加减乘除运算,以及复杂的多步运算。

通过与手动计算的结果进行对比,我们验证了计算器的功能和准确性。

实验结果:经过多次测试,我们的计算器表现出了良好的功能和准确性。

无论是简单的加法还是复杂的多步运算,计算器都能够正确地给出结果。

液晶显示屏清晰地显示了算术表达式和计算结果,而按键的响应速度也非常迅速。

讨论:虽然我们的计算器在功能和准确性方面表现出色,但仍有一些改进的空间。

首先,我们可以增加更多的功能,如开方、求余等。

其次,我们可以改进界面设计,使其更加美观和易于使用。

此外,我们还可以考虑加入更强大的处理器和更大的内存,以提高计算器的性能。

结论:通过本次实验,我们成功设计和构建了一个简单的计算器,并验证了其功能和准确性。

计算器在各种算术运算中表现出色,并且具有清晰的界面和快速的响应速度。

然而,我们也意识到计算器仍有改进的空间,包括增加更多功能和改进界面设计。

总的来说,本次实验为我们深入了解计算器的原理和构造提供了宝贵的经验。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告简易计算器实验报告引言:计算器是我们日常生活中常用的工具之一。

它可以帮助我们进行简单的数学运算,提高计算的效率。

在本次实验中,我们将设计并制作一台简易计算器,通过实践来掌握计算器的原理和工作原理。

实验目的:1. 了解计算器的基本原理和工作原理;2. 掌握计算器的设计和制作方法;3. 提高动手能力和创造力。

实验材料:1. 电路板;2. 按键;3. LED显示屏;4. 电容;5. 电阻;6. 电源。

实验步骤:1. 连接电路板和电源,确保电路板能够正常工作;2. 将按键连接到电路板上,用于输入数字和运算符;3. 连接LED显示屏,用于显示计算结果;4. 添加电容和电阻,用于控制电路的稳定性和电流;5. 调试电路,确保计算器能够正确运行。

实验结果:经过一番调试,我们成功制作出了一台简易计算器。

它可以进行基本的加减乘除运算,并且在LED显示屏上显示结果。

通过按键输入数字和运算符,我们可以进行各种运算,从而得到我们想要的结果。

这台计算器虽然简单,但是它的实用性和便携性都非常高。

实验分析:在本次实验中,我们主要学习了计算器的基本原理和工作原理。

计算器是通过按键输入数字和运算符,然后经过电路的计算和控制,最终在显示屏上显示结果。

在电路中,电容和电阻的作用是为了保证电路的稳定性和电流的控制。

通过这个实验,我们更加深入地了解了计算器的内部结构和工作原理。

实验总结:通过本次实验,我们成功制作了一台简易计算器,并且对计算器的原理和工作原理有了更深入的了解。

实验过程中,我们不仅提高了动手能力和创造力,还培养了解决问题的能力。

计算器作为一种常见的工具,它的设计和制作过程并不复杂,但是它的实用性和便携性却非常高,为我们的生活带来了很大的便利。

未来展望:通过这次实验,我们对计算器的原理和工作原理有了初步的了解。

在未来,我们可以进一步深入研究计算器的更高级功能和更复杂的电路设计。

同时,我们也可以将这种简易计算器的设计思想应用到其他领域,如电子设备、机器人等,从而提高我们的创造力和创新能力。

数电实验二:简易计算器(设计报告)

数电实验二:简易计算器(设计报告)

数电实验2设计报告实验名称:简易计算器 实验目的:1.熟练掌握综合逻辑电路的设计方法及调试方法2.掌握Verilog HDL 数字系统设计方法3.熟悉PLD 实验箱的结构和使用及QuartusII 软件的基本操作4.掌握采用Quartus II 软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:利用LPM 例化元件和适当的中小规模时序、组合逻辑电路设计一个4位简易计算器,实现2个4位二进制数的加、减、乘、除运算,完成主要模块的波形仿真,并将设计下载到实验箱进行功能测试。

要求:1、 用8个开关分别作为2个4位输入数据2、 运算结果用数码管显示电路设计过程:1、 设定加、减、乘、除四个LPM 例化元件加法器:2个四位二进制输入(加数、被加数),1个4位二进制输出(和)减法器:2个四位二进制输入(减数、被减数),1个4位二进制输出(差)乘法器:2个四位二进制输入(乘数、被乘数),1个8位二进制输出(积)除法器:24位二进制输出(分别代表商和余数)2、加入组合逻辑电路和4选一数据选择器,控制进行运算的种类(1)组合逻辑电路输入:功能:为了利用矩阵键盘对计算器对输入数字的加减乘除进行控制,我们画了这个组合逻辑电路,将矩阵键盘的行管脚和列管脚分别为输入后,当(1,1)位置的按键按下,则输出端输出2位2进制数11(控制减法操作),当(2,2)位置的按键按下,则输出端输出2位2进制数10(控制加法操作),当(3,3)位置的按键按下,则输出端输出2位2进制数01(控制乘法操作),当所有按键都没有按下时,输出默认为00,即控制除法操作。

(2)4选一数据选择器功能X1,y1为想要计算的两个4位2进制数,当S0,S1为11的时候,将X1,y1送入减法器输入端,当S0,S1为10的时候,将X1,y1送入加法器输入端,当S0,S1为01的时候,将X1,y1送入乘法器输入端,当S0,S1为00的时候,将X1,y1送入除法器输入端。

简单计算器—实训报告

简单计算器—实训报告

Linux应用与编程实习报告学院名称专业班级学生姓名学号指导教师山东科技大学一、实习题目: B2-简单计算器二、实习时间:19周~ 20周实习地点: J13- 128三、实习任务:实现一个简单计算器,计算器包括加、减、乘、除四种运算。

用户通过鼠标进行数据输入,输入的数据以及计算结果显示在文本框中四、小组分工说明:独立完成五、实习成绩六、指导教师对实习的评语:指导教师(签章):2015年月日目录1. 概述 -------------------------------------------------------- 42. 相关技术 -------------------------------------------------- 42.1 QT中信号和槽 -------------------------------------- 42.2 字符串输出数据组 -------- 错误!未定义书签。

3. 需求分析 -------------------------------------------------- 54. 总体设计与详细设计 ----------------------------------- 54.1 系统模块划分 --------------------------------------- 54.2 主要功能模块 --------------------------------------- 55. 编码实现 -------------------------------------------------- 6 6.测试情况说明------------------------------------------- 157. 实训中遇到的主要问题及解决方法 ---------------- 168. 实训收获与体会 ---------------------------------------- 161. 概述1.1 实训项目简介本次实训项目是应用Linux系统中的QT编译器编写一个界面简洁,操作简单的简易计算器。

简单的计算器实验报告

简单的计算器实验报告

HUNAN UNIVERSITY程序设计训练——简单的计算器报告学生姓名田博鑫学生学号 20110407110专业班级工业工程(1)班指导老师吴蓉晖2012年6月16日至2012年7月10日1.程序设计目的和要求目的:此次程序设计的目的主要是为了我们能更好的理解和熟悉C语言这门计算机课程,自己有对计算机程序设计的的初步认识。

要求:运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时利用键盘或鼠标进行相应操作。

程序基本功能要求实现完整,并有简单的验证。

在计算器运行中,输入数据时如果输入错误的情况,能够通过键盘上的退格键进行删除,并且重新输入正确的数据。

在数据输入完成,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行调整。

2.程序设计的任务和内容这个简单的计算器要求能够进行简单的四则运算,要求运用所学的知识和查阅相关的资料来完成这个简单的计算器的设计,要求这个简单的计算器尽量在windows界面下进行,计算器界面不做要求。

该简单的计算器包含有基本的四则运算、正弦函数、余弦函数、正切函数、余切函数、平方、开方,以及平均值、标准差、方差的运算。

3.程序设计说明该简单的计算器能进行基本的四则运算和乘方,开方,以及三角函数的运算。

操作需要逐步根据提示来完成所要进行的运算。

比如要进行81的开方运算的话首先在屏幕上可以看到开放运算的命令是5,所以先要输入5,然后再输入要开方的数据81可以在屏幕上看到运行的结果。

4.详细设计说明包含流程图5.程序的调试及结果调试与运行(没有错误)主界面加法运算减法运算乘法运算平方运算平均值,方差,标准差6.程序设计心得与体会本次程序设计我的是设计一个简单的计算器,我以为是很简单的,但是做起来就不是那么容易了,首先参考网上的有不怎么看懂,自己想自己做但却没有思路,就拿那个c++6.0的程序软件来说吧,刚开始的时候还不知道怎么用,只好花时间到网上去现学现卖。

计算器制作实验报告

计算器制作实验报告

实验一简易计算器的制作一.实验要求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首次亲自做出一个计算器,感觉颇有成就感。

单片机实践简易计算器实验报告

零基础DIY单片机简易计算器实践
单片机是一种很有趣的微处理器,它广泛应用于电子产品中。

学习单片机可以帮助我们更深入理解计算机原理和底层运作。

本实验将介绍如何使用单片机来制作一个简易计算器。

所需材料:
1. 单片机开发板
2. 4位7段显示器
3. 数字按键开关
4. 杜邦线
5. 电位器
6. 板子外壳
步骤1:连接电路
将数码管和数字按键开关与单片机开发板连接。

使用杜邦线将每个组件的引脚连接到开发板的相应引脚。

电位器可用于调节数码管显示的亮度。

步骤2:编写程序
使用C语言编写程序。

程序需要识别按键输入的数字和运算符,
并根据不同的情况显示计算结果。

程序中需要使用条件语句、循环语
句和函数等基本语言结构。

步骤3:测试程序
将编写好的程序上传到单片机开发板中。

测试程序的过程中要注
意按键输入的顺序和正确性。

如果按键输入错误,程序需要能够正确
地识别并给出错误提示。

步骤4:完成外壳
将单片机开发板和数码管装进铝盒中,并将数字按键开关与外壳
相连。

在外壳上打开一个窗口,以便能看到数码管和按键。

为了美观,可以涂上一些喜欢的颜色或加上小贴纸等装饰。

通过这个实验,我们深入了解了单片机的基本原理和运作方式,
掌握了C语言编程语言基础知识,并制作了一个实用的计算器。

在实
践中,我们不仅锻炼了问题解决能力和动手能力,还增强了对电子产
品的兴趣和信心。

实验报告编写一个简易实用的计算器。

开课实验室:现代信息交流中心40*开课时间:2012年**月**日实验报告:年月日学院名称年级、专业、班学号姓名同组姓名无课程名称Java程序设计实验项目名称四、Java图形用户界面开发指导教师尉斌实验类型验证□综合□设计√创新□成绩教师评语教师签名:年月日一、实验目的:熟悉Java图形用户界面的开发原理与技术,包括各种组件和容器技术。

二、实验内容:编写一个简易实用的计算器。

三、源代码清单:package exp3;import Result extends Panel {TextField tf;R esult() {tf = new TextField("0", 25);add(tf);}}class Key extends Panel {B utton backSpace, clearEnter, cancel,lBracket,rBracket;B utton one, two, three, four, five, six, seven, eight, nine, zero;B utton add, subtract, multiplay, divide;B utton sqrt, reciprocal, mod;B utton positiveAndNegative, point, equal;K ey() {setLayout(new GridLayout(5, 5));backSpace = new Button("←");(new Color(255, 0, 0));add(backSpace);clearEnter = new Button("CE");add(clearEnter);cancel = new Button("C");(new Color(255, 0, 0));add(cancel);lBracket =new Button("(");add(lBracket);rBracket =new Button(")");add(rBracket);seven = new Button("7");add(seven);eight = new Button("8");add(eight);nine = new Button("9");add(nine);divide = new Button("/");add(divide);sqrt = new Button("sqrt");add(sqrt);four = new Button("4");add(four);five = new Button("5");add(five);six = new Button("6");add(six);multiplay = new Button("*");add(multiplay);mod = new Button("%");add(mod);one = new Button("1");add(one);two = new Button("2");add(two);three = new Button("3");add(three);subtract = new Button("-");add(subtract);reciprocal = new Button("1/x");add(reciprocal);zero = new Button("0");add(zero);positiveAndNegative = new Button("+/-");add(positiveAndNegative);point = new Button(".");add(point);add = new Button("+");add(add);equal = new Button("=");add(equal);}}public class Calculator extends Applet implements ActionListener { Result result = new Result();K ey key = new Key();boolean isInit = true;S tring operation = "";f loat theFirstNum = 0;f loat theSecondNum = 0;float f = 0; == -1) {+ ".");isInit = false;}}if () == {theFirstNum = operation = "add";isInit = true;}if () == {theFirstNum = operation = "subtract";}if () == {theFirstNum = operation = "multiplay";isInit = true;}if () == {theFirstNum = operation = "divide";isInit = true;}if () == {theFirstNum = operation = "mod";isInit = true;}if () == {theFirstNum = isInit = true; }if () == {if "0"))"Error");else {theFirstNum = / theFirstNum));isInit = true;}}if () == {if "0")) {}else {if "-"))else"-" + }}if () == {theSecondNum = if ("")) {"0");}if ("add"))+ theSecondNum));if ("subtract"))- theSecondNum));* theSecondNum));if ("divide")) {if "0"))"Error");else.valueOf(theFirstNum / theSecondNum));}if ("mod")) {if "0"))"Error");else.valueOf(theFirstNum % theSecondNum));}isInit = true;theFirstNum = 0;theSecondNum = 0;operation = "";}if () == {if "0")){}else {if == 1) {"0");isInit = true;} else- 1));}}if () == {"0");isInit = true;}if () == {"0");theFirstNum = 0;theSecondNum = 0;operation = "";isInit = true;}if () == {f = theFirstNum; alueOf(theFirstNum / theSecondNum));}if "0"))"Error");else.valueOf(theFirstNum % theSecondNum));}theFirstNum = f; //把f再重新赋给第一个数operation = s; // 把s再重新赋给运算符号}}}四、运行结果:(给出运行结果贴图)。

计算器设计实验报告

计算器设计实验报告《计算器设计实验报告》摘要:本实验旨在设计一个简单的计算器,并测试其功能和准确性。

实验过程中,我们使用了基本的电子元件和逻辑门电路来实现计算器的各种功能。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

引言:计算器是现代生活中不可或缺的工具,它能够帮助人们进行各种数学运算,提高工作和学习效率。

在本实验中,我们将设计一个简单的计算器,并测试其功能和准确性。

通过这个实验,我们可以更深入地了解计算器的原理和设计,为今后的电子电路设计和实验打下基础。

材料和方法:1. 电子元件:逻辑门、电阻、电容、LED等2. 电路板和连接线3. 电源和示波器4. 计算器设计图纸和电路原理图实验步骤:1. 根据设计图纸和电路原理图,连接各种电子元件,组装成一个计算器电路。

2. 使用电源给电路供电,并使用示波器测试电路的输出波形和稳定性。

3. 进行加减乘除等运算测试,记录计算器的准确性和稳定性。

4. 对计算器进行长时间稳定性测试,观察其在长时间使用中的表现。

实验结果:经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

电路的输出波形清晰,没有明显的波动和噪声。

在长时间稳定性测试中,计算器表现良好,没有出现明显的故障和失效现象。

讨论:通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

在今后的学习和工作中,我们可以根据这些知识和技能,设计和制作更复杂和功能更强大的计算器和其他电子设备。

结论:本实验设计了一个简单的计算器,并测试了其功能和准确性。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过这个实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

数电实验简易计算器

北京邮电大学数电综合实验报告题目:简易计算器学院:信息与通信工程学院班级:学号:班内序号:姓名:数字电路综合实验报告简易计算器一、实验课题及任务要求设计并实现一个简易计算器。

基本要求:1.利用4X4 小键盘作为输入,包括:数字键0-9,清除键,等号键及‘+’‘-’‘*’运算符号键;2.实现输入为99 以内自然数的加、减、乘运算;3.能够实现多次连续计算(无优先级,从左到右计算结果),如:12+34×2-78=14;4.最大结果为99999(五位),溢出报警;5.用数码管显示输入的数字和结果,最左侧数码管用来表示数字的正负,其他五位数码管表示结果;结果的绝对值大于99999时,数码管显示‘Error’。

提高要求:1.实现输入为9999 以内自然数的加、减法;2.除法运算,不能除尽时小数保留1 位有效数字;3.能够区分运算优先级(先乘除,后加减),如:12+34×2-78=2 ;4.自拟其他功能。

二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:分频器模块,键盘扫描模块,防抖模块,控制模块,数码管模块,报警模块。

VHDL文件devider包括分频器模块,keyboard包括键盘扫描模块,datain 包括防抖模块,控制模块,数码管模块,报警模块。

1.分频器模块系统时钟是50MHz,利用分频器得到25赫兹的时钟用于键盘扫描;100赫兹的时钟用于键盘去抖;1000赫兹的时钟用于数码管显示。

2.键盘扫描模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别。

键盘扫描的实现过程如下:对于4×4键盘,连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可。

为了完成这一识别过程,在时钟的上升沿输出列扫描信号其中一列输出低电平,另外三列输出高电平;在时钟的下降沿读入行值,当四行全为1时,表明无键按下;若某一列的行值为0,表示该行有键被按下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开课实验室:现代信息交流中心40*开课时间:2012年**月**日实验报告:年月日一、实验目的:熟悉Java图形用户界面的开发原理与技术,包括各种组件和容器技术。

二、实验内容:编写一个简易实用的计算器。

三、源代码清单:package exp3;import java.applet.Applet;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Color;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;class Result extends Panel {TextField tf;Result() {tf = new TextField("0", 25);add(tf);}}class Key extends Panel {Button backSpace, clearEnter, cancel,lBracket,rBracket;Button one, two, three, four, five, six, seven, eight, nine, zero;Button add, subtract, multiplay, divide;Button sqrt, reciprocal, mod;Button positiveAndNegative, point, equal;Key() {setLayout(new GridLayout(5, 5));backSpace = new Button("←");backSpace.setForeground(new Color(255, 0, 0));add(backSpace);clearEnter = new Button("CE");clearEnter.setForeground(new Color(255, 0, 0));add(clearEnter);cancel = new Button("C");cancel.setForeground(new Color(255, 0, 0));add(cancel);lBracket =new Button("(");add(lBracket);rBracket =new Button(")");add(rBracket);seven = new Button("7");add(seven);eight = new Button("8");add(eight);nine = new Button("9");add(nine);divide = new Button("/");add(divide);sqrt = new Button("sqrt");add(sqrt);four = new Button("4");add(four);five = new Button("5");add(five);six = new Button("6");add(six);multiplay = new Button("*");add(multiplay);mod = new Button("%");add(mod);one = new Button("1");add(one);two = new Button("2");add(two);three = new Button("3");add(three);subtract = new Button("-");add(subtract);reciprocal = new Button("1/x");add(reciprocal);zero = new Button("0");add(zero);positiveAndNegative = new Button("+/-");add(positiveAndNegative);point = new Button(".");add(point);add = new Button("+");add(add);equal = new Button("=");add(equal);}}public class Calculator extends Applet implements ActionListener { Result result = new Result();Key key = new Key();boolean isInit = true;String operation = "";float theFirstNum = 0;float theSecondNum = 0;float f = 0;// 用于括号计算时的使用String s="";// 用于括号计算时的使用public void init() {setLayout(new BorderLayout());add("North", result);add("Center", key);key.add.addActionListener(this);key.divide.addActionListener(this);key.eight.addActionListener(this);key.equal.addActionListener(this);key.five.addActionListener(this);key.four.addActionListener(this);key.mod.addActionListener(this);key.multiplay.addActionListener(this);key.nine.addActionListener(this);key.one.addActionListener(this);key.point.addActionListener(this);key.positiveAndNegative.addActionListener(this);key.reciprocal.addActionListener(this);key.seven.addActionListener(this);key.six.addActionListener(this);key.sqrt.addActionListener(this);key.subtract.addActionListener(this);key.three.addActionListener(this);key.two.addActionListener(this);key.zero.addActionListener(this);key.backSpace.addActionListener(this);key.cancel.addActionListener(this);key.clearEnter.addActionListener(this);key.lBracket.addActionListener(this);key.rBracket.addActionListener(this);}public void actionPerformed(ActionEvent e) {if (e.getSource() == key.one) {if (isInit) {result.tf.setText("1");isInit = false;} else {result.tf.setText(result.tf.getText() + "1");}if (e.getSource() == key.two) {if (isInit) {result.tf.setText("2");isInit = false;} else {result.tf.setText(result.tf.getText() + "2");}}if (e.getSource() == key.three) {if (isInit) {result.tf.setText("3");isInit = false;} else {result.tf.setText(result.tf.getText() + "3");}}if (e.getSource() == key.four) {if (isInit) {result.tf.setText("4");isInit = false;} else {result.tf.setText(result.tf.getText() + "4");}}if (e.getSource() == key.five) {if (isInit) {result.tf.setText("5");isInit = false;} else {result.tf.setText(result.tf.getText() + "5");}}if (e.getSource() == key.six) {if (isInit) {result.tf.setText("6");isInit = false;} else {result.tf.setText(result.tf.getText() + "6");}if (e.getSource() == key.seven) {if (isInit) {result.tf.setText("7");isInit = false;} else {result.tf.setText(result.tf.getText() + "7");}}if (e.getSource() == key.eight) {if (isInit) {result.tf.setText("8");isInit = false;} else {result.tf.setText(result.tf.getText() + "8");}}if (e.getSource() == key.nine) {if (isInit) {result.tf.setText("9");isInit = false;} else {result.tf.setText(result.tf.getText() + "9");}}if (e.getSource() == key.zero) {if(result.tf.getText().equals("0")) {} else {result.tf.setText(result.tf.getText() + "0");}}if (e.getSource() == key.point) {if (result.tf.getText().indexOf(".") == -1) {result.tf.setText(result.tf.getText() + ".");isInit = false;}}if (e.getSource() == key.add) {theFirstNum = Float.parseFloat(result.tf.getText());operation = "add";isInit = true;}if (e.getSource() == key.subtract) {theFirstNum = Float.parseFloat(result.tf.getText());operation = "subtract";isInit = true;}if (e.getSource() == key.multiplay) {theFirstNum = Float.parseFloat(result.tf.getText());operation = "multiplay";isInit = true;}if (e.getSource() == key.divide) {theFirstNum = Float.parseFloat(result.tf.getText());operation = "divide";isInit = true;}if (e.getSource() == key.mod) {theFirstNum = Float.parseFloat(result.tf.getText());operation = "mod";isInit = true;}if (e.getSource() == key.sqrt) {theFirstNum = Float.parseFloat(result.tf.getText());result.tf.setText(String.valueOf((Math.sqrt(theFirstNum))));isInit = true;}if (e.getSource() == key.reciprocal) {if (result.tf.getText().equals("0"))result.tf.setText("Error");else {theFirstNum = Float.parseFloat(result.tf.getText());result.tf.setText(String.valueOf(1 / theFirstNum));isInit = true;}}if (e.getSource() == key.positiveAndNegative) {if (result.tf.getText().equals("0")) {}else {if (result.tf.getText().startsWith("-"))result.tf.setText(result.tf.getText().substring(1));elseresult.tf.setText("-" + result.tf.getText());}}if (e.getSource() == key.equal) {theSecondNum = Float.parseFloat(result.tf.getText());if (operation.equals("")) {result.tf.setText("0");}if (operation.equals("add"))result.tf.setText(String.valueOf(theFirstNum + theSecondNum));if (operation.equals("subtract"))result.tf.setText(String.valueOf(theFirstNum - theSecondNum));if (operation.equals("multiplay"))result.tf.setText(String.valueOf(theFirstNum * theSecondNum));if (operation.equals("divide")) {if (result.tf.getText().equals("0"))result.tf.setText("Error");elseresult.tf.setText(String.valueOf(theFirstNum / theSecondNum));}if (operation.equals("mod")) {if (result.tf.getText().equals("0"))result.tf.setText("Error");elseresult.tf.setText(String.valueOf(theFirstNum % theSecondNum));}isInit = true;theFirstNum = 0;theSecondNum = 0;operation = "";}if (e.getSource() == key.backSpace) {if (result.tf.getText().equals("0")){}else {if (result.tf.getText().length() == 1) {result.tf.setText("0");isInit = true;} elseresult.tf.setText(result.tf.getText().substring(0,result.tf.getText().length() - 1));}}if (e.getSource() == key.clearEnter) {result.tf.setText("0");isInit = true;}if (e.getSource() == key.cancel) {result.tf.setText("0");theFirstNum = 0;theSecondNum = 0;operation = "";isInit = true;}if (e.getSource() == key.lBracket) {f = theFirstNum; // 把第一个数赋给fs = operation; // 把运算符号赋给stheFirstNum = 0;theSecondNum = 0;operation = "";isInit = true; //回到初始化,再次输入的数值为新的开始,但文本域内容不变}if (e.getSource() == key.rBracket) {/*** 同"="触发的结果大致相同*/theSecondNum = Float.parseFloat(result.tf.getText());if (operation.equals("")) {result.tf.setText("0");}if (operation.equals("add"))result.tf.setText(String.valueOf(theFirstNum + theSecondNum));if (operation.equals("subtract"))result.tf.setText(String.valueOf(theFirstNum - theSecondNum));if (operation.equals("multiplay"))result.tf.setText(String.valueOf(theFirstNum * theSecondNum));if (operation.equals("divide")) {if (result.tf.getText().equals("0"))result.tf.setText("Error");elseresult.tf.setText(String.valueOf(theFirstNum / theSecondNum));}if (operation.equals("mod")) {if (result.tf.getText().equals("0"))result.tf.setText("Error");elseresult.tf.setText(String.valueOf(theFirstNum % theSecondNum));}theFirstNum = f; //把f再重新赋给第一个数operation = s; // 把s再重新赋给运算符号}}}四、运行结果:(给出运行结果贴图)。

相关文档
最新文档