版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.需求分析本次的实验要求是设计一个计算器,主要功能如下:(1)实现基本数学运算(加减乘除等),而且要能进行混合运算(2)实现部分函数功能,如求平方根、求倒数等(3)能实现小数运算界面与标准计算器界面类似根据要求以及以前的学习情况,决定使用matlab进行编程。matlab强大的计算功能以及便捷的gui设计,可以较为简便的实现所要求的功能。按照要求,数据输入和输出支持小数点,支持四则混合运算,决定使用如下几个数据进行分析:(1+3)*5sqrt(4)1/2sin4用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。2.程序设计 matlab的程序设计较为简便,用gui设计出一个计算
2、器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。3.调式分析编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。4.使用说明程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个gui工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖
3、的计算器的方法,按键使用即可。5.测试结果计算结果为204sqrt=2sin4结果为1/2=0.5经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。6.心得体会本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的gui设计,操作是较为简单的,首先建立一个gui工程,然后用可视化界面,设计出计算器的大致外观,为每一个按键设置预计的功能,然后就是将对应的函数写到框架生成的程序中,然后每个按键就可以实现对应的功能。在设计的过程中还是遇到很多的困难的,首先就是程序的问题,搭建出计算器的外观以后,生成的框架程序是一个看似非常杂乱的程序,每个按键对应什
4、么功能根本看不出来,于是我在原来的工程中修改了每一个按键的名称。编程的过程中,主要就是对全局变量和句柄的控制,对相应的值赋值以后,要返回给主程序,然后就可以在static text中显示出来的。句柄是一个很重要的概念,基本所有的操作都是通过句柄实现的,matlab在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(handle)。句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。例如:set(句柄,属性名1,属性值1,属性名2,属性值2,),基本所有关联到图形操作的函数语句都是这样的格式:函数名(句柄,进行的操作),因此句柄是一个图形的名称,是对图形进行操作的媒介
5、。此外,由于matlab是全英文的操作环境,所以所有的中文路径和中文的文件夹名称均不支持,不然就会在程序中报错,虽然可以打开,但是按键不可以实现功能,这点是要特别留意的,一般情况下,直接将文件保存在默认的work路径下即可。经过老师的指点,我修改了界面,使其更加美观,可惜的是matla无法实现一个窗口的单独计算器,这不得不说是一个遗憾吧。本次试验本来打算使用vb进行编程的,但是vb的计算功能不够强大,所以在处理四则运算的时候比较麻烦,于是最后还是决定选择matlab,经过这次实习,我对matlab的操作与gui界面射界有了更深一步的理解,知道了回调函数的基本写法以及各个功能的基本函数的内容,感
6、觉受益匪浅。附录a程序以及注释(注:前面带有%的句子是程序自动生成的框架程序)%定义函数function varargout = untitled(varargin)% last modified by guide v2.5 29-jun-2009 16:06:25% begin initialization code - do not editgui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, untitled_openingfc
7、n, . gui_outputfcn, untitled_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);end% end initialization code - do not ed
8、itfunction untitled_openingfcn(hobject, eventdata, handles, varargin)handles.output = hobject;% update handles structureguidata(hobject, handles);% uiwait makes untitled wait for user response (see uiresume)% uiwait(handles.figure1);% 定义全局变量jj,shift用于数字的设定global jj shift %设置句柄,用于将按键接收的值返回给主程序set(han
9、dles.text1,string,0.); jj=0;shift=0;% - outputs from this function are returned to the command line.function varargout = untitled_outputfcn(hobject, eventdata, handles) varargout1 = handles.output;% - executes during object creation, after setting all properties.function edit1_createfcn(hobject, eve
10、ntdata, handles)% hobject handle to edit1 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until after all createfcns called% - 按键2响应function pushbutton2_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,stri
11、ng);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,2) ;elsetextstring =strcat(textstring,2);set(handles.text1,string,textstring)endjj=0;% - 按键3响应function pushbutton3_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) s
12、et(handles.text1,string,3) ;elsetextstring =strcat(textstring,3);set(handles.text1,string,textstring)endjj=0;% - 按键4响应function pushbutton4_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,4) ;elsetextstri
13、ng =strcat(textstring,4);set(handles.text1,string,textstring)endjj=0;% - 按键5响应function pushbutton5_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,5) ;elsetextstring =strcat(textstring,5);set(handles.tex
14、t1,string,textstring)endjj=0;% - 按键6响应function pushbutton6_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,6) ;elsetextstring =strcat(textstring,6);set(handles.text1,string,textstring)endjj=0;% - 按键7响应fu
15、nction pushbutton7_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,7) ;elsetextstring =strcat(textstring,7);set(handles.text1,string,textstring)endjj=0;% - 按键8响应function pushbutton8_callback(hobject, eve
16、ntdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,8) ;elsetextstring =strcat(textstring,8);set(handles.text1,string,textstring)endjj=0;% - 按键9响应function pushbutton9_callback(hobject, eventdata, handles)global jjtextstring = ge
17、t(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,string,9) ;elsetextstring =strcat(textstring,9);set(handles.text1,string,textstring)endjj=0;% - 按键0响应function pushbutton0_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textst
18、ring,0.)=1)&(jj=0) set(handles.text1,string,0.) ;elsetextstring =strcat(textstring,0);set(handles.text1,string,textstring)endjj=0;% - 按键1响应function pushbutton1_callback(hobject, eventdata, handles)global jjtextstring = get(handles.text1,string);if(strcmp(textstring,0.)=1)&(jj=0) set(handles.text1,st
19、ring,1) ;elsetextstring =strcat(textstring,1);set(handles.text1,string,textstring)endjj=0;% - 按键+响应function pushbuttonadd_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);textstring =strcat(textstring,+);set(handles.text1,string,textstring)% - 按键-响应function pushbuttonsub_c
20、allback(hobject, eventdata, handles)textstring = get(handles.text1,string);textstring =strcat(textstring,-);set(handles.text1,string,textstring)% - 按*响应function pushbuttonmul_callback(hobject, eventdata, handles)% hobject handle to pushbuttonmul (see gcbo)% eventdata reserved - to be defined in a fu
21、ture version of matlab% handles structure with handles and user data (see guidata)textstring = get(handles.text1,string);textstring =strcat(textstring,*);set(handles.text1,string,textstring)% - 按键/响应function pushbuttonchu_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);te
22、xtstring =strcat(textstring,/);set(handles.text1,string,textstring)% - 按键=响应function pushbuttonequal_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);% if(strcmp(textstring,0.)=1)% set(handles.text1,string,0.) ;% else% pushbutton20 b c = strread(textstring, %f %c %f);% cle
23、ar ans;% % switch b% case *% ans=pushbutton20*c;% case /% if (c=0)% ans=error divided by zero;% else% ans=pushbutton20/c;% end% case -% ans=pushbutton20-c;% case +% ans=pushbutton20+c;% % end%这是系统自带的一个回调函数,回调函数是已经编写好的,提供给系统调用的函数关于eval函数的理解就是 eval函数相当于将函数中的字符串,放到命令行中执行。写eval的字符串的时候注意单引号的表达就ok了textstr
24、ing = get(handles.text1,string);ans =eval(textstring);set(handles.text1,string,ans)% - 按键(响应function pushbutton18_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);if(strcmp(textstring,0.)=1) set(handles.text1,string,() ;elsetextstring =strcat(textstring,();set(handles.text
25、1,string,textstring)end% - 按键)响应function pushbutton19_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);if(strcmp(textstring,0.)=1) set(handles.text1,string,) ;elsetextstring =strcat(textstring,);set(handles.text1,string,textstring)end% - 按键sin响应function pushbuttonsin_callb
26、ack(hobject, eventdata, handles)textstring = get(handles.text1,string);%strcmp(textstring,0.)if(strcmp(textstring,0.)=1) set(handles.text1,string,0.) ;elsea = strread(textstring, %f);a=sin(a);set(handles.text1,string,a)end% - 按键cos响应function pushbuttoncos_callback(hobject, eventdata, handles)textstr
27、ing = get(handles.text1,string);if(strcmp(textstring,0.)=1) set(handles.text1,string,0.) ;elsea = strread(textstring, %f);a=cos(a);set(handles.text1,string,a)end% - executes on button press in pushbutton22.textstring = get(handles.text1,string);%strcmp(textstring,0.)if(strcmp(textstring,0.)=1) set(h
28、andles.text1,string,0.) ;elsea = strread(textstring, %f);a=0-a;set(handles.text1,string,a)end% - 按键clear响应function pushbuttoncl_callback(hobject, eventdata, handles)set(handles.text1,string,0.) ;% - 按键x2响应function pushbuttonchengfang_callback(hobject, eventdata, handles)textstring = get(handles.text
29、1,string);if(strcmp(textstring,0.)=1) set(handles.text1,string,0.) ;elsea = strread(textstring, %f);a=a*a;set(handles.text1,string,a)end% - 按键sqrt响应function pushbuttonsqrt_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);if(strcmp(textstring,0.)=1) set(handles.text1,string
30、,0.) ;elsea = strread(textstring, %f);a=sqrt(a);set(handles.text1,string,a)end% - 按键.响应function pushbuttonnode_callback(hobject, eventdata, handles)global jj textstring = get(handles.text1,string);if(strcmp(textstring,0.)=1) set(handles.text1,string,0.) ; jj=1;elsetextstring =strcat(textstring,.);set(h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年企业云计算服务合同
- 2024家庭解体标准分割合同书版
- 2024年度住宅区围墙修建工程协议版B版
- 2024年度公司员工餐厅就餐服务协议版B版
- 2024年度分手后品牌使用权分配协议
- 2024年度二手汽车买卖合同及质保服务条款3篇
- 2024发起人协议书及公司章程
- 2024年专业食用菌菌种交易协议版B版
- 2024年居间服务协议法律解释要点
- 2024年城市绿化苗木供应合同
- 店长薪酬绩效方案(门店店长薪酬绩效考核实施方案)
- GB/T 44351-2024退化林修复技术规程
- 乐理知识考试题库130题(含答案)
- 第10课《人类社会及其发展规律》第1框《人类社会的存在与发展》同步课堂课件-【中职专用】《哲学与人生》
- 24春国家开放大学《教育学》期末大作业
- MOOC 自然保护与生态安全:拯救地球家园-暨南大学 中国大学慕课答案
- 2025年蛇年春联带横批-蛇年对联大全新春对联集锦
- 小学六年级数学计算题100道(含答案)
- 《回望》少年时金宇澄(精编版)
- 康复科常见病的康复流程
- API 610-2021 石油、石化和天然气工业用离心泵中文第九版
评论
0/150
提交评论