劉乂毓,張 鏝
(1.內(nèi)江師范學(xué)院人工智能學(xué)院,四川 內(nèi)江 641100;2.珠海博聞教育科技發(fā)展有限公司,廣東 珠海 519000)
我校的教務(wù)系統(tǒng)可以提供教師個(gè)人課表、班級課表,也可以根據(jù)場地、時(shí)間等方式進(jìn)行查詢,但一般只有二級學(xué)院教科辦主任這樣的角色才有權(quán)操作,而實(shí)驗(yàn)室管理人員,一般只有每個(gè)實(shí)驗(yàn)室的課表,實(shí)驗(yàn)室人員每次開、關(guān)實(shí)驗(yàn)室,維護(hù)實(shí)驗(yàn)設(shè)備,都要逐次翻看每個(gè)實(shí)驗(yàn)室的課表查閱,當(dāng)教師調(diào)課次數(shù)多時(shí),這個(gè)過程容易出錯(cuò)。為此,在不改變學(xué)校教務(wù)系統(tǒng)現(xiàn)有的角色分配等系統(tǒng)設(shè)計(jì)的情況下,項(xiàng)目充分利用學(xué)校教務(wù)系統(tǒng)導(dǎo)出的結(jié)果——按實(shí)驗(yàn)室分類匯總的Excel課表和按教師分類匯總的Excel表,由于單獨(dú)使用Excel綜合匯總效率差,匯總內(nèi)容多時(shí),讀寫速度和公式計(jì)算速度極慢,為此本項(xiàng)目在使用Excel綜合匯總的同時(shí),利用C#和Access另建模塊,分擔(dān)一部分計(jì)算量。這樣,管理人員可以輕松快速了解整個(gè)實(shí)驗(yàn)室的使用情況,該設(shè)計(jì)系統(tǒng)可以推廣到學(xué)校的各個(gè)相關(guān)二級學(xué)院實(shí)驗(yàn)室、教學(xué)樓管理工作中,從而大幅度提高計(jì)算機(jī)實(shí)驗(yàn)室、教學(xué)樓管理的工作效率。
實(shí)驗(yàn)室課表管理可以用于支持實(shí)驗(yàn)室管理人員完成整個(gè)實(shí)驗(yàn)室課表合并,生成合并課表工作。實(shí)驗(yàn)室管理員可以通過系統(tǒng)獲取排課的相關(guān)信息(包括排課時(shí)間、所用實(shí)驗(yàn)室、授課教師、上課班級等一切相關(guān)信息),相較于從教務(wù)下發(fā)的原始Excel表中獲取更加方便;可以通過移動(dòng)端獲取信息;可以在沒有網(wǎng)絡(luò)的情況下獲取信息;可以根據(jù)排課調(diào)整情況修改系統(tǒng)中的數(shù)據(jù);對于即使不是計(jì)算機(jī)專業(yè)的實(shí)驗(yàn)室管理員,系統(tǒng)也必須易于操作;可以根據(jù)排課表打印。
主要體現(xiàn)以下內(nèi)容:
由于無法對原始表的數(shù)據(jù)所在的數(shù)據(jù)庫進(jìn)行查詢操作,所以需要一個(gè)原始數(shù)據(jù)轉(zhuǎn)換程序拆分原始表中的數(shù)據(jù)并存入另建的本地?cái)?shù)據(jù)庫中。
考慮到實(shí)驗(yàn)室管理員習(xí)慣使用原始Excel表查詢排課信息,系統(tǒng)中顯示篩選查詢后的排課的表也使用Excel格式。
需要在移動(dòng)端中顯示在使用的Excel,不適用宏。
考慮到不單獨(dú)安裝數(shù)據(jù)庫程序,使用Access作為存儲(chǔ)轉(zhuǎn)換后數(shù)據(jù)的數(shù)據(jù)庫。
實(shí)驗(yàn)室課表管理系統(tǒng)實(shí)現(xiàn)以下功能:
實(shí)驗(yàn)室管理員可以設(shè)置以下查詢范圍:周、校區(qū)、樓、教室;可以設(shè)置以下顯示內(nèi)容:校區(qū)、樓、教室、課程、周次、教師、教學(xué)班編號、教學(xué)班組成、教學(xué)班人數(shù);可以打印高橋校區(qū)格致樓二樓實(shí)驗(yàn)室使用時(shí)段安排。
開發(fā)環(huán)境主要有三個(gè)方面:原始數(shù)據(jù)轉(zhuǎn)換程序:C#語言[1-2],.Net4.0框架[3],在Visual Studio 2010[4]中開發(fā);存儲(chǔ)轉(zhuǎn)換后數(shù)據(jù)的數(shù)據(jù)庫(包含Excel中篩選的部分計(jì)算過程):Microsoft Access 2010[5];顯示篩選查詢后的排課的表:Microsoft Excel 2010。
如圖1所示,完成系統(tǒng)需要實(shí)現(xiàn)原始數(shù)據(jù)轉(zhuǎn)換程序,存儲(chǔ)轉(zhuǎn)換后數(shù)據(jù)的數(shù)據(jù)庫,和顯示篩選查詢后的排課的表3個(gè)部分。
圖1 系統(tǒng)示意圖
程序把已有的原始表數(shù)據(jù)按照查詢和篩選的需要拆分并存入數(shù)據(jù)庫,如圖2所示。
圖2 轉(zhuǎn)換程序界面
2.1.1 連接到原始表主要代碼如下:
通過Microsoft.Office.Interop.Excel引用實(shí)現(xiàn),主要代碼如下:
…/*獲取實(shí)例的公共方法體其他部分*/…
TimetableXlsFileReader.reader = new TimetableXlsFileReader();
TimetableXlsFileReader.app = new Microsoft.Office.Interop.Excel.ApplicationClass();
…/*獲取實(shí)例的公共方法體其他部分*/…
TimetableXlsFileReader timetableXlsFileReaderInstance = TimetableXlsFileReader.GetTimetableXlsFileReaderInstance(transferRoutes);
2.1.2 選擇課表類型主要代碼如下:
通過選擇預(yù)先定義拆分的方法(用JSON保存)實(shí)現(xiàn),主要代碼如下:
.../*聲明臨時(shí)變量*/...
using (TextReader textReader = File.OpenText("settingsdatasource" + runtime_save.datasource + ".json"))
{
transferRoutes = JsonConvert.DeserializeObject
}
2.1.3 拆分?jǐn)?shù)據(jù)主要代碼如下:
主要代碼如下:
.../*聲明臨時(shí)變量*/...
IEnumerable
where r.source_type == "file_name" // Excel文件中定義為"file_name"的數(shù)據(jù)源
select r;
if (source.Count
…/*用同樣的流程提取"constant"和"cell_text"的數(shù)據(jù)*/…
…/*關(guān)閉流*/…
2.1.4 連接到數(shù)據(jù)庫主要代碼如下:
通過Keel.EasyAccess引用實(shí)現(xiàn)連接,主要代碼如下:
Accessor.FileUrl = runtime_save.access_file_path;
Accessor.OpenAdodbConn();
2.1.5 轉(zhuǎn)存主要代碼如下:
通過Keel.EasyAccess引用實(shí)現(xiàn)轉(zhuǎn)存,主要代碼如下:
.../*通過循環(huán)獲取DataTable類型的方法體*/...
Accessor.Create(dataTable.TableName, list.ToArray(), row);
.../*異常輸出到日志文件等其他部分*/...
.../*循環(huán)體其他部分*/...
Accessor.Flush();
保存從原始表獲得的數(shù)據(jù),將顯示表的下拉列表等所需的數(shù)據(jù)源通過查詢得出。為了方便顯示表通過Microsoft Querry導(dǎo)入,部分表并未按照標(biāo)準(zhǔn)的數(shù)據(jù)庫設(shè)計(jì)模式設(shè)計(jì),也未使用自定義函數(shù),如圖3所示。
圖3 數(shù)據(jù)庫中的表和查詢
在顯示表中通過[數(shù)據(jù)]->[自ACCESS]導(dǎo)入數(shù)據(jù)(底層通過Microsoft Querry查詢的方式導(dǎo)入),然后經(jīng)過公式計(jì)算,主要顯示內(nèi)容為以下兩個(gè)工作表。
“課程”表包含篩選指定周、校區(qū)、樓、教室功能,并根據(jù)需要顯示校區(qū)、樓、教室、課程、周次、教師、教學(xué)班編號、教學(xué)班組成、教學(xué)班人數(shù)等內(nèi)容,如圖4、5所示。
圖4 在“課程”表中查詢第17-20周的排課情況
圖5 在“高橋校區(qū)格致樓二樓實(shí)驗(yàn)室使用時(shí)段安排打印”表中查詢包含第17-20周的排課的課程情況用于打印
“高橋校區(qū)格致樓二樓實(shí)驗(yàn)室使用時(shí)段安排打印”表包含篩選指定周的功能,其格式用于打印。
根據(jù)我校的教務(wù)系統(tǒng)輸出存在的不足,實(shí)驗(yàn)室個(gè)數(shù)多的特點(diǎn),為減輕管理人員工作量,避免工作失誤,通過對系統(tǒng)的設(shè)計(jì)目標(biāo),設(shè)計(jì)思想,功能進(jìn)行分析,在不改變學(xué)校教務(wù)系統(tǒng)現(xiàn)有的角色分配等系統(tǒng)設(shè)計(jì)的情況下,利用學(xué)校教務(wù)系統(tǒng)導(dǎo)出的結(jié)果,C#和Access,采用原始數(shù)據(jù)轉(zhuǎn)換到數(shù)據(jù)庫,顯示綜合數(shù)據(jù)庫,設(shè)計(jì)出了一張整個(gè)實(shí)驗(yàn)室的動(dòng)態(tài)匯總課表,本文設(shè)計(jì)的系統(tǒng)操作簡單、方便、易擴(kuò)展,管理人員利用該系統(tǒng)導(dǎo)出的結(jié)果可以輕松掌握整個(gè)實(shí)驗(yàn)室的使用情況,從而可以有效地提高實(shí)驗(yàn)室管理的工作效率,該系統(tǒng)可以推廣到學(xué)校的各相關(guān)部門和人員的管理工作中,具有一定的實(shí)用性、先進(jìn)性。