摘要:隨著移動(dòng)通信技術(shù)進(jìn)入5G時(shí)代,以及高校學(xué)生需求的日益多樣化,用于智慧校園的學(xué)生校園系統(tǒng)變得越來(lái)越復(fù)雜。高校師生日常最為關(guān)注的是學(xué)習(xí)、教學(xué)以及學(xué)校相關(guān)的各類信息。基于此,文章整合校園中教學(xué)及生活的常見(jiàn)功能,設(shè)計(jì)并開(kāi)發(fā)了一個(gè)基于Android的學(xué)生校園系統(tǒng),以便利本校學(xué)生的校園日常生活。
關(guān)鍵詞:Android;校園系統(tǒng);校園App;數(shù)字化校園
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2025)01-0051-03 開(kāi)放科學(xué)(資源服務(wù)) 標(biāo)識(shí)碼(OSID) :
1 關(guān)鍵技術(shù)介紹
Android是一款基于Linux內(nèi)核的、可用于手機(jī)、平板等移動(dòng)終端的操作系統(tǒng),其開(kāi)發(fā)語(yǔ)言為常見(jiàn)的Java 語(yǔ)言。由于Android的發(fā)布規(guī)則寬松且簡(jiǎn)單,并且允許任何人進(jìn)行自主研發(fā),因此在移動(dòng)App開(kāi)發(fā)領(lǐng)域受到廣泛青睞。Android之所以能成為市場(chǎng)占有率第一的移動(dòng)操作系統(tǒng),主要原因在于[1]:1) 開(kāi)源及開(kāi)放。An?droid是開(kāi)放源代碼的,允許任何廠商及個(gè)人使用,不受運(yùn)營(yíng)商約束,因此比其他平臺(tái)更具移植優(yōu)勢(shì)。2) 功能豐富,二次開(kāi)發(fā)方便。Android內(nèi)部集成了瀏覽器、虛擬機(jī)、數(shù)據(jù)庫(kù)等組件,支持多種移動(dòng)通信技術(shù),且包括開(kāi)發(fā)環(huán)境、調(diào)試工具以及相關(guān)分析工具等,有利于二次開(kāi)發(fā)。3) 對(duì)谷歌應(yīng)用程序的兼容性好。谷歌發(fā)布An?droid這一先天優(yōu)勢(shì)使得谷歌平臺(tái)上的多數(shù)應(yīng)用程序都可以直接兼容Android平臺(tái)的各種操作,從而使移動(dòng)終端用戶可以享受谷歌開(kāi)發(fā)的各種應(yīng)用。
移動(dòng)應(yīng)用的開(kāi)發(fā)并非一蹴而就,需要對(duì)其進(jìn)行不斷迭代,學(xué)生校園系統(tǒng)在迭代過(guò)程中其體量會(huì)不斷增大。過(guò)大體量的移動(dòng)應(yīng)用可能會(huì)影響用戶的使用選擇,即使使用也可能因安裝包下載及安裝過(guò)程過(guò)長(zhǎng)而影響用戶體驗(yàn),為此有必要對(duì)學(xué)生校園系統(tǒng)進(jìn)行瘦身。對(duì)移動(dòng)應(yīng)用APK包分析后發(fā)現(xiàn),通過(guò)優(yōu)化res目錄下的資源文件、動(dòng)態(tài)鏈接庫(kù)文件等可以顯著減少App體量。
Android 應(yīng)用開(kāi)發(fā)平臺(tái)從下至上可分為如下層次:Linux內(nèi)核層、系統(tǒng)庫(kù)及運(yùn)行時(shí)庫(kù)層、應(yīng)用程序框架層和應(yīng)用程序?qū)?。其中,Linux內(nèi)核層是Android應(yīng)用開(kāi)發(fā)平臺(tái)的核心,負(fù)責(zé)協(xié)調(diào)管理移動(dòng)終端的內(nèi)存、網(wǎng)絡(luò)通信以及安全權(quán)限等;系統(tǒng)庫(kù)提供對(duì)Java虛擬機(jī)的支持,使Java語(yǔ)言編寫(xiě)的程序可以運(yùn)行在Android 系統(tǒng)上;運(yùn)行時(shí)庫(kù)提供對(duì)C語(yǔ)言程序、多媒體文件以及UI界面等各種組件的支持;應(yīng)用程序框架層為An?droid應(yīng)用的開(kāi)發(fā)提供了常用功能的API接口。
Android 應(yīng)用開(kāi)發(fā)平臺(tái)的基本組件包括[2]:活動(dòng)(Activity) 、服務(wù)(Service) 、廣播接收器(Broadcast Re?ceiver) 以及內(nèi)容提供器(Content Provider) 。每個(gè)應(yīng)用程序都由多個(gè)Activity構(gòu)成,不同模塊或組件可以設(shè)計(jì)為單獨(dú)的Activity。Service是一種后臺(tái)服務(wù),例如各種應(yīng)用中的消息通知功能,當(dāng)處于離線狀態(tài)而不能及時(shí)接收消息時(shí),服務(wù)會(huì)自動(dòng)接收消息,待在線后再進(jìn)行顯示。Broadcast Receiver可以接收其他應(yīng)用的廣播信息,Content Provider的作用是解決無(wú)法以顯示方法訪問(wèn)其他應(yīng)用的Activity的問(wèn)題。
2 需求分析
為實(shí)現(xiàn)一個(gè)使用友好且功能完善的學(xué)生校園系統(tǒng),本研究基于模塊化思想進(jìn)行系統(tǒng)的需求分析,將基于Android的學(xué)生校園系統(tǒng)分為師生端模塊、學(xué)工端模塊以及后勤端模塊等。
師生端模塊主要是用于方便本校師生使用,使師生的校園生活更加便捷,節(jié)省師生在各種校園事務(wù)上的流程化時(shí)間?;诖耍瑤熒K需要具有課程表、成績(jī)查詢、圖書(shū)借閱、請(qǐng)假及考勤等功能。各功能的需求是[3]:1) 課程表功能。此功能用于顯示本教學(xué)周的課程安排,點(diǎn)擊課程表任意天的某一節(jié)課,應(yīng)當(dāng)能夠顯示出課程名稱、任課教師、上課時(shí)間和地點(diǎn)、課程簡(jiǎn)介以及考試安排等詳細(xì)信息;課程表頁(yè)面還應(yīng)提供編輯功能,在上課時(shí)間或地點(diǎn)等信息發(fā)生變化時(shí),學(xué)生能夠手動(dòng)修改信息并保存。2) 成績(jī)查詢功能。每學(xué)年各個(gè)學(xué)期的所有課程成績(jī),都可以通過(guò)此功能進(jìn)行查詢;除了簡(jiǎn)單的查詢之外,還應(yīng)該提供課程成績(jī)的計(jì)算及排序功能,例如計(jì)算同一學(xué)生不同課程的平均績(jī)點(diǎn)、指定班級(jí)某課程的平均分、某課程的最高分等。3) 圖書(shū)借閱。當(dāng)師生登錄到圖書(shū)借閱模塊后,系統(tǒng)需要能夠顯示登錄用戶的個(gè)人信息、當(dāng)前借閱信息、借閱歷史以及圖書(shū)收藏等。4) 請(qǐng)假及考勤。重要的課程需要登記學(xué)生的考勤,考勤頁(yè)面要能夠查看不同的考勤狀態(tài),例如某一天是正??记?、請(qǐng)假、缺勤以及補(bǔ)簽等。為避免師生浪費(fèi)大量的時(shí)間在線下請(qǐng)假流程上,請(qǐng)假功能會(huì)使學(xué)生的請(qǐng)假申請(qǐng)自動(dòng)推送至審批人員的手機(jī)上,可以顯著節(jié)省請(qǐng)假審批時(shí)間。
學(xué)工端模塊主要用于負(fù)責(zé)學(xué)工及行政工作教師的日常工作,以更高效地為學(xué)生服務(wù),此模塊的功能應(yīng)主要包括[4]:1) 設(shè)備報(bào)修管理。如果在學(xué)校內(nèi)部發(fā)現(xiàn)任何損壞的公共設(shè)備,都能夠通過(guò)此模塊完成設(shè)備報(bào)修相關(guān)流程;2) 招聘管理。在畢業(yè)季可以發(fā)布各類招聘公告,方便學(xué)生求職;如果學(xué)校有教師招聘需求,亦可在此發(fā)布。3) 校園黃頁(yè)。此功能可以集中展現(xiàn)各個(gè)院系部門(mén)的聯(lián)系方式,以便學(xué)校師生在遇到事項(xiàng)時(shí)可以聯(lián)系對(duì)應(yīng)人員解決。
后勤端模塊是連接學(xué)生及學(xué)校后勤人員的紐帶。對(duì)學(xué)生而言,最主要的后勤人員是宿舍管理員,使用好后勤模塊可以更好地關(guān)心學(xué)生,使學(xué)生保持一種良好的生活風(fēng)貌;其次是維修人員,為師生提供維修服務(wù)。因此,后勤端模塊中需要具有衛(wèi)生評(píng)比、衛(wèi)生評(píng)分查看、維修管理等功能。
3 設(shè)計(jì)及實(shí)現(xiàn)
3.1 概要設(shè)計(jì)
綜合上述對(duì)學(xué)生校園系統(tǒng)的需求分析,可以得到系統(tǒng)的功能層次結(jié)構(gòu)圖,如圖1所示。
學(xué)生校園系統(tǒng)的用戶不僅包括任課教師、學(xué)生,還包括學(xué)工及行政老師、后勤人員等,不同用戶均有其對(duì)應(yīng)的功能頁(yè)面,且不同類用戶間的功能業(yè)務(wù)彼此分離。這種設(shè)計(jì)使各個(gè)模塊能夠?qū)崿F(xiàn)相互獨(dú)立,在開(kāi)發(fā)測(cè)試時(shí)可以并行分別進(jìn)行編譯、調(diào)試,而在集成模式下可以將所有模塊“組裝”為完整的學(xué)生校園系統(tǒng)。
在整體架構(gòu)上,基于Android的學(xué)生校園系統(tǒng)可以從上至下分為三層:模塊層、基礎(chǔ)功能層和核心依賴層,如圖2所示。
其中模塊層直接面向?qū)W生校園系統(tǒng)的用戶,不同用戶擁有不同的登錄入口,模塊層中不同的模塊會(huì)展現(xiàn)出登錄用戶具有的所有功能;每個(gè)模塊均相互獨(dú)立,因此不同開(kāi)發(fā)人員完全可以只負(fù)責(zé)單個(gè)模塊的功能邏輯,從而避免協(xié)作開(kāi)發(fā)過(guò)程中的代碼沖突?;A(chǔ)功能層是實(shí)現(xiàn)具體模塊功能的基礎(chǔ),例如各種功能的數(shù)據(jù)請(qǐng)求需要通過(guò)網(wǎng)絡(luò)請(qǐng)求事項(xiàng),系統(tǒng)展現(xiàn)的各種結(jié)果需要通過(guò)圖片處理功能來(lái)完成,消息推送服務(wù)提高了大量業(yè)務(wù)處理的實(shí)時(shí)性[5]。依賴層是實(shí)現(xiàn)整個(gè)學(xué)生校園系統(tǒng)的“地基”,Android移動(dòng)應(yīng)用開(kāi)發(fā)過(guò)程中通常會(huì)涉及模塊依賴、本地依賴和遠(yuǎn)程依賴三類依賴關(guān)系,其中本地依賴主要指的是本地jar包依賴;這些依賴關(guān)系會(huì)添加到工程模塊的build.gradle文件中,該文件會(huì)自動(dòng)處理依賴關(guān)系。
3.2 詳細(xì)設(shè)計(jì)
3.2.1 基礎(chǔ)功能設(shè)計(jì)
基于Android的學(xué)生校園系統(tǒng)包括服務(wù)端及客戶端兩大部分,二者之間的數(shù)據(jù)交互需要基本的網(wǎng)絡(luò)請(qǐng)求功能。客戶端的網(wǎng)絡(luò)請(qǐng)求框架使用的是OkHttp,創(chuàng)建一個(gè)OkHttp客戶端對(duì)象后即可用其管理諸如連接池、緩存以及超時(shí)時(shí)間等網(wǎng)絡(luò)參數(shù);隨后創(chuàng)建一個(gè)Re?quest對(duì)象即可描述網(wǎng)絡(luò)請(qǐng)求,例如是GET請(qǐng)求還是POST請(qǐng)求,網(wǎng)絡(luò)請(qǐng)求的請(qǐng)求參數(shù)頭、參數(shù)體以及請(qǐng)求URL等;網(wǎng)絡(luò)請(qǐng)求最終會(huì)返回由學(xué)生校園系統(tǒng)服務(wù)端預(yù)先定義的JSON數(shù)據(jù)。
學(xué)生校園系統(tǒng)中有很多功能會(huì)涉及圖片,圖片處理功能主要包括圖片的顯示及壓縮。圖片顯示時(shí)使用的是Picasso圖片顯示框架,選擇此框架的原因在于它可以完美兼容網(wǎng)絡(luò)請(qǐng)求框架OkHttp,且圖片體積會(huì)顯著降低。圖片壓縮主要用于衛(wèi)生評(píng)比、設(shè)備報(bào)修等場(chǎng)景,若不壓縮上傳的圖片,不僅會(huì)影響用戶使用體驗(yàn),也會(huì)導(dǎo)致服務(wù)端的存儲(chǔ)壓力。
消息推送方面本研究使用極光推送(JPush) ,其推送通道相對(duì)穩(wěn)定且提供豐富而開(kāi)放的API接口,已集成主流移動(dòng)終端廠商的推送通道。實(shí)際使用時(shí)需要先將極光推送的jar包保存至工程libs目錄中,并注冊(cè)相應(yīng)的消息推送服務(wù),隨后即可接收推送的消息。學(xué)生校園系統(tǒng)的用戶在使用相應(yīng)業(yè)務(wù)時(shí),服務(wù)端即會(huì)推送對(duì)應(yīng)消息到其移動(dòng)終端。
3.2.2 業(yè)務(wù)功能設(shè)計(jì)
本研究使用開(kāi)源的PostgreSQL作為學(xué)生校園系統(tǒng)的數(shù)據(jù)庫(kù),綜合考慮系統(tǒng)中與學(xué)生相關(guān)的業(yè)務(wù)功能后,主要設(shè)計(jì)了課程表、教師表、學(xué)生表、成績(jī)表以及假勤表。其中課程表存放一個(gè)學(xué)期內(nèi)的課表,即各門(mén)課程的基本上課信息,主要字段包括課程名稱、任課教師、班級(jí)、教室以及上課時(shí)間等;其中任課教師存放的是教師ID,為外鍵,引用的是教師表中的ID字段。教師表保存教師的基本信息,主鍵為教師ID,其他字段包括姓名、性別以及學(xué)歷等;學(xué)生表存放學(xué)生基本信息,包括學(xué)生ID、姓名、性別、年級(jí)以及院系等;成績(jī)表是成績(jī)查詢功能使用的主要數(shù)據(jù)庫(kù)表,包含課程ID、學(xué)生ID、學(xué)期以及成績(jī)等字段,其中課程ID和學(xué)生ID分別為引用課程表和學(xué)生表相關(guān)主鍵的外鍵。
在用戶界面設(shè)計(jì)方面,Android平臺(tái)提供了豐富的UI 界面組件,大多存放在widget 包或其子包an?droid.view內(nèi)。Android平臺(tái)所采用的MVC設(shè)計(jì)模式使界面組件與功能控制相互分離,不論是對(duì)用戶界面還是程序代碼進(jìn)行修改均可單獨(dú)進(jìn)行。學(xué)生校園系統(tǒng)的功能模塊較多,因此系統(tǒng)主界面采用的是常見(jiàn)的九宮格布局方式,九宮格內(nèi)的每個(gè)圖標(biāo)均對(duì)應(yīng)一個(gè)功能模塊。師生端和學(xué)工端等模塊的主界面Activity均需要路由注冊(cè),在登錄首頁(yè)點(diǎn)擊指定模塊的接口后即可跳轉(zhuǎn)至對(duì)應(yīng)模塊的主界面Activity。
3.3 實(shí)現(xiàn)
在基礎(chǔ)功能實(shí)現(xiàn)上,進(jìn)行圖片處理時(shí)需要根據(jù)調(diào)用接口的參數(shù)確認(rèn)是進(jìn)行圖片顯示還是壓縮。若為圖片壓縮則調(diào)用圖片壓縮工具,并將要壓縮的圖片列表作為參數(shù)傳遞給圖片加載方法;若為圖片顯示則調(diào)用顯示框架。極光推送的接口封裝后可以以單例模式創(chuàng)建對(duì)象,消息實(shí)體類的屬性主要包括id、content 以及type等屬性,分別表示消息的身份標(biāo)識(shí)、消息內(nèi)容以及消息類型(請(qǐng)假消息、報(bào)修消息等) ;消息的處理操作封裝在單獨(dú)的類中,接收到消息后會(huì)先存放至本地?cái)?shù)據(jù)庫(kù),當(dāng)用戶點(diǎn)擊消息按鈕時(shí)會(huì)觸發(fā)通知事件,轉(zhuǎn)發(fā)消息方法會(huì)完成消息的發(fā)送。
課程表可以讓學(xué)生根據(jù)下拉列表的選擇來(lái)查詢相關(guān)課程,因此實(shí)現(xiàn)為若干個(gè)下拉菜單,其中的菜單數(shù)據(jù)預(yù)先保存在數(shù)據(jù)字典中。前端程序獲取到用戶的選擇后將數(shù)據(jù)傳遞給后端程序,隨后從數(shù)據(jù)庫(kù)中查詢對(duì)應(yīng)指定的課程;這一過(guò)程需要有兩個(gè)布局文件,一個(gè)用于設(shè)計(jì)用戶選擇頁(yè)面,另一個(gè)用于顯示課程結(jié)果頁(yè)面。
成績(jī)查詢的入口處需要輸入用戶名及密碼,在通過(guò)檢測(cè)后進(jìn)入分?jǐn)?shù)頁(yè)面,該html頁(yè)面經(jīng)過(guò)HTML解析器的解析后用ListView顯示,通過(guò)分析頁(yè)面中的TR標(biāo)簽、TD標(biāo)簽等獲取所需的結(jié)果信息。為保證安全性,使用HttpClient組件對(duì)用戶名及密碼進(jìn)行驗(yàn)證,同時(shí)增加一個(gè)Application類存取不同的Cookie值。
各種查詢操作得到的結(jié)果以Cursor(游標(biāo)) 子類對(duì)象的方式返回,該對(duì)象能夠?qū)崿F(xiàn)對(duì)查詢結(jié)果的向前、向后或隨機(jī)訪問(wèn),從而使數(shù)據(jù)庫(kù)的讀取效率較高。
多數(shù)Android應(yīng)用的組件間通信數(shù)據(jù)量均較大,為了對(duì)學(xué)生校園系統(tǒng)的體量進(jìn)行有效瘦身,本研究考慮對(duì)使用到圖片的功能場(chǎng)景進(jìn)行資源壓縮,簡(jiǎn)單圖片使用XML進(jìn)行繪制,高清圖片則考慮縮略顯示,并在必要時(shí)進(jìn)行間隔離散采樣。
4 測(cè)試
在進(jìn)行測(cè)試時(shí),使用研究者的小米手機(jī)進(jìn)行測(cè)試,主要配置為:Android版本為MIUI 14,處理器為高通驍龍8 Gen2 3.19 GHz,內(nèi)核版本為5.15.74-an?droid13-8-00049,KMI版本為5.15-android13-8。
功能測(cè)試方面,測(cè)試項(xiàng)主要包括按鈕與鏈接測(cè)試、頁(yè)面跳轉(zhuǎn)測(cè)試及分頁(yè)查詢顯示測(cè)試。對(duì)系統(tǒng)所有的按鈕和鏈接逐一點(diǎn)擊測(cè)試后,發(fā)現(xiàn)點(diǎn)擊所有按鈕后均能得到預(yù)期響應(yīng),點(diǎn)擊鏈接均可正確跳轉(zhuǎn)至預(yù)期頁(yè)面;在每個(gè)設(shè)置了分頁(yè)顯示之處,均能根據(jù)用戶選擇的數(shù)目分頁(yè)顯示。
性能測(cè)試方面,對(duì)系統(tǒng)的穩(wěn)定性、容錯(cuò)性、安全性以及壓力容量等方面進(jìn)行了測(cè)試,測(cè)試結(jié)果如表1所示。
在對(duì)學(xué)生校園系統(tǒng)進(jìn)行功能測(cè)試、性能測(cè)試后,從測(cè)試結(jié)果可以看出整體符合預(yù)期:功能方面滿足基本使用需求,性能方面容錯(cuò)性良好、具有較高的安全性,且能夠容忍高強(qiáng)度使用壓力。
5 總結(jié)
在對(duì)學(xué)生校園系統(tǒng)進(jìn)行功能測(cè)試、性能測(cè)試后,從測(cè)試結(jié)果可以看出整體符合預(yù)期:功能方面滿足基本使用需求,性能方面容錯(cuò)性良好、具有較高的安全性,且能夠容忍高強(qiáng)度使用壓力。5 總結(jié)
參考文獻(xiàn):
[1] 劉錦.智慧校園故障報(bào)修信息管理系統(tǒng)開(kāi)發(fā)研究[J].互聯(lián)網(wǎng)周刊,2024(18):51-53.
[2] 鄭居健,暴豐,傅成輝,等.一站式校內(nèi)服務(wù)的校園通App[J]. 福建電腦,2023,39(10):67-72.
[3] 韋侯翼,黎津圣,趙洋,等.基于手機(jī)App“簡(jiǎn)易云”校園管理系統(tǒng)的設(shè)計(jì)[J].科技與創(chuàng)新,2023(16):119-121,124.
[4] 支喬.促進(jìn)學(xué)生自主學(xué)習(xí)力發(fā)展的數(shù)字校園應(yīng)用系統(tǒng)建設(shè)研究[J].現(xiàn)代教學(xué),2024(5):32-33.
[5] 張秀璞,孟維航,時(shí)瀟晴.基于互聯(lián)網(wǎng)技術(shù)的校園學(xué)生管理系統(tǒng)設(shè)計(jì)[J].電子技術(shù),2023,52(10):324-325.
【通聯(lián)編輯:謝媛媛】