摘要: 相比書面通知、網上查詢,若能利用短信進行成績的查詢,對于學生及其家長來說,是最為方便、快捷的。短信服務系統能接收手機用戶的短信查詢請求并返回相應的查詢結果信息。基于SMS系統所具有的這一特性和學生成績短信查詢的現實需求。本文作者設計和實現了學生成績查詢SMS系統,主要介紹了學生成績查詢、SMS系統的設計與實現。
關鍵詞: 學生成績查詢SMS系統系統設計
書面通知、網上查詢是當前各個學校發布學生成績的主要途徑。網上查詢相比書面通知顯然要方便、快捷得多,但其同時也會受到兩個條件的限制:一是要有計算機,二是計算機能夠上網。雖然計算機和互聯網已經比較普及,但是對于經濟條件不好的家庭或偏遠的農村家庭,可能會沒有計算機或無法上網。
隨著移動通信技術的發展和移動通信網絡在城市、鄉村的覆蓋,手機用戶越來越多,并且已經普。因此,利用短信進行成績的查詢,對于學生及其家長來說,是最為方便、快捷的方法。
短信服務系統(Short Message Service,SMS)是利用計算機控制短信終端設備收發短信,并應用數據庫技術進行數據查詢和管理的系統[1]-[5]。也就是說,SMS系統能接收手機用戶的短信查詢請求并返回相應的查詢結果信息。基于SMS系統所具有的這一特性和學生成績短信查詢的現實需求,筆者設計和實現了學生成績查詢SMS系統。
1.系統硬件
本系統除計算機外的關鍵硬件,即短信終端設備,采用GSM Modem(俗稱“短信貓”),因為GSM Modem相比當前一些較大規模單位、短信業務提供商(SP)等采用的互聯網短信網關在設備購置費和月使用費等方面要節省得多,并且在功能和性能上已經完全能滿足學生成績短信查詢的需要。
GSM Modem一般通過串口(有些可通過USB接口)與計算機相連接,而計算機則利用GSM AT指令[6]控制GSM Modem進行短信的接收與發送。當前已有一些GSM Modem提供商和軟件開發商將底層的GSM AT指令封裝成了供VB、VC、VFP、PB、Delphi等開發工具進行二次開發使用的動態鏈接庫(DLL),這使得基于GSM Modem的SMS系統的開發便捷了許多。
本系統采用Wavecom公司的GSM Modem和迅賽公司的GSM Modem動態鏈接庫(SMS.dll)二次開發接口[7]。當然,GSM Modem中要插有已開通GSM短信功能的無線通信SIM卡。
2.學生成績數據形式與系統設計原則
本系統所能查詢的學生成績,不僅僅只是學校學期末各課程的學生成績,而且包括學生的其他由學校統一報考的考試成績,如英語等級考試成績、計算機等級考試成績等。學生期末課程成績一般由特定的數據庫系統管理,而其他的一些學生成績的數據形式可能會是Excel表格或其他數據庫格式。當然,Excel表格文檔也可以視為一種數據庫。
因此,本系統設計所遵循的一個基本原則是:系統查詢功能的通用性。也就是說,用一個通用的數據查詢功能模塊來實現可能來自不同數據庫,甚至不同類型數據庫數據的查詢。
3.系統總體功能模塊設計與關鍵功能模塊的實現
如圖1所示,本系統的總體功能模塊有:短信接收功能模塊、短信發送功能模塊、短信解析功能模塊、成績查詢功能模塊、系統管理功能模塊。
(1)短信接收功能模塊:通過“SMS.dll”中的短信接收功能,從GSM Modem的已接收短信隊列中接收短信,然后將接收到的短信轉入“短信解析功能模塊”以進一步地解析和處理,并將該短信存入本系統數據庫的“已接收短信日志”表中。
(2)短信發送功能模塊:將“成績查詢功能模塊”返回的查詢結果信息,通過“SMS.dll”中的短信發送功能,控制GSM Modem發送給查詢請求者,并將該短信存入本系統數據庫的“已發送短信日志”表中。
(3)短信解析功能模塊:對接收到的短信進行解析,即首先判斷是否為一個有效的成績查詢請求,若是,則按成績查詢請求格式獲取成績查詢的各個參數,并將參數傳遞給“成績查詢功能模塊”以執行該終端手機用戶的成績查詢短信請求;若不是,則通過“短信發送功能模塊”給查詢請求者返回如“查詢格式錯誤”之類的信息。本系統要求終端手機用戶請求的查詢格式對各個查詢參數間以“+”號作為分隔,比如“XQCJ+10006055+張三+計算方法”。
(4)成績查詢功能模塊:根據解析短信查詢請求獲得的成績查詢參數,執行成績查詢,并通過“短信發送功能模塊”向請求成績查詢的終端手機用戶返回相關查詢結果信息。由于所查詢的目標數據,如學期課程成績、各類等級考試成績等,都是本系統的外部數據,而且數據庫類型可能不同,因而為實現本功能模塊的通用性,采用如下描述的方案。
系統對查詢目標數據庫(包括Excel表格形式的數據)的鏈接和訪問采用ODBC方式,即首先對目標數據庫建立ODBC數據源,然后系統對ODBC數據源進行鏈接和訪問。這樣,系統就與目標數據庫的類型無關,而僅用一個統一的ODBC數據訪問接口即可。系統與ODBC數據源的鏈接并非在程序代碼中設定,而是用戶在系統的使用過程中綁定或取消。這樣,需要在系統數據庫中建立一個“數據庫鏈接信息”表,該表中包含字段“查詢代碼”、“數據源名”、“SQL查詢語句”等。其中“SQL查詢語句”不包含查詢條件,因為查詢條件中的參數是由終端手機用戶的短信請求確定的,而且查詢條件可能不止一個,比如:學期課程成績查詢中的“學號”、“姓名”和“課程名稱”,各類等級考試成績查詢中的“準考證號”、“身份證號”和“姓名”等。為此,在系統數據庫中建立一個“SQL查詢條件”表,該表中包含字段“查詢代碼”、“序號”、“條件字段”等。其中的“查詢代碼”字段與“數據庫鏈接信息”表中的“查詢代碼”字段相關聯。這樣,用戶就可以通過“SQL查詢條件”表中相應的一個或多個條件字段結合終端手機用戶指定的參數而成的SQL條件與“SQL查詢語句”,生成最終系統需要執行的SQL查詢語句。
下面,筆者以學期課程成績查詢為例,詳細敘述其實現方法。首先,對學期課程成績數據庫建立ODBC數據源(設數據源名為“學期課程成績”,并相應地設其存放學期課程成績的數據表為“成績表”)。然后在系統數據庫的“數據庫鏈接信息”表中加入“查詢代碼”、“數據源名”、“SQL查詢語句”字段的內容分別為“XQCJ”、“學期課程成績”、“Select課程名稱,總評成績From成績表”,并在“SQL查詢條件”表中加入“查詢代碼”、“序號”、“條件字段”字段的內容分別“XQCJ”、“1”、“學號”和“XQCJ”、“2”、“姓名”及“XQCJ”、“3”、“課程名稱”的三條記錄。這樣,若有學生發送來內容為“XQCJ+10006055+張三+計算方法”的查詢請求短信,則通過本系統“短信解析功能模塊”對短信內容的解析,分別獲得“查詢代碼”、“學號”、“姓名”和“課程名稱”的參數,從而生成最終系統需要執行的SQL查詢語句“Select課程名稱,總評成績From成績表Where學號=‘10006055’And姓名=‘張三’And課程名稱=‘計算方法’”。系統執行該查詢后的結果信息即可通過短信回復成績查詢請求者。
(5)系統管理功能模塊:主要是用戶信息管理和短信日志管理。用戶信息管理包括用戶信息的添加、修改、刪除和用戶的登錄、注銷等;短信日志管理包括已接收短信日志和已發送短信日志的查看、組織和備份等。
4.系統數據流程圖
根據上述系統總體功能模塊的詳細描述,可以歸納出本系統的數據流程圖,如圖2所示。
本學生成績查詢SMS系統,能使學生及其家長通過手機短信進行學期課程成績、各類等級考試成績等的查詢。終端手機用戶對本系統在使用上非常便捷,同時,本系統返回查詢結果信息非常快速。由于本系統設計遵循和強調的是系統數據查詢功能的通用性,以使系統可以實現多個來自不同數據庫、甚至不同類型數據庫數據的短信查詢。因而,本系統的設計思想和實現方法還能適用于其他一些常見教學信息的短信查詢,如教師和學生的課表查詢、學生考試和教師監考安排查詢等。
參考文獻:
[1]江紅,熊思民.短消息業務SMS[J].重慶郵電學院學報(自然科學版),2001,(2):46-49.
[2]王維民,劉恩.短消息服務提供商系統的研究與實現[J].計算機工程,2006,32,(12):280-282.
[3]奚曉明,葛萬成.短信服務平臺的設計[J].信息技術,2006,(10):20-22.
[4]伊衛星.使用面向對象方法設計短消息服務平臺系統[J].計算機與現代化,2006,(9):70-71.
[5]李晶,劉佳娜,錢松榮.企業短信服務系統的設計與實現[J].計算機應用與軟件,2007,24,(5):91-93.
[6]Wavecom公司.AT Commands Interface[EB/OL].http://www.wavecom.com.
[7]迅賽公司.GSM MODEM動態鏈接庫(DLL)二次開發接口[EB/OL].http://www.shoujika.com/sms/gsmdll/smsdll.htm.