1. 程式人生 > >使用MATLAB 2019 App Design 工具設計一個 電子日記App

使用MATLAB 2019 App Design 工具設計一個 電子日記App

使用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)首先應該添加回調函式,具體操作方法為,右鍵想要設計的模組,選擇回撥,轉至***回撥,這樣就會自動在程式碼視圖裡面生成一個回撥函式,並且設定一個變數作為初值。如圖:


由於我之前設計好了後端程式碼,所以可能你建立之後函式的空的,只有一條賦值語句,類似這樣:

 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.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的巨坑裡,掙扎著又享受著……