使用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的巨坑里,挣扎着又享受着……
完~
使用MATLAB 2019 App Design 工具设计一个 电子日记App的更多相关文章
- 推荐一款App运营工具:AYL爱盈利App榜单监控
对包括开发者.产品运营.投资人在内的诸多移动互联网从业人员而言,国内Android应用市场和IOS应用市场的榜单变化数据时大家的必修功课之一:看看这段时间所关注的垂直领域里最火的是哪几款应用:看看竞争 ...
- [经验]微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP
微信开放平台,一个APP secret可以绑定一个APP,然后再绑定一个ipad 版本APP
- 15款优秀移动APP产品原型设计工具
一新来小盆友问:“移动产品原型设计都用啥工具?” 答:“@#¥……&%*” 又问:“能详细说下各个工具吗?我比较一下” “……” 好吧,谁让我那么的爱分享而你又是小美女呢 ———————正文开 ...
- 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...
- 加深对AQS原理的理解示例二:自己设计一个同步工具,同一时刻最多只有两个线程能访问,超过线程将被阻塞
/** *@Desc 设计一个同步工具,同一时刻最多只有两个线程能访问,超过线程将被阻塞<br> * 思路分析: * 1.共享锁 两个线程及以内能成功获取到锁 * 2. *@Author ...
- 如何去设计一个自适应的网页设计或HTMl5
如何去设计一个自适应的网页设计或HTMl5 如今移动互联网随着3G的普及,越来越火爆,更多需求跟随而来!APP应用市场和APP应用数量成倍成倍的增长!从而给移动互联网带来新的挑战! 移动设备正超过桌面 ...
- webview之如何设计一个优雅健壮的Android WebView?(下)(转)
转载:https://iluhcm.com/2018/02/27/design-an-elegant-and-powerful-android-webview-part-two/ (这篇文章写得有点晚 ...
- 移动APP服务端设计开发注意要点
2014年,移动APP的热度丝毫没有减退,怎么为您的移动端app设计良好的服务器端接口(API)呢? 下面谈谈我个人的一些想法. 2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站 ...
- [转]Android App整体架构设计的思考
1. 架构设计的目的 对程序进行架构设计的原因,归根到底是为了提高生产力.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点, ...
随机推荐
- 关于c++11 memory order的理解
关于C++memory_order的理解 看了c++并发编程实战的内存模型部分后,一直对memory_order不太懂,今天在知乎发现了百度的brpc,恰好有关于原子操作的文档,感觉解释的很好.为了加 ...
- JDBC | 第七章: JDBC数据库连接池使用
概述 数据库连接池是负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个.那么其中的运行机制又是怎样的呢?今天主要介绍一下数据库连接池原理和常用的连接池. ...
- e3mall商城的归纳总结10之freemarker的使用和sso单点登录系统的简介
敬给读者的话 本节主要讲解freemarker的使用以及sso单点登录系统,两种技术都是比较先进的技术,freemarker是一个模板,主要生成一个静态静态,能更快的响应给用户,提高用户体验. 而ss ...
- PJSIP 机器人
摘要: 最近再研究PJSIP,有一个需求,再适当的时候,需要给远程客户端放音,比如:播放一段广告.或者一段音乐.需要采用API来实现. 正文: 最近想用PJSIP做一个机器人,想法比较简单就是获取客户 ...
- [PyTorch 学习笔记] 4.3 优化器
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/optimizer_methods.py https: ...
- 【学习中】Unity Schedule
章节 内容 签到 第一课:界面介绍 第一讲 编辑器工作区 4月27日 第二课:资源管理 第二讲 资源及资源类型 4月27日 第三讲 资源管理:模型和角色动画的输出设置(上) 4月27日 第四讲 资源管 ...
- jkd1.8 stream
目录 Stream 创建流 通过集合创建,例如Map (常用) 通过数组方式创建 通过Stream静态方法创建 中间操作 筛选和切片 filter limit skip distinct 映射 map ...
- HDU - 3499 -(Dijkstra变形+枚举边)
Recently, Shua Shua had a big quarrel with his GF. He is so upset that he decides to take a trip to ...
- [AngstromCTF 2019]Cookie Cutter
最近看到了一个国外高中生的CTF比赛,翻了一下往年的例题,发现有一道关于jwt session伪造的题比较有意思,记录一下 题目简介中给出了我们题目的地址和后端处理的源码,看看源码先代码审计一下: c ...
- ThinkPHP6.0 多应用模式 部署 Layuiadmin 单页版
TP6.0中的路由省略应用名只能用入口文件绑定应用 和 域名绑定应用,经过测试,最后得出域名绑定应用是最合适的部署方式.如果有更好的部署方案,欢迎分享.QQ:23426945 1. 下载TP6.0,引 ...