课程设计论文基于matlab的计算器编程附代码模板文档格式.docx
《课程设计论文基于matlab的计算器编程附代码模板文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计论文基于matlab的计算器编程附代码模板文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
Sin4
用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。
2.程序设计
Matlab的程序设计较为简便,用GUI设计出一个计算器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。
3.调式分析
编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。
但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。
此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。
4.使用说明
程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个GUI工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖的计算器的方法,按键使用即可。
5.测试结果
计算结果为20
4sqrt=2
Sin4结果为
1/2=0.5
经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。
6.心得体会
本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的GUI设计,操作是较为简单的,首先建立一个GUI工程,然后用可视化界面,设计出计算器的大致外观,为每一个按键设置预计的功能,然后就是将对应的函数写到框架生成的程序中,然后每个按键就可以实现对应的功能。
在设计的过程中还是遇到很多的困难的,首先就是程序的问题,搭建出计算器的外观以后,生成的框架程序是一个看似非常杂乱的程序,每个按键对应什么功能根本看不出来,于是我在原来的工程中修改了每一个按键的名称。
编程的过程中,主要就是对全局变量和句柄的控制,对相应的值赋值以后,要返回给主程序,然后就可以在statictext中显示出来的。
句柄是一个很重要的概念,基本所有的操作都是通过句柄实现的,MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。
句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。
例如:
set(句柄,属性名1,属性值1,属性名2,属性值2,…),基本所有关联到图形操作的函数语句都是这样的格式:
函数名(句柄,进行的操作),因此句柄是一个图形的名称,是对图形进行操作的媒介。
此外,由于matlab是全英文的操作环境,所以所有的中文路径和中文的文件夹名称均不支持,不然就会在程序中报错,虽然可以打开,但是按键不可以实现功能,这点是要特别留意的,一般情况下,直接将文件保存在默认的work路径下即可。
经过老师的指点,我修改了界面,使其更加美观,可惜的是matla无法实现一个窗口的单独计算器,这不得不说是一个遗憾吧。
本次试验本来打算使用VB进行编程的,但是VB的计算功能不够强大,所以在处理四则运算的时候比较麻烦,于是最后还是决定选择matlab,经过这次实习,我对matlab的操作与GUI界面射界有了更深一步的理解,知道了回调函数的基本写法以及各个功能的基本函数的内容,感觉受益匪浅。
附录A
程序以及注释(注:
前面带有%的句子是程序自动生成的框架程序)
%定义函数
functionvarargout=untitled(varargin)
%LastModifiedbyGUIDEv2.529-Jun-200916:
06:
25
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
'
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@untitled_OpeningFcn,...
gui_OutputFcn'
@untitled_OutputFcn,...
gui_LayoutFcn'
[],...
gui_Callback'
[]);
ifnargin&
&
ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
%Endinitializationcode-DONOTEDIT
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesuntitledwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%定义全局变量jj,shift用于数字的设定
globaljjshift
%设置句柄,用于将按键接收的值返回给主程序
set(handles.text1,'
String'
'
0.'
);
jj=0;
shift=0;
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
%---Executesduringobjectcreation,aftersettingallproperties.
functionedit1_CreateFcn(hObject,eventdata,handles)
%hObjecthandletoedit1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled
%---按键2响应
functionpushbutton2_Callback(hObject,eventdata,handles)
globaljj
textString=get(handles.text1,'
if(strcmp(textString,'
)==1)&
(jj==0)
set(handles.text1,'
2'
);
textString=strcat(textString,'
textString)
%---按键3响应
functionpushbutton3_Callback(hObject,eventdata,handles)
3'
%---按键4响应
functionpushbutton4_Callback(hObject,eventdata,handles)
4'
%---按键5响应
functionpushbutton5_Callback(hObject,eventdata,handles)
5'
%---按键6响应
functionpushbutton6_Callback(hObject,eventdata,handles)
6'
%---按键7响应
functionpushbutton7_Callback(hObject,eventdata,handles)
7'
%---按键8响应
functionpushbutton8_Callback(hObject,eventdata,handles)