版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1.需求分析本次的實驗要求是設(shè)計一個計算器,主要功能如下:(1)實現(xiàn)基本數(shù)學(xué)運算(加減乘除等),而且要能進(jìn)行混合運算(2)實現(xiàn)部分函數(shù)功能,如求平方根、求倒數(shù)等(3)能實現(xiàn)小數(shù)運算界面與標(biāo)準(zhǔn)計算器界面類似根據(jù)要求以及以前的學(xué)習(xí)情況,決定使用matlab進(jìn)行編程。matlab強大的計算功能以及便捷的gui設(shè)計,可以較為簡便的實現(xiàn)所要求的功能。按照要求,數(shù)據(jù)輸入和輸出支持小數(shù)點,支持四則混合運算,決定使用如下幾個數(shù)據(jù)進(jìn)行分析:(1+3)*5sqrt(4)1/2sin4用以檢驗是否可以進(jìn)行加減乘除四則運算、平方根、倒數(shù)、正弦的運算。2.程序設(shè)計 matlab的程序設(shè)計較為簡便,用gui設(shè)計出一個計算
2、器的模型,然后系統(tǒng)會自動生成一個框架,在框架中,寫入每一個按鍵對應(yīng)的程序就可以實現(xiàn)功能。3.調(diào)式分析編程的過程中遇到的問題不是很多,基本就是找要實現(xiàn)各個功能的子程序,通過上網(wǎng)和去圖書館,加上自己的編寫,終于實現(xiàn)了實驗要求的功能。但是有一點很重要,matlab不支持中文,所以從路徑到文件名必須是全英文的,不然就無法識別。此外,給每個按鍵命名也是很重要的,不然在生成的程序框架里面,就無法識別各個按鍵的作用,編寫程序的時候也就無法做到一一對應(yīng)。4.使用說明程序的使用比較簡單,由于是可視化界面,直接打開matlab,然后建立一個gui工程,再打開生成的fig文件,就是一個計算器的界面,直接按照市面上賣
3、的計算器的方法,按鍵使用即可。5.測試結(jié)果計算結(jié)果為204sqrt=2sin4結(jié)果為1/2=0.5經(jīng)過計算,這些結(jié)果均與實際結(jié)果相吻合,計算器的功能實現(xiàn)的較為完好。6.心得體會本次試驗由于不限制語言,于是計算功能強大,操作簡便的matlab變成了首選,matlab的gui設(shè)計,操作是較為簡單的,首先建立一個gui工程,然后用可視化界面,設(shè)計出計算器的大致外觀,為每一個按鍵設(shè)置預(yù)計的功能,然后就是將對應(yīng)的函數(shù)寫到框架生成的程序中,然后每個按鍵就可以實現(xiàn)對應(yīng)的功能。在設(shè)計的過程中還是遇到很多的困難的,首先就是程序的問題,搭建出計算器的外觀以后,生成的框架程序是一個看似非常雜亂的程序,每個按鍵對應(yīng)什
4、么功能根本看不出來,于是我在原來的工程中修改了每一個按鍵的名稱。編程的過程中,主要就是對全局變量和句柄的控制,對相應(yīng)的值賦值以后,要返回給主程序,然后就可以在static text中顯示出來的。句柄是一個很重要的概念,基本所有的操作都是通過句柄實現(xiàn)的,matlab在創(chuàng)建每一個圖形對象時,都為該對象分配唯一的一個值,稱其為圖形對象句柄(handle)。句柄是圖形對象的唯一標(biāo)識符,不同對象的句柄不可能重復(fù)和混淆。例如:set(句柄,屬性名1,屬性值1,屬性名2,屬性值2,),基本所有關(guān)聯(lián)到圖形操作的函數(shù)語句都是這樣的格式:函數(shù)名(句柄,進(jìn)行的操作),因此句柄是一個圖形的名稱,是對圖形進(jìn)行操作的媒介
5、。此外,由于matlab是全英文的操作環(huán)境,所以所有的中文路徑和中文的文件夾名稱均不支持,不然就會在程序中報錯,雖然可以打開,但是按鍵不可以實現(xiàn)功能,這點是要特別留意的,一般情況下,直接將文件保存在默認(rèn)的work路徑下即可。經(jīng)過老師的指點,我修改了界面,使其更加美觀,可惜的是matla無法實現(xiàn)一個窗口的單獨計算器,這不得不說是一個遺憾吧。本次試驗本來打算使用vb進(jìn)行編程的,但是vb的計算功能不夠強大,所以在處理四則運算的時候比較麻煩,于是最后還是決定選擇matlab,經(jīng)過這次實習(xí),我對matlab的操作與gui界面射界有了更深一步的理解,知道了回調(diào)函數(shù)的基本寫法以及各個功能的基本函數(shù)的內(nèi)容,感
6、覺受益匪淺。附錄a程序以及注釋(注:前面帶有%的句子是程序自動生成的框架程序)%定義函數(shù)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用于數(shù)字的設(shè)定global jj shift %設(shè)置句柄,用于將按鍵接收的值返回給主程序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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)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;% - 按鍵+響應(yīng)function pushbuttonadd_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);textstring =strcat(textstring,+);set(handles.text1,string,textstring)% - 按鍵-響應(yīng)function pushbuttonsub_c
20、allback(hobject, eventdata, handles)textstring = get(handles.text1,string);textstring =strcat(textstring,-);set(handles.text1,string,textstring)% - 按*響應(yīng)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)% - 按鍵/響應(yīng)function pushbuttonchu_callback(hobject, eventdata, handles)textstring = get(handles.text1,string);te
22、xtstring =strcat(textstring,/);set(handles.text1,string,textstring)% - 按鍵=響應(yīng)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%這是系統(tǒng)自帶的一個回調(diào)函數(shù),回調(diào)函數(shù)是已經(jīng)編寫好的,提供給系統(tǒng)調(diào)用的函數(shù)關(guān)于eval函數(shù)的理解就是 eval函數(shù)相當(dāng)于將函數(shù)中的字符串,放到命令行中執(zhí)行。寫eval的字符串的時候注意單引號的表達(dá)就ok了textstr
24、ing = get(handles.text1,string);ans =eval(textstring);set(handles.text1,string,ans)% - 按鍵(響應(yīng)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% - 按鍵)響應(yīng)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響應(yīng)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響應(yīng)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響應(yīng)function pushbuttoncl_callback(hobject, eventdata, handles)set(handles.text1,string,0.) ;% - 按鍵x2響應(yīng)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響應(yīng)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% - 按鍵.響應(yīng)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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計三層電梯
- 道勘課程設(shè)計范文
- 2025年度合同履行違約賠償合同4篇
- 二零二五年度門窗安裝與室外照明系統(tǒng)合同4篇
- 幼兒園墻面介紹課程設(shè)計
- 年度液壓件液力件市場分析及競爭策略分析報告
- 2025年度食堂環(huán)境衛(wèi)生管理承包服務(wù)合同4篇
- 2025年度企業(yè)間財務(wù)信息保密協(xié)議范本模板2篇
- 2025年度食堂承包商服務(wù)品質(zhì)提升協(xié)議4篇
- 2025年度農(nóng)業(yè)機械設(shè)備采購合同范本:農(nóng)機購置合作協(xié)議3篇
- HG∕T 2058.1-2016 搪玻璃溫度計套
- 九宮數(shù)獨200題(附答案全)
- 泌尿科一科一品匯報課件
- 人員密集場所消防安全管理培訓(xùn)
- 白銅錫電鍍工藝
- 拜耳法氧化鋁生產(chǎn)工藝
- 2024年南京信息職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 部編版二年級下冊道德與法治第二單元《我們好好玩》全部教案
- 幼兒園利劍護(hù)蕾專項行動工作方案總結(jié)與展望
- 合同信息管理方案模板范文
- 2024年大唐云南發(fā)電有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論