程永青
摘要:該文針對我校各類考試采用人工方式進行監(jiān)考人員安排工作的現況,對我校監(jiān)考安排工作進行了需求分析、功能模塊分析、算法分析,研究設計南京電大監(jiān)考安排系統,該系統能自動、快速完成監(jiān)考安排工作,輸出相應的報表,減少了人工失誤和工作量,提高了工作效率。
關鍵詞: 監(jiān)考安排;考試項目;數據庫;算法
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)34-0084-02
1 概述
目前,我校組織開放教育、遠程教育、成人教育、高職高專、社會行業(yè)培訓等多種類型的考試,安排監(jiān)考人員是各類考試中必不缺少的一項工作,而我校在這些考試中安排監(jiān)考人員都是通過人工方式進行,這種方式不僅費時、費力,繁瑣,還容易出錯,效率低,特別是遇到輪次多、場次多的大型考試時,這些缺點尤為突出。如: 開放教育每學期期末考試工作分選修課考試和必修課考試兩個階段進行,每階段安排監(jiān)考時,需要兩位工作人員整理、核對監(jiān)考人員、教室等信息數據,最后按要求制作表格,需要幾個工作日的時間,一學年僅開放教育期末考試安排監(jiān)考所需時間累計近三十個人次工作日。以此為依據,我校在各類考試工作中安排監(jiān)考人員所花的時間和人力是無法忽視的。
為了提高工作效率,針對我校的具體情況,本人根據我校監(jiān)考安排的特點,設計了“南京電大監(jiān)考安排系統”。
2 需求分析
學校在安排監(jiān)考時,其所用的教室數和所需監(jiān)考人員的人數是確定的,但還需要考慮諸多其他因素,具體如下:
1)同一時間段每位監(jiān)考人員只能安排一個考場,或不安排;
2)某教師由于工作或其他原因,在某個時間段不能參加監(jiān)考;
3)每位監(jiān)考人員的監(jiān)考場次大致平均;
4)男女搭配監(jiān)考;
5)每間考場所需監(jiān)考人員數可以設置;
6)如果某時間內某考場有留考,那該考場監(jiān)考人員不能參加下一時間段的監(jiān)考;
7)每個時間段監(jiān)考費用不一樣,需要時可以設置;
8)可生成報表,包括總的監(jiān)考人員表,用于給每位監(jiān)考人員發(fā)放只有自己監(jiān)考任務的表;監(jiān)考費用總表和監(jiān)考費用個人表;
9)系統可以隨機進行編排;
10)可以同時進行多個考試項目的編排。
3 系統功能模塊
人員管理:可以對監(jiān)考人員的基本信息進行添加、修改、刪除,可設置某監(jiān)考人員本次不可監(jiān)考。
教室管理:可以對教室的基本信息進行添加、修改、刪除,可設置某教室本次不可使用。
考試項目管理:包括新建考試項目,包括設置基本信息,一次完整的考試定義為一個考試項目??梢栽O置本次考試名稱,類型,本次開始日期,結束日期。設置考試時間安排,包括對本次考試的各個時間段進行設置,“添加時間段”時,可輸入日期、本場開始時間、結束時間,選擇要使用的教室,設置可參加本時間段監(jiān)考的人員等,設置完成后,本時間段可用教室信息顯示“考場設置”列表中?!靶薷?,刪除時間段”均可對添加時間段時輸入的信息進行編輯??紙鲈O置,包括選擇不同的時間段時,“考場設置”列表顯示該時間段對應的教室。選中相應的考場,可對該考場的結束時間、費用、留考等信息進行修改。也可以進行批量修改某時間段的費用等信息。
自動安排與輸出:包括自動安排人員,必須在人員、教室、時間等信息設置好后,才能進行自動安排人員;輸出設置,可以統一設置生成報表的標題,備注等信息;報表輸出,可以導出監(jiān)考總表,監(jiān)考個人表,費用總表,費用個人表。
幫助:用戶可以查詢操作說明,及系統版本信息。
系統退出功能。
其他設置:包括默認值設置,系統中用到的某些默認值的設置,這些值將放到系統配置文件中,可以手動修改;字典設置,校區(qū)、系部、科室、工作狀態(tài)、教室狀態(tài)等內容保存于字典表,可以直接在數據庫中手動修改字典表。
4 系統數據庫
根據系統主要功能設置了數據庫。數據庫中主要幾個數據表如下: 人員信息表,用于存放監(jiān)考人員信息,包括姓名、編號、性別、出生日期、所屬部門、是否可用等;教室表,存放教室信息,包括教室名稱、所屬校區(qū);考試項目表,存放一次完整考試的項目信息,如考試名稱、考試類型、日期范圍;開考時間段表,存放時間段信息,包括開始結束時間、可以安排的人員、使用的教室;考場信息表,存放具體考場的信息,包括教室、監(jiān)考人數、監(jiān)考費用、其他費用、是否留考、留考計算場次;考試人員安排表,記錄考場安排的監(jiān)考人員信息;字典表。
5 主要算法
設計人員在考慮需求分析要求之后,使用的算法如下:
首先,將某時間段不可監(jiān)考的人員,通過每個時間段設置可用監(jiān)考人員的方式排除;
其次,對可用本考試項目中所有可用人員進行排序,排序的依據有以下幾種:姓名、編號、出生日期、電話、電子郵箱,再加上正序、倒序兩種排序類型,共有10種排序方法;
再者,對第一時間段安排之前設置以上人員已安排監(jiān)考次數為0;
然后,對每個時間段進行安排。排序的依據如下:
1)從“本考試項目所有可用人員”中按監(jiān)考次數由小到大的順序選擇出符合本時間段的人員,選出的人員必須是本時間段的可用人員;
2)將選出的人員按男女分成兩組,將這兩組人員進行交叉編入人員列表;
3)對本時間段內每個考場安排人員,其順序是按男女交叉人員列表從前往后的順序進行安排,安排到每一個考場,每個人員安排后,將其監(jiān)考次數加1;
4)本時間段安排結束后,再對“本考試項目所有可用人員”按監(jiān)考次數由小到大的順序進行排序,繼續(xù)安排下一個時間段,直到所有時間段的考場安排結束。
通過以上的算法,實現將某時間段不可監(jiān)考的人員排除,監(jiān)考人員的場次大致平均,男女搭配,隨機排序等要求。
6 系統主要功能實現
1)考試項目管理界面如圖1。
其中,修改項目信息部分代碼:
……
private bool ValidateValue()
this.errorProvider1.Clear();
if (this.textEdit_prjectName.Text.Trim() == "")
this.errorProvider1.SetError(this.textEdit_prjectName,"考試名稱不可以為空!");
return false;
……
if (this.isAdd)
if (ManagerFactory.GetProjectManager().isExistProjectName(this.textEdit_prjectName.Text.Trim()))
this.errorProvider1.SetError(this.textEdit_prjectName, "此考試名稱在系統中已存在,請輸入新的考試名稱!");
return false;
else
if (ManagerFactory.GetProjectManager().isExistProjectNameExcept(this.textEdit_prjectName.Text.Trim(), this.currentProject.ID))
this.errorProvider1.SetError(this.textEdit_prjectName, "此考試名稱在系統中已存在,請輸入新的考試名稱!");
return false;
return true;
......
2)輸出設置對話框的界面如圖2。
7 結束語
本系統具有較好的通用性及實用性,能夠按照要求自動快速完成我校各類型考試的監(jiān)考安排,生成需要的監(jiān)考安排表及相應費用表,因此具有一定的參考和實用價值。
參考文獻:
[1] 葉乃文,王丹. 面向對象程序設計[M]. 2版. 北京: 清華大學出版社, 2012.
[2] 劉勇軍,蔣文君. SQL Server 2005數據庫應用教程[M]. 北京:電子工業(yè)出版社, 2009.
[3] Nagel C, Evjen B, Glynn J. C#高級編程[M]. 4版.北京:清華大學出版社,2006.