张兆玉,高 阳,郑洁瑾,欧阳超,张淑均,田 萱
(北京林业大学 信息学院计算机系,北京 100083)
本文旨在通过基于学生个人桌面上下文行为日志的获取,构建一个个性化的学生使用电脑时间管理的指导服务系统。向这类学生提供一个有效的个人学习指导系统,协助其改正不良习惯,使大学生能够更合理地安排学习和生活。
基于桌面上下文的学生使用电脑时间管理指导服务系统(Time Management System简称:TMS)是以学生个性化数据统计为前提的,集学生使用电脑时间的定制、管理、监督、统计为一体的服务系统。该系统底层以文件的方式存储用户的桌面上下文信息、存储用户的个性化学习计划,以实现公共数据的存储。上层以Java Swing技术实现系统的界面,展现数据结果,以实现友好、方便、快捷的交互体验。该系统实现各种数据模型的统计分析,以各种不同的统计图形展示学生的计划完成情况,同时该系统实现三种不同的监督体制,包括基本监督提醒、邮件统计表反馈、短信实时反馈。另外该系统通过对学生桌面上下文数据的分词分析,实时向学生展示自己的关注话题排行。
该系统对有志于改正不良使用电脑习惯的学生有重要价值。同时也具备较高的社会价值和人文价值。该系统完成后具有以下特性:
(1)方便学生定制个性化的学习计划,改善自己使用电脑的不良习惯。
(2)通过对学习计划的统计分析,学生能够清晰地看到自己的学习计划完成情况,进行合理的调整。
(3)多功能的监督系统,方便学生设定的监护人对其学习计划完成情况的监督。
(4)通过桌面上下文数据的统计分析实时获取自己关注的话题排行。
(5)该系统也适用于其他各类有志于改善自己使用电脑习惯的用户。
桌面上下文用户数据的获取和存储是实现该系统的数据基础。桌面上下文数据主要包括用户打开各类文档的标题信息、浏览各类网页的标题栏信息、打开的各类应用程序信息。随着用户使用电脑时间的不断增加,这些信息量会不断增大,采用合理的内外存存储方式是该系统必须考虑的问题。该系统采用中科院分词算法来进行统计分析,采用哈希表的方式管理内存中的数据,实现了高效的数据读取模式。对于系统使用应用程序的时间记录,该系统采用多线程的方式,开辟一个线程,每隔一定的时间粒度,轮询系统当前开启的应用程序,将对应的使用信息记录到文件中。这样当计算一个应用程序的使用时间时,只需要获取对应日志文件的行数,然后乘以粒度就能得到结果。
用户个性化的学习计划的统计分析是通过基于对用户桌面上下文数据的记录结果分析得到的。对用户制订的学习计划及进程在后台进行监督记录,最后按照不同的统计模型进行统计分析,形成不同的统计图表(统计表、柱状图、折线图、饼状图)展现给用户。另外,系统按照用户设定的监督规则,会对该学习计划进行多功能的监督反馈。监督功能包括基本监督、Java Mail邮件报表反馈[1]、短信实时控制。基本监督包括阻止和提醒模式。阻止模式包括关闭应用程序和弹窗提醒模式。提醒模式包括开启应用程序和弹窗提醒模式。邮件报表反馈和短信实时控制会及时向用户设定的监护人发送学习计划的完成情况和电脑的使用情况。用户的关注度排行榜,是利用中科院分词算法对用户桌面上下文的数据进行合理的统计学分析而得到的实时信息,方便用户及时了解自己近期的关注动向。
系统的架构遵循软件开发流行的MVC模式,分为表示层、业务层和数据持久层。该系统中表示层采用Java Swing组建并设计实现。数据持久层采用Java序列化的机制,将对象完整地存储到文件当中。[2]同时该系统也是一个多任务的系统,用不同的线程来同时进行不同的任务。系统的整体设计如图1所示。
图1 系统架构设计
TMS系统在总体架构上采用 MVC模式。这种模式以最少的耦合协同工作,分工明确。首先由Java的事件监听机制接受用户的请求并调用某个模型来处理请求,再将处理的结果交给某个Java Swing组件,呈现给用户。系统采用多线程的设计机制,分别采用不同的线程来进行学习计划完成情况的统计工作、普通监督工作、邮件短信反馈工作。多线程的设计模式使系统能够协同完成多项任务。
学习计划是指用户对一系列添加到TMS系统中需要被监督管理的应用程序详细使用情况的一个集合。在本系统中学习计划的最小操作单元是应用程序(Application),对一个应用程序的监督控制信息被称为记录 (Record),若干个记录的集合就是一个学习计划(Schedule)。在本系统中分别用三个不同的类来表示上面三个实体。应用程序(Application)包括应用程序名字(name)、别名(nickname)、路径(path)、类别(type)。 记录(Record) 包括一个应用程序 (Application)、 开始时间(begintime)、结束时间(endtime)、服务模式(servicemode)、控制时长(controllength)。 学习计划(Schedule)包括一个记录集合(record list)、开始时间(begintime)、结束时间(endtime)、计划名(Schedule name)。 学习计划存储模型如图2所示。
图2 学习计划存储模型
桌面上下文数据是用户每日使用电脑产生的基础数据。本系统中的子系统ProcessTime(简称PT)用来记录用户的桌面上下文数据。PT系统采用Win 32 API获取系统窗口程序的标题、应用程序使用情况等数据并最终存储到文件中。
TMS系统中的监督功能是集合了普通监督、邮件报表反馈、短信通知的体系。系统根据用户配置文件中配置的相关信息采用制定的统计模型,计算通知的临界条件,当临界条件被触发的时候,调用通知模块来完成监督功能。短信监督集合了已经开发完成的SMSService(短信发送平台)系统。只需要在程序中将需要发送的短信内容插入SMSService系统对应的数据表中,该系统就能够将短消息发给用户设定的监督人。
图3 系统功能结构图
Time Management System (TMS)分为TMS子系统、Process Time (PT)子系统、Rank List(RL)子系统。 总体系统功能结构如图3所示。
(1)TMS子系统,包括系统参数配置模块、系统监督程序管理模块、学习计划模块、监督系统模块。
系统参数配置模块,对系统后续功能需要使用的基本信息进行配置,指用以验证的用户邮箱、监督人邮箱、监督人电话、监督类型、阻止方式、提醒方式、监督百分比等基本参数的配置工作。配置完成后存储到 config.data文件中。
系统监督程序管理模块,添加需要监督的程序到系统中,并可以对该程序实施删除。应用程序一旦被添加到系统中,系统就会记录该应用程序当天的使用情况。
学习计划模块,包括学习计划管理和学习计划统计分析功能。学习计划管理包括添加、删除、查看学习计划功能。学习计划统计分析功能指对学习计划按照系统设计的模型,显示对应的统计图、柱状图、饼状图、折线图。
监督子系统,会根据系统配置信息中提供的监督百分比,判断系统正在执行的学习计划中子项的当天完成度和监督百分比的大小,并根据监督种类的设置,实时向用户以及监督人反馈信息。普通监督会根据用户设定的监督时间间隔来按照监督类型提醒用户。邮件报表反馈和短信实时反馈会按照默认一天一次的频率向监督人发送对应的数据。
(2)PT子系统,包括桌面上下文数据获取模块和应用程序使用记录获取模块。
桌面上下文数据获取模块,系统通过调用win 32 API获取用户使用电脑时打开的各类窗口程序的标题、浏览器的标签栏、应用程序名等数据,并按照设计的格式存储到对应的文件系统中。
应用程序使用记录获取模块,主要记录用户使用各个应用程序的时间,为对学习计划完成度做统计分析提供数据。
(3)RL子系统,是用来查看用户关注度排行榜的模块。该模块通过中科院分词算法,对PT子系统获取的数据进行统计分析,计算出百分比,最终以组件的方式呈现,供用户查看。
现代软件设计中通用的MVC模式,是软件设计的主流模式。本系统是基于Java Swing技术进行桌面系统开发的,由通用的窗口(JFrame)或对话框(JDialog)作为View层展示数据,利用实体操作类作为业务层,如ScheduleManagement.java,并以实体POJO类作为数据模型,如 Application.java、Record.java、Schedule.java 等。图4以制订学习计划为例,展示系统一个模块的MVC实现。
图4 学习计划模块MVC设计
本文设计中基于桌面上下文的大学生使用电脑时间管理服务系统是学生更好地利用电脑生活、学习的辅助工具。该系统底层以文件系统的方式存储数据,实现了对数据的读写比采用数据库更快速的效果。上层以Java Swing组件展示内容,让用户获得更好的用户体验。该系统从学习计划定制,到统计分析,到监督反馈一体化的机制,相信能够很好地对学生使用电脑的行为进行引导。
[1]孙卫琴.JavaMail API电子邮件的收发[J].电脑编程技巧与维护,2007(12).
[2]何坤,李琳琳,熊前兴.JAVA对象持久化方法研究[J].交通与计算机,2006(1).