基于Android的日程管理APP设计与实现*
2021-01-22姜雨杉柳浩泷钟天淏施运梅
姜雨杉 柳浩泷 钟天淏 施运梅
(北京信息科技大学计算机学院,北京 100020)
0 引言
近年移动端的功能逐渐多样化,人们对于手机端的依赖性飞速提升,而安卓应用端开发的市场十分广阔,吸引了很多人才和资金。但从现在的市场软件发布情况来看,面向学生的移动端开发并不多。而在课程+日程安排方面[1-2]的移动端软件就更加稀缺了。目前大多数APP基本上只能处理课程部分的问题,在日程管理安排、推荐的方面上很少有进行开发。
目前国际上开发的此类应用可简称为时间管理工具,市面上出现的一些时间管理工具有滴答清单、超级课程表和时间规划局等。
但根据研究发现,这些时间管理工具面向的对象仍然不能精确定位到学生层面,在解决课程与事件冲突、智能推荐方向仍然不够完善。通过产品的研究和资料的学习,我们决定开发一个既可以满足课程、日程与便签功能,同时可解决日程安排方面问题的APP。
1 相关时间管理工具
根据平台的不同,目前市场上的时间管理APP可以分为以下两大类:
1.1 面向ios平台的APP
如:时间规划局APP,在该APP中,用户可以添加任何纪念日和相关的事件日期,但是只有用户使用了或者记录相关事件之后,才会开始计时及提醒,缺少了人机交互。
1.2 面向ios和Android平台的APP
如:滴答清单,该APP可以将待办事项按照优先度进行陈列,但是展示功能无法完全贴合大学生的日常生活。
超级课程表是一款面向学生,可以为学生提供课程表及上课地点的软件,但是该软件没有时间管理和待办事项查询的功能。
通过调研发现,无论是ios还是Android平台上的时间管理工具都不能够将课程、日程和便签相结合,并且不提供日程规划的功能,帮助在校大学生更好地管理时间,解决日程与课程的冲突。
2 系统架构设计
针对调研结果,本文设计了基于Android的日程管理APP,从层次上可以分为数据层、服务层和交互层。
2.1 交互层
包括注册登录、记录便签、日程、课程的展示和查询功能。其中便签、日程、课程表类的交互模式主要以可视化方式呈现。
(1)便签显示用户自定义添加的时间+事件片段,按照截至日期、时间顺序或用户自定重要性进行排序显示,用户完成后可将便签删除,起到提示作用。
(2)日程类通过导入日历的可视化呈现。
(3)课程表方面用户添加课程、周数、课程地点等信息,以同一界面可视化的方式进行展示。
2.2 服务层
主要包括云端数据同步、疲劳度计算组件、日程推荐组件。
疲劳度计算组件结合日程推荐组件,可以个性推荐用户安排的日程,根据学生用户的本周课程安排进行疲劳度计算和日程推荐等。
2.3 数据层
本层提供数据存储服务,其中数据库的设计如表1。
其中:
(1)Course课程表:包括课程的唯一标识id,的course_name课程名,teacher教师名,class_room教室地点,day周天数,class_start和class_end控制课程时长,以及用week自定义课程所在周数。
(2)Note_RC日程表:包括日程id号,日程主题title、日程内容content、最后编辑时间time、日程计划的日期day,主要通过结合日历实现的日程表。
(3)User用户信息表:包括用户的唯一标识username(用户自定义的号码、昵称或者id等),用户密码password,性别sex,大学名称university,个人简介myflag进行每个用户信息的分行存储。
(4)Note便签表:包括设置的唯一自增主键id,内容content,时间time,时间分类(优先度)tag。
3 关键技术
3.1 智能推荐
3.1.1 疲劳度计算与传输
为了进行更合理的日程推荐,引入了疲劳度这个参数[3]。疲劳度是大学生每周的课程数量,反映了该教学周内学生的上课状况和身心疲劳情况[4]。在日程的智能推荐功能中作为参照,从而得出日程推荐的结果。
表1 数据库中的表
图1 计算疲劳度的过程
图2 传输疲劳度的过程
图1为疲劳度计算过程,计算疲劳度时需要读取课程的数据库并匹配当前教学周,在得出课程列表的同时计算课程的数量,即为本周的疲劳度。
在课程界面中每次刷新课程时,都会进行一次课程数量的计算和疲劳度的刷新,以应对用户课程的变化及时调整疲劳度。
疲劳度的计算结果影响智能推荐,所以需要将计算结果传递给智能推荐模块。因为智能推荐功能是在用户添加日程时得到实现,所以需要将疲劳度信息从课程页面传输到日程页面中。
图2为疲劳度的传输,在实现传输的过程中主要运用了名为Intent的运行时绑定机制,它能在程序运行的过程中连接两个不同的组件,实现它们之间的通讯和数据传输。为了传输方便,也对疲劳度进行了相应的数据封装。
3.1.2 日程推荐
日程推荐是系统根据用户的时间、工作日和疲劳度自动推荐日程安排。推荐过程如图3所示。
推荐结果将在用户添加日程界面以提醒语句的形式出现,根据参数的不同会显示不同的推荐结果。以下为全部可能的推荐结果。推荐结果1:“谁都不能阻止你成为优秀的人,去学习吧!”
推荐结果2:“课业很多的话,劳逸结合也不错哦”。
推荐结果3:“假期也不能停止努力!”
推荐结果4:“今日也许适合吃大餐”
推荐结果5:“要不要去外面看看?”
推荐结果6:“多运动出出汗”
图3 日程推荐的过程
图4 解决冲突的过程
推荐结果7:“不要让自己闲下来”
推荐结果8:“静下心来看会儿书也是不错的选择”
推荐结果9:“有没有想看的电影?”
推荐结果10:“晚餐吃点儿不一样的”
3.2 日程和课程冲突的解决
大学生受制于课程安排无法自如规划日程,并且由于课程的不规律,经常会发生日程与课程时间安排的冲突,自己却没有发现的问题[4]。
在本项目中,不仅集成了课程表、便签与日程的显示与日程的推荐功能,还预解决日程与课程安排冲突的问题。解决方案如图4所示。
在添加或修改日程时设置该日程的时间,系统将该时间传输到课程组件中并自动转换为课程表中的节数。通过对照本周的课程表核实是否会发生日程与课程的冲突,从而判断是否发出提醒的指令。
4 功能实现
4.1 实验环境
本APP基于Android Studio进行开发。Android Studio是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA。相比其他软件,Android Studio具有稳定速度快、UI编辑器强大,插件管理完善,整合Gradle构建工具和可直接搭建本地数据库的优点。
4.2 关键性功能实现
4.2.1 智能推荐功能的实现
通过获取课程组件中的疲劳度,在日程编辑页面进行相应的推荐,不仅贴合了时间、工作日等客观条件,也根据疲劳度做出了主观的日程选择。
最终在日程编辑页面中,日程推荐将以语句提醒的形态展示。
4.2.2 日程与课程冲突解决的实现
通过获取日程安排的时间与课程表进行对照,来判断是否发生冲突。将APP的课程表与日程功能利用到极致并合理结合起来。
5 总结
本APP解决了大学生不能合理规划时间的问题。基于本APP,用户可以合理规划日程,高效完成任务。但本APP仍然存在一些问题,比如课程没有同教务系统同步,需要手动添加;疲劳度的计算无法精确到日。通过后续开发,系统将完善这些问题。在功能还可以进一步提升,提供更加深入的应用。