亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用VBA在Excel中開發(fā)普通高中考試排座系統(tǒng)

        2012-07-10 02:00:42婁青
        中國教育信息化 2012年14期
        關(guān)鍵詞:程序代碼理科座位

        婁青

        (浙江省寧海中學(xué),浙江寧波 315600)

        考試在普通高中學(xué)校教學(xué)過程中有著極其重要的地位,它能檢測(cè)學(xué)生知識(shí)掌握程度,能檢查教師教學(xué)情況,能衡量一所學(xué)校辦學(xué)質(zhì)量,因此學(xué)校常常舉行各種月考和聯(lián)考。在一所普通高中學(xué)校里,往往有三個(gè)年級(jí)和文理分科情況,一次考試過程中學(xué)生考場和座位的安排就是一項(xiàng)任務(wù)繁重的工作,一般的考試分析系統(tǒng)沒有考生座位安排模塊,主管考試工作的教師就經(jīng)常進(jìn)行學(xué)生試場手工安排的重復(fù)性工作。微軟的Excel軟件為大家所熟悉和掌握,教師都非常喜歡用它來處理各種教學(xué)事務(wù),經(jīng)過筆者研究,發(fā)現(xiàn)Excel軟件工作表的單元格排列方式跟考場座位安排有相似之處,都比較工整有序有規(guī)律,為此有了利用Excel軟件和VBA技術(shù)開發(fā)普通高中考試排座系統(tǒng)的想法,并進(jìn)行嘗試和實(shí)現(xiàn)。

        由于高中存在三個(gè)年級(jí)和文理分科的情況,考試排座就顯得非常復(fù)雜,我們以高三理科排座為例講述普通高中考試排座系統(tǒng),其余排座方法與此差不多,不再重復(fù)。該系統(tǒng)由四個(gè)程序模塊和五個(gè)Excel工作表組成,“高三理科”工作表存放高三理科學(xué)生名單,“高三座位”工作表存放各試場座位情況,“試場安排”工作表存放試場人數(shù)與各排人數(shù),“班級(jí)情況”工作表存放班級(jí)數(shù)和各班學(xué)生人數(shù),“試場分布”工作表存放試場號(hào)與試場位置。下面就四個(gè)程序模塊代碼加以詳細(xì)說明。

        一、系統(tǒng)初始化模塊

        在該模塊代碼中,程序取得“班級(jí)情況”工作表上的數(shù)據(jù),如圖1所示,賦予并初始化各系統(tǒng)參數(shù),為接下來的排座做好準(zhǔn)備,其程序代碼如下(附有程序注解):

        圖1 “班級(jí)情況”工作表

        Option Explicit

        Public Gao3LiBanShu As Integer'高三理科班級(jí)數(shù)

        Public Gao3Li(20)As Integer'高三理科各班人數(shù)

        Public Gao3Row As Integer '工作表有效行數(shù)

        Public ShiChangHao As Integer '試場號(hào)

        Public ZongShiChang As Integer'總試場數(shù)

        Public ShiChangShu As Integer'試場滿員的試場數(shù)

        Public YuShu As Integer'余數(shù)(未滿員試場的學(xué)生人數(shù))

        Sub Init()

        Dim i As Integer

        Gao3LiBanShu=Worksheets("班級(jí)情況").Cells(1,4).Value'取得高三理科班級(jí)數(shù)

        For i=1 To Gao3LiBanShu

        Gao3Li(i)=Worksheets("班級(jí)情況").Cells(2+i,4).Value'取得高三理科各班人數(shù)

        Next i

        End Sub

        二、隨機(jī)排試場模塊

        圖2 “高三理科”工作表,排座前

        該模塊進(jìn)行隨機(jī)方式的試場安排,在程序代碼中,根據(jù)前面獲得的初始化參數(shù)計(jì)算高三理科學(xué)生(如圖2“高三理科”工作表所示)人數(shù),并取得“試場安排”工作表的試場人數(shù),如圖3所示,由高三理科人數(shù)與試場人數(shù)計(jì)算得出滿員試場數(shù)和未滿員試場人數(shù),對(duì)“高三理科”工作表選擇的試場列區(qū)塊產(chǎn)生隨機(jī)數(shù),同時(shí)對(duì)隨機(jī)數(shù)進(jìn)行排序,利用循環(huán)語句對(duì)滿員的試場進(jìn)行排座,最后對(duì)未滿員的試場進(jìn)行排座,如圖4試場列所示,其程序代碼如下:

        圖3 “試場安排”工作表,各排人數(shù)從右向左分別為第一排至第五排

        圖4 “高三理科”工作表,排座后

        Sub PaiShiChang()'進(jìn)行隨機(jī)方式排試場

        Dim i As Integer

        Dim j As Integer

        ShiChangHao=0 '初始化試場號(hào),若前面有排過別的試場,ShiChangHao=ShiChangHao

        Worksheets("高三理科").Activate'激活高三理科工作表

        Gao3Row=1

        For i=1 To Gao3LiBanShu

        Gao3Row=Gao3Row+Gao3Li(i)'高三理科表最大有效行數(shù)

        Next i

        ShiChangShu=(Gao3Row-1)Worksheets("試場安排").Cells(4,2).Value'整除取得試場數(shù)

        YuShu=(Gao3Row-1)Mod Worksheets("試場安排").

        Cells(4,2).Value'整除余數(shù)為多少人

        Cells(1,3).Value="試場"

        Cells(Gao3Row,3).Select

        Range(Selection,"c2").Select '選擇試場列區(qū)塊

        Selection.Value="=rand()"'產(chǎn)生隨機(jī)數(shù)

        Cells(Gao3Row,3).Select

        Range(Selection,"a2").Select

        '排序,第一關(guān)鍵字:隨機(jī)數(shù),第二關(guān)鍵字:學(xué)號(hào)

        Selection.Sort key1:=Columns(3),order1:=xlAs cending,key2:=Columns(1),order2:=xlAscending

        For i=1 To ShiChangShu'進(jìn)行滿員的試場排座位

        For j=1 ToWorksheets("試場安排").Cells(4,2).Value '進(jìn)行一個(gè)試場的排座位

        Cells(Worksheets("試場安排").Cells(4,2).Value*(i-1)+1+j,3).Value=i+ShiChangHao'賦予試場號(hào)

        Next j

        Next i

        ZongShiChang=ShiChangShu

        If YuShu<>0 Then'排最后一個(gè)試場

        For j=1 To YuShu

        Cells(ShiChangShu*Worksheets("試場安排").Cells(4,2).Value+1+j,3).Value=ShiChangShu+1+ShiChangHao

        Next j

        ZongShiChang=ZongShiChang+1'高三理科總試場數(shù)

        End If

        End Sub

        三、考場座位安排模塊

        圖5 “試場分布”工作表

        該模塊進(jìn)行各試場座位安排,在程序代碼中,取得“試場安排”工作表的各排人數(shù),即為各試場排座的各排人數(shù),如圖3所示。利用循環(huán)語句進(jìn)行滿員的試場排座,在循環(huán)體中首先取得“試場分布”工作表中的試場位置,如圖5所示,再標(biāo)示試場中每排的表頭,按照試場的各排人數(shù)從“高三理科”工作表獲取每排學(xué)生的學(xué)號(hào)與姓名,最后插入第幾試場和分頁符。對(duì)于未滿員試場安排,根據(jù)未滿員人數(shù),分五種(因?yàn)樵噲鍪俏迮牛┣闆r進(jìn)行排座。最后形成如圖6所示的“高三座位”工作表。其程序代碼如下:

        圖6 “高三座位”工作表,從右向左分別為第一排至第五排

        Sub ZuoWeiBiao()'試場座位安排

        Dim Num As Integer'高三理科表的行號(hào)

        Dim ZuoWei As Integer'高三座位表的行號(hào)

        Dim i As Integer'試場號(hào)變量

        Dim j As Integer'試場排數(shù)變量

        Dim k As Integer'試場每排的座位變量 (1-Row1~5)

        Dim Row1 As Integer'第一排

        Dim Row2 As Integer'第二排

        Dim Row3 As Integer'第三排

        Dim Row4 As Integer'第四排

        Dim Row5 As Integer'第五排

        Num=1

        ZuoWei=1

        Worksheets("高三座位").Activate'激活高三座位表

        ZuoWei=ZuoWei+ShiChangHao*15

        Row1=Worksheets("試場安排").Cells(4,7).Value

        Row2=Worksheets("試場安排").Cells(4,6).Value

        Row3=Worksheets("試場安排").Cells(4,5).Value

        Row4=Worksheets("試場安排").Cells(4,4).Value

        Row5=Worksheets("試場安排").Cells(4,3).Value

        For i=1 To ShiChangShu'滿員的試場排座位

        Cells(ZuoWei,5).Value=Worksheets("試場分布").Cells(i+1+ShiChangHao,2).Value'試場位置,i+1+ShiChangHao是“試場分布”表中相應(yīng)的行號(hào)

        For j=1 To 5'試場中每排的表頭

        Cells(ZuoWei+12,j*2-1).Value="學(xué)號(hào)"

        Cells(ZuoWei+12,j*2).Value="姓名"

        Next j

        For k=1 To Row1'第一大排

        Cells(ZuoWei+12-k,9).Value=Worksheets("高三理科").Cells(Num+k,1).Value

        Cells(ZuoWei+12-k,10).Value=Worksheets("高三理科").Cells(Num+k,2).Value

        Next k

        For k=1 To Row2'第二大排

        Cells(ZuoWei+12-k,7).Value=Worksheets("高三理科").Cells(Num+Row1+k,1).Value

        Cells(ZuoWei+12-k,8).Value=Worksheets("高三理科").Cells(Num+Row1+k,2).Value

        Next k

        … …(省略第三大排和第四大排情況)

        … …

        For k=1 To Row5'第五大排

        Cells(ZuoWei+12-k,1).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+Row3+Row4+k,1).Value

        Cells(ZuoWei+12-k,2).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+Row3+Row4+k,2).Value

        Next k

        Cells(ZuoWei+13,5).Value="講臺(tái)"

        Cells(ZuoWei+14,5).Value="高三理科第"&i+ShiChangHao&"試場" '表明第幾試場

        Num=Num+Worksheets("試場安排").Cells(4,2).Value'準(zhǔn)備指向高三理科表下一個(gè)試場

        ZuoWei=ZuoWei+15'指向高三座位表下一個(gè)試場

        Cells(ZuoWei,1).Activate

        ActiveSheet.HPageBreaks.Add before:=ActiveCell'插入分頁符

        Next i'下一個(gè)試場

        If YuShu<>0 Then'未滿員試場安排

        Cells(ZuoWei,5).Value=Worksheets("試場分布").Cells(ShiChangShu+1+1+ShiChangHao,2).Value

        If YuShu<=Row1 Then '到第一大排止

        Cells(ZuoWei+12,9).Value="學(xué)號(hào)"'第一大排的表頭

        Cells(ZuoWei+12,10).Value="姓名"

        For k=1 To YuShu

        Cells(ZuoWei+12-k,9).Value=Worksheets("高三理科").Cells(Num+k,1).Value

        Cells(ZuoWei+12-k,10).Value=Worksheets("高三理科").Cells(Num+k,2).Value

        Next k

        End If

        If YuShu>Row1 And YuShu<=Row1+Row2 Then '到第二大排止

        For j=1 To 2'第一大排到第二大排的表頭

        Cells(ZuoWei+12,j*2-1+6).Value="學(xué)號(hào)"

        Cells(ZuoWei+12,j*2+6).Value="姓名"

        Next j

        For k=1 To Row1 '第一大排為完整的排

        Cells(ZuoWei+12-k,9).Value=Worksheets("高三理科").Cells(Num+k,1).Value

        Cells(ZuoWei+12-k,10).Value=Worksheets("高三理科").Cells(Num+k,2).Value

        Next k

        For k=1 To YuShu-Row1 '第二大排為不完整的排

        Cells(ZuoWei+12-k,7).Value=Worksheets("高三理科").Cells(Num+Row1+k,1).Value

        Cells(ZuoWei+12-k,8).Value=Worksheets("高三理科").Cells(Num+Row1+k,2).Value

        Next k

        End If

        … … (省略到第三大排止和到第四大排止情況)

        … …

        If YuShu>Row1+Row2+Row3+Row4 And YuShu<=Row1+Row2+Row3+Row4+Row5 Then'到第五大排止

        For j=1 To 5'第一大排到第五大排的表頭

        Cells(ZuoWei+12,j*2-1).Value="學(xué)號(hào)"

        Cells(ZuoWei+12,j*2).Value="姓名"

        Next j

        For k=1 To Row1'第一大排為完整的排

        Cells(ZuoWei+12-k,9).Value=Worksheets("高三理科").Cells(Num+k,1).Value

        Cells(ZuoWei+12-k,10).Value=Worksheets("高三理科").Cells(Num+k,2).Value

        Next k

        For k=1 To Row2'第二大排為完整的排

        Cells(ZuoWei+12-k,7).Value=Worksheets("高三理科").Cells(Num+Row1+k,1).Value

        Cells(ZuoWei+12-k,8).Value=Worksheets("高三理科").Cells(Num+Row1+k,2).Value

        Next k

        For k=1 To Row3'第三大排為完整的排

        Cells(ZuoWei+12-k,5).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+k,1).Value

        Cells(ZuoWei+12-k,6).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+k,2).Value

        Next k

        For k=1 To Row4'第四大排為完整的排

        Cells(ZuoWei+12-k,3).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+Row3+k,1).Value

        Cells(ZuoWei+12-k,4).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+Row3+k,2).Value

        Next k

        For k=1 To YuShu-Row1-Row2-Row3-Row4'第五大排為不完整的排

        Cells(ZuoWei+12-k,1).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+Row3+Row4+k,1).Value

        Cells(ZuoWei+12-k,2).Value=Worksheets("高三理科").Cells(Num+Row1+Row2+Row3+Row4+k,2).Value

        Next k

        End If

        Cells(ZuoWei+13,5).Value="講臺(tái)"

        Cells(ZuoWei+14,5).Value="高三理科第"&ZongShiChang+ShiChangHao&"試場"'試場號(hào)

        ZuoWei=ZuoWei+15

        Cells(ZuoWei,1).Activate

        ActiveSheet.HPageBreaks.Add before:=ActiveCell'插入分頁符

        End If

        End Sub

        四、班級(jí)學(xué)生座位模塊

        該模塊生成各班級(jí)學(xué)生考試座位表,告知學(xué)生考試座位所在試場,在程序代碼中,對(duì)“高三理科”工作表先進(jìn)行學(xué)號(hào)排序,再分別利用循環(huán)語句從“試場分布”工作表中拷貝粘貼試場位置和“高三理科”工作表第一行列字段,最后形成如圖4所示的“高三理科”工作表,其程序代碼如下:

        Sub BanJiBiao()'生成班級(jí)座位表

        Dim k As Integer

        Dim BanJi As Integer '指向各班級(jí)開頭行號(hào)

        Dim i As Integer

        Worksheets("高三理科").Activate

        Gao3Row=1

        For k=1 To Gao3LiBanShu

        Gao3Row=Gao3Row+Gao3Li(k)'高三理科表有效行數(shù)

        Next k

        Cells(Gao3Row,3).Select

        Range(Selection,"a2").Select

        Selection.Sort key1:=Columns(1),order1:=xlAscending '進(jìn)行學(xué)號(hào)排序

        Cells(1,4).Value="試場號(hào)"

        Cells(1,5).Value="試場位置"

        BanJi=2 '初始化

        For i=1 To Gao3LiBanShu

        Worksheets("試場分布").Activate '激活試場分布表

        Cells(ShiChangHao+ZongShiChang+1,2).Select

        Range(Selection,"a"&1+ShiChangHao+1).Copy '拷貝試場位置分布

        Worksheets("高三理科").Activate

        Cells(BanJi,4).Select

        ActiveSheet.Paste '粘貼高三理科試場位置分布

        BanJi=BanJi+Gao3Li(i)

        Next i

        For i=Gao3LiBanShu To 2 Step-1

        Cells(1,1).Select

        Selection.EntireRow.Select

        Selection.Copy'復(fù)制第一行列字段

        Gao3Row=Gao3Row-Gao3Li(i)

        Cells(Gao3Row+1,1).Select

        Selection.EntireRow.Insert'插入一行

        ActiveSheet.Paste '粘貼列字段

        ActiveSheet.HPageBreaks.Add before:=ActiveCell'插入分頁符

        Next i

        ShiChangHao=ShiChangHao+ZongShiChang '計(jì)算試場號(hào),以便排別的試場

        End Sub

        [1](美)杰克(Jerke,N.).VisualBasic 5開發(fā)人員指南[M].北京:機(jī)械工業(yè)出版社,1997.10.

        猜你喜歡
        程序代碼理科座位
        換座位
        和理科男談戀愛也太“有趣”啦
        意林(2021年21期)2021-11-26 20:27:37
        文科不懂理科的傷悲
        巴士上的座位
        2017年天津卷理科第19題的多種解法
        計(jì)算機(jī)網(wǎng)絡(luò)信息安全未來發(fā)展趨勢(shì)
        基于圖元裝接模式由程序流程圖自動(dòng)生成源代碼
        軟件工程(2016年11期)2017-01-17 16:56:57
        換座位
        那個(gè)沒搶到座位的孩子
        人生十六七(2015年5期)2015-02-28 13:08:25
        創(chuàng)業(yè)家(2015年4期)2015-02-27 07:53:09
        亚洲av无码片一区二区三区| 亚洲 小说区 图片区 都市| 欧美性猛交xxxx三人| 久久久久久成人毛片免费看| 波多野结衣一区二区三区免费视频 | 美女被内射中出在线观看| 免费观看成人欧美www色| 久久精品国产亚洲av蜜臀| 久久中文字幕久久久久| 夜色视频在线观看麻豆| 久久综合九色欧美综合狠狠| 无码毛片视频一区二区本码| 国产精品美女久久久久久大全| 俺来也三区四区高清视频在线观看| 国产av久久在线观看| 天天爽夜夜爱| 亚洲第一看片| 亚洲av一二三四又爽又色又色| 97精品人妻一区二区三区蜜桃| 婷婷五月六月综合缴情| 国产精品无码无片在线观看3D| 国产精品区二区东京在线| 免费av一区二区三区| 欧美gv在线观看| 成人综合亚洲欧美一区h| 高清不卡日本v二区在线| 熟女少妇内射日韩亚洲| 国产男女猛烈无遮挡免费视频| 亚洲精品国产一区av| 中文无码av一区二区三区| 国产成人精品日本亚洲11| 中文字幕av无码一区二区三区电影| 日本不卡视频一区二区三区| 日日天干夜夜狠狠爱| 亚洲伊人久久大香线蕉综合图片| 精品国产一区二区三区毛片| 亚洲一区二区二区视频| 日日猛噜噜狠狠扒开双腿小说| 美女裸体无遮挡免费视频国产| 最新在线观看免费的a站国产| 久久99精品久久水蜜桃|