今年我校2008级本科生级为3083人,明年本科生招生的规模预计为4300人,加上专升本、专科及软件学院的学生,2010级学生的规模高达5900人,教学班级将达创纪录的80多个。随着班级和学生人数的增加,大学英语的阅卷工作将越来越繁重,尤其是试卷分析5000多人的学生成绩。本人经历了三次阅卷,总结出了试卷分析的一些方法和大家一起分享。
山东欧玛阅卷机阅卷后的数据可以通过“数据导出”生成一个dbf文件,这个数据文件可以用VFP软件打开,使用select 语句进行各种查询。以下是本人摸索出来的查询命令。假如导出的数据库名为“总成绩表.dbf”,那么可以通过以下命令来查询。
1.查询成绩平均分
更新:
select class,avg(zf),count(zf),max(zf),min(zf) from 总成绩表 where class="01" //left是取左边七位字符的函数,把第一个班级的班级代码、平均成绩、人数、最高分和最低分查询出来
copy to b.dbf //把查询结果输入到一个名字叫“b.dbf”的数据库中。
select class,avg(zf),count(zf),max(zf),min(zf) from 总成绩表 where class="02" into array temp 把第一个班级的班级代码、平均成绩、人数、最高分和最低分查询出来,并输入到数组中
insert into b.dbf from array temp 把数组的数据写入到"b.dbf"文件中
同时,也可以利用以下程序来批量解决,modi comm 1.prg 把以下内容插入运行:
一代查班级平均分
set talk off
input "请输入班级" to i
select class,avg(zf),max(zf),min(zf) from d:/cj0106.dbf where val(class)=i
copy to e.dbf
for i=2 to 60
select class,round(avg(zf), 2),round(max(zf),2),round(min(zf),2) from d:/cj0106.dbf where val(class)=i into array temp
insert into e.dbf from array temp
use
endfor
set talk on
二代查班级平均分
set talk off
input "请输入班级" to i //一般输入“01”
select class,avg(zf),max(zf),min(zf) from d:/cj0106.dbf where val(class)=i //val 函数的功能是把class这一字符转化为数字型
copy to y.dbf
for i=2 to 60 //批量处理,i的最大值为班数的最大值
select class,round(avg(zf), 2),round(max(zf),2),round(min(zf),2) from d:/cj0106.dbf where val(class)=i into array temp
insert into y.dbf from array temp
use
endfor
sele * from y.dbf order by avg_zf desc //给查询的结果排序
copy to "c:\documents and settings\owner\桌面\2.xls" TYPE XL5 //导出到excel
set talk on
select left(code,7),avg(zf),count(zf),max(zf),min(zf) from 总成绩表 where code="0114081"
select code,avg(zf),count(zf),max(zf),min(zf) from 总成绩表 where code="0114082" into array temp //temp是数组,本句将查询结果存在数组
insert into b.dbf from array temp //本句是把数组中的数据“传递”给数据库b.dbf ,b.dbf是全年级各班的平均分、人数、最高分和最低分的表
注:此步可以简化为:select code(subs(1,7)),avg(zf),max(zf),min(zf) from 总成绩表 where class="01" class 可以一直从1到73(总的班级数)
2.查询前五名
select top 5 * from 总成绩表 order by zf desc //desc 为降序
查询后五名
select top 5 * from 总成绩表 order by zf asc //desc 为升序
3.查询每个系的平均分
select subs(code,1,2) avg(zf) from 总成绩表 where code="01"
copy to c.dbf
select subs(code,1,2) avg(zf) from 总成绩表 where code="02" into array temp //temp是数组,本句将查询结果存在数组
insert into c.dbf from array temp //本句是把数组中的数据“传递”给数据库c.dbf
4.查询每个老师的平均分
更新:
四个班级查平均成绩
set talk off
input "请输入班级1" to i
input "请输入班级2" to j
input "请输入班级3" to k
input "请输入班级4" to l
select avg(zf) from d:/cj0106.dbf where val(class)=i or val(class)=j or val(class)=k or val(class)=l
set talk on
三个班级查平均成绩
set talk off
input "请输入班级1" to i
input "请输入班级2" to j
input "请输入班级3" to k
select avg(zf) from d:/cj0106.dbf where val(class)=i or val(class)=j or val(class)=k
set talk on
二个班平均成绩
set talk off
input "请输入班级1" to i
input "请输入班级2" to j
select avg(zf) from d:/cj0106.dbf where val(class)=i or val(class)=j
set talk on
select 1,avg(zf) from 总成绩表 where code="0334081" or code="0444081" or code="0424082" or code="1714081"
copy to d.dbf //把查询的数据“复制”到表d.dbf中
select avg(zf) from 总成绩表 where code="1214081" or code="1224081" or code="1234082" into array temp
insert into d.dbf from array temp //生成的表d.dbf 为每个老师所教班级的平均分。
附:VFP(Visual Foxpro .0 软件下载地址) http://xiazai.zol.com.cn/detail/37/361341.shtml 序列号为:111111111