李麗 郭蕓俊
摘要:該文詳細介紹了在WINDOWS XP平臺下, 利用可視化集成開發(fā)工具C++ Builder和SQL Server數(shù)據(jù)庫技術(shù)開發(fā)的實驗實踐課輔助排課系統(tǒng)的設(shè)計與實現(xiàn)。該系統(tǒng)的運行提高了學(xué)院實驗室排課的工作效率,促進了實驗教學(xué)管理的定量化、規(guī)范化和信息化。
關(guān)鍵詞:排課系統(tǒng);實驗教學(xué)管理;C++ Builder;SQL Server
中圖分類號:TP315.69 文獻標(biāo)識碼:A 文章編號:1009-3044(2014)05-0965-05
Experiment Practice Lesson Course Auxiliary Scheduling System Design and Realization
LI Li, GUO Yun-jun
(Taiyuan Institute of Computer Engineering, Taiyuan 030008, China)
Abstract:This article describes the platform in WINDOWS XP, using visual integrated development tools C ++ Builder and SQL Server database technology developed experimental practice lesson auxiliary Scheduling System Design and Implementation. The operation of the system to improve the efficiency of the laboratory Scheduling and promote a quantitative experimental teaching management, standardization and information technology.
Key words:course scheduling system;experimental teaching management;C++ Builder;SQL Server
高校的實驗室作為學(xué)校實踐教學(xué)、科學(xué)研究的基地,其管理水平和信息化程度直接影響著學(xué)校培養(yǎng)人才的質(zhì)量和科研的效率。而在實驗實踐教學(xué)管理中,實驗課的排課問題又是一項重要且復(fù)雜的基礎(chǔ)工作。由于受到實驗室、教師等資源的限制,實驗排課的過程中充滿了矛盾和沖突,手工排課,費時費力,且科學(xué)性、方便性更難以保證。所以,開發(fā)小型實用的實驗室排課系統(tǒng)已成為我院實驗室高效管理的迫切需求[1-2]。
目前,我院擁有實驗室、語音室和公共機房100余個,分布在不同的校區(qū)。一直以來,我院實驗室的排課都是采用各自為營、人工編排再統(tǒng)一上報匯總的工作方式。顯然,該工作方式存在效率低、周期長、規(guī)范性差和出錯率高等諸多缺陷。為了提高排課效率,滿足實驗室信息化綜合管理的需求,也為了有利于學(xué)院對實驗室的統(tǒng)一規(guī)范化管理和監(jiān)督,我們開發(fā)了實驗實踐課輔助排課系統(tǒng)。
1 系統(tǒng)功能模塊
本系統(tǒng)完成的功能主要有[3-4]:
1) 系統(tǒng)管理員可按學(xué)期發(fā)放實驗教學(xué)任務(wù),并對實驗教學(xué)任務(wù)進行管理。
2) 系統(tǒng)管理員可以方便的對實驗室、教師、班級、實驗課程和項目等基本信息進行維護。
3) 實驗室可根據(jù)自身特殊情況,設(shè)置時間條件限制。
4) 教師可按照本學(xué)期實驗教學(xué)任務(wù),分課程按實驗項目安排實驗時間和地點。
5) 各類型實驗課表的查詢和導(dǎo)出功能。
6) 系統(tǒng)管理員可對實驗安排情況進行檢查和查錯,并對實驗課表數(shù)據(jù)進行維護。
根據(jù)要完成的主要功能將系統(tǒng)分成8個主要功能模塊,其結(jié)構(gòu)如圖1所示。
1) 用戶登陸模塊:系統(tǒng)允許管理員、教師和學(xué)生3 類不同權(quán)限的用戶登陸。根據(jù)登陸用戶的權(quán)限,系統(tǒng)將啟動不同的模塊。管理員擁有系統(tǒng)全部權(quán)限;教師擁有添加修改實驗項目、安排實驗上課時間,查詢實驗課表等權(quán)限;學(xué)生只擁有查詢實驗課表的權(quán)限。
2)實驗室信息管理模塊:本模塊由系統(tǒng)管理員負責(zé),實現(xiàn)學(xué)院實驗室基本信息的維護和管理,主要包括添加、刪除實驗室,修改實驗室信息等功能。
3)實驗項目管理模塊:實現(xiàn)實驗課程和實驗項目的信息管理,主要包括實驗課程的添加、課程信息的修改、實驗項目的添加、項目信息的修改等功能。該模塊中,教師只分配了實驗項目的操作權(quán)限。
4)條件設(shè)置模塊:實現(xiàn)實驗室(或教師)不可用時間段的排除設(shè)置。該功能主要針對我院部分實驗室(或教師)在特殊時間段有特殊工作安排,無法上實驗的情況而設(shè)置的功能。
5)時間安排模塊:實現(xiàn)教師分課程按項目安排實驗地點和時間。主要包括實驗時間的保存、修改和刪除功能。
6)時間查詢模塊:實現(xiàn)實驗課表的查詢。主要包括按教師、按班級、按實驗室中心、按實驗室等不同類型實驗課表的查詢和導(dǎo)出功能。
7)任務(wù)管理模塊:本模塊由系統(tǒng)管理員負責(zé),實現(xiàn)本學(xué)期實驗教學(xué)任務(wù)的發(fā)放和管理。主要包括學(xué)期初始化、導(dǎo)入教學(xué)任務(wù)、修改教學(xué)任務(wù)和教學(xué)任務(wù)預(yù)處理等功能。
8)其他功能模塊:本模塊由系統(tǒng)管理員負責(zé),主要實現(xiàn)了實驗課表安排情況的檢查和查錯、用戶管理和數(shù)據(jù)管理等功能。
2 系統(tǒng)設(shè)計與實現(xiàn)
2.1 設(shè)計平臺和工具
本系統(tǒng)是以WINDOWS XP操作系統(tǒng)為開發(fā)平臺,利用可視化集成開發(fā)工具C++ Builder和SQL Server數(shù)據(jù)庫制作完成的。
2.2 系統(tǒng)數(shù)據(jù)庫設(shè)計
系統(tǒng)數(shù)據(jù)庫設(shè)計主要包括實驗課表(dbs_sykb)、班級表(dbc_bjb)、教師表(dbc_jsb)、用戶表(dbz_user)、課程表(dbc_kcb)、實驗中心表(dbc_syzxb)、實驗室表(dbc_sysb)、實驗項目表(dbc_syxmb)、教學(xué)任務(wù)表(dbs_jxrw)、 教學(xué)任務(wù)對比表(dbs_dbrw)等十余種表的設(shè)計。
這里主要介紹幾個關(guān)鍵表的結(jié)構(gòu):
1)實驗課表實際上就是按實驗項目安排的時間地點表,主要包括序號、項目名稱、實驗室編碼、實驗室名稱、課程(環(huán)節(jié))、上課班級、周次、星期、節(jié)次、輔導(dǎo)教師等字段。
2)實驗項目表記錄了所有實驗室可做實驗項目的相關(guān)信息,主要包括序號、課程(環(huán)節(jié))、項目編碼、項目名稱、計劃時數(shù)、實驗類型、實驗類別等字段。
3)實驗室表記錄了所有實驗室信息,主要包括實驗室編碼、實驗室名稱、中心編碼、中心名稱、歸屬系部、設(shè)備臺套數(shù)、總資產(chǎn)、管理教師等字段。
4)教學(xué)任務(wù)對比表記錄了本學(xué)期所有實驗教學(xué)任務(wù)的相關(guān)信息,主要包括序號、課程(環(huán)節(jié))、實驗類別、課程類別、授課方式、學(xué)時(周)數(shù)、教師、班級、班級數(shù)、學(xué)生人數(shù)、上課周次等字段。
2.3 主要功能模塊實現(xiàn)
鑒于篇幅有限,這里主要截取登陸模塊、時間安排模塊、時間查詢模塊和課表差錯模塊的實現(xiàn)進行介紹。
2.3.1登陸模塊
用戶通過登錄界面進入系統(tǒng),教師和管理員通過工號和密碼登錄,學(xué)生通過班級號登錄。由于用戶的權(quán)限不同,所以不同用戶登錄后所見的系統(tǒng)主界面也不同,如圖2為擁有全部操作權(quán)限的管理員登錄后的系統(tǒng)主界面。若以教師身份登錄,主界面中的任務(wù)管理和其他功能模塊不可見,而以學(xué)生身份登錄后只能看到時間查詢模塊。
圖2 系統(tǒng)主界面
除此之外,本系統(tǒng)還進行了環(huán)節(jié)設(shè)置。系統(tǒng)處于數(shù)據(jù)維護環(huán)節(jié)時,除管理員外,其他身份都無法登錄系統(tǒng);教師排課環(huán)節(jié),教師可正常登錄系統(tǒng)完成與實驗安排相關(guān)的所有功能;課表查詢環(huán)節(jié),教師無權(quán)修改課表(如需修改,必須辦理相關(guān)手續(xù)后由管理員統(tǒng)一操作),和學(xué)生一樣都只能進行課表的查詢操作。
2.3.2時間安排模塊
本系統(tǒng)由教師直接安排實驗時間,時間安排界面如圖3所示。
圖3 時間安排界面
在教師安排時間前,管理員需提前導(dǎo)入本學(xué)期實驗教學(xué)任務(wù)并預(yù)處理。這樣,教師就可以方便的選擇實驗課程、班級、實驗地點等內(nèi)容而不必自己輸入。教師分課程按實驗項目選定了實驗地點和實驗時間等內(nèi)容后,點擊“保存”按鈕即實現(xiàn)該實驗項目實驗時間的安排。安排成功,該記錄會出現(xiàn)在下面的時間安排表中。當(dāng)然,在安排實驗時間時,系統(tǒng)要確保數(shù)據(jù)的完整性和進行沖突檢測(比如:一個教師不能同時使用多個實驗室,一個班級不能同時上多個課程的實驗,一個實驗室也不能同時上多個教師的實驗等等),其實現(xiàn)的基本流程如圖4 所示。
圖4 時間安排基本流程圖
2.3.3時間查詢模塊
實驗時間查詢界面如圖5所示,用戶可根據(jù)需要按班級、教師、實驗室、實驗中心、實驗課程等實現(xiàn)單字段查詢也可以結(jié)合周次實現(xiàn)多字段查詢,并根據(jù)需要導(dǎo)出查詢結(jié)果。關(guān)鍵實現(xiàn)代碼如下:
s = ComboBox2→Text.Trim();
if(s.Length()>0 && ComboBox2→ItemIndex>=0)
switch(ComboBox3→ItemIndex){
case 0: // 班級
t = " CharIndex('" + s + "', bj)>0 ";
break;
case 1: // 教師
t = " CharIndex('" + s + "', js1+js2)>0 ";
break;
case 2: // 實驗室
t = " sysm='" + s.SubString(s.Pos("[")+1, s.Pos("]")-s.Pos("[")-1) + "' ";
break;
case 3: // 實驗中心
t = " CharIndex('" + s.SubString(s.Pos("[")+1, s.Pos("]")-s.Pos("[")-1) + "', sysm)=1 ";
break;
case 4: // 實驗課程
t = " CharIndex('" + s.SubString(s.Pos("[")+1, s.Pos("]")-s.Pos("[")-1) + "', kc)=2 ";
break;
case 5: // 課程系部歸屬
t = " CharIndex('" + s.SubString(s.Pos("[")+1, s.Pos("]")-s.Pos("[")-1) + "', kc)=4 ";
break;
default: t = "";}
if(ComboBox1→ItemIndex>0){
if(t.Length()>0) t += " AND ";
t += " zc=" + ComboBox1→Text;}
s = sTitle + " where jxxn='" + dm→GetString("學(xué)年").Trim() + "' AND jxxq='" + dm→GetString("學(xué)期").Trim() + "'";
if(t.Length()>0) s += " AND " + t;
dm→qa[0]→SQL→Text = s + " order by sysm,zc,xq,jc1,js2,kc";
DBGrid1→Columns→Clear();
dm→qa[0]→Open();
2.3.4課表差錯模塊
由于本系統(tǒng)是由教師為主導(dǎo)安排實驗時間的,在排課的過程中難免會出現(xiàn)錯排,漏排的現(xiàn)象,為確保實驗課表的正確性,系統(tǒng)對實驗課表的安排情況進行檢查和差錯是非常有必要的。該模塊由管理員負責(zé),實現(xiàn)界面如圖6所示。
圖6 課表差錯界面
檢查的過程中,要實現(xiàn)與實驗教學(xué)任務(wù)表的對照,檢索出未排實驗、實驗學(xué)時不正確等情況并導(dǎo)出出錯明細,相關(guān)差錯語句如下:
select jl 錯誤情況,kc [課程(環(huán)節(jié))],fs 授課方式,sylx 實驗類型,js 教師,bj 班級,rs 人數(shù),sss [計劃時(周)數(shù)],pcs [排出時數(shù)],pkcs 排課次數(shù)
from (—未排
select '沒有排實驗實踐課' jl, kc, fs, sylx, js, bj, rs, sss, pcs, pkcs
from db_temp_dbrw2 A
where (select count(*) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)=0
—公共計算機課實驗必須正好等于計劃學(xué)時數(shù) 其他專業(yè)課實驗必須整數(shù)倍 實踐校內(nèi)必須安排時間地點
UNION
select '學(xué)時(周)數(shù)不正確' jl, kc, fs, sylx, js, bj, rs, sss, pcs, pkcs
from db_temp_dbrw2 A
where fs!='實踐' AND
(select count(*) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)>0 AND
(select sum(jcs) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)%A.sss<>0 OR
fs='實踐' AND sylx in ('社會實踐','分散實習(xí)','校外集中實習(xí)','畢業(yè)實習(xí)') AND
(select count(*) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)!=A.sss OR
fs='實踐' AND sylx not in ('社會實踐','分散實習(xí)','校外集中實習(xí)','畢業(yè)實習(xí)') AND
(select count(*) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)>0 AND
(select sum(jcs) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)!=A.sss AND
(select sum(jcs) from dbs_sykb where LTRIM(RTRIM(kc))=LTRIM(RTRIM(A.kc)) AND CharIndex(LTRIM(RTRIM(A.bj)),bj)>0)!= A.sss * CASE when sylx='專用實踐周' then 16 when sylx='課程設(shè)計' then 12 else 5 END
—) A
order by SubString(kc,4,2),kc,bj,js;
3 結(jié)束語
目前,本系統(tǒng)已在全院范圍內(nèi)進行了近兩學(xué)期的試運行。運行結(jié)果表明,系統(tǒng)性能良好,達到了提高工作效率、規(guī)范實驗排課管理工作流程的目的,促進了我院實驗教學(xué)管理的信息化建設(shè)。當(dāng)然,系統(tǒng)目前仍存在諸多不足之處有待改進,比如操作的簡便性、查詢的方便性等等??傊?,我們將繼續(xù)在今后的技術(shù)實踐中,不斷地完善和擴展系統(tǒng)性能。
參考文獻:
[1] 張曉偉.煤炭院校實驗室排課系統(tǒng)的設(shè)計與實現(xiàn)[J].煤炭技術(shù),2011,30(10):240-241.
[2] 章玉政,李世杰.實驗中心排課系統(tǒng)的設(shè)計與實現(xiàn)[J].實驗室科學(xué),2011,14(6):131-133.
[3] 石義芳.基于.net 技術(shù)的實驗室排課系統(tǒng)設(shè)計與實現(xiàn)[J].電腦知識與技術(shù), 2009, 5(6):1352-1354.
[4] 李志香,趙永剛.實驗室排課系統(tǒng)開發(fā)與使用[J].應(yīng)用經(jīng)驗, 2012(225):55,64.