Excel VBA教务考试成绩管理——考场编排系统下载及使用说明

Posted KL58

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel VBA教务考试成绩管理——考场编排系统下载及使用说明相关的知识,希望对你有一定的参考价值。

考场编排系统使用说明书

 

考场编排系统下载地址:百度网盘 

目录

 考场编排系统使用说明书... 1

一、考场编排系统的优势... 2

优势1:从根本上杜绝考生串通舞弊现象。... 2

优势2:操作简单。... 2

优势3:有较高的智能性。... 2

优势4:限制条件少,通用性强。... 2

优势5:具有恢复能力。... 2

二、考场编排系统编排原理... 3

三、考场编排系统操作步骤... 4

四、考场编排系统操作详解... 6

1、导入《花名册》数据... 6

2、考场编排... 9

3、生成《考场座位表》... 10

4、生成《班级考场座位查询表》... 11

5、生成《考场座位签》... 12

6、打印... 14

7、注册... 15

8、对《花名册》数据进行维护... 16

9、统计《花名册》数据各班人数及总人数、《考场设置》工作表中设置的各考场的人数及总人数    21

10、删除导入的数据... 22

五、考场编排系统运行条件... 23

六、考场编排系统使用常见问题... 24

Q:如何退出“受保护的视图”?... 24

Q:打开本软件时出现提示"此工作薄已丢失了其VBA项目……"的错误提示?. 24

Q:可以编辑工作簿,但《菜单》工作表上的所有按钮(如图7所示)无法操作?... 25

Q:弹出“操作中断……”之类提示信息怎么办?... 27

Q:如图46所示,有班级列也无法导入《花名册》数据?... 28

Q:可否导入多个工作簿里的《花名册》数据?... 28

Q:每个考场可以设置10个小组吗?... 29

Q:同一花名册数据,为何每次编排考场生成的座位表各考场考生不同?... 29

Q:可否按总分成绩从高到低编排考场?... 29

Q:可否安排多年级考生混合编排在同一考场?最多可设置几个年级?... 30

七、免责声明... 32

一、考场编排系统的优势

优势1:从根本上杜绝考生串通舞弊现象。

可基于学校实际,考虑各考场人数、组数、每组人数等出现差异,充好利用好每一个考场;同时还可让同级各班考生被重新随机排序后基本均匀地散布到各个考场,基本做到同一考场内同一班的考生前后左右均不相邻;如图0所示。

优势2:操作简单。

该软件使用Excel2003 VBA开发完成,所有操作可在《菜单》工作表点击相应按钮完成,操作简单。

优势3:有较高的智能性。

只需导入《花名册》数据,经简单设置后轻点按钮,稍等片刻即可生成和打印《考场座位表》、《考场座位签》和《班级考场座位查询表》。且座位表显示的考生信息可自定义,如图0所示。

图 0

优势4:限制条件少,通用性强。

只需把《花名册》数据导入本软件内即可。对《花名册》数据工作表要求极为宽松:各列名称及位置任意;不受班级数、每班人数、列数等数量限制;对《考场设置》工作表不受考场数量限制。

优势5:具有恢复能力。

对本软件生成的工作簿可自由编辑排版以便输出,如编辑、修改、删除行列,哪怕删除工作簿也可,如果你进行了以上或者其他误操作,您只需重新点击《菜单》工作表中的“座位表”按钮,在弹出的“座位表(签)”窗口点击相应按钮即可自动恢复。

注意:若使用随机安排考生,在你重操作“考场编排”后,考生将会重新随机安排到各考场,与前次操作结果可能会不一致。

二、考场编排系统编排原理

第1步:根据《花名册》班级列统计班级人数及全年级人数。如图1所示,班级为空则不计入班级人数,班级不为空则计入班级人数。

图 1

第2步:根据统计得到的年级人数及各考场桌椅的实际情况安排各考场的组数及各组考生人数,安排结果如图2所示。

图 2

第3步:根据班级人数及各考场考生人数将各班人数均匀分配到各考场,分配结果如图3所示。

图 3

第4步:按图3分配的人数从花名册随机抽取相应人数的考生到考场座位表并安排座位——要求前后左右不能同班。这需要各人的智慧了,否则将会劳力费神。考场座位表模板如图4所示。

图 4

三、考场编排系统操作步骤

第1步:数据准备:为方便操作,将考场编排系统与《花名册》放入同一文件夹内,如图5所示。

图 5

第2步:打开考场编排系统工作簿,在《考场设置》工作表中设置好各考场的考场名称、所在教室、各组人数等,如图6所示。

图 6

第3步:按图7所示顺序轻点按钮,“导入《花名册》数据——编排考场——生成座位表——打印座位表”,即可快速生成并打印《考场座位表》、《考场座位签》和《班级座位表》。

图 7

四、考场编排系统操作详解

1、导入《花名册》数据

第1步:《菜单》工作表点击“花名册”按钮,在弹出的“花名册”窗口中点击“导入”按钮,在弹出的窗口选择《花名册》数据所在的工作簿,如图8所示。

图 8

第2步:在弹出的“提示”窗口中选择《花名册》数据所在的工作表在工作簿中的序号,如图9所示。

图 9

工作表序号的确定方法如图10所示,花名册数据工作表位于工作簿的序号为1,所以在图9中输入数字“1”。

图 10

第3步:在弹出的“提示”窗口中点击“是”按钮,将系统旧的花名册数据删除。

图 11

第4步:稍候即可看到图12所示的提示信息,表明数据已成功导入到系统中。

图 12

2、考场编排

如图13所示,在《菜单》工作表中点击“考场编排”按钮,在弹出的“考场编排”窗口中选择“随机”然后点击“OK”按钮。

图13

稍后即可看到如图14所示的“考场编排完成!”的提示信息,表明考场编排操作完成。

图 14

3、生成《考场座位表》

在《菜单》工作表中点击“座位表”按钮,在弹出的“座位表(签)”窗口中组的排列顺序(如:自左向右),再勾选“列标题”(可配合Shift或Ctrl键+鼠标实现多选),然后点击“考场座位”按钮。

图 15

弹出如图16所示的提示表明《考场座位表》已生成,《考场座位表》工作簿保存在本软件所在目录的文件夹内。

图 16

4、生成《班级考场座位查询表》

如图17所示,在《菜单》工作表中点击“座位表”按钮,在弹出的“座位表(签)”窗口中勾选“列标题”(可配合Shift或Ctrl键+鼠标实现多选),再输入组数,然后点击“班级座位”按钮。

 

图 17

稍等片刻即会弹出如图18所示的提示表明《班级座位表》已生成,《班级座位表》工作簿保存在本软件所在目录的文件夹内。

图 18

5、生成《考场座位签》

如图19所示,在《菜单》工作表中点击“座位表”按钮,在弹出的“座位表(签)”窗口的座位签中点击下拉菜单选择“座位签”需要显示的项目,然后点击“开始生成”按钮。

图 19

“座位签”显示的项目与所选项目的位置关系如图20所示。

图 20

稍等片刻即会弹出如图21所示的提示表明《考场座位签》已生成,《考场座位签》工作簿保存在本软件所在目录的文件夹内。

图 21

6、打印

如图22所示,在《菜单》工作表中点击“打印”按钮,在弹出的“打印”窗口选择打印的工作簿及其要打印的工作表,进行“页面设置”后点击“打印”或“打印预览”按钮。

图 22

7、注册

第1步:如图23所示,在《菜单》工作表中点击“注册”按钮,弹出的窗口标题显示“未注册!试用期30天!已试用0天!”字样,把机器码发送给作者(E-mail:527516986@qq.com)。

图 23

第2步:作者使用你发送的机器码算出注册码(一机一码)后发送给你,你再将注册码输入到相应位置后点击“注册”按钮。

图 24

第3步:注册成功后会弹出如图25所示的提示信息。

图 25

第4步:注册成功后窗口标题更改为“已注册”,如图26所示。

图 26

8、对《花名册》数据进行维护

第1步:《菜单》工作表点击“花名册”按钮,在弹出的“花名册”窗口中点击“维护”的按钮,如图27所示。

图 27

第2步:按提示信息点击相应按钮。点击按钮“是”将会对系统内部《花名册》数据查找空行、空列、重复行和空单元格;点击按钮“否”可自定义需维护的工作簿。如图28所示,我们以点击按钮“否”为例。

图 28

第3步:如图29所示,选择需维护《花名册》数据的工作簿后点击“打开”按钮。

图 29

第4步:如图30所示位置输入花名册数据所在的工作表序号。

图 30

第5步:在弹出的“提示信息”窗口中按需点击相应按钮。如图31所示,我们以点击按钮“否”为例。

图 31

第6步:数据维护完毕会弹出如图32所示的提示信息。

图 32

第7步:如图33所示,可在本软件的《临时》工作表查看查找空单元格的结果。

图 33

第8步:打开维护过的工作簿查看维护结果。如图34所示,空行、空列及重复行都已做标志(-1),你可以人工按需删除相关数据。注意本操作对重复行的理解,重复行是指2行的所有单元格均一致,如第5行和第279行为重复行数据,而第281行数据因“语文”列分值为“20”,与第5行的分值不一致,所以不是重复行。

图 34

如图35所示为第5步点击按钮“是”,数据维护的结果,对照图34可见重复行、空行列均已删除。但特别要注意的是第5行数据和第278行数据本软件无法确定是否为重复信息的。

图 35

9、统计《花名册》数据各班人数及总人数、《考场设置》工作表中设置的各考场的人数及总人数

如图36所示,在《菜单》工作表中点击“花名册”按钮,在弹出的“花名册”窗口中点击“统计”按钮。

图 36

如图37所示,稍等片刻即可从《临时》工作表中查看到统计结果。

图 37

10、删除导入的数据

为缩减本软件大小,编排完考场后可以清空导入到系统内的数据,如图38所示,在《菜单》工作表中点击“花名册”按钮,在弹出的“花名册”窗口中点击“删除”按钮。

图 38

在弹出的“提示信息”窗口点击“是”按钮,稍等片刻即可删除相关数据。

图 39

五、考场编排系统运行条件

1、安装office办公软件的Excel及其VBA组件。

2、不得对本软件所在工作簿进行“保护工作簿”操作。

3、不得对本软件包含的所有工作表进行“工作表保护”、“删除”等操作。

4、《花名册》工作表第1行为列标题,必须有“班级”列且该列不存在空单元格,列标题不能出现“考场”、“座位号”。

5、本软件的《考场设置》工作表的“考场”列两考场名称间不能存在空单元格、考场名称不能重复。

六、考场编排系统使用常见问题

Q:如何退出“受保护的视图”?

A:默认情况下,来自 Internet 源的工作簿会在受保护视图中打开,此时功能区下方的消息栏中会显示一条警告信息,如图40所示,同时还会显示用于启用编辑的选项,用户可以根据实际情况选择是否允许编辑该工作簿。在单击【启用编辑】之前无法编辑工作簿中的内容。

图 40

Q:打开本软件时出现提示"此工作薄已丢失了其VBA项目……"的错误提示?

A:这是因为你安装的office是精简版的,所以缺省了VBA项目。推荐重新下载完整版office,然后完全安装。如果自己对office比较熟悉,那就找下VBA插件安装上就行。

Q:可以编辑工作簿,但《菜单》工作表上的所有按钮(如图7所示)无法操作?

A:该软件使用VBA开发完成,使用时需要启用宏才能正常运行。如果你的电脑不能运行本程序,请检查是否安装了office的VBA组件,并在打开该软件前,先对你的Excel宏安全性进行设置。

在Excel2003版本中,可以依以下步骤操作:

1、在Excel的菜单栏上依次单击“工具”——“宏”——“安全性”,打开“安全性”对话框,如图41所示。

图41

2、在“安全级”选项卡中将宏的安全级别设置为“中”或“低”。其中推荐使用“中”级,如图42所示。

图 42

3、在宏的安全性级别设置成功后,再次打开Excel程序文件时,会出现提示信息框,如图43所示,此时点击“启用宏”按钮即可正常运行。

图 43

在Excel2007/2010版本中,可以依以下步骤操作:

如图44所示操作第1、2步。

图 44

1、依次单击Excel的Office按钮(2010版本为“文件”按钮)——“Excel选项”,打开“Excel选项”选项卡,在左侧列表中选择“信任中心”,在右侧出现的窗口中点击“信任中心设置”按钮。

2、打开“信任中心”选项卡,在左侧选择“宏设置”,在右侧出现的窗口中选择“禁用所有宏,并发出通知”选项,单击确定完成。

3、在宏的安全性级别设置成功后,再次打开Excel程序文件时,在信息栏(编辑栏上方)会出现安全警告信息,如图45所示。此时点击 “启用此内容”按钮即可正常运行。

图 45

Q:弹出“操作中断……”之类提示信息怎么办?

A:无法导入《花名册》数据造成操作中断的原因主要有:导入的数据为空、没有班级列、有考场或座位号列、第一行为空行、班级列存在空单元格、输错工作表序号等。解决办法:检查《花名册》数据满足本软件要求后再导入数据。

无法进行考场编排操作的原因主要有:没有导入《花名册》数据;《考场设置》工作表没有相关设置、考场名称存在空单元格或重名、考生总数与《花名册》数据不相符。解决办法:导入《花名册》数据或检查《考场设置》工作表无误后再进行考场编排操作。

无法生成座位表的原因主要有:还没有进行考场编排操作、重新设置了《考场设置》工作表。解决办法:检查《考场设置》工作表无误后重新进行考场编排操作后再操作生成座位表。

无法打印座位表的原因主要有:还没有生成相应座位表、生成的座位表工作簿被改名或被移出本软件所在文件夹。

Q:如图46所示,有班级列也无法导入《花名册》数据?

图 46

A:列标题“班级”前中后均不能留空字符,如“ 班级”、“班 级”或“班级 ”,在操作导入数据都会弹出“没有班级列……”的提示。图46的A1单元格的列标题为“班级”,“班”与“级”之间有空字符故无法导入数据。

Q:可否导入多个工作簿里的《花名册》数据?

A:可以,导入前请检查各工作簿里的《花名册》数据工作表的列数、列标题名称和顺序是否相符。导入第1个工作簿里的花名册数据操作参照“操作详解”所述步骤进行,导入第2个及之后的工作簿里的数据在弹出如图47所示窗口时点击按钮“否”即可。

图 47

Q:每个考场可以设置10个小组吗?

A:可以,请联系作者按贵校的实际需要进行修改。

Q:同一花名册数据,为何每次编排考场生成的座位表各考场考生不同?

A:当你操作“考场编排”在“编排方式”中选择“随机”时,因随机安排,故前后两次编排的结果会不一样,如图48所示,生成的座位表里的考生也就不同。当你对编排结果满意并准备打印考场编排座位表给各处室时,为防止各考场考生发生变化,请不要再重新操作“考场编排”。

图 48

Q:可否按总分成绩从高到低编排考场?

A:可以,首先需检查《花名册》数据是否有“总分”列,然后在操作“考场编排”时,“排序关键字”选择“总分”、“编排方式”选择“降序”后点击按钮“OK”即可,如图49所示。

图 49

编排效果如图50所示。

图 50

Q:可否安排多年级考生混合编排在同一考场?最多可设置几个年级?

A:可以,请使用多年级版。操作方法基本与单年级版一致。如图51所示,每个年级对应一个考场设置工作表。如果贵校需要安排更多的年级请联系作者修改。

图 51

如图52所示,各操作窗口中多了一个选择不同年级花名册数据的选项。

图 52

如图53所示,“座位表/签”窗口考场座位还多了个多年级的选项。

图 53

按图53,选择好列标题,选择多年级,然后点击“开始生成”按钮,生成的考场座位表如图54所示。

图 54

七、免责声明

1.本软件考场编排是本人想当然而成,加之时间仓促,错误和疏漏在所难免,如果你在使用中不符合您的需要,请及时告知,以便进一步改进!

   2.操作前请做好数据备份,凡因使用本软件而造成的数据损失,本人概不负责。

网络爬虫入门——案例二:爬取教务系统中的学生成绩

参考资料:

本帖目标:

1.模拟登陆学校教务系统

2.对教务系统中的学生成绩进行抓取

3.将抓取到的内容保存到excel表格并计算平均成绩和绩点

# -*- coding: utf-8 -*-
"""
Created on Sat Apr 16 18:26:46 2016

@author: wuhan
"""

import urllib
import urllib2
import cookielib
from bs4 import BeautifulSoup
import sys
import xlwt
from xlrd import open_workbook

    
        
class SDU:
    def __init__(self):
        self.loginUrl = http://zhjw.dlut.edu.cn/loginAction.do
        self.gradeUrl = http://zhjw.dlut.edu.cn/gradeLnAllAction.do?type=ln&oper=fainfo&fajhh=4289
        self.cookies = cookielib.CookieJar()
        self.postdata = urllib.urlencode({
        zjh:*********,
        mm:******        })
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))
        self.book = xlwt.Workbook(encoding=utf-8,style_compression=0)
        
        
    def getPage(self):
        request = urllib2.Request(
            url = self.loginUrl,
            data = self.postdata)
        response = self.opener.open(request)
        response = self.opener.open(self.gradeUrl)
        return response.read().decode(gbk)
        
    def getGrade(self):
        page = self.getPage()
        page = BeautifulSoup(str(page))
        tmp = page.find_all(tr, class_ = "odd")
        sheet = self.book.add_sheet(课程信息, cell_overwrite_ok=True)
        i = 0
        for each in tmp:
            tag = each.find_all(td, align="center")
            j = 0
            for td in tag:
                p = td.find(p, align="center")
                if(p):
                   sheet.write(i,j,str(p.string).strip())
                else:
                   sheet.write(i,j,str(td.string).strip())
                j += 1
            i += 1
                
        self.book.save(jiaowuxitong.xls)
        
    def getAverage(self):
        i = 0
        sheet  = open_workbook(jiaowuxitong.xls,formatting_info=True)
        table = sheet.sheet_by_index(0)
        nrows = table.nrows
        tmp1 = 0
        tmp2 = 0
        for i in range(nrows):
            if "必修" in table.cell(i,5).value:
                tmp2 +=  float(table.cell(i,4).value)
                
                if 通过 in table.cell(i,6).value:
                    tmp1 += float(table.cell(i,4).value)*60
                else:
                    tmp1 += float(table.cell(i,4).value)*float(table.cell(i,6).value)
        i += 1 
        ave = tmp1/tmp2
        print "您的平均成绩为:"
        print ave
        return ave
             
    def getGPA(self):
        i= 0
        sheet = open_workbook(jiaowuxitong.xls,formatting_info=True)
        table = sheet.sheet_by_index(0)
        nrows = table.nrows
        tmp1 = 0
        tmp2 = 0
        for i  in range(nrows):
            if not "通过" in table.cell(i,6).value:
                tcredit = float(table.cell(i,4).value)
                tmp1 += tcredit
                tgrade = float(table.cell(i,6).value)
                
                if tgrade in range(90,101):
                    tmp2 += 4*tcredit
                elif tgrade in range(85,90):
                    tmp2 += 3.7 * tcredit
                elif tgrade in range(82,84):
                    tmp2 += 3.3 * tcredit
                elif tgrade in range(78,82):
                    tmp2 += 3.0 * tcredit
                elif tgrade in range(75,78):
                    tmp2 += 2.7 * tcredit
                elif tgrade in range(71,75):
                    tmp2 += 2.3 * tcredit
                elif tgrade in range(66,71):
                    tmp2 += 2.0 * tcredit
                elif tgrade in range(62,66):
                    tmp2 += 1.7 * tcredit
                elif tgrade in range(60,62):
                    tmp2 += 1.3 * tcredit
                else:
                    tmp2 += 0        
        GPA = tmp2/tmp1
        print "您的绩点为:" 
        print GPA
        return GPA
                    
                
                    
reload(sys)
sys.setdefaultencoding(utf-8)        
sdu = SDU()
sdu.getGrade()
sdu.getAverage()
sdu.getGPA()

 

以上是关于Excel VBA教务考试成绩管理——考场编排系统下载及使用说明的主要内容,如果未能解决你的问题,请参考以下文章

项目案例—高校考试座位编排管理系统(附源码)

前后端分离的考试在线报名管理系统(网上报名系统)

正方教务教务系统API - 一些项目链接

网络爬虫入门——案例二:爬取教务系统中的学生成绩

2018新版正方教务 ---爬虫--- JAVA源码--课表--平时分----成绩-----排名----考试安排

C#课程设计之学生教务管理系统