關(guān)于校內(nèi)考試的考場(chǎng)座位編排算法的研究_第1頁
關(guān)于校內(nèi)考試的考場(chǎng)座位編排算法的研究_第2頁
關(guān)于校內(nèi)考試的考場(chǎng)座位編排算法的研究_第3頁
關(guān)于校內(nèi)考試的考場(chǎng)座位編排算法的研究_第4頁
關(guān)于校內(nèi)考試的考場(chǎng)座位編排算法的研究_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、關(guān)于校內(nèi)考試的考場(chǎng)座位編排算法的研究摘要:文章針對(duì)校內(nèi)考試的考場(chǎng)座位編排的復(fù)雜情況進(jìn)行深入淺出的分析,提出切實(shí)可行、科學(xué)高效的座位編排算法,并編寫程序加以實(shí)現(xiàn)。關(guān)鍵詞:座位編排;算法作者單位:陸川縣馬坡鎮(zhèn)第二初級(jí)中學(xué)姓名:覃坤通訊地址:陸川縣馬坡鎮(zhèn)第二初級(jí)中學(xué)郵編:537712電話E-mail:一引言為了更好地論敘問題,本文引入了兩個(gè)概念,解釋如下:校際考試多個(gè)學(xué)校共同參與的考試,如中考、高考。校內(nèi)考試單個(gè)學(xué)校組織的考試,如段考、期考??紙?chǎng)座位的科學(xué)編排是保障考試的公平與質(zhì)量的重要手段。因此,校際考試,如中考、高考、研考等重大考試,對(duì)考場(chǎng)座位均有嚴(yán)格要求,相關(guān)算法與軟件相當(dāng)成熟且日益完善。但關(guān)

2、于校內(nèi)考試的相應(yīng)研究卻鮮有耳聞,相關(guān)軟件也是寥寥無幾且功能簡(jiǎn)陋。 我是一名一線教師,深切感受到校內(nèi)考試中考座編排工作的意義非常與困難重重,試圖盡綿薄之力深入探討這其中的科學(xué)規(guī)律,為廣大中小學(xué)提供有限的經(jīng)驗(yàn)。(本算法對(duì)應(yīng)的程序發(fā)布于本人主頁:,程序在多間學(xué)校至今運(yùn)行良好。)二對(duì)考場(chǎng)座位編排的分析1對(duì)校際考試的考場(chǎng)座位編排的分析相對(duì)于校內(nèi)考試,校際考試的座位編排的復(fù)雜度較小,實(shí)現(xiàn)的算法也較簡(jiǎn)單。我把該種算法稱為“蛇形分布”算法。舉例說明:某年中考,56號(hào)考點(diǎn)的考生來自甲中學(xué)與乙中學(xué),根據(jù)“蛇形分布”算法,考場(chǎng)內(nèi)的30個(gè)座號(hào),從小到大,按甲乙、甲乙的順序進(jìn)行分配,得到的考場(chǎng)座位的編排情況將如圖1所示

3、。圖1(注:白色方框代表甲中學(xué)學(xué)生,灰色方框代表乙中學(xué)學(xué)生)仔細(xì)觀察,可以發(fā)現(xiàn)甲、乙中學(xué)的學(xué)生得到了妥善安排:每位考生的前后左右均無同校的同學(xué),這在某些方面大大增加了作弊的困難。而且該算法的通用性極強(qiáng),假如參考學(xué)校有2個(gè)以上,依然能出色地完成編排,參考學(xué)校越多,防止作弊的功能越強(qiáng)。2對(duì)校內(nèi)考試的考場(chǎng)座位編排的分析“蛇形分布”算法雖然巧妙,卻不適用于校內(nèi)考試。主要原因有二:第一,校際考試將學(xué)生按學(xué)校間隔分布,而在校內(nèi)考試卻只可能按班或按年級(jí)間隔分布,若按年級(jí)間隔分布,同列中有多個(gè)年級(jí)的考生存在,這將給收發(fā)試卷帶來很大的麻煩;第二,“蛇形分布”算法的實(shí)現(xiàn)基于單人單桌,需要在考試前對(duì)考室進(jìn)行布置。而

4、在日??荚囍校淌覂?nèi)的桌椅并不搬動(dòng),通常是雙人雙桌,該算法反而為舞弊創(chuàng)造了條件。舉例:圖2是雙人雙桌的考場(chǎng),11號(hào)與1、3號(hào)是同類別學(xué)生,相對(duì)于圖1距離過近更容易串通作弊,假設(shè)11號(hào)考生位于2號(hào)的位置,作弊反而不易。671819305817202949162128310152227211142326112132425圖2由此,我們必須意識(shí)到,校內(nèi)考試是日??荚?,絕對(duì)不能生搬硬套校際考試的算法,校內(nèi)考試的考務(wù)工作應(yīng)當(dāng)更加簡(jiǎn)潔,更節(jié)約時(shí)間、人力和物力,才能為學(xué)校所承受。那么,對(duì)于校內(nèi)考試,怎樣編排座位才算科學(xué)合理呢?我想,類似于圖3所示的考場(chǎng)座位才是比較理想的。圖3(注:041046是初二班級(jí),0

5、51057是初一班級(jí))觀察圖3,你會(huì)以現(xiàn)這樣的考場(chǎng)座位具有以下優(yōu)點(diǎn):座號(hào)的編排順序符合師生的日常稱呼習(xí)慣,有利于考生快速就座;相同年級(jí)同列,有利于快速收發(fā)試卷;同班學(xué)生距離最大化(如座號(hào)1、13、25的考生同是041班),有利于防止舞弊。教室內(nèi)的桌椅不必搬動(dòng),有利于教室在考試與教學(xué)環(huán)境間的快速轉(zhuǎn)換。能實(shí)現(xiàn)這個(gè)考室示意圖的算法,還應(yīng)當(dāng)有利于生成類似圖4的考生通知單(注意觀察圖4與圖3的對(duì)應(yīng)關(guān)系)。該單張貼于考生所在班級(jí),使得考務(wù)工作得以摒棄準(zhǔn)考證號(hào)等概念,并能夠準(zhǔn)確快捷地告知考生考座信息。圖4其次,算法還應(yīng)當(dāng)有利于生成類似圖5的考場(chǎng)情況統(tǒng)計(jì)表,方便教務(wù)處核定試卷數(shù)目,為各個(gè)考室分發(fā)試卷。最后,算

6、法還應(yīng)當(dāng)能適應(yīng)各班桌椅數(shù)目不一的情況,充分使用教室的所有桌椅。因?yàn)椋谥锌?、高考中,考生不過是學(xué)生中的一部分,所以教室相對(duì)充足,每個(gè)考室的人數(shù)可以做到異常的統(tǒng)一,而在段考、期考中,考生是全校學(xué)生,每個(gè)教室的每個(gè)座位都非常珍貴,決不允許算法進(jìn)行浪費(fèi)。但要實(shí)現(xiàn)這樣的算法,卻是困難重重。該算法雖然適應(yīng)了師生對(duì)座號(hào)順序的日常稱呼習(xí)慣,卻因此在分配座號(hào)時(shí)面對(duì)以下情況,問題的復(fù)雜度大大增加:參考年級(jí)的個(gè)數(shù)發(fā)生變化。舉例:如圖3所示的考場(chǎng),只有2個(gè)年級(jí)參考,但如果年級(jí)個(gè)數(shù)增至3個(gè),考場(chǎng)就應(yīng)如圖5所示,那么座號(hào)的分配原則究竟怎樣設(shè)定,才能無論年級(jí)個(gè)數(shù)的多少,都可遵循相同年級(jí)同列的要求,生成類似圖5的考室示意圖

7、?圖5(注:05X是初一班級(jí),04X是初二班級(jí),03X是初三班級(jí))教室內(nèi)的桌椅的列數(shù)發(fā)生變化。舉例說明:如圖5所示,教室是8列雙座,一旦變?yōu)?列雙座,考場(chǎng)就應(yīng)如圖6所示,那座號(hào)的分配原則又應(yīng)當(dāng)是什么,方能使得不管教室座位的列數(shù)怎樣變化,都可保證“相同年級(jí)同列”,生成類似圖6的考室示意圖?圖6(注:05X是初一班級(jí),04X是初二班級(jí),03X是初三班級(jí))和的變化情況在日??荚囍惺呛艹R姷模谀硞€(gè)考室中,可能是2個(gè)年級(jí)8列雙座,在另一個(gè)考室中,卻可能是3個(gè)年級(jí)10列雙座。顯然,“蛇形分布”算法不可能解答這兩個(gè)問題,適應(yīng)這樣復(fù)雜多變的考座編排要求。盡管校內(nèi)考試的考座編排是考務(wù)工作中的必須環(huán)節(jié),但卻沒有

8、一個(gè)成熟的軟件來解脫教師繁雜的工作。記得剛畢業(yè)那年,教務(wù)主任就給我分配了考座編排的任務(wù)。我使用了EXCEL來編排,結(jié)果奮戰(zhàn)了一個(gè)通宵,才實(shí)現(xiàn)了教務(wù)主任關(guān)于編排的設(shè)想。這種編排手段應(yīng)屬于“手工階段”。后來,我仔細(xì)思考了編排中的重復(fù)步驟,將它們編成了宏,編排的時(shí)間也迅速縮短到了5個(gè)小時(shí)。一年后,我又將其中的一些耗時(shí)較多的步驟編寫為VBA,時(shí)間又縮短為3個(gè)小時(shí)。這期間的水平處于“半自動(dòng)階段”。幾個(gè)月后,我總結(jié)出了編排算法,并使用Delphi7將其實(shí)現(xiàn),把編排的時(shí)間縮短到了30分鐘以內(nèi)(含學(xué)生名冊(cè)導(dǎo)入、考場(chǎng)設(shè)置、打印機(jī)的工作時(shí)間)。至此,考座編排的手段才算是完全的“自動(dòng)化”?,F(xiàn)將該算法描述于下。三、算

9、法的具體描述為了方便理解算法,首先對(duì)算法涉及的數(shù)據(jù)表(存儲(chǔ)結(jié)構(gòu))進(jìn)行說明。字段名稱數(shù)據(jù)類型說明ID自動(dòng)編號(hào)主鍵年級(jí)文本班別文本姓名文本成績(jī)數(shù)字必要時(shí)根據(jù)成績(jī)高低編排考座序數(shù)字輔助字段考室文本座號(hào)數(shù)字隨機(jī)數(shù)數(shù)字提供編排的順序依據(jù),保證每次編排每個(gè)考生的座號(hào)不重復(fù)偽代碼如下:var kcmc:string; /考試名稱,如“XX年XX中學(xué)春期期考” dqlj:string;/程序的當(dāng)前路徑 /考室示意圖所需的數(shù)組與考室備注名稱 a,b,c:array1.100 of string; ksmc,bz:string;為了使考室示意圖模板能在脫離編繹環(huán)境后為用戶所修改,數(shù)據(jù)不自動(dòng)向報(bào)表傳遞,而改為由程序

10、控制procedure TfrmMain.Button9Click(Sender: TObject);var i,j,k,L,kcdy,ksrs,temp:integer;/考場(chǎng)定員與考生人數(shù) s:string; dy,m,n,x,amod:integer;/定員,類型的列數(shù),年級(jí)的個(gè)數(shù) reportClear:boolean; /是否清除報(bào)表 cxb,hz,ym,yy:integer;/次下標(biāo),行左,右邊空座數(shù)目,右移個(gè)數(shù)begin/考場(chǎng)的總定員是否足夠if kcdy<ksrs thenbegin Application.MessageBox('考場(chǎng)的座位不足,請(qǐng)重新設(shè)置考室表

11、或考生表。', '信息', MB_OK + MB_DEFBUTTON1 + MB_ICONINFORMATION + MB_APPLMODAL); abort;end;/一、對(duì)考室表的設(shè)置進(jìn)行檢查 */二、對(duì)考生表進(jìn)行排序/如果不是選擇按成績(jī)排序,則進(jìn)行填充隨機(jī)數(shù)列/根據(jù)考生座位編排順序選擇,開始對(duì)考生表進(jìn)行排序/三、開始編考場(chǎng)座號(hào)/遍歷考室表with QrKsb2 dobegin /Sort:='使用次序' /排序 j:=RecordCount; First; for i:=1 to j do begin x:=1; /必須有一個(gè)參考年級(jí) if len

12、gth(FieldByName('參考年級(jí)2').AsString)>0 then inc(x); if length(FieldByName('參考年級(jí)3').AsString)>0 then inc(x); dy:=FieldByName('定員').AsInteger; L:=0;/是第一個(gè)參考年級(jí) s:=FieldByName('類型').AsString; n:=0; for m:=1 to 2 do if (midstr(s,m,1)>='0') and (midstr(s,m,1)&

13、lt;='9') then inc(n); n:=strtoint(copy(s,1,n); /類型對(duì)應(yīng)的列數(shù) for k:=1 to 3 do begin s:='參考年級(jí)'+inttostr(k); if length(FieldByName(s).AsString)>0 then /該參考年級(jí)k不為空 begin考室:%s 參考年級(jí):%s-',FieldByName('名稱').AsString,s); QrTemp.Close; if CheckBox1.Checked then ,FieldByName(s).AsStri

14、ng) else ,FieldByName(s).AsString); QrTemp.open; temp:=QrTemp.RecordCount; inc(L); /存在的參考年級(jí)的序號(hào)(1開始) for m:=1 to dy do begin /m合適嗎? amod:=(m mod n); if amod=0 then amod:=n; amod:=(amod mod x); if amod=0 then amod:=x; if amod=L then /m可用 begin if not QrTemp.Eof then /有考生可供寫考座 begin QrTemp.Edit; QrTemp

15、.FieldByName('考室').AsString:=FieldByName('名稱').AsString; QrTemp.FieldByName('座號(hào)').AsString:=inttostr(m); QrTemp.Post;考室:%s %s %s %s', FieldByName('名稱').AsString,s,QrTemp.FieldByName('姓名').AsString,inttostr(m); QrTemp.Next; /送出考座后,再下一記錄 end else begin /否則,插

16、入空置的考座 QrTemp2.close; 'values(:p1,:p2,:p3)'); QrTemp2.ExecSQL; end; /if temp<=m end;/if amod end;/ for m end;/if length end;/for k next; end; / for i first;end; /with QrKsb2/四、根據(jù)使用次序,生成考室示意圖reportClear:=true;/編歷考室表with QrKsb2 dobegin j:=RecordCount; First; for i:=1 to j do begin bz:='

17、' ksmc:=FieldByName('名稱').AsString; dy:=FieldByName('定員').AsInteger; s:=FieldByName('類型').AsString; n:=0; for m:=1 to 2 do if (midstr(s,m,1)>='0') and (midstr(s,m,1)<='9') then inc(n); n:=strtoint(copy(s,1,n); /類型對(duì)應(yīng)的列數(shù) /篩選出考生表的內(nèi)容 QrTemp.Close; QrTemp

18、.open; temp:=QrTemp.RecordCount; for m:=1 to 100 do begin if m<=temp then begin am:=inttostr(m); bm:=QrTemp.FieldByName('班別').AsString; cm:=QrTemp.FieldByName('姓名').AsString; QrTemp.Next;進(jìn)入報(bào)表',m,bm,cm); end else begin am:='' bm:='' cm:='' end;/ if m<

19、=temp end;/for m QrTemp.close;if FieldByName('末行居右').AsBoolean thenbegin x:=1; /必須有一個(gè)參考年級(jí) if length(FieldByName('參考年級(jí)2').AsString)>0 then inc(x); if length(FieldByName('參考年級(jí)3').AsString)>0 then inc(x); /尋找次下標(biāo) for cxb:=100 downto 1 do if length(ccxb)>0 then Break; hz:

20、=(cxb div n)*n+1; ym:=n-(cxb-hz+1); yy:=(ym div x)*x; if yy>0 then for k:=cxb downto hz do begin ak+yy:=ak; bk+yy:=bk; ck+yy:=ck; ak:='' bk:='' ck:='' end;/for k:=cxbend;/ if FieldByName('末行居右').AsBoolean for k:=1 to 3 do begin s:='參考年級(jí)'+inttostr(k); if len

21、gth(FieldByName(s).AsString)>0 then /該參考年級(jí)k不為空 begin QrTemp.open; temp:=QrTemp.FieldByName('人數(shù)').AsInteger; bz:=bz+FieldByName(s).AsString+':'+QrTemp.FieldByName('人數(shù)').AsString+#13#10; if temp=0 then jy1:=jy1+'考室:'+ksmc+' 參考年級(jí):'+FieldByName(s).AsString+''+#13#10 else if tem

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論