(亳州學院 電子與信息工程系,安徽 亳州 236800)
創(chuàng)客精神是創(chuàng)業(yè)創(chuàng)新精神在互聯網+時代的表現,創(chuàng)客的出現充分響應了“大眾創(chuàng)業(yè),萬眾創(chuàng)新”的號召[1]。一個科學的服務管理平臺能夠有效地指導和支持大學生創(chuàng)業(yè),探索在互聯網+創(chuàng)客模式下高校大學生創(chuàng)業(yè)APP建設與維護。對于創(chuàng)業(yè)APP的建設,采用了B/S和C/S的混合架構[2],共設計創(chuàng)業(yè)項目申請、創(chuàng)業(yè)項目審核處理、創(chuàng)業(yè)項目統計、創(chuàng)業(yè)項目成果展示、創(chuàng)業(yè)項目信息查詢以及系統管理六大功能。其中,為了提高項目信息查詢的效率,APP采用了增強版的Boyer-Moore-Horspool文本匹配算法[3]。對于創(chuàng)業(yè)APP的維護,分別從升級更新和后臺數據備份兩個方面入手,詳細地闡述了APP的維護過程。
大學生創(chuàng)業(yè)APP涉及的主要角色有二級學院、高校創(chuàng)業(yè)管理部門、企業(yè)、指導教師、學生,APP需要為不同的角色實現不同的功能,以滿足用戶角色的需求。系統需要實現的主要功能包括了創(chuàng)業(yè)項目申請、項目審核處理、項目統計、項目成果展示以及項目信息查詢。上述各個功能的需求分析如下所示:
創(chuàng)業(yè)項目申請:項目申請是一個重要的功能,涉及的主要用戶是學生。移動端的APP或者web頁面登陸系統后,學生可以新增創(chuàng)業(yè)項目,然后填寫創(chuàng)業(yè)項目的申請書,并輸入創(chuàng)業(yè)項目相關信息。學生可以對申請書進行保存、修改、刪除以及提交等操作。
創(chuàng)業(yè)項目審核處理:二級學院、高校創(chuàng)業(yè)管理部門、企業(yè)、指導教師需要對項目進行審核。學生提交申請書后,首先由指導教師進行審核,若審核不通過,則需要填寫審核意見,并將申請書退回修改或者拒絕申請;若審核通過,則提交上一級進行進一步審核。教師審核通過后,由二級學院負責審核,最后由高校創(chuàng)業(yè)管理部門或者企業(yè)進行審核。
創(chuàng)業(yè)項目統計:創(chuàng)業(yè)項目統計功能是高校和企業(yè)對創(chuàng)業(yè)項目進行匯總的途徑,能實現創(chuàng)業(yè)項目統計和報表生成的功能。
創(chuàng)業(yè)項目成果展示:高校創(chuàng)業(yè)管理部門通過成果展示功能,將學生的創(chuàng)業(yè)項目成果發(fā)布在移動端的APP以及web端。
創(chuàng)業(yè)項目信息查詢:創(chuàng)業(yè)項目信息可以通過關鍵字進行查詢,也可以通過條件進行查詢。條件查詢功能允許用戶通過設置條件來對項目進行篩選,用戶可以使用項目名稱、申請人名字、指導教師、所屬二級學院等信息來查詢項目信息。關鍵字查詢支持用戶進行模糊查找。
文中的高校大學生創(chuàng)業(yè)APP采用了B/S架構與C/S架構的結合,移動端APP使用C/S架構,web端使用了B/S架構。系統的總體架構如圖1所示。
圖1 系統架構圖
Interface layer是視圖層,為用戶提供界面。Data access layer是模型層,負責數據持久化,提供了訪問數據庫的接口。Logic layer是控制層,Interface layer直接與Logic layer交互,負責從視圖層接收用戶輸入的數據并進行數據處理,同時實現本APP的主要邏輯功能;Logic layer通過Data access layer對數據庫進行相關操作。
系統功能模塊圖見圖2。
圖2 系統功能模塊圖
由于篇幅有限,系統管理和創(chuàng)業(yè)項目信息查詢兩個功能的詳細設計以及實現過程。
2.3.1 系統管理
權限管理和系統登陸是系統管理模塊中的最為重要的兩個功能。
權限管理的主要職責包括了角色創(chuàng)建和分配權限。在創(chuàng)建角色時,系統管理員輸入角色的名稱,系統判斷該角色是否存在,若已經存在,則顯示提示信息,若不存在,則創(chuàng)建該角色。在分配權限時,系統管理員首先選擇需要對其分配權限的角色,然后為該角色選擇相應的權限,并提交系統進行驗證。操作成功后將相應的數據保存至數據庫。
用戶在登陸時,需要輸入用戶名、密碼,其中,Android客戶端APP的登陸界面如圖3所示。
圖3 Android客戶端的APP登陸界面
圖3所示的登陸Activity視圖中包含了許多組件(如登錄按鈕),這些組件是通過布局管理器進行管理的,而布局管理則是通過布局文件實現的[4]。
2.3.2 創(chuàng)業(yè)項目信息查詢
項目信息查詢的功能包括了關鍵字模糊查詢和條件篩選查詢兩部分,下面介紹利用關鍵字進行模糊查詢的具體實現算法。用戶通過在APP或者Web輸入需要查詢的關鍵字,經過logic layer進行處理后使用數據庫接口查找訪問數據庫,并將結果返回到APP或者Web頁面。APP采用了一種有效的基于信息檢索(IR)排序的關鍵詞搜索算法來進行關鍵字模糊查詢。首先,利用圖對數據庫進行建模:將數據庫中的表映射成模式圖中的節(jié)點;當表i的主鍵是表j的外鍵時,節(jié)點i與節(jié)點j之間存在邊的連接。對于包含一組關鍵詞的查詢Q,數據庫會返回一個包含元組樹集合的結果圖。該元組樹的葉子節(jié)點至少包含了查詢Q中的一個關鍵詞并且每個元組僅在元組樹中出現一次。元組樹的生成過程如算法1所示。
算法1 元組樹生成算法輸入:查詢Q, 模式圖G輸出:結果圖AG1: Initialize ,R0,RF ; //2: EQ←Enqueue(RQ,RF); //3: while E.size() != 0 do4: hq←Dequeue(EQ); //5: if hq.size() >= MAX then6: return ;7: else8: for each Ri in hq do9: for each Rj in hq do10: if Ri is connected to Rj do11: EQ←Enqueue(Ri);12: EQ←Enqueue(Rj);13: end if14: end for15: end for16: end if17: end while
為了生成給定查詢的結果,算法首先查找元組樹中的所有元組,然后使用元組集和模式圖生成所有的結果圖,最后,計算結果圖中的連接(join)表達式,以生成結果的元組樹。
接下來提出一種基于信息檢索(IR)排序的關鍵詞搜索算法,用于關系型數據庫的關鍵字模糊查詢。首先將“文檔(document)”定義為存儲在文本數據庫中的基本信息單元。計算給定查詢和文檔之間的相似值,并根據該相似值為文檔排序。假設有元組樹T,元組樹中每個文本的列值為{D1,…,Dm}。將Di稱為文檔,T稱為父文檔。然后計算查詢Q和父文檔T之間的相似度,如公式1所示。相似度是查詢Q向量與父文檔T向量的點積。
S(Q,T)=∑k∈Q,Tω(k,Q)·ω(k,T)
(1)
其中,ω(k,Q)是查詢Q中關鍵詞k的權重,用k出現的頻率來代替該權重;ω(k,T)是元組樹中關鍵詞k的權重,其計算方式如公式(2)所示。
ω(k,T)=∑Di∈Tω(k,Di)/T
(2)
[T]是元組樹T的基數。為了提高查詢的效率,在計算ω(k,Di)的時候需要考慮元組樹的大小SizeT、文檔的長度SizeD、文檔的頻率FreD以及文檔中單詞的頻率FreT,其計算方式如公式(3)所示。
(3)
為了更有效地維護高校大學生創(chuàng)業(yè)APP,APP的自動升級更新功能就顯得尤為重要?;贑/S架構的APP擁有一個龐大的客戶端,這為APP的升級更新工作帶來了較大的工作量。在升級更新APP前,首先要進行更新檢測。當用戶打開APP時,APP會自動檢測是否有新版本,用戶也可以手動進行更新檢測。以Android操作系統為例,實現自動/手動更新檢測的代碼如下所示:
UpdateManager.from(this)
.compare(UpdateManager.COMPARE_VERSION_NAME)
.downloadUrl("http://www.collegestudentstartupappapk.edu.cn")
.lastestVerCode(3.12)
.minVerCode(0.11)
.lastestVerName("3.12")
.update();
APP的升級更新功能使用了Android官方提供的下載庫DownloadManager[5]。DownloadManager是一個處理長時間運行的HTTP下載的系統服務。 客戶將指定URI的內容下載到特定的本地文件夾。DownloadManager將在后臺執(zhí)行下載,發(fā)生故障時能夠重試下載并使系統重新啟動。UpdateManager主要實現了檢測和新版本下載功能,其主要的Java代碼如下所示:
public UpdateManager from (Context con) {
this.mCon = con;
mCurVerName = LibUtils.getVerName(mCon);
mCurVerCode = LibUtils.getVerCode(mCon);
return this;}
public UpdateManager lastestVerName(String name) {
this.mName = name;
return this;}
public UpdateManager update() {
if (!needUpdate) {
Toast.makeText(mCon, Toast.LENGTH_SHORT).show();
return this;
} else {
check ();
return this;}}
private void check () {
if (isCheck) {
mListener.onCheckResult(RESULT_FORCE);
return; }
switch (mCom) {
case COMPARE_VERSION_CODE:
comVerCode();break;
case COMPARE_VERSION_NAME:
comVerName();break; } }
private void download() {
Uri fileUri = Uri.parse("file://" + mApkPath);
Uri uri = Uri.parse(mUrl);
DownloadManager downloadManager = (DownloadManager) mCon
.getSystemService(Con.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setFileUri(fileUri);
needUpdate = false;}
3.2.1 數據庫備份
備份數據庫對于數據安全來說非常重要,當發(fā)生問題時(例如系統崩潰,硬件故障或用戶錯誤地刪除數據)可以快速地恢復數據并再次啟動運行。在升級數據庫之前,備份也是必不可少的安全措施。APP使用了MySQL關系型數據庫系統[6]。MySQL提供了多種備份策略,APP利用MySQL提供的mysqldump方法進行數據備份。mysqldump方法能備份各種各樣的表,還能對InnoDB表進行一致性在線備份。
3.2.2 云備份
云備份(cloud backup)是一項為用戶提供文件系統備份、存儲和恢復服務。在線備份提供商是向最終用戶(或客戶)提供此類服務的公司。這種備份服務是云計算的一種形式。在線備份系統按用戶設定的模式進行備份操作,系統會進行每天一次的強制備份,運行時間一般在晚上。同時云備份服務還需要實時捕獲用戶系統的變化,在線備份系統收集、壓縮,加密并將數據傳輸到遠程備份服務提供商的服務器。
為了規(guī)范高校大學生創(chuàng)業(yè)過程的管理,在互聯網+創(chuàng)客模式的背景下,探討了高校大學生創(chuàng)業(yè)APP建設與維護。闡述了創(chuàng)業(yè)APP系統管理、創(chuàng)業(yè)項目申請以及創(chuàng)業(yè)項目信息查詢三個功能的部分設計以及實現,并介紹了APP的升級更新和后臺數據備份的主要方法。后續(xù)的研究工作主要集中在APP的智能化,為APP添加數據挖掘模塊,實現創(chuàng)業(yè)項目的推薦和自動推送功能。