MATLAB GUI简易计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计说明书
题目:基于MATLAB GUI计算器的设计与实现姓名:刘文斌
学号:0904705051
指导教师:俞学兰
专业年级:机械设计及其自动化(机械电子工程方向)
09机电2班
所在学院和系:机械工程学院
完成日期:2012年8月1日
1 绪论
用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。如键盘、鼠标、跟踪球、话筒都可成为与计算机交换信息的接口。
图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
2 GUI开发环境
GUI开发环境(GUI Development Environment, GUIDE)是MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序, 它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。GUI开发环境界面如下图所示:
3.设计目的
运用MATLAB实现GUI的用户界面及程序设计。
4 题目分析
4.1程序设计的基本要求
●熟悉和掌握MATLAB程序设计方法
●掌MATLAB GUI程序设计
4.2设计内容
要求利用MATLAB GUI设计实现一个图形用户界面的简易计算器程序,要求实现:具有良好的用户图形界面,实现十进制的加、减、乘、除、乘方等简易计算。
科学计算函数,包含开方、三角函数运算功能
有清除键和退格键以及基本的0~9数字键和小数点
4.3题目分析
本题目通过MATLAB的GUI程序设计,在GUI设计中主要用到三种控件,显示框用到文本编辑框(edit text), 说明框用到静态文本框(static text),数字以及运算等按钮用到命令按钮(push button).然后在通过各个按钮的回调函数,实现简单的计算功能。
4.4设计思路
首先用MATLAB GUI功能,设置一个静态文本框和一个文本编辑框,以及命令按钮,调整好各控件的颜色、大小。通过双击各按钮来改写其属性,在M文件中编写其回调函数,最后再运行调试。
5 GUI程序设计
5.1、设计图形界面
设计步骤:
(1)在布局编辑器中布置控件,
(2)使用几何位置排列工具对控件的位置进行调整;
(3)设计控件的属性;
GUI 环境下简易计算器用户界面如下图所示:
5.2设置控件的标识
控件的标识(Tag)是对于各控件的识别,每个控件载创建时都会由开发环境自动产
生一个标识,在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置一个新的标识。
5.3各功能模块实现
GUI图形界面的功能要通过一定的设计思路和计算方法由特定的程序来实现。为了实现程序的功能,还需要在运行程序前编写一些代码,完成程序中变量的赋值、输入输出、计算及
绘图等工作。
在创建 GUI 时系统已经为其自动生成了 M 文件,该文件中包含 GUI 中控件对应的响应函数,及系统函数等。
部分具体函数代码及相关注释:
●数字键设计:0~9以及小数点都一样,只是参数不同:
%全局变量locaval用于存储用户输入的多位数值
%全局变量gloval2用于存储待处理的第二位数值
function pushbutton0_Callback(hObject, eventdata, handles)
global locaval;
a = get(handles.pushbutton1,'String');
locaval=strcat(locaval,a);
set(handles.text1,'String',locaval);
global gloval2
gloval2=locaval;
guidata(hObject, handles);
●运算符按钮处理“+、-、*、/ ”范例
%全局变量flagnum存储运算符标志
%全局变量global1用于储存第一个待处理数值
function pushbutton_chu_Callback(hObject, eventdata, handles)
a = get(handles.pushbutton10,'String');
b = get(handles.text1,'String');
set(handles.text1,'String',a);
global flagnum
global gloval1
global locaval
locaval=' ';
flagnum=1;
gloval1=b;
guidata(hObject, handles);
●等号按钮运算实现
%根据flagnum运算标志用switch决策语句实现相应计算
%需注意相应数据类型的转化
function pushbutton_dengyu_Callback(hObject, eventdata, handles)
global flagnum
global gloval2
global locaval
locaval=' ';
gloval1=str2num(gloval1);
gloval2=str2num(gloval2);
case1=gloval1/gloval2;
case2=gloval1*gloval2;
case3=gloval1-gloval2;
case4=gloval1+gloval2;
case1=num2str(case1);
case2=num2str(case2);
case3=num2str(case3);
case4=num2str(case4);
switch flagnum;
case 1
set(handles.text1,'String',case1);
case 2
set(handles.text1,'String',case2);
case 3
set(handles.text1,'String',case3);
case 4
set(handles.text1,'String',case4);
end
guidata(hObject,handles)
●Del按钮函数
%算法实现:MATLAB是用矩阵存储数据的,相应的可以取文本框的前N-1实现其功能function pushbutton_BackSpace_Callback(hObject, eventdata, handles) textString = get(handles.text1,'String');
if(strcmp(textString,'0.')==1)
set(handles.text1,'String','0.') ;
else
ss=char(textString);
l=length(textString);
textString=ss(1:l-1);
set(handles.text1,'String',textString)
end
guidata(hObject,handles)
●C清除按钮函数
%把全局变量locaval清零
function pushbutton_qinglin_Callback(hObject, eventdata, handles)