当前位置:首页 > 思想汇报 > [利用VBA在Excel中开发普通高中考试排座系统] Excel VBA
 

[利用VBA在Excel中开发普通高中考试排座系统] Excel VBA

发布时间:2019-06-25 04:05:02 影响了:

  摘 要:文章介绍利用VBA在Excel中如何开发普通高中考试排座系统,并给出了详细代码。  关键词:Excel;VBA;考试排座系统  中图分类号:TP391   文献标识码:B 文章编号:1673-8454(2012)14-0088-05
  考试在普通高中学校教学过程中有着极其重要的地位,它能检测学生知识掌握程度,能检查教师教学情况,能衡量一所学校办学质量,因此学校常常举行各种月考和联考。在一所普通高中学校里,往往有三个年级和文理分科情况,一次考试过程中学生考场和座位的安排就是一项任务繁重的工作,一般的考试分析系统没有考生座位安排模块,主管考试工作的教师就经常进行学生试场手工安排的重复性工作。微软的Excel软件为大家所熟悉和掌握,教师都非常喜欢用它来处理各种教学事务,经过笔者研究,发现Excel软件工作表的单元格排列方式跟考场座位安排有相似之处,都比较工整有序有规律,为此有了利用Excel软件和VBA技术开发普通高中考试排座系统的想法,并进行尝试和实现。
  由于高中存在三个年级和文理分科的情况,考试排座就显得非常复杂,我们以高三理科排座为例讲述普通高中考试排座系统,其余排座方法与此差不多,不再重复。该系统由四个程序模块和五个Excel工作表组成,“高三理科”工作表存放高三理科学生名单,“高三座位”工作表存放各试场座位情况,“试场安排”工作表存放试场人数与各排人数,“班级情况”工作表存放班级数和各班学生人数,“试场分布”工作表存放试场号与试场位置。下面就四个程序模块代码加以详细说明。
  一、系统初始化模块
  在该模块代码中,程序取得“班级情况”工作表上的数据,如图1所示,赋予并初始化各系统参数,为接下来的排座做好准备,其程序代码如下(附有程序注解):
  Option Explicit
  Public Gao3LiBanShu As Integer "高三理科班级数
  Public Gao3Li(20) As Integer "高三理科各班人数
  Public Gao3Row As Integer "工作表有效行数
  Public ShiChangHao As Integer "试场号
  Public ZongShiChang As Integer "总试场数
  Public ShiChangShu As Integer "试场满员的试场数
  Public YuShu As Integer "余数(未满员试场的学生人数)
  Sub Init()
  Dim i As Integer
  Gao3LiBanShu = Worksheets("班级情况").Cells(1, 4).Value "取得高三理科班级数
  For i = 1 To Gao3LiBanShu
  Gao3Li(i) = Worksheets("班级情况").Cells(2 + i, 4).Value "取得高三理科各班人数
  Next i
  End Sub
  二、随机排试场模块
  该模块进行随机方式的试场安排,在程序代码中,根据前面获得的初始化参数计算高三理科学生(如图2“高三理科”工作表所示)人数,并取得“试场安排”工作表的试场人数,如图3所示,由高三理科人数与试场人数计算得出满员试场数和未满员试场人数,对“高三理科”工作表选择的试场列区块产生随机数,同时对随机数进行排序,利用循环语句对满员的试场进行排座,最后对未满员的试场进行排座,如图4试场列所示,其程序代码如下:
  Sub PaiShiChang() "进行随机方式排试场
  Dim i As Integer
  Dim j As Integer
  ShiChangHao = 0 "初始化试场号,若前面有排过别的试场,ShiChangHao = ShiChangHao
  Worksheets("高三理科").Activate "激活高三理科工作表
  Gao3Row = 1
  For i = 1 To Gao3LiBanShu
  Gao3Row = Gao3Row + Gao3Li(i) "高三理科表最大有效行数
  Next i
  ShiChangShu = (Gao3Row - 1) \ Worksheets("试场安排").Cells(4, 2).Value "整除取得试场数
  YuShu = (Gao3Row - 1) Mod Worksheets("试场安排").
  Cells(4, 2).Value "整除余数为多少人
  Cells(1, 3).Value = "试场"
  Cells(Gao3Row, 3).Select
  Range(Selection, "c2").Select "选择试场列区块
  Selection.Value = "=rand()" "产生随机数
  Cells(Gao3Row, 3).Select
  Range(Selection, "a2").Select
  "排序,第一关键字:随机数,第二关键字:学号
  Selection.Sort key1:=Columns(3), order1:=xlAs cending, key2:=Columns(1), order2:=xlAscending
  For i = 1 To ShiChangShu "进行满员的试场排座位
  For j = 1 To Worksheets("试场安排").Cells(4, 2). Value "进行一个试场的排座位
  Cells(Worksheets("试场安排").Cells(4, 2).Value * (i - 1) + 1 + j, 3).Value = i + ShiChangHao "赋予试场号

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3