计算器设计实验报告
- 格式:docx
- 大小:3.22 KB
- 文档页数:2
简单计算器实验报告简单计算器实验报告引言:在现代社会,计算器已经成为人们生活中不可或缺的工具之一。
无论是在学校、办公室还是家庭,计算器都扮演着重要的角色。
本实验旨在设计和构建一个简单的计算器,并通过实验验证其功能和准确性。
实验步骤:1. 设计计算器的外观和功能:我们首先对计算器进行了外观设计,选择了简洁、易于使用的界面。
然后确定了计算器的基本功能,包括加法、减法、乘法和除法。
2. 选择合适的硬件和软件:为了构建计算器,我们选择了合适的硬件和软件。
硬件方面,我们选用了一块Arduino开发板、液晶显示屏和按键。
软件方面,我们使用了Arduino编程语言。
3. 连接硬件和编写代码:我们将液晶显示屏和按键与Arduino开发板连接起来,并编写了相应的代码。
代码中包括了计算器的逻辑运算和界面显示。
4. 测试计算器的功能和准确性:在完成硬件连接和代码编写后,我们对计算器进行了测试。
我们输入了一系列的算术表达式,包括简单的加减乘除运算,以及复杂的多步运算。
通过与手动计算的结果进行对比,我们验证了计算器的功能和准确性。
实验结果:经过多次测试,我们的计算器表现出了良好的功能和准确性。
无论是简单的加法还是复杂的多步运算,计算器都能够正确地给出结果。
液晶显示屏清晰地显示了算术表达式和计算结果,而按键的响应速度也非常迅速。
讨论:虽然我们的计算器在功能和准确性方面表现出色,但仍有一些改进的空间。
首先,我们可以增加更多的功能,如开方、求余等。
其次,我们可以改进界面设计,使其更加美观和易于使用。
此外,我们还可以考虑加入更强大的处理器和更大的内存,以提高计算器的性能。
结论:通过本次实验,我们成功设计和构建了一个简单的计算器,并验证了其功能和准确性。
计算器在各种算术运算中表现出色,并且具有清晰的界面和快速的响应速度。
然而,我们也意识到计算器仍有改进的空间,包括增加更多功能和改进界面设计。
总的来说,本次实验为我们深入了解计算器的原理和构造提供了宝贵的经验。
简易计算器实验报告简易计算器实验报告引言:计算器是我们日常生活中常用的工具之一。
它可以帮助我们进行简单的数学运算,提高计算的效率。
在本次实验中,我们将设计并制作一台简易计算器,通过实践来掌握计算器的原理和工作原理。
实验目的:1. 了解计算器的基本原理和工作原理;2. 掌握计算器的设计和制作方法;3. 提高动手能力和创造力。
实验材料:1. 电路板;2. 按键;3. LED显示屏;4. 电容;5. 电阻;6. 电源。
实验步骤:1. 连接电路板和电源,确保电路板能够正常工作;2. 将按键连接到电路板上,用于输入数字和运算符;3. 连接LED显示屏,用于显示计算结果;4. 添加电容和电阻,用于控制电路的稳定性和电流;5. 调试电路,确保计算器能够正确运行。
实验结果:经过一番调试,我们成功制作出了一台简易计算器。
它可以进行基本的加减乘除运算,并且在LED显示屏上显示结果。
通过按键输入数字和运算符,我们可以进行各种运算,从而得到我们想要的结果。
这台计算器虽然简单,但是它的实用性和便携性都非常高。
实验分析:在本次实验中,我们主要学习了计算器的基本原理和工作原理。
计算器是通过按键输入数字和运算符,然后经过电路的计算和控制,最终在显示屏上显示结果。
在电路中,电容和电阻的作用是为了保证电路的稳定性和电流的控制。
通过这个实验,我们更加深入地了解了计算器的内部结构和工作原理。
实验总结:通过本次实验,我们成功制作了一台简易计算器,并且对计算器的原理和工作原理有了更深入的了解。
实验过程中,我们不仅提高了动手能力和创造力,还培养了解决问题的能力。
计算器作为一种常见的工具,它的设计和制作过程并不复杂,但是它的实用性和便携性却非常高,为我们的生活带来了很大的便利。
未来展望:通过这次实验,我们对计算器的原理和工作原理有了初步的了解。
在未来,我们可以进一步深入研究计算器的更高级功能和更复杂的电路设计。
同时,我们也可以将这种简易计算器的设计思想应用到其他领域,如电子设备、机器人等,从而提高我们的创造力和创新能力。
大学计实验报告算机一、引言计算机实验是大学计算机专业主要的实践环节之一,旨在培养学生动手能力和解决实际问题的能力。
本实验报告将介绍我在大学计算机实验课程中进行的一项实验项目,以及实验过程中的设计思路、实验方法和实验结果等。
二、实验目的本次实验的目的是设计一个简单的计算器程序,实现基本的四则运算功能。
通过这个实验,我们将学习和掌握编程语言中的基本语法、算法设计和软件开发流程等知识。
三、实验环境和工具本次实验的环境是使用C++编程语言,在Windows操作系统下进行开发。
我们使用了Visual Studio代码编辑器和编译器。
四、实验内容我们的计算器程序需要满足以下要求:1.可以进行两个整数之间的加、减、乘、除运算;2.能够处理异常输入,例如除数为0;3.对用户的输入进行合法性检查,确保输入的是数字或者合法的运算符;4.提供友好的用户界面,即使是非技术人员也能够使用;5.可以进行多次计算,直到用户主动选择退出。
五、实验设计为了实现上述要求,我们按照以下步骤进行实验设计:1.设计程序的整体架构,确定分为输入、处理和输出三个模块;2.编写输入模块的代码,读取用户的输入并进行合法性检查;3.编写处理模块的代码,根据用户输入的运算符进行相应的运算;4.编写输出模块的代码,将计算结果显示在用户界面上;5.测试程序是否能够正确处理各种输入情况,并进行错误输入的异常处理。
六、实验步骤1.创建一个新的C++项目,并设置好相关的编译选项;2.编写程序的主要逻辑,包括输入、处理和输出模块;3.编写输入模块的代码,根据用户的输入进行合法性检查;4.编写处理模块的代码,根据运算符进行相应的运算;5.编写输出模块的代码,打印出计算结果;6.进行功能测试和异常输入测试,确保程序的正确性和鲁棒性;7.对程序进行性能测试,评估程序的性能。
七、实验结果经过多次测试和调试,我们的计算器程序能够正确处理各种输入情况,并能够返回正确的计算结果。
计算器设计实验报告指导老师:张永安组长:潘文帅成员:宋王庆郭肖男常跃计算器设计实验报告一、实验目的1、通过实验了解计算器的程序代码。
2、能看懂计算器的电路原理图。
3、锻炼学生的动手实践能力。
二、实验内容设计一个简易的计算器,完成0~9999整数的一次加减乘除运算,减法运算结果可以实现计算结果的负数显示,除法运算结果为0~999并保留两位小数。
三、实验设备四、实验说明1.计算器电板图2.计算器引脚原理图3.程序代码/*************************************************程序名称:计算器设计功能:完成0~9999整数的一次加减乘除运算,减法运算结果可以实现计算结果的负数显示,除法运算结果为0~999并保留两位小数,按键音,设有清零键,首位零不显示,其它的显示"E"**************************************************/#include<AT89X51.H>unsigned char code XIANSHI[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40}; unsigned char code XIANSHIXIAOSHUDIAN[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};//带小数点//unsigned char code XIANSHIWRONG[]={0x00,0x00,0x00,0x00,0x79};//错误时的显示// unsigned char code SAOMIAO[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共阴极扫描码表格//unsigned char DANYUAN[8]={0,0,0,0,0,0,0,0};unsigned long CUNZHI;unsigned long SHU[2]={0,0};unsigned char k,key,m,n;/*************************************************SIGN 存运算符(+、-、*、/)FLAG 用第几个数组,(出现非运算符前为0,出现运算符后为1)WRONG 输入多于4个时错误标志位(0对、1错)COUNT 输入0~9数字的个数SIZE 减数大于被减数时为1SIGNCOUNT 输入运算符的个数XIAOSHU 存一位小数的值DIVKEY 运算除法时置为1**************************************************/unsigned char SIGN,FLAG,WRONG,COUNT,SIZE,SIGNCOUNT,XIAOSHU[2],DIVKEY;/*************************************************程序名称:显示程序入口参数:无功能:实现将CUNZHI中的值进行动态数码显示局部变量:i,j,q全局变量:CUNZHI,DANYUAN[0],DANYUAN[1],DANYUAN[2],DANYUAN[3] 所用端口功能:P1口送显示码P2口公共端扫描返回值:无**************************************************/void disp(void){ unsigned char i,j,p,q;/**************错误时的显示*************/if(WRONG==1){ for(i=0;i<5;i++){ P1=XIANSHIWRONG[i];P2=SAOMIAO[i];for(j=6;j>0;j--) //动态显示延时程序//for(q=248;q>0;q--);}}else{ if(DIVKEY==1){ DANYUAN[0]=XIAOSHU[1];DANYUAN[1]=XIAOSHU[0];DANYUAN[2]=CUNZHI%10;DANYUAN[3]=CUNZHI/10%10;DANYUAN[4]=CUNZHI/100%10;DANYUAN[5]=CUNZHI/1000%10;for(p=5;p>2;p--){ if(DANYUAN[p]==0)DANYUAN[p]=16;else break;}for(i=0;i<5;i++){ if(i==2) //倒数第三位为小数位//{ P1=XIANSHIXIAOSHUDIAN[DANYUAN[i]];}else{P1=XIANSHI[DANYUAN[i]];}P2=SAOMIAO[i];for(j=6;j>0;j--) //动态显示延时程序//for(q=248;q>0;q--);}}else{DANYUAN[0]=CUNZHI%10;DANYUAN[1]=CUNZHI/10%10;DANYUAN[2]=CUNZHI/100%10;DANYUAN[3]=CUNZHI/1000%10;/*******************首位为零不显示*************/for(p=3;p>0;p--) //首位为零不显示//{ if(DANYUAN[p]==0)DANYUAN[p]=16;else break;}/**************为负数时的显示*****************/if(SIZE==1) //为负数第五位数码管显示"-"//{ DANYUAN[4]=17;}else //第五位数码管不显示//{ DANYUAN[4]=16;}for(i=0;i<5;i++){ P1=XIANSHI[DANYUAN[i]];P2=SAOMIAO[i];for(j=6;j>0;j--) //动态显示延时程序//for(q=248;q>0;q--);}}}}/**************************************************程序名称:处理程序入口参数:key功能:实现加减乘除运算全局变量:key、CUNZHI、SHU[0]、SHU[1]、FLAG、SIGN返回值:无**************************************************/void CHULI(key){unsigned char i,j;/*****************声音“嘀”*****************/TR0=1;for(i=200;i>0;i--) //延时100ms//for(j=248;j>0;j--);TR0=0;/*****************************************/if(key==15) //按键为清除键//{ CUNZHI=0;SHU[0]=0;SHU[1]=0;COUNT=0;WRONG=0;SIZE=0;SIGNCOUNT=0;XIAOSHU[0]=0;XIAOSHU[1]=0;DIVKEY=0;}else if((key>=0)&&(key<=9)) //按键为数字键// { COUNT++; //按下的数字键的次数///*****************加权运算*****************/SHU[FLAG]=SHU[FLAG]*10+key; //加权运算//CUNZHI=SHU[FLAG];}else if((key>=10)&&(key<=13)) //按键为运算键//{ SIGNCOUNT++;SIGN=key;FLAG++;COUNT=0;}else if(key==14) //按键为等于键//{ switch(SIGN){ case 10:CUNZHI=SHU[0]+SHU[1];break;case 11:{ if(SHU[0]>SHU[1]){ CUNZHI=SHU[0]-SHU[1];}else{ SIZE=1;CUNZHI=SHU[1]-SHU[0];}}break;case 12:CUNZHI=SHU[0]*SHU[1];break;case 13:DIVKEY=1;CUNZHI=SHU[0]*100/SHU[1];XIAOSHU[1]=CUNZHI%10;XIAOSHU[0]=CUNZHI/10%10;CUNZHI/=100;if(CUNZHI>999){ WRONG=1;}break;}}if((COUNT==5)||(SIGNCOUNT>1)||(CUNZHI>9999)) //输入数字键大于5时将WRONG置1//{ WRONG=1;}}/**************************************************程序名称:键盘扫描入口参数:无功能:进行键盘扫描全局变量:k局部变量:i,j调用函数:CHULI(key)返回值:无**************************************************/void JIANPAN(void){ unsigned char i,j;P3=0xff;P3_4=0; //扫描P3.4这条线上的四个按键//k=P3;k=k&0x0f;if(k!=0x0f) //看P3.4这条线上是否真的有按键按下//{ for(i=20;i>0;i--) //延时一段时间//for(j=248;j>0;j--);k=P3; //再判断一次//k=k&0x0f;if(k!=0x0f){ switch(k) //通过可能发生的四种可能比较看是哪个按键按下//{ case 0x0e:key=0;break;case 0x0d:key=4;break;case 0x0b:key=8;break;case 0x07:key=12;break;}k=P3;k=k&0x0f;while(k!=0x0f){ k=P3;k=k&0x0f;}CHULI(key);}}P3=0xff;P3_5=0; //扫描P3.5这条线上的四个按键// k=P3;k=k&0x0f;if(k!=0x0f) //看P3.5这条线上是否有按键按下// { for(i=20;i>0;i--) //延时等待//for(j=248;j>0;j--);k=P3; //再看一次//k=k&0x0f;if(k!=0x0f){ switch(k) //通过比较看是P3.5这条线上的哪一个按键按下// { c ase 0x0e:key=1;break;case 0x0d:key=5;break;case 0x0b:key=9;break;case 0x07:key=13;break;}k=P3;k=k&0x0f;while(k!=0x0f){ k=P3;k=k&0x0f;}CHULI(key);}}P3=0xff; //扫描P3.6这条线上的四个按键是否按下//P3_6=0;k=P3;k=k&0x0f;if(k!=0x0f){ for(i=20;i>0;i--)for(j=248;j>0;j--);k=P3;k=k&0x0f;if(k!=0x0f){ switch(k){ case 0x0e:key=2;break;case 0x0d:key=6;break;case 0x0b:key=10;break;case 0x07:key=14;break;}k=P3;k=k&0x0f;while(k!=0x0f){ k=P3;k=k&0x0f;}CHULI(key);}}P3=0xff; //扫描P3.7这条线上的四个按键是否按下//P3_7=0;k=P3;k=k&0x0f;if(k!=0x0f){ for(i=20;i>0;i--)for(j=248;j>0;j--);k=P3;k=k&0x0f;if(k!=0x0f){ switch(k){ case 0x0e:key=3;break;case 0x0d:key=7;break;case 0x0b:key=11;break;case 0x07:key=15;break;}k=P3;k=k&0x0f;while(k!=0x0f){ k=P3;k=k&0x0f;}CHULI(key);}}}/**************************************************程序名称:主程序功能:实现计算器加减乘除运算并显示全局变量:CUNZHI、FLAG、SIGN调用函数:disp()、JIANPAN()返回值:无***************************************************/void main(void){ TMOD=0X02;ET0=1;EA=1;TR0=0;TH0=(256-200)%256;TL0=(256-200)/256;CUNZHI=0;FLAG=0;SIGN=0;WRONG=0;SIZE=0;XIAOSHU[0]=0;while(1){ d isp();JIANPAN();}}/**************************************************定时中断***************************************************/void t0(void) interrupt 1 using 1{ P0_0=~P0_0;}五、实验结果首先按复位键,输入想要计算的数,进行四则运算(+ - * /)操作完成0~9999整数的一次加减乘除运算,减法运算结果可以实现计算结果的负数显示,除法运算结果为0~999并保留两位小数,按键音,设有清零键,首位零不显示,其它的显示“E”运算错误或计算延迟则有警报声提示。
C#计算器实验报告班级:2010134学号:*********姓名:***一实验目的和要求设计一个简单计算器,具有一般计算功能,能进行基本的加减乘除运算,还具有求根号,倒数等功能。
特点是能进行不同进制的运算和不同进制间的转换。
主要的工作主要是操作数与被操作数进行简单的加、减、乘、除运算来完成基本的,而且还可以进行简单的科学运算例如计算一个数的平方、开方、正弦、余弦、log、ln等操作还可以计算面积、周长、体积和表面积等。
通过新的技术和新方法来实现计算功能显示界面为Windows From窗体。
二功能模块设计标准计算器通过Windows Form窗体中的对应按钮接受用户输入数据提交对应的方法中来完成相应的功能计算再将结果显示在显示框内。
显示界面为Windows From窗体。
下面是一个简单的计算器的基本功能:1加法两个数据进行加操作可以为小数。
2减法两个数据进行减操作可以为负数相减。
3乘法两个数相乘4除法两个数相除5 倒数可以求得一个数的倒数6开方开方后的结果可以精确到16位。
科学计算器1平方接收的数相乘结果保留一位小数。
2立方接收的数相乘两次3正弦正弦结果精确度同开方。
4余弦余弦结果精确度同上。
5 LogLog运算精确到16位。
6 Ln以e为底的对数。
7 二进制二进制数的运算8 八进制八进制数的运算9 十进制十进制数的运算11 十六进制十六进制的运算12 倒数可以求得一个数的倒数13 开方开方后的结果可以精确到16位。
14 颜色可以选择输入字体的颜色三设计界面标准型科学型四详细设计过程(一)打开VS2010创建项目(二)界面设计1.进入界面2.菜单设计(1)选择VS201的菜单栏中的“视图|工具箱”单击,调出工具箱(出现在VS用户区左侧。
(2)在工具箱中选择“菜单和工具栏|MenuStrip”,拖到程序界面用户区,并根据自己的喜好在“属性窗口”(可以使用“视图|属性窗口”调出,一般在用户区右下角)设置菜单栏宽度、颜色等。
计算器实验报告一,实验目的1、学习按键扫描及LED数码管显示的设计方法。
2、设计任务及要求利用实验平台上8个LED数码管,设计可以通过键盘输入,并能显示输入相对应的数字、能够进行加,减,乘,除准确的基本运算、能够进行3位或3位的以上的乘,除运算.二,实验要求基本要求:1、可以通过键盘输入,并能显示输入相对应的数字.2、能够进行加,减,乘,除准确的基本运算、3、能够进行3位或3位的以上的乘,除运算.三,实验基本原理利用单片机实现简单计算器的加减乘除,通过键盘输入数据并在数码管上显示出数据,然后按下加减乘除任意一个键,再输入第二个数并显示,再按下等于号时,执行第一次输入的数与第二个数的加减乘除函数,并显示出最终结果。
四,实验设计分析针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。
这样,既能做到经济合理又能实现预期的功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。
程序可分为按键扫描、数码管显示输入数据、加减乘除函数,延时程序等。
运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。
首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。
这是前期准备工作。
第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要键盘扫描,输出需要显示驱动电路和数码管电路等。
第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。
第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。
题目:界面计算器学生姓名:专业:学号:指导老师:1.实验目的:设计一个简单的计算器程序,实现简单的计算功能。
2.实验内容:(1)体系设计:程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示。
(2)设计思路:1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator;2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框;3)设计按钮,并修改其相应的ID与Caption;4)选择和设置各控件的单击鼠标事件;5)为编辑框添加double类型的关联变量m_edit1;6)在calculatorDlg.h中添加math.h头文件,然后添加public成员;7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码.3.程序调试4.附录添加的public成员:double tempvalue; //存储中间变量double result; //存储显示结果的值int sort; //判断后面是何种运算:1.加法2.减法 3.乘法 4.除法int append; //判断后面是否添加数字成员初始化:CCalculatorDlg::CCalculatorDlg(CWnd* pParent/*=NULL*/): CDialog(CCalculatorDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculatorDlg)m_edit1 = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);tempvalue=0;result=0;sort=0;append=0;}各控件响应函数代码:void CCalculatorDlg::OnButton1() //按钮“1”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+1;m_edit1=result;append=0;UpdateData(FALSE);void CCalculatorDlg::OnButton2() //按钮“2”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+2;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton3() //按钮“3”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+3;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton4() //按钮“4”// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+4;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton5() //按钮“5”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+5;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton6() //按钮“6”{// TODO: Add your control notification handler codehereif(append==1)result=0;result=result*10+6;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton7() //按钮“7”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+7;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton8() //按钮“8”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+8;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton9() //按钮“9”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+9;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONzero() //按钮“0”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+0;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONequal() //按钮“=”{// TODO: Add your control notification handler code hereswitch(sort){case 1:result=result+tempvalue;break;case 2:result=tempvalue-result;break;case 3:result=result*tempvalue;break;case 4:result=tempvalue/result;break;}m_edit1=result;sort=0;append=1;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONclean() //按钮“C”{// TODO: Add your control notification handler code heretempvalue=0;result=0;m_edit1=0.0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONplus() //按钮“+”{// TODO: Add your control notification handler code heresort=1;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONminus() //按钮“-”{// TODO: Add your control notification handler code heresort=2;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONmulti() //按钮“*”{// TODO: Add your control notification handler code heresort=3;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONdiv() //按钮“/”{// TODO: Add your control notification handler code heresort=4;tempvalue=result;m_edit1=0;append=1;}10。
实验一简易计算器的制作一.实验要求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首次亲自做出一个计算器,感觉颇有成就感。
嵌入式--计算器--实验报告本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March计算器设计实验报告一、实验设计主要分工04009320 文斌:算法设计,LCD显示。
04** 张希:界面(按钮控件)设计,文件内容读取。
共同调试、完善设计。
二、程序设计实现功能效果(1)支持整数、小数基本加减乘除运算;(2)有优先级的判别计算。
优先级由高到低一次为括号运算、乘除运算、加减运算。
(3)支持键盘输入和触摸屏输入;(4)能读取指定目录下文本内容(内容为计算表达式)并计算得出结果,将内容和结果显示在LCD上。
程序任务开始后,等待键盘或触摸屏的输入。
输入键有0~9数字键、+-*/()运算符、del退格键、clear清屏键、read读指定目录文本内容并计算键、enter'='键、‘.’小数点键。
每当有字符输入时,触摸屏相应键显示“AAA”,100ms后恢复原相应按键符号,同时LCD屏幕上显示相应字符。
当输入'del'键时,屏幕显示去掉最后一位字符。
当输入'='号后,得出计算结果,结果显示于表达式的下一行。
若是除零错误,则结果显示为“/0ERROR!”。
若有非法字符(触摸点不能识别为设计按键符则视为非法字符),则结果输出为“Syntax Error!!”。
若表达式有运算符连续输入,则忽略前面的运算符,只取最后一位运算符计算,正常显示数字结果。
当输入'clear'键时,情况显示区域。
当输入'read'键时,从指定目录文本文件中读取表达式并计算。
将表达式内容和计算结果显示在LCD上。
LCD显示界面如下:三、程序算法实现1、计算算法首先将输入的0~9数字、+-*/()运算符的内容存储于一个全局变量cal[number]中,表达为中缀表达式。
用void str2repol()函数,将输入字符串cal[number]转换成逆波兰表达式并存于全局数组char repol[maxs]中。
实验报告||实验名称计算器课程名称面向对象程序设计(JAVA)||一、实验目的综合应用所学的知识分析问题、解决问题,提高实际编程能力及程序调试能力。
二、实验内容及要求用图形界面GUI编程,编写一个能够实现加减乘除的简单的计算器,要求使用监听类,还要能够连续加减,有清除功能,能够准确的计算出正确结果。
三、实验仪器与设备计算机,JDK,我用的是eclipse。
四、问题分析与系统设计问题分析:首先需要把图形界面设计出来,给组件注册监听器,转换事件信息,实现对数据的加、减、乘、除等计算器的基本的功能设计思想与设计结果:在主类Caculater中使用监听内部类 MyMonitor 对各个组件进行监听,在MyMonitor中对按键信息进行分类处理(数字,算术符号,功能键)。
数据成员主要有各个按钮以及计算器的各个状态(如初始状态等)。
成员函数有:1、对退格键的处理:backSpace() 2、对算是符号的处理:operater() 3、将数字字符串转换成数字:getDate()五、实验结果相反数、平方根等功能,能够将图形界面设计出来给注册监听器,实现界面与基本实现了简单的的加、减、乘、除以及倒数和取内部代码结合。
六、总结与体会1·我以前不清楚界面与内部代码是怎么连接的,现在知道了。
还学会简单的GUI编程,能够实现对界面进行布局2·跟c++有很大的不同,java多了许多的包,类呀,这样是编译快捷而且安全正确,学会使用了内部类,懂得了事件的响应以及如何处理事件。
3·锻炼了编程的逻辑思维,能够对数据进行逻辑的处理以及对整个程序的逻辑部署4·还知道了要想吧java学好是很难的,里面有许许多多的包,类。
要想好好运用java 就必须运用好java类包,java的简单编程只是基础,掌握系统提供的package和class 才是成为java厉害者的必经之路。
附件:源程序清单import java.awt.BorderLayout;import java.awt.Button;import java.awt.Color;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.ArrayList;import java.util.List;public class Caculator extends Frame {List<String> list = new ArrayList<String>();public static int step = 0; // 处理刚开始第一次计算的时候dataResult为零的问题private String command[] = { "BackSpace", "CE", "C" };private String normal[] = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };private String special[] = { "", "MC", "MR", "MS", "M+" };private boolean firstInput = true;private boolean legal = true;private double dataResult = 0;private String s = null;private TextField tf = new TextField();private Button bn[] = new Button[normal.length]; private Button bc[] = new Button[command.length]; private Button bs[] = new Button[special.length]; private Mymonitor mn = new Mymonitor();public static void main(String[] args) {CouterClient cc = new CouterClient();unchFrame();}public void launchFrame() {this.setLocation(200, 250);this.setBackground(Color.blue);this.setTitle("计算器");this.setSize(300, 400);this.setResizable(false);this.setLayout(new BorderLayout(2, 2));this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);}});Panel pn = new Panel(new GridLayout(4, 5, 2, 2));for (int i = 0; i < normal.length; i++) {bn[i] = new Button(normal[i]);bn[i].addActionListener(mn);pn.add(bn[i]);}Panel pc = new Panel(new GridLayout(1, 3, 2, 2));for (int i = 0; i < command.length; i++) {bc[i] = new Button(command[i]);bc[i].addActionListener(mn);pc.add(bc[i]);}Panel ps = new Panel(new GridLayout(5, 1, 2, 2));for (int i = 0; i < special.length; i++) {bs[i] = new Button(special[i]);bs[i].addActionListener(mn);ps.add(bs[i]);}Panel p = new Panel(new BorderLayout(2, 2));p.add(BorderLayout.NORTH, pc);p.add(BorderLayout.CENTER, pn);tf.setEditable(false);tf.setBackground(Color.white);this.add(BorderLayout.CENTER, p);this.add(BorderLayout.WEST, ps);this.add(BorderLayout.NORTH, tf);tf.setText("0");this.setVisible(true);this.pack();}private class Mymonitor implements ActionListener {public void actionPerformed(ActionEvent e) {s = e.getActionCommand();if (s.equals(command[2])) { // 按下了 C 键时归零计算器回到最初的状态tf.setText("0");firstInput = true;legal = true;dataResult = 0;step = 0;} else if (s.equals(command[1])) { // 按下 CE 键时,显示零tf.setText("0");firstInput = true;} else if (s.equals(command[0])) { // 按下退格键时backSpace();} else if ("0123456789.".indexOf(s) >= 0) {if (firstInput) {tf.setText(s);}if (firstInput && s.equals(".")) {tf.setText("0.");firstInput = false;} else if (!firstInput) {if (s.equals(".")) {if (tf.getText().indexOf(".") <= 0) {tf.setText(tf.getText() + s);} else {String str = (tf.getText() + s).substring(0, tf.getText().length());tf.setText(str);}} else {tf.setText(tf.getText() + s);}} else if (firstInput && !s.equals(".")) {firstInput = false;}} else {operator(s);}}}public void operator(String key) {if (key != "=")list.add(key);if (key.equals("+")) {this.dataResult += getData();} else if (key.equals("-")) {if (step == 0) {this.dataResult = getData();step++;} else {this.dataResult -= getData();}} else if (key.equals("*")) {if (step == 0) {this.dataResult = getData();step++;} else {this.dataResult *= getData();}} else if (key.equals("/")) {if (step == 0) {this.dataResult = getData();step++;} else {if (getData() == 0) {tf.setText("除数不能是0!请按C键重新开始输入");this.legal = false;} else {this.dataResult /= getData();}}} else if (key.equals("+/-")) {this.dataResult = -1 * getData();} else if (key.equals("sqrt")) {if ((this.dataResult = getData()) > 0) {this.dataResult = Math.sqrt(this.dataResult);} else {tf.setText("负数没有平方根");}} else if (key.equals("1/x")) {this.dataResult = getData();if (this.dataResult == 0) {tf.setText("0没有倒数");} else {this.dataResult = 1 / this.dataResult;}} else if (key.equals("=") && this.legal) {this.operator(list.get(list.size() - 1));this.firstInput = true;step = 0;}if (legal) {long l = (long) this.dataResult;double d;d = this.dataResult - l;if (d == 0) {tf.setText("" + l);} else {tf.setText("" + this.dataResult);}this.firstInput = true;if (key == "=")this.dataResult = 0;}}public void backSpace() {if (firstInput) {tf.setText("0");firstInput = true;} else {if (tf.getText().length() >= 1) {String temp = tf.getText().substring(0,tf.getText().length() - 1);tf.setText(temp);if (tf.getText().length() == 0) {tf.setText("0");this.firstInput = true;}}}}public double getData() {double result = 0;try {result = Double.valueOf(tf.getText()).doubleValue();} catch (NumberFormatException e) {tf.setText("0");firstInput = true;legal = true;dataResult = 0;}return result;}}。
计算器设计实验报告
《计算器设计实验报告》
摘要:
本实验旨在设计一个简单的计算器,并测试其功能和准确性。
实验过程中,我们使用了基本的电子元件和逻辑门电路来实现计算器的各种功能。
经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。
通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。
引言:
计算器是现代生活中不可或缺的工具,它能够帮助人们进行各种数学运算,提高工作和学习效率。
在本实验中,我们将设计一个简单的计算器,并测试其功能和准确性。
通过这个实验,我们可以更深入地了解计算器的原理和设计,为今后的电子电路设计和实验打下基础。
材料和方法:
1. 电子元件:逻辑门、电阻、电容、LED等
2. 电路板和连接线
3. 电源和示波器
4. 计算器设计图纸和电路原理图
实验步骤:
1. 根据设计图纸和电路原理图,连接各种电子元件,组装成一个计算器电路。
2. 使用电源给电路供电,并使用示波器测试电路的输出波形和稳定性。
3. 进行加减乘除等运算测试,记录计算器的准确性和稳定性。
4. 对计算器进行长时间稳定性测试,观察其在长时间使用中的表现。
实验结果:
经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。
电路的输出波形清晰,没有明显的波动和噪声。
在长时间稳定性测试中,计算器表现良好,没有出现明显的故障和失效现象。
讨论:
通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。
在今后的学习和工作中,我们可以根据这些知识和技能,设计和制作更复杂和功能更强大的计算器和其他电子设备。
结论:
本实验设计了一个简单的计算器,并测试了其功能和准确性。
经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。
通过这个实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。
这些知识和技能将为我们今后的学习和工作提供帮助。