張兆玉,高 陽,鄭潔瑾,歐陽超,張淑均,田 萱
(北京林業大學 信息學院計算機系,北京 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).