基于MATLABGUI的简单计算器.docx
《基于MATLABGUI的简单计算器.docx》由会员分享,可在线阅读,更多相关《基于MATLABGUI的简单计算器.docx(29页珍藏版)》请在冰豆网上搜索。
![基于MATLABGUI的简单计算器.docx](https://file1.bdocx.com/fileroot1/2022-11/17/41255dbc-57f4-47f0-a72a-e60779006eae/41255dbc-57f4-47f0-a72a-e60779006eae1.gif)
基于MATLABGUI的简单计算器
基于MATLAB-GUI的简单计算器设计
题目:
计算器
完成一个简单的计算器。
要求(但不限于):
GUI上具有数字键盘输入区域,能够进行加、减、乘、除、三角函数等基础运算。
界面简洁、美观
可能需要的控件:
PushButton
EditText
Pop-upMenu
1功能介绍
本程序是一个简单的计算器程序,使用MATLAB软件编写完成。
主要具有加、减、乘、除、三角函数等基础运算,并通过GUI进行程序使用的交互。
程序交互界面如下:
图1程序的交互界面
2功能实现
首先用MATLAB GUI功能,在绘制一个动态文本框和一个文本编辑框,以及25个命令按钮,调整好各控件大小、颜色,整体布局如图所示:
备注:
软件版本:
MATLABR2011b
2.1布局GUI
1、打开MATLAB,在Guide中新建FIG文件
2、然后双击“Blank GUI(Default)”或单击OK键出现GUI窗口
3、添加按钮和动态文本框
4、根据按钮的作用及视觉效果做一定的修改
对按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在动态文本框下面。
最终设置的动态文本框为灰色,其他按钮均为蓝色。
5、保存、添加功能函数
将做好的按钮及动态文本框保存后自动弹出Editor的M文本,然后对相应的pushbutton添加功能函数。
以下是相应按钮的功能函数。
(1)数字按键编写。
在function pushbutton1_Callback(hObject, eventdata, handles)下输入:
globaljj
a=get(handles.edit1,'String');
if(strcmp(a,'0.')==1)&&(jj==0)
set(handles.edit1,'String','0.')
else
a=strcat(a,'0')
set(handles.edit1,'String',a)
end
jj=0
这是使用句柄handles指向对象edit1,并以字符串形式来存储数据文本框edit1的内容,并存储数个“0”, 然后由set(handles.edit1,'String',a)在edit1中输出。
同理,分别在function pushbutton2~10_Callback(hObject, eventdata, handles)下给1~9数字按键下编写此类程序。
(2)符号键:
在function pushbutton11_Callback(hObject, eventdata, handles)下输入:
globaljj
globalj
a=get(handles.edit1,'String')
a=strcat(a,'+')
if(jj==0)
set(handles.edit1,'String',a)
jj=1;
end
j=0;
strcat的作用是将两个字符串连接起来,就是在已输入的存储数据a后添加“+”进行运算。
然后执行set(handles.edit1,'String',a)。
符号键‘-’、‘*’、‘/’、‘.’与‘+’的运算函数类似,
“平方运算”主要是由“^2”功能实现。
functionpushbutton12_Callback(hObject,eventdata,handles)
globaljj
globalj
a=get(handles.edit1,'String')
a=strcat(a,'-')
if(jj==0)
set(handles.edit1,'String',a)
jj=1;
end
j=0;
functionpushbutton13_Callback(hObject,eventdata,handles)
globaljj
globalj
a=get(handles.edit1,'String')
a=strcat(a,'*')
if(jj==0)
set(handles.edit1,'String',a)
jj=1;
end
j=0;
functionpushbutton14_Callback(hObject,eventdata,handles)
globaljj
globalj
a=get(handles.edit1,'String')
a=strcat(a,'/')
if(jj==0)
set(handles.edit1,'String',a)
jj=1;
end
j=0;
functionpushbutton15_Callback(hObject,eventdata,handles)
globaljj
globalj
a=get(handles.edit1,'String')
a=strcat(a,'.')
if(jj==0)
set(handles.edit1,'String',a)
jj=1;
end
j=0;
functionpushbutton16_Callback(hObject,eventdata,handles)
a=get(handles.edit1,'String')
b=eval(a)
set(handles.edit1,'String',num2str(b^2))
(3)运算符“=”的编程:
a=get(handles.edit1,'string')
b=eval(a)
set(handles.edit1,'string',num2str(b))
“eval”的作用是将符号表达式转换成数值表达式再由set(handles.edit1,'string',num2str(b))
输出。
(4)按键“back”编程:
即显示一个空字符:
set(handles.edit1,'String',a)
按键“back”编程:
globaljj
a=get(handles.edit1,'String');
if(strcmp(a,'0.')==1)&(jj==0)
set(handles.edit1,'String','0.')
else
ss=char(a);
l=length(a);
a=ss(1:
l-1);
set(handles.edit1,'String',a)
end
jj=0;
(5)按键“清零”:
把动态文本框的字符清空,返回一个空格。
set(handles.edit1,'String','0')
(6)三角函数的编辑
functionpushbutton17_Callback(hObject,eventdata,handles)
a=get(handles.edit1,'String');
b=eval(a)
b=b*pi/180;
b=sin(b);
set(handles.edit1,'String',b)
b=b*pi/180是把角度转换为弧度,这样在编程环境中才能识别,sin才能起作用。
然后执行set函数,把结果输出来。
同理在cos,tan,cot的回调函数中也输入相应的函数,只需把b=sin(b);中的sin改为cos,tan,cot即可
(7)按键“()”:
在输入数据时添加括号,以便数据的优先计算。
globaljj
a=get(handles.edit1,'String')
if(strcmp(a,'0')==1)&&(jj==0)
set(handles.edit1,'String','(')
else
a=strcat(a,'(')
set(handles.edit1,'String',a)
end
jj=0
a=get(handles.edit1,'String')
s1=strcat(a,')')
set(handles.edit1,'String',s1)
2.2计算器的使用
加法运算(+):
按“=”后显示:
减法(-)、乘法(*)、除法(/)运算与加法(+)运算类似。
点号(.)、括号(()):
平方(X^2)运算:
按下(X^2)后
三角函数(sin、cos、tan、cot)运算:
按下(sin、cos、tan、cot)后
back、清零功能:
3程序总结
本程序实现简单的科学运算功能及便捷的图形化交互界面。
具有以下优点:
优点:
1、GUI内数据传递非常简便。
非常简便的实现了前台与后台、前台与前台、后台与后台之间的参数传递。
2、图形化用户交互界面简洁明了。
在制作计算器界面时操作简单,制作完成后程序的输入框直接弹出,可以直接写入,即可运行计算器。
简单的实现了设计与编程的数据传递。
4课程总结
1、通过MATLAB简单计算器的设计,初步了解了关于MATLAB图形用户界面的部分控件的使用方法。
2、MATLAB的GUI提供的很多实用的控件,方便用于设计属于自己的图形界面。
3、Matlab具有强大、丰富的内置函数和工具箱,界面设计时更加简洁、快捷与直观。
5参考文献
[1]《MATLAB语言及其在电子信息工程中的应用》王洪元主编清华大学出版社
[2]《MATLAB中GUI的应用》王洪元主编清华大学出版社
附录(主要程序)
functionvarargout=untitled66(varargin)
%UNTITLED66MATLABcodeforuntitled66.fig
%UNTITLED66,byitself,createsanewUNTITLED66orraisestheexisting
%singleton*.
%
%H=UNTITLED66returnsthehandletoanewUNTITLED66orthehandleto
%theexistingsingleton*.
%
%UNTITLED66('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinUNTITLED66.Mwiththegiveninputarguments.
%
%UNTITLED66('Property','Value',...)createsanewUNTITLED66orraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled66_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled66_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%