萬(wàn)相明
摘要:隨著智能移動(dòng)設(shè)備的廣泛運(yùn)用,使得溝通和交流更加方便。各高校的教師和學(xué)生,也可以通過(guò)智能設(shè)備隨時(shí)隨地獲取自己所需的課表、通知等信息。針對(duì)局域網(wǎng)計(jì)算機(jī)實(shí)驗(yàn)室課表無(wú)法查詢(xún)的問(wèn)題,并且需要滿足學(xué)生在計(jì)算機(jī)和手機(jī)上可以同時(shí)查詢(xún)的需求,特設(shè)計(jì)和開(kāi)發(fā)一個(gè)基于Web service的課表查詢(xún)系統(tǒng)。課表查詢(xún)系統(tǒng)具有課表查詢(xún)、課表管理、消息通知和信息數(shù)據(jù)管理等功能。對(duì)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)、功能設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)以及實(shí)現(xiàn)分別進(jìn)行闡述。實(shí)踐表明,依據(jù)該設(shè)計(jì)開(kāi)發(fā)的最終產(chǎn)品可靠、易用、易擴(kuò)充且使用方便。
關(guān)鍵詞:Web service;移動(dòng)查詢(xún);課表
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)02-0040-03
Design and Implementation of AMobile Query System for Laboratory Timetable Based on Web Sevice
WAN Xiang-ming
(Shenyang Aerospace University, Engineering Training Center,Shenyang110036, China)
Abstract:With the wide use of intelligent mobile devices, communication and communication are more convenient. The teachers and students of various colleges and universities can also obtain the information such as the timetable, the notice and so on at any time and anywhere by the intelligent equipment. In view of the problem that Lan timetable can not be queried, and we need to satisfy students' inquiries simultaneously on computers and mobile phones, we design and develop a Web service based timetable query system. The system has the functions of the inquiry of the class table, the management of the timetable, the message notification and the management of the information data. The system structure design, function design, database design and implementation are expounded respectively. The practice shows that the final product developed according to the design is reliable, easy to use, easy to expand and easy to use.
Key words:Web service;mobile query; schedule
1 背景
隨著各高校校園網(wǎng)絡(luò)建設(shè)程度的推進(jìn),移動(dòng)互聯(lián)網(wǎng)終端的普及,各類(lèi)信息可以在計(jì)算機(jī)或手機(jī)上方便快捷的查詢(xún)。自從“互聯(lián)網(wǎng)+”的概念被提出,各行各業(yè)都在不斷推進(jìn)信息化改革,各種平臺(tái)接踵而生。目前國(guó)內(nèi)外各大高校傳統(tǒng)的紙質(zhì)課表管理形式,在各大院校已經(jīng)發(fā)展為計(jì)算機(jī)輔助管理形式。
然而,基于局域網(wǎng)建設(shè)的實(shí)驗(yàn)室,學(xué)生無(wú)法通過(guò)互聯(lián)網(wǎng)訪問(wèn),只能在局域網(wǎng)內(nèi)查詢(xún)相關(guān)信息和通知,這就導(dǎo)致了學(xué)生在實(shí)驗(yàn)室外就不能實(shí)時(shí)查詢(xún)到課表,掌握實(shí)驗(yàn)課程的安排及變動(dòng)。導(dǎo)致這種問(wèn)題的出在,主要是因?yàn)椤半x線”辦公的現(xiàn)狀。若要解決這個(gè)問(wèn)題,就是要將課程安排過(guò)程移植到互聯(lián)網(wǎng)上,通過(guò)互聯(lián)網(wǎng)的時(shí)效性、便捷性來(lái)解決排課低效的問(wèn)題[1]。
結(jié)合實(shí)際情況和項(xiàng)目需求,設(shè)計(jì)并實(shí)現(xiàn)了基于 Web Sevice的計(jì)算機(jī)實(shí)驗(yàn)室課表移動(dòng)查詢(xún)系統(tǒng)。系統(tǒng)采用B/S模式,使用php、JavaScript及mysql工具開(kāi)發(fā)。B/S模式主要利用瀏覽器技術(shù),結(jié)合瀏覽器的多種Script語(yǔ)言和ActiveX技術(shù),實(shí)現(xiàn)了原本需要復(fù)雜的軟件才能實(shí)現(xiàn)的強(qiáng)大的功能,在客戶(hù)機(jī)端不用安裝專(zhuān)門(mén)的軟件,只要一個(gè)瀏覽器即可。Web Services 是一種軟件系統(tǒng)或平臺(tái)。它的目標(biāo)是提供一種標(biāo)準(zhǔn)的方法使運(yùn)行在不同平臺(tái)上、以不同編程語(yǔ)言編寫(xiě)的各種應(yīng)用程序能夠方便地在互聯(lián)網(wǎng)上互相通信[2]。
2 功能需求分析
工程訓(xùn)練中心的實(shí)驗(yàn)課程管理方式是采用文檔編輯的人工方式實(shí)現(xiàn)的,并且各個(gè)計(jì)算機(jī)實(shí)驗(yàn)室不能連接互聯(lián)網(wǎng),學(xué)生只能通過(guò)教師口頭通知或是到實(shí)驗(yàn)室問(wèn)詢(xún)的方式得知各實(shí)驗(yàn)課程的安排。這導(dǎo)致課程信息更新不及時(shí),編輯與查看不方便,學(xué)生和教師無(wú)法查詢(xún)到課程安排等問(wèn)題。針對(duì)實(shí)際情況并綜合各類(lèi)用戶(hù)的需求,作如下需求分析。
1) 用戶(hù)登錄。通過(guò)用戶(hù)登錄,系統(tǒng)可分辨用戶(hù)的身份,不同的用戶(hù)可具有相應(yīng)的功能。教師登陸后具備課程更改和發(fā)布通知等功能;學(xué)生登陸后具備查詢(xún)課程和閱讀通知等功能。
2) 課表查詢(xún)。課表查詢(xún)系統(tǒng)主要是用于查看當(dāng)前實(shí)驗(yàn)室課程安排。計(jì)算機(jī)實(shí)驗(yàn)室除接待各類(lèi)實(shí)驗(yàn)課程上機(jī)外,還為全校學(xué)生提供自由上機(jī)功能,當(dāng)計(jì)算機(jī)實(shí)驗(yàn)室沒(méi)有空余機(jī)房時(shí),自由上機(jī)功能暫停開(kāi)放。學(xué)生如果想到實(shí)驗(yàn)室上機(jī),可以提前通過(guò)系統(tǒng)查詢(xún)到實(shí)驗(yàn)室是否有可作為自由上機(jī)的空余機(jī)房,從而合理安排時(shí)間課余時(shí)間。同時(shí),上課的學(xué)生也查詢(xún)到實(shí)驗(yàn)課程的上課時(shí)間和教室。本著方便廣大師生使用的初衷,需要在計(jì)算機(jī)或移動(dòng)終端都能查詢(xún)到課程安排。endprint
3) 課表維護(hù)。各實(shí)驗(yàn)課程安排確定后,須要成批錄入課程信息,每門(mén)課程都需要課程名稱(chēng)、任課教師及上課教室等信息??梢耘啃薷膭h除課程信息,或按課程名、教師名等修改刪除課程信息。
4) 各任課教師可預(yù)約實(shí)驗(yàn)室,可修改自己所授課程的課程安排。當(dāng)任課教師需安排課表之外的實(shí)驗(yàn)課程時(shí),或所授課程更改時(shí)間或教室時(shí),可向系統(tǒng)管理員提出申請(qǐng)實(shí)驗(yàn)室開(kāi)放或更改,管理員同意后可填寫(xiě)課程信息。
5) 具備消息通知推送功能。當(dāng)任課教師修改實(shí)驗(yàn)課程安排時(shí),更改的消息會(huì)發(fā)布給每位上課的學(xué)生,學(xué)生在登陸查詢(xún)系統(tǒng)后會(huì)首先接收查看各條通知。
6) 界面美觀,操作簡(jiǎn)單便捷。面向不同的用戶(hù),查詢(xún)系統(tǒng)能以美觀的課表界面呈現(xiàn)個(gè)人課表;能方便快捷的查詢(xún)課表信息;通知類(lèi)信息顯示要明顯。
3 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
基于Web Sevice的計(jì)算機(jī)實(shí)驗(yàn)室課表查詢(xún)系統(tǒng)分為兩部分,一部分是計(jì)算機(jī)或移動(dòng)終端提供瀏覽查詢(xún)的網(wǎng)頁(yè)部分,另一部分是服務(wù)器數(shù)據(jù)管理及維護(hù)部分[3]。用戶(hù)通過(guò)計(jì)算機(jī)或移動(dòng)終端訪問(wèn)系統(tǒng)網(wǎng)頁(yè)并發(fā)送請(qǐng)求,服務(wù)器獲取到請(qǐng)求后,以WebSevice的方式將要查詢(xún)數(shù)據(jù)返回到終端,終端解析數(shù)據(jù)并呈現(xiàn)。系統(tǒng)總體結(jié)構(gòu)分為用戶(hù)登陸、課表查詢(xún)、通知發(fā)布、課程預(yù)約、課表維護(hù)及用戶(hù)信息維護(hù),如圖1所示。
3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)的存儲(chǔ)是該系統(tǒng)的重要組成之一,本系統(tǒng)中包含兩張數(shù)據(jù)表,分別是用戶(hù)信息表和課程信息表。用戶(hù)表有三條字段,包括id,userName,password,表中password除了具有驗(yàn)證用戶(hù)身份的作用,同時(shí)還用來(lái)限制用戶(hù)的操作權(quán)限。課程信息表有六條字段,包括id,classRoomNum,week,courseId,userId,info。因?yàn)榻淌蚁鄬?duì)固定且數(shù)量少,所以將每個(gè)教室編號(hào),具體體現(xiàn)在classRoomNum字段,編號(hào)的代碼在應(yīng)用系統(tǒng)內(nèi),數(shù)據(jù)庫(kù)收到數(shù)據(jù)的時(shí)候,就已經(jīng)是編號(hào)后的數(shù)據(jù),所以只需對(duì)應(yīng)存儲(chǔ)就行。其中week字段主要是用來(lái)協(xié)助查詢(xún)的,它與用于表示課程編號(hào)的courseId字段相互協(xié)作。每天固定安排5節(jié)課,這樣所有的課程都能以某一個(gè)起點(diǎn)為錨。UserId字段存儲(chǔ)的是用戶(hù)的id字段,info字段當(dāng)然存儲(chǔ)的就是每個(gè)課程的具體內(nèi)容了。
3.3 功能模塊設(shè)計(jì)
根據(jù)系統(tǒng)結(jié)構(gòu)的分析,系統(tǒng)需要實(shí)現(xiàn)的功能從總體上分為兩部分,第一部分為網(wǎng)頁(yè)端,要同時(shí)適用于計(jì)算機(jī)網(wǎng)頁(yè)瀏覽和手機(jī)網(wǎng)頁(yè)瀏覽;第二部分為后臺(tái)系統(tǒng)數(shù)據(jù)庫(kù)管理端。用戶(hù)在計(jì)算機(jī)或移動(dòng)終端上通過(guò)網(wǎng)頁(yè)瀏覽器打開(kāi)系統(tǒng)所在網(wǎng)頁(yè),身份認(rèn)證后登錄頁(yè)面。系統(tǒng)中的用戶(hù)主要有三類(lèi),即學(xué)生、教師和管理員。學(xué)生登陸后,可以在網(wǎng)頁(yè)上查詢(xún)課表信息,可以按周次、按教師及按實(shí)驗(yàn)室三種方式查詢(xún);登錄后學(xué)生還能看到系統(tǒng)或教師發(fā)布的消息,及時(shí)獲取課程變動(dòng)情況。如下圖2,用戶(hù)登錄后在課表頁(yè)面上即可顯示本周次課表,每個(gè)時(shí)段的黑色圓框數(shù)字代表當(dāng)前時(shí)段使用情況,點(diǎn)擊即可查看具體的內(nèi)容,如圖3所示。教師登錄后可以按周次顯示課表,也可以按自己所授課程的安排來(lái)顯示課表。當(dāng)有新的實(shí)驗(yàn)課程室,可以通過(guò)預(yù)約實(shí)驗(yàn)課程功能,提出預(yù)約某時(shí)間段的實(shí)驗(yàn)室,同時(shí)會(huì)給管理員發(fā)送消息,等管理員核實(shí)通過(guò)后該預(yù)約即可生效。如果教師更改了上課的地點(diǎn)或時(shí)間,將會(huì)給上該門(mén)課程的學(xué)生發(fā)送通知。管理員具有系統(tǒng)數(shù)據(jù)維護(hù)、管理系統(tǒng)消息發(fā)布及核實(shí)預(yù)約實(shí)驗(yàn)課程信息的功能。
后臺(tái)系統(tǒng)數(shù)據(jù)庫(kù)管理端,主要是用于各類(lèi)用戶(hù)的數(shù)據(jù)維護(hù)及課程數(shù)據(jù)維護(hù)。課程信息維護(hù)不僅提供了簡(jiǎn)單的添加、刪除等維護(hù)功能,還為用戶(hù)提供了批量添加、批量修改及批量刪除課程的功能。用戶(hù)信息維護(hù)的功能,在頁(yè)面左上角有工具按鈕,這些操作都被集成到了工具之中。
4 實(shí)現(xiàn)
4.1 客戶(hù)端實(shí)現(xiàn)
課表查詢(xún)系統(tǒng)是基于Web Services服務(wù),用戶(hù)可在不同平臺(tái)上均可以通過(guò)Web Services技術(shù)實(shí)現(xiàn)調(diào)用本系統(tǒng)所提供的接口。Web service平臺(tái)是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性??梢酝ㄟ^(guò)多種語(yǔ)言,在任意平臺(tái)上編寫(xiě)代碼,只需通過(guò)Web service標(biāo)準(zhǔn)對(duì)這些服務(wù)進(jìn)行查詢(xún)和訪問(wèn)??蛻?hù)端采用web services 與后臺(tái)通信,后臺(tái)從數(shù)據(jù)庫(kù)中取數(shù)據(jù),再返回給客戶(hù)端,客戶(hù)端再做相關(guān)的顯示或者其他處理。客戶(hù)端代碼編寫(xiě)最基礎(chǔ)的一環(huán)就是課程表數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),系統(tǒng)中自定義了table,tr,th的數(shù)據(jù)變量,代碼如下。
課程表的創(chuàng)建中使用JavaScript代碼動(dòng)態(tài)創(chuàng)建是最為合適的[4],這樣就不僅可以隨意更改頁(yè)面,還能隨意添加特性。這樣就可以輕松地獲得每個(gè)課程表元素(th),再通過(guò)回調(diào)函數(shù)SETTING,給每個(gè)th設(shè)置動(dòng)作或者內(nèi)容。程序編寫(xiě)中所有對(duì)th的操作都是通過(guò)SETTING實(shí)現(xiàn)的。日程表元素遍歷代碼如下所示。
4.2 服務(wù)器端實(shí)現(xiàn)
服務(wù)器端主要實(shí)現(xiàn)的是課程數(shù)據(jù)管理和用戶(hù)數(shù)據(jù)管理。其中課程管理是重中之重,而課程管理必不可少的就是周次的計(jì)算和推演。由此定義課clacWeekDayCourse函數(shù),該函數(shù)是實(shí)現(xiàn)通過(guò)課程ID推算課程周數(shù)的算法。在數(shù)據(jù)庫(kù)中通過(guò)week字段輔助查詢(xún),week的數(shù)據(jù)就是通過(guò)clacWeekDayCourse方法計(jì)算得來(lái)。這其中并沒(méi)有選擇在傳入后臺(tái)的通訊數(shù)據(jù)中直接攜帶week這條數(shù)據(jù),主要是為了系統(tǒng)可擴(kuò)展性,同時(shí)可以簡(jiǎn)化代碼。courseId數(shù)據(jù)隱含week所需數(shù)據(jù),瀏覽器端的代碼中皆不去顯性的操作week數(shù)據(jù),而是通過(guò)后臺(tái)計(jì)算的方式得出,這樣就可以省去一條參數(shù)。服務(wù)器端的部分代碼如下。
private function clacWeekDayCourse($courseId){
$timeData=array();
$theNumOnWeek=$courseId % 35;endprint
$week=intval($courseId / 35)+1;
$day=$theNumOnWeek % 7;
$course=intval($theNumOnWeek / 7) + 1;
if($day == 0){
$day=7;
$course=intval($theNumOnWeek / 7);
}
if($theNumOnWeek == 0){
$course=5;
$week=$courseId/35;
}
$timeData['week']=$week;
$timeData['day']=$day;
$timeData['course']=$course;
return $timeData;
}
private function insertOne($user,$courseId,$info,$classRoomNum){
$model=new ClassMysql();
$timeData=$this→clacWeekDayCourse($courseId);
$model→userId=$user;
$model→classRoomNum=$classRoomNum;
$model→week=$timeData['week'];
$model→courseId=$courseId;
$model→info=$info;
$model→save();
}
5 結(jié)束語(yǔ)
基于Web Sevice的實(shí)驗(yàn)室課表移動(dòng)查詢(xún)系統(tǒng)解決了局域網(wǎng)實(shí)驗(yàn)室課表不能在實(shí)驗(yàn)室外查詢(xún)到課表的實(shí)際問(wèn)題,兼容于移動(dòng)終端和計(jì)算機(jī),并且不需要安裝App軟件。
依據(jù)軟件項(xiàng)目流程,從基于Web Sevice的實(shí)驗(yàn)室課表移動(dòng)查詢(xún)的需求分析入手,對(duì)系統(tǒng)的結(jié)構(gòu)、功能模塊、數(shù)據(jù)庫(kù)設(shè)計(jì)以及系統(tǒng)的實(shí)現(xiàn)四個(gè)方面進(jìn)行了闡述。操作界面簡(jiǎn)潔明了、美觀友好,服務(wù)器管理端使用方便,完美的實(shí)現(xiàn)了系統(tǒng)最初設(shè)計(jì)全部功能。系統(tǒng)運(yùn)行穩(wěn)定,業(yè)務(wù)運(yùn)行數(shù)據(jù)正確無(wú)誤,用戶(hù)體驗(yàn)良好[5]。系統(tǒng)試運(yùn)行兩學(xué)期,用戶(hù)數(shù)量從最初的一百多人達(dá)到現(xiàn)在的兩千多人,且隨著不斷宣傳,用戶(hù)數(shù)量一直在增高。
參考文獻(xiàn):
[1] 蔡久評(píng), 況和平, 周強(qiáng).開(kāi)放型計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)室建設(shè)[J].實(shí)驗(yàn)室研究與探索, 2011,30(5):166-170.
[2] 楊晨.基于Web Services的高職院校教務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué), 2014.
[3] 徐炳文.基于四層架構(gòu)J2ME移動(dòng)課表查詢(xún)系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)[J].天津師范大學(xué)學(xué)報(bào), 2011(4):5-63.
[4] 明日科技. Java Web從入門(mén)到精通[M].北京:清華大學(xué)出版社, 2012(9):1-569.
[5] 肖海慧, 廖定安, 沈新宇.基于Android的課表查詢(xún)APP設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦, 2017(9):22-23.endprint