使用MATLAB 2019 App Design 工具設計一個 電子日記App
1.1 前言:因爲信號與系統課程須要,所以下載了MATLAB軟件,加之對新款的執着追求,經過一些渠道,下載了MATLAB 2019專業版。在使用過程當中我發現該軟件竟然內含一款app設計工具,回想起以前使用Java swing編寫用戶交互時按照座標肯定模塊位置時的苦澀,該工具的拖拉式佈局極大的吸引了我,並且添加了回調函數功能,這一低門檻讓許多不懂得編程的同窗也有了編寫個性化程序的可能,因而本着「君子動手不動口的原則」,在一個閒暇時間萌生了設計一款個性化APP的想法。
1.2 app設計:做爲一名大三考研黨,天天的工做學習繁瑣的瑣事數不勝數,加之小時候又沒有培養寫日記的習慣,通過個人」深思熟慮「,決定作一款能夠記錄天天生活狀態,學習狀況以及備忘功能的App,該App主要包含如下功能,(1)能夠記錄天天學習狀況,重要事件,並按當天日期做爲文件名的文本保存在App目錄下。(2) 能夠根據須要顯示想要查詢日期的學習狀況與重要事件。(3)能夠便捷打開一下特定的網頁好比百度,博客等。
1.3 軟件準備工做:
MATLAB 2019 資源
提取碼:9bh8
2.1 App界面設計:因爲App design採用了很是人性化的拖拽界面,故實現起來很容易,就像畫圖同樣,拖拽模塊到畫布上便可,下面展現一下我設計的界面:
2.2 後端代碼邏輯設計:相比於前面的畫圖,這一部分就顯得有點複雜,因爲個人版本是2019版,與網上大多數的版本不一致,而語法也有較大的區別。
(1)首先應該添加回調函數,具體操做方法爲,右鍵想要設計的模塊,選擇回調,轉至***回調,這樣就會自動在代碼視圖裏面生成一個回調函數,而且設置一個變量做爲初值。如圖:
因爲我以前設計好了後端代碼,因此可能你建立以後函數的空的,只有一條賦值語句,相似這樣:web
function TextArea_2ValueChanged(app, event) app.vvl=app.TextArea_2.Value; end
若是按照我設計的App,則須要如下幾個模塊回調,首先是兩個文本區,一個做爲每日狀況的記錄,另外一個做爲每日狀況的查詢與顯示,還須要一個日期顯示器,兩個按鈕做爲跳轉,四個按鈕分別超連接四個經常使用網站,以及三個文本選擇框,下面我來一一講解這些模塊的參數值傳遞。
(1)文本區模塊:函數傳參爲app,event。具體使用方法爲,若想要獲取文本區內的值,則在函數內輸入編程
value=event.value;
這裏要主要value只能在函數內調用,如想要傳參給別的函數,如想要多個文本區顯示文字時,則須要爲value添加私有變量。
選擇value,按左上角添加變量,在跳出的函數中添加value便可,這時可將回調函數改成後端
app.value=event.value;
app.value即爲用戶在文本區輸入的值,該值以cell形式存儲。
(2)文本選擇模塊數組
% Selection changed function: ButtonGroup function ButtonGroupSelectionChanged(app, event) app.selectedButton1=app.ButtonGroup.SelectedObject.Text; end
函數參數爲app,event,若想要獲取選擇框選擇的值,則app
app.selectedButton1=app.ButtonGroup.SelectedObject.Text;
app.selectButton1 爲字符串類型
(3)日期選擇器函數
% Value changed function: DatePicker function DatePickerValueChanged(app, event) app.d = app.DatePicker.Value; app.DateString = datestr(app.d); end
app.DatePicker.Value值爲cell數組類型,若是想要在文本區顯示則須要強制轉換爲字符串類型工具
app.DateString = datestr(app.d);
(4)超連接跳轉佈局
% Button pushed function: Button_12 function Button_12Pushed(app, event) url = 'https://www.baidu.com'; web(url,'-browser') end
可將網址改爲本身想要的訪問的網站
(5)兩個跳轉按鈕:查詢與提交
當按下提交按鈕時,須要將文本區的文字,以及選擇框中選擇的文本共同寫入到以日期選擇框選擇時間命名的txt文本文件中,若是沒有則建立一個,該文件位置在App的目錄下。例如:時間選擇器時間爲2020年9月28號,則按下提交按鈕時,會將文本區的文字以及選擇的內容共同寫入28-Sep-2020.txt文件中,並存儲。
代碼實現:學習
% Button pushed function: Button_11 function Button_11Pushed(app, event) abc='.txt'; stre=strcat(app.DateString,abc); lla=char(app.vvl{1}); fid=fopen(stre,'a+'); fprintf(fid,'%s',lla); fprintf(fid,'\n%s',"是否開心: "); fprintf(fid,'%s\n',app.selectedButton1); fprintf(fid,'%s',"是否焦慮: "); fprintf(fid,'%s\n',app.selectedButton2); fprintf(fid,'%s',"學習狀況: "); fprintf(fid,'%s\n',app.selectedButton3); msgbox('提交成功','提示','help'); end
當按下查詢按鈕時,App會自動在目錄內尋找以當前時間選擇器中時間爲名字命名的txt文件,並顯示在文本區中
並且不會覆蓋以前的結果。
代碼實現:網站
% Button pushed function: Button_2 function Button_2Pushed(app, event) abc1='.txt'; stre=strcat(app.DateString,abc1); filename = stre; A = importdata(filename); app.TextArea.Value=A; end
其他的模塊純屬擺設,無任何實際做用!
3.1 程序打包成exe文件
程序寫好了,追求完美的我確定不會輕易放過全平臺普及的機會,正好App design也提供了這樣的功能,點擊左上角設計器-》共享-》獨立桌面App
在裏面填入一些必須的信息,另外上傳一張好看的圖片,點擊Package便可,稍等片刻你的文件就成功變成exe了。值得注意的是,想要運行該exe程序必需要求系統內按照MATLAB運行環境,若是沒有安裝則不能運行3.2 總結:至此一個小小想法就所有完成了,雖然簡單,但仍是一套具有必定功能的程序,最重要的是,它將我帶進了MATLAB的巨坑裏,掙扎着又享受着……完~