ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:721.98KB ,
资源ID:7388788      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7388788.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MATLABGUI的多功能计算器设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MATLABGUI的多功能计算器设计.docx

1、基于MATLABGUI的多功能计算器设计基于MATLAB/GUI的多功能计算器设计摘要:随着信息技术的发展,数据变得越来越繁杂,针对数据的运算也越来越频繁,计算器在我们日常生活学习中扮演越来越重要角色。本文基于MATLAB设计的GUI多功能计算器,包括三部分:简易计算器、科学计算器和程序员计算器。其中,简易计算器包括了常用的加减乘除;科学计算器在加减乘除上,添加了正余弦、阶乘和对数等常用的数学计算;程序员计算器包括了二进制、八进制、十六进制的相互转换和二进制的与、或和异或等逻辑运算。此多功能计算器改进了以前功能单一的计算器,具有较强的实用性。关键词:MATLAB;GUI ;多功能计算器Desi

2、gn of Multi FunctionCalculator Based on MATLAB/GUIAbstract:With the development of information technology, the data become more and more complicated, according to data operations have become increasingly frequent, the calculator is playing a more and more important role in learning in our daily life

3、. In this paper, MATLAB design of GUI based multi functional calculator, consists of three parts: a simple calculator, scientific calculator and programmers calculator. The simple calculator, including common add, subtract, multiply and divide; scientific calculator in add, subtract, multiply and di

4、vide, add the commonly used mathematical cosine, factorial and logarithm calculation; programmers calculator includes the conversion of binary, octal, hexadecimal and binary sixteen and, or and XOR logic operation. The multi-function calculator before improved single function has a strong practical.

5、Key words: MATLAB;GUI;Multi Function Calculator第一章 引言 MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂, 是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。MATLAB是当今最优秀的科技应用软件之一,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多

6、种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。MATLAB是一套高性能的数值计算和可视化软件,它作为新兴的编程语言和可视化工具,有着其他编程语言无法比拟的优势,例如Fortran语言,是一种专用于科学计算的语言,但其图形界面的功能较弱,利用其所可开发的程序,用户界面不友好,使用起来不方便,而VB、VC等可视化编程语言开发出来的程序界面友好,但由于其不是专门用于科学计算的语言,因此其科学计算功能较弱。而MATLAB同时具备这两方面的优势,既能进行科学计算,又能开发出所需要的图形界面,特别是Mathworks公司推出的MATLA

7、B6及以上版本更是加强了图形界面编程功能。MATLAB的图形用户界面(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说,MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。MATLAB的图形界面设计是通过对各种图形对象的操作

8、来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一,通过使用m文件直接动态添加控件;第二,使用GUIDE 快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。其实GUIDE创建图形用户界面的基础也是图形句柄对象,只不过是具有很好的封装,使用起来简便,而且还能够做到可视化的开发,对于一般的用户使用GUIDE创建图形用户界面应用程序已经足够了。根据情况分析,第二种可视化编辑方法更适用于本次设计,故本设计采用GUIDE快速生成界面的方法进行设计。所谓

9、的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一,输出GUI,第二,GUI编程。GUIDE实际上是一套MATLAB工具集。打开GUIDE,新建并且保存后,会生成相应的fig文件和m文件,fig文件储存有图形用户界面的外形、菜单构架等信息;m文件则储存设计的程序部分,如主程序、回调函数(Callback)等。在Layout编辑视图,可以使用如下工具:布局编辑器(Layout Edi

10、tor),对齐工具(Alignment Tool),对象属性观察器(Property Inspector),对象浏览器(Object Browser),菜单编辑器(Menu Editor)。新建一个布局,可以在新窗口中添加各种控件:静态文本(Static Text),编辑框(Edit Text),列表框(List box),滚动条(Slider),按钮(Push button),开关按钮(Toggle Button),单选按钮(Radio button),按钮组(Button Group),检查框(Check Box),弹出式菜单(Popup Menu),坐标轴(Axes),面板(Panel)

11、。每个控件的属性中都含有多个参数,对应各个参数,可以对控件的外观,位置等各方面属性进行修改。所以,对于同样一个功能的界面,设计的方法就有很多种。设计GUI界面时,应使总体界面简单大方、控件布局合理,最终达到总体界面友好的效果。本次设计主要使用可以使整体布局整齐、直观的Panel、Static Text为辅,以直接点击产生效果的Push Button为主,以可以输入和输出的Edit Text为中心展开布局。本设计中主要利用get和set两个函数进行各控件属性值的传递,实现多功能计算器的设计。为适应不同用户的使用要求,界面包含多个功能模块,功能键根据具体的功能归类,同类功能置于同一功能模块中。模块

12、的显示与隐藏可以通过“File”菜单和“Help”菜单实现。模块的初始visible属性设置为off,即不显示模块。这样用户就可以选择只打开自己所需要的模块,使界面视觉效果上更为简洁。多功能计算器包括三类计算器:简易计算器、科学计算器和程序员计算器。简易计算器实现数字的加减乘除;科学计算器实现数学函数和数字的综合运算;程序员计算器实现二进制、八进制、十进制和十六进制的转换以及二进制数之间的逻辑运算。这三类计算器适用范围不同,基本满足不同人员对于计算的需求。 第二章 总体设计 2.1总体外观软件的总体设计界面外观如图2.12.3所示。总体外观包括三部分:“简易计算器”模块、“科学计算器”模块和“

13、程序员计算器”模块。设置三类计算器所在面板(Panel)的可视性(Visible)和位置(Position)属性以及窗体的位置(Position)属性,实现通过点击菜单“File”下的菜单项“简易计算器”、“科学计算器”和“程序员计算器”或按快捷键“Ctrl+A”、“Ctrl+B”和“Ctrl+C”分别调出三类计算器的界面。图2.1 “简易计算器”界面图2.1为简易计算器的界面,简易计算器主要实现的是简单的加、减、乘、除,包括正数和负数的运算,可以进行清零,如果一个数字或符号输入错误也可以用Del键进行回退,而不用整个重新进行输入计算。图2.2 “科学计算器”界面图2.2为科学计算器的界面,它

14、拥有更强大的功能。它不仅有乘方与开方的计算,还有三角函数和反三角函数的运算,对数和取余。它基本实现了现实生活中计算器的所有功能,具有更广泛的现实意义。图2.3 “程序员计算器”界面图2.3为程序员计算器的界面,在程序员计算器中的设计中,主要着重于二进制之间的与、或、异或、反码、补码等操作的设计,这是程序员在编程时对于二进制最常见的操作。同时增加了二进制、八进制、十进制和十六进制之间的转换,这样有利于提高程序员的工作效率。2.2功能模块的调用通过菜单中的“File”和“Help”选项可以调用不同的功能模块,如图2.42.6所示。图2.4 通过菜单中的“File”“程序员计算器”选项调用“程序员计

15、算器”界面图2.4为程序员计算器的调用。简易计算器和科学计算器的调用与其类似。在多功能计算器的菜单中,有File选项和Help选项。通过File选项的下拉选项,可以调用简易计算器,科学计算器或者程序员计算器。图2.5 通过菜单中的“Help”“程序说明”选项调用“程序说明”界面图2.5为通过菜单中Help选项调出程序说明的界面。程序说明模块主要是对程序的总体设计进行说明,有利于使用者对程序总体设计的理解。图2.6 通过菜单中的“Help”“版权所有”选项调用“版权说明”界面图2.6为通过菜单中Help选项调出版权所有的界面。版权所有模块主要是对于程序的名称、制作时间和制作者等进行说明,通常是对

16、制作者的劳动成果的保护,是程序设计的必不可少的一部分。第三章 菜单设计 3.1菜单结构设计通过Menu Editor创建如图3.1所示的菜单。“File”菜单调用简易计算器、科学计算器、程序员计算器及退出;“Help”菜单调用程序说明和版权所有。图3.1 菜单结构3.2“File”菜单设计通过设置简易计算器、科学计算器和程序员计算器所在面板的可视性属性,实现点击“File”菜单下的“简易计算器”、“科学计算器”和“程序员计算器”选项调用相应的计算器模块。调用简易计算器模块时,只需设置简易计算器所在面板的可视化属性值为“on”,其他计算器的可视化属性值为“off”;设置“简易计算器”菜单项的被选

17、中(checked)属性值为“on”,其余菜单项的checked属性值为“off”。其余模块调用的原理与其类似。代码如下:function simple_Callback(hObject, eventdata, handles)set(handles.science_clc,Visible,off);set(handles.simple_clc,Visible,on);set(handles.clc_p,Visible,off); set(handles.jy_clc,Position,103.8 20.769 84.0 33.692);set(handles.simple,checked,o

18、n);set(handles.science,checked,off);set(handles.programmer,checked,off);3.3“Help”菜单设计“Help”菜单包括两个菜单项:程序说明和版权所有。由于这两个菜单项与主程序“clc_jy.fig”是通过run函数调用的,所以需要新建GUI来实现这两个功能。完成程序说明和版权所有这两个模块的设计后,点击“Help”菜单下的“程序说明”和“版权所有”选项可以实现模块的调用。代码如下:function help01_Callback(hObject, eventdata, handles)%通过“Help”菜单下的“程序说明”

19、选项调用程序说明模块的代码set(handles.help01,checked,on);set(handles.banquan,checked,off);run cscm;第四章 模块设计 4.1“简易计算器”模块设计简易计算器模块以编辑框(Edit Text)为输入和输出,按钮(Push Button)传递数字和运算符,面板(Panel)和静态文本(Static Text)进行控件的排列和说明,进行整体界面的设计。数字19与数字0的实现代码类似。数字0的实现代码如下:function pushbutton16_Callback(hObject, eventdata, handles)glob

20、al jj;textString = get(handles.answer,String);if(strcmp(textString, )=1) set(handles.answer,String,0);elsetextString =strcat(textString,0);set(handles.answer,String,textString);endjj=0;“+”运算与其他运算的代码也是一致。加法运算的代码如下:function pushbutton18_Callback(hObject, eventdata, handles)textString = get(handles.ans

21、wer,String);textString =strcat(textString,+);set(handles.answer,String,textString);“=”运算部分是最重要的,因为它接受其他控件的String属性值,通过Eval函数运算出结果,并将结果传递到Edit Text控件上,其代码如下:function pushbutton28_Callback(hObject, eventdata, handles)global ans;global ans2;global ans3;ans=get(handles.answer,String);ans2=eval(ans);str=

22、get(handles.answer,String),10;str2=,num2str(ans2);ans3=str,str2;set(handles.answer,String,ans3);完成每个控件的实现代码后,也就完成了简易计算器模块的设计。其运算截图如图4.14.3所示:图4.1 “5+3-2”的运算截图图4.2 “半径为3的圆”的面积运算截图图4.3 “3*6/2*0”的运算截图图4.14.3说明:在简易计算器中,简单的加减乘除运算完全可以通过控件来完成,基本实现了计算器的功能。4.2“科学计算器”模块设计科学计算器模块同样以Edit Text为输入和输出,Push Button传

23、递数字和运算符,Panel和Static Text进行控件的排列和说明,进行整体界面的设计。其功能键的代码大致相同,原理都是:先通过get函数获取Edit Text的String值,然后通过set函数将自身String值用strcat函数进行字符串的连接,最后使用eval函数计算出结果,并再次用set函数把结果传递给Edit Text的Sting值。退格键Del的实现代码如下:function pushbutton24_Callback(hObject, eventdata, handles)global jj;textString = get(handles.answer,String);i

24、f(strcmp(textString,0.)=1)&(jj=0)set(handles.answer,String, ) ;elsess=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.answer,String,textString)endjj=0;“sin”运算与其他运算的代码是一致的。sin运算的实现代码如下:function pushbutton90_Callback(hObject, eventdata, handles)zhengxuan=get(handles.answer2,Stri

25、ng);zhengxuan=zhengxuan,sin(;set(handles.answer2,String,zhengxuan); 完成每个控件的实现代码后,也就完成了科学计算器模块的设计。其运算截图如图4.44.6所示:图4.4 “(sin25)2+(cos25)2=1”的运算截图图4.4展示的是科学计算器中的三角函数计算,通过上示例子,可以知道科学计算器中,不只有简单的数字加减乘除,还有数学函数的运用计算,从而简化了学习中数学运算。图4.5 “5的阶乘”运算截图图4.5展示的是科学计算器中的阶乘运算,因为当数字计算量很大时,特别是求几位数的阶乘时,人工计算效率低,运用科学计算器可以提高

26、运算的速度、节约时间。图4.6 “89取余8”的运算截图图4.6为取余计算的展示,对编程人员来说,取余是比较常用的一种运算。在实际编程中,取余运算也具有广泛的应用。4.3“程序员计算器”模块设计程序员计算器模块以Edit Text为输入和输出,Push Button传递数字,Radio Button进行功能的选择,Panel和Static Text进行控件的排列和说明,进行整体界面的设计。对Radio Button编程的原理如下:通过判断其Value值是否为“1”,若为“1”,说明该单选按钮被选中;否则,说明该单选按钮未被选中。其余单选按钮的实现代码与单选按钮“二进制转十进制”类似。单选按钮“

27、二进制转十进制”的实现代码如下:function erzhuanshi_Callback(hObject, eventdata, handles)set(handles.erzhuanshi,value,1);set(handles.erzhuanba,value,0);set(handles.erzhuanshiliu,value,0);set(handles.shizhuaner,value,0);set(handles.shizhuanba,value,0);set(handles.shizhuanshiliu,value,0);if(get(handles.erzhuanshi,val

28、ue)=1) set(handles.pushbutton147,enable,off); set(handles.pushbutton146,enable,off); set(handles.pushbutton145,enable,off); set(handles.pushbutton148,enable,off); set(handles.pushbutton150,enable,off); set(handles.pushbutton151,enable,off); set(handles.pushbutton152,enable,off); set(handles.pushbutt

29、on153,enable,off);endfunction pushbutton156_Callback(hObject, eventdata, handles)if get(handles.erzhuanshi,value) option=1;elseif get(handles.erzhuanba,value) option=2;elseif get(handles.erzhuanshiliu,value) option=3;elseif get(handles.shizhuaner,value) option=4;elseif get(handles.shizhuanba,value)

30、option=5;elseif get(handles.shizhuanshiliu,value) option=6;endif(option=1) ans1=bin2dec(get(handles.answer3,String); ans2=Input:,get(handles.answer3,String),10; ans3=Output:,num2str(ans1); ans4=ans2,ans3; set(handles.answer3,String,ans4);elseif(option=2) an=bin2dec(get(handles.answer3,String); an1=d

31、ec2base(an,8); an2=Input:,get(handles.answer3,String),10; an3=Output:,num2str(an1); an4=an2,an3; set(handles.answer3,String,an4);elseif(option=3) an=bin2dec(get(handles.answer3,String); an1=dec2base(an,16); an2=Input:,get(handles.answer3,String),10; an3=Output:,num2str(an1); an4=an2,an3; set(handles.answer3,String,an4);elseif(option=4) ans1=dec2bin(str2num(get(handles.answer3,String); ans2=In

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1