楊濤,謝青伶
摘要:針對大學師生在平時生活中對課程以及備忘錄管理的需求,利用網(wǎng)絡爬蟲、控件自定義、數(shù)據(jù)庫等技術(shù),在Android平臺上設計一款課程表+日程的管理系統(tǒng),使用okhttp3框架從教務系統(tǒng)爬取課表信息,將課程信息以及日常事務信息保存在數(shù)據(jù)庫,并且集合在同一個界面顯示。以簡潔的界面布局給用戶提供日常事務的查看、提醒等功能。將信息整合在一起,有助于校園師生管理時間,提高學習生活的效率。
關鍵詞:課表;Android;網(wǎng)絡爬蟲;OKHttp3;RecyclerView
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)19-0073-03
隨著當今世界互聯(lián)網(wǎng)的快速發(fā)展,智能移動設備在大學中的普及率大大提高。廣大師生越來越喜歡用手機上的軟件來處理日常事務[1],所以市面上也出現(xiàn)了大批的移動化課程表供學生們使用。但通過調(diào)查發(fā)現(xiàn)多數(shù)課程表都沒有將課程與用戶日常事務充分結(jié)合,可視化效果不友好。針對當前情況可以設計一款將課程信息與用戶日常事務整合至同一視圖的App,致力于提高用戶時間管理效率。Android開發(fā)是目前主要的手機軟件開發(fā)方式之一[2]。Android系統(tǒng)作為一個開源手機操作系統(tǒng),具有拓展性強、操作方便等特點,符合當下移動互聯(lián)網(wǎng)應用開發(fā)的需求。目前Android 技術(shù)開發(fā)的應用程序主要以Java 語言和Kotlin為基礎,實用性好,易于擴展,應用前景非常廣闊[3] 。本文論述了一款“課程表+備忘錄”App的設計與開發(fā)過程。
1 總體設計
軟件開發(fā)工具使用AndroidStudio,基于Android平臺設計了一款課程表+日程的管理系統(tǒng),通過使用OKHttp3框架從教務系統(tǒng)爬取課表信息,再將大學生的課程信息以及日常事務保存在數(shù)據(jù)庫,數(shù)據(jù)庫設計表如表1所示,其中:
1)tb_course課程表:包括表的主鍵Cid,作為唯一標識;Cname用于記錄課程名稱;Ctime存儲課程的時間,用于計算課程持續(xù)時長;Ctype用于存儲課程類型(選修、必修);Tname用于存儲任課教師的姓名;Classroom用于存儲某個課程的教室地點。
2)tb_schedule日程表: 包括表的主鍵Sid,作為唯一標識;Scontent用于記錄日程內(nèi)容;Stime記錄事務時間(包括開始時間和結(jié)束時間);Stype存儲日程事務類型;Swarm用于存儲用戶選擇的提醒方式。
3)tb_user用戶表:包括用戶的唯一標識useraccount(用戶手機號碼、昵稱或者學號等);passward記錄用戶密碼;sexy用于存儲用戶性別。
用戶能夠在界面上對事務進行增、刪、改、查,數(shù)據(jù)庫也同步更新,以實現(xiàn)數(shù)據(jù)的長期保存,通過調(diào)用數(shù)據(jù)庫中數(shù)據(jù)根據(jù)用戶需求拓展其他功能,如:課前提醒,今日事件等,同時設計的App應從用戶的角度出發(fā),交互模式以可視化方式呈現(xiàn),支持用戶自定義風格布局,遵循單手操作原則,為用戶提供符合自身喜好的操作界面以及使用上的便利。
2 系統(tǒng)功能模塊概述
根據(jù)需求“大笨鐘”時間管理App的設計劃分為四個功能模塊:登錄模塊、今日主頁模塊、日程查看模塊(日視圖、周視圖、月視圖、年視圖)、功能設置模塊。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
2.1 登錄界面
登錄界面一開始加載初始化界面,隨后轉(zhuǎn)到登錄主界面,頂部顯示App 的商標,等待用戶填寫相關信息,通過對數(shù)據(jù)庫中用戶表的學號字段進行查詢,若用戶存在則向服務器發(fā)起登錄請求,界面跳轉(zhuǎn)至日歷模塊;如果登錄失敗,沒有查詢到學號則提示用戶注冊。
2.2 今日主頁
本界面顯示的內(nèi)容有:下節(jié)課的課程信息,今日所添加的所有日程,用戶記錄的筆記。
2.3 日歷查看
該模塊為核心模塊,以日、周、月、年四個日歷時間視圖來顯示數(shù)據(jù)庫中的課表信息以及備忘錄日程。同時還支持刪除、修改、添加日程功能,上下滑動切換視圖用戶操控更便捷。
2.4 功能設置
該模塊的功能包括修改用戶頭像、修改界面背景、專注時間功能、提供四、六級成績查詢?nèi)肟谝约懊咳胀扑]好書好句。
3 系統(tǒng)功能實現(xiàn)
3.1 用戶登錄
OKHttp3是一個當前比較流行的用于安卓處理網(wǎng)絡請求的框架,相比于安卓提供的原生處理網(wǎng)絡請求類HttpUrlConnection,OKHttp3具有自動重連,減少請求延遲,共享Socket來減少對服務器請求的次數(shù)等優(yōu)點。采用OKHttp3發(fā)起網(wǎng)絡請求從教務系統(tǒng)獲取驗證碼圖片,然后加載到登錄界面的Imageview中。通過查看網(wǎng)頁源碼可知,服務器先把用戶選擇的用戶類型進行了編碼,編碼格式是gb2312。當用戶填寫學工號,密碼和驗證碼,下一步選擇老師或?qū)W生身份點擊登錄之后,后臺也同樣對用戶類型這一變量進行該格式的編碼,生成表單。客戶端向教務系統(tǒng)服務器發(fā)起登錄請求提交表單,模擬登錄。若登錄失敗,提示錯誤信息。驗證碼也同時更換,重新向服務器發(fā)起請求獲取驗證碼圖片,采用handle來處理異步線程通知主線程更新UI;登錄成功后進入日歷查看模塊。
3.2 今日主頁
3.2.1 當前課程
SQLite3是Android內(nèi)置的一個輕量級的關系型數(shù)據(jù)庫,它的運算速度非??欤Y源占用率小,開發(fā)一款App通常情況下占用幾百K的內(nèi)存就足夠了。SQLite作為一款嵌入式數(shù)據(jù)庫,不僅支持標準的SQL語法,還遵循了數(shù)據(jù)庫的ACID事務[4]。使用SQLite對數(shù)據(jù)庫進行時間查詢,遍歷所有課程,返回當天需要上的所有課程的集合。將當前時間與返回的課程集合中所有課程的開始時間采用java.time包提供LocalDateTime方式兩兩進行比較。轉(zhuǎn)換時間格式之后,使用duration計算時間差,得到距離當前時間最小的時間差的課程,并將課程信息顯示在UI定義的相對布局管理器中。