黃良斌
(南通紡織職業(yè)技術學院 信息系,江蘇 南通 226007)
每年學生在進行畢業(yè)論文答辯時均要遇到如何確定答辯順序的問題。以前學校的做法,沒有體現(xiàn)公正、公平、公開,為了確定答辯順序也浪費了大量的精力與時間。
通過網絡軟件就可以解決當前抽號問題,做到一人只能自己抽一次號[1]。在抽號完成時計算機自動記錄抽號人所抽取的號碼,并立即回饋給抽號人自己。學生也可以提前知道自己的答辯順序號,方便自己的日程安排。
數(shù)據庫的設計非常重要,一個良好的數(shù)據庫的設計可以簡化程序設計,加快程序的響應時間,提高安全性能與效率。本例采用SQL Server 2000數(shù)據庫。SQL Server 2000是微軟公司發(fā)布的一種性能優(yōu)越的面向客戶機/服務器的關系型數(shù)據庫管理系統(tǒng)[2]。利用數(shù)據庫的字段名可以為數(shù)字的特點,把字段名建立成如1、2、3、4……100,假設其班級參加抽號的總人數(shù)不超過100,如果總人數(shù)要增加,可以按此方法增加數(shù)據庫字段名,其數(shù)據庫結構與程序抽號保存結果如表1、表2所示。
表1 數(shù)據結構表
表2 抽號結果匯總表
畢業(yè)答辯順序號的抽號程序總體分為學生用戶與教師用戶兩部分。學生用戶個體采用自己的用戶名與密碼登錄,登錄后即可進行抽號,在抽號之前,可以看到全班至目前為此已經完成抽號的情況,每人限抽號一次,抽號完成后即在頁面上顯示抽號結果,且不能修改抽號結果,以體現(xiàn)公平。其程序總體設計流程圖如圖1所示。
圖1 系統(tǒng)流程圖
進入抽號程序的第一步是獲得抽號的總人數(shù),學校的每個自然班的總人數(shù)是個動態(tài)的過程,程序登錄后,即要獲得班級的總人數(shù),這也是數(shù)據庫字段名的最大值的確定過程,以便在抽號時得到一個范圍值。
開始抽號之后的第一步是取剩余號,即從數(shù)據庫中查看每個字段內是否有姓名,如果沒有,則該號未參加過抽號,可以從字段的名稱來得到號碼,把剩余為空的字段名匯總得到一個數(shù)組[3]。
根據數(shù)組的最大下標,開始在數(shù)組內隨機抽一個數(shù)字,把這個數(shù)作為數(shù)據庫的字段名來查看是否為空,如果為空則寫入;如果不空,則剛剛有人成功參與了抽號,所以這個號不能用,必須重新取號再重新抽號,直至抽號完成。具體部分程序如下所示:
”定義一個未知數(shù)組
DimmyArray()
”找出沒有參與抽號的總人數(shù)
S=0”總人數(shù)變量
for i=3 to studentnumber+2”因字段偏移,故從第3個字段開始讀取,第1~3字段分別為班級、系部、學校
if RT.fields(i)=“”or isnull(RT.fields(i))then S=S+1
next
”根據未抽號的總人數(shù),重新定義數(shù)組大小并賦值Redim myArray(S)
i=0”數(shù)組下標變量
for j=3 to studentnumber+2”因字段偏移,故從第3個字段開始讀取,第1~3字段分別為班級、系部、學校
if RT.fields(j)=“”or isnull(RT.fields(j))then
myArray(i)=RT.fields(j).name”把未抽的號記入數(shù)組,號即字段名稱
i=i+1
end if
next
”開始進入抽號程序
for i=0 to S-1
Randomize”初始化隨機數(shù)生成器
”把隨機數(shù)作為數(shù)組下標得到抽的號碼
numberRT=myArray(int(S*rnd))
if RT(numberRT)= “”or isnull(RT(numberRT))then”判斷是否有人抽了這個號,如果是空,則寫入
sql= “update tablename set[” &numberRT&“]='” &Session(“NAME”)&“‘where classname='”&classname&“‘and partname='”&partname&“‘and schoolname='” &schoolname&“'”
con.execute(sql)
exit for
end if
next
依靠數(shù)據庫本身的字段名來實現(xiàn)抽號過程,可以簡化程序設計,提高程序的響應時間與效率,在用戶總數(shù)不是太多的情況下,采用此方式有著一定優(yōu)勢。
[1]王正敏,劉厚泉.抽號建模的實現(xiàn)與探討[J].微計算機信息,2007,23(33):195-196.
[2]宋陽,嚴平,曹彤.基于ASP、SQL Server 2000實現(xiàn)的Web文獻檢索系統(tǒng)及其查詢優(yōu)化[J].計算機應用與軟件,2006,23(10):25-28.
[3]張琳,程敏熙.基于ASP的實驗考試抽簽系統(tǒng)[J].中山大學學報論叢,2006,26(1):27-31.