
MATLABGUI简易计算器.doc
25页综合设计型实验题 目: 基于MATLAB GUI的简易计算器 的设计与实现 组 长:李强 刘文斌 组 员:李平善 祁明星 张春锦 邵永鹏 指 导 教 师: 俞学兰 专 业 年 级: 09级机械设计制造及其自动化 (机械电子工程方向) 所在学院和系:机械工程学院 日 期: 2012年7月23日~8月3日 目 录1 绪 论 11.1 简 介 11.2 设计要求 11.3 设计任务 12分 析 22.1 题目分析 22.2 设计思路 23 GUI图形界面设计 33.1 设计步骤 33.2 用户界面设计 33.2.1 用户交互界面设计的基本原则 33.2.2 简易计算器界面设计规划 4控件属性简介 43.2.4 简易计算器界面设计 44软件设计 64.1 控件回调函数代码实现 64.1.1 数字按键 64.1.2 运算按键 74.1.3 功能按键 87总 结 10参考文献 11附录A 12附录B 16 1 绪 论1.1 简 介用户界面(或接口)是指:人与机器(或程序)之间交互作用的工具和方法。
如键盘、鼠标、话筒都可成为与计算机交换信息的接口 图形用户界面(Graphical User Interfaces,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平 在本次设计中,主要使用matlab gui来完成计算器的设计GUI开发环境是MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序, 它可以根据用户设计的GUI布局,自动生成M文件的框架,用户可以使用这一框架编制自己的应用程序。
1.2 设计要求设计要求: 基本实现计算器的四则运算以及常见的运算等1.3 设计任务以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现:具有良好的用户图形界面,实现十进制的加、减、乘、除、乘方、阶乘等简易计算;科学计算函数包含三角函数、指数函数、对数函数运算功能;有清除键和退格键以及基本的0~9数字键和小数点,以学习应用Matlab编写程序原理,加深对Matlab的学习及应用2分 析2.1 题目分析 本题目通过MATLAB的GUI程序设计,在GUI设计中主要用到三种控件,显示框用到文本编辑框(edit text) ,数字以及运算等按钮用到命令按钮(push button),界面布局用到了Panel控件,然后在通过各个按钮的回调函数,实现简单的计算功能,并通过动态文本框将结果显示给用户2.2 设计思路首先用MATLAB GUI功能,设置一个文本编辑框,以及命令按钮,调整好各控件的颜色、大小,并通过Panel控件来他们进行合理布局,做到整体布局合理紧凑然后通过双击各按钮来改写其属性,使交互界面更加人性化待人机交互界面绘制好后,生成M文件框架,并在M文件中编写其回调函数,最后再运行调试。
3 GUI图形界面设计3.1 设计步骤 (1) 在布局编辑器中布置控件;(2) 使用几何位置排列工具对控件的位置进行调整;(3) 设置控件的属性;3.2 用户界面设计 用户交互界面设计的基本原则1 易用性理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作如按钮名称应该易懂,用词准确,要与同一界面上的其他按钮易于区分2 规范性通常界面设计按Windows界面的规范,即包含“菜单条、工具栏、状态栏、滚动条、右键快捷菜单”等的标准格式,界面遵循规范化的程度越高,则易用性相应的就越好3 美观与协调性界面应该适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力4 独特性在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要尤其在商业软件流通中有着很好的迁移默化的广告效用5 快捷方式在菜单及按钮中使用快捷键可以让喜欢使用键盘的用户操作得更快一些,在Windows及其应用软件中快捷键的使用大多是一致的6 安全性在界面上通过下列方式来控制出错几率,会大大减少系统因用户人为的错误引起的破坏 简易计算器界面设计规划 1、显示屏采用动态文本编辑框edit_text,由于大家通常习惯于自左向右的显示方式,故水平放置文本框,采用浅蓝色的背景给人一种舒适的感觉,外加黑色背景的Panel控件,形成很好的立体感。
2、按键操作面板分两个区即数字键区和功能按键区,为了区别两者的背景色使用不同的颜色数字按键采用线紫色的背景色,而功能按键采用黄色的背景色,这样便于用户很快很好的定位按键,给用户很好的操作性3、对用的比较平凡的按键=号键和括号键比其他的按键要大写,这样有利于用户快速定位和方便操作4、鉴于常用计算器的界面布局为上下布置,所以该简易计算器的界面也采用了上下布置的方式最终完成的简易计算器的效果图见图13.2.3控件属性简介控件的标识(Tag)是对于各控件的识别,每个控件创建时都会由开发环境自动产生一个标识,在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置一个新的标识 String是用于设置控件所显示的字符串,Fontsize是字体大小设置属性,Foregroundcolor用于设置前景色,Backgrondcolor用于设置背景色 控件的Callback属性的取值是字符串,可以是某个M文件名或一小段MATLAB语句当用户激活控件是,应用程序就运行Callback属性定义的子程序,回调函数Callback是设计的主要部分,通过对Callback的设计可以对输入的数据进行计算处理和显示。
GUI图形界面的功能要通过一定的设计思路和计算方法由特定的程序来实现为了实现程序的功能,还需要在运行程序前编写一些代码,完成程序中变量的赋值、输入输出、计算及绘图等工作 简易计算器界面设计进入GUI环境中双击Blank GUI (Default)出现一个窗口界面,在上面布置控件并设Tag、string、fontsize、foregroundcolor和backgroundcolor等属性其形成界面如下图所示 图1 GUI环境下简易计算器用户界面4软件设计在创建 GUI 时系统已经为其自动生成了 M 文件,该文件中包含 GUI 中控件对应的响应函数,及系统函数等,然后在M文件中编写其回调函数,最后再运行调试使用说明见附录A,完整程序代码见附录B4.1 控件回调函数代码实现全局变量num1用于存储用户输入的第一位数值;全局变量num2用于存储用户输入的第二位数值;全局变量result用于存储运算结果;Flagnum功能标识符4.1.1 数字按键数字键设计:0~9、小数点、pi都一样,只是参数不同:%flagnum为5说明当前已经按下了=键,接下来将edit_display将中的string内容清空并将当前按键值传给edit_display控件。
否则将当前输入数值加于edit_display控件string内容的后面function pb0_Callback(hObject, eventdata, handles)if handles.flagnum==5 handles.flagnum=0;%恢复默认值 handles.current_str='';elsehandles.current_str=get(handles.edit_display,'string');endhandles.current_str=strcat(handles.current_str,'0');%将零输出set(handles.edit_display,'string',handles.current_str);guidata(hObject, handles); 运算按键运算符按钮(+、-、*、/ 、sin、cos、tan、log、ln、exp、^、(、))范例function pb_add_Callback(hObject, eventdata, handles)handles.current_str=get(handles.edit_display,'string');handles.current_str=strcat(handles.current_str,'+');set(handles.edit_display,'string',handles.current_str);handles.flagnum=0;guidata(hObject, handles); 取余数按钮(%)function pb_yu_Callback(hObject, eventdata, handles)global num1;str=get(handles.edit_display,'string');num1=eval(str);%计算出当前算式的结果并作为求余函数的第一个操作数set(handles.edit_display,'string','');handles.flagnum=1;%标志当前进行的是求余数运算handles.current_str='';guidata(hObject, handles); 阶乘按键(X!)s=str2num(get(handles.edit_display,'string'));rs=num2str(factorial(s));%调用计算阶乘的函数factorial()set(handles.edit_display,'string',rs);guidata(hObject, handles);等号按钮%根据flagnum运算标志用switch决策语句实现相应计算%需注意相应数据类型的转化function pb_equal_Callback(hObject, eventdata, handles)global num1;global num2;global result;switch(handles.flagnum)case 0%flagnum==0说明进行的是不是求余运。












