使用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 = '//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的巨坑裡,掙扎着又享受着……
完~