加载中…
  
博文
标签:

考场编排

分类: 考生号考场号座位号

1、随机无规律插花排序法

&& b1为原表,给b1增加一新列 Sjh,生成新表b2

Select Rand() As Sjh,* From B1 Into Table B2

&& Sjh 排序,生成新表b3

Select * From B1 Order By Sjh Into Table B3

&& b3增加一新列 Xh,生成新表b4 (结果表)

Select Recn() As Xh,* From B2 Order By Xh Into Table B4

Drop Table B2  &&删除表b1

Drop Table B3  &&删除表b2

2、指定规律插花排序法

** 根据人数多少搭配相等的五组数据,生成五个临时表

Sele * From Bmk Where Bmxh In([01]) Into Cursor B1

Sele * From Bmk Where Bmxh In([03],[04]) Into Cursor B2

Sele * From Bmk Where Bmxh In([02]) Into Cursor B3

Sele * From Bmk Where Bmxh In([06]) Into Cursor B4

Sele * From Bmk Where Bmxh In([07],[05]) Into Cursor B5

** 把五个临时表合并,按第一列‘Xh’排序,即生成五组插花排序的数据

Sele Recn() Xh,* From B1;

Union Sele Recn() Xh,* From B2;

Union Sele Recn() Xh,* From B3;

Union Sele Recn() Xh,* From B4;

Union Sele Recn() Xh,* From B5 Order By 1 Into Table B6

3、准考证号的生成方法

(1)、在表中有记录的情况下使用函数recn(),生成数值型准考证号命令如下:

        Select 2007020000+Recn() As 编号,* From 报名表

 或增加一列编号用: Update报名表 Set 编号=2007020000+Recn()

 

(2)、利用函数生成字符型序列(0000---9999)                        

  Select Right(Str(90000+Recn()),4) As Bmxh;

  From 报名表 Into Table 报名表2

 

(3)、生成开头为'0'的字符型准考证号(07140001-07149999)

    Select '0714'+Right(Str(90000+Recn()),4) As Bmxh;

 From 报名表 Into Table报名表3

 

(4)、字符型准考证号也可以用以下方法(在考场_kc、座号_zh生成后使用)

  准考证号=[0714]+Alltrim(Kc)+Alltrim(Zh)

4、考场号与座号的生成方法

(1)、数值型考场号、座号(1 2 3 ...10 11 12)

  Select Ceiling(Recn()/30) 考场号,;

  Recn()-(Ceiling(Recn()/30)-1)*30 座号,* From 报名库

 

(2)、字符型考场号、座号(01 02 03 ...10 11)

 Select Right(Str(9000+Ceiling(Recno()/30)),3) 考场号,;

  Right(Alltrim(Str(900+Recn()- (Ceiling(Recn()/30)-1)*30)),2) 座号,* From 报名库

【注意】这样添加考场与座号列,必须用插花排序法排好顺序。

5、利用随机函数编排考场的程序

**========================================================================

** 程序名称:利用随机函数排考场程序

** 程序设计:侯进录

** 编程时间:20061225

**=========================================================================

** 生成随机号列

Select Round(Rand(),9) Sjh,* From Bmk Into Cursor B1

** 按随机号排序

Select * From B1 Order By Sjh Desc Into Cursor B2

** 生成字符型准考证号

Select[07]+Alltrim(Str(140000+Recn())) As 准考证号,; 

 **   生成字符考场号  (这里是每场30人,必要时改为4050都可以)

Right(Alltrim(Str(9000+Ceiling(Recn()/30))),3) As 考场号,;       **  生成字符型座号

Right(Alltrim(Str(900+Recn();

-(Ceiling(Recn()/30)-1)*30)),2) As  座号,* From B2 ;

Into Table 考场编排表                                                       

6、利用指定分组编排考场的程序

**=======================================================================

** 程序名称:排序

** 程序功能:多组插花

** 编程人员:侯进录

**======================================================================

** 根据人数多少搭配相等的五组数据,生成五个临时表

Sele * From Bmk Where Bmxh In([01]) Into Cursor B1

Sele * From Bmk Where Bmxh In([03],[04]) Into Cursor B2

Sele * From Bmk Where Bmxh In([02]) Into Cursor B3

Sele * From Bmk Where Bmxh In([06]) Into Cursor B4

Sele * From Bmk Where Bmxh In([07],[05]) Into Cursor B5

** 把五个临时表合并,按第一列‘Xh’排序,即生成五组插花排序的数据

Sele Recn() Xh,* From B1;

Union Sele Recn() Xh,* From B2;

Union Sele Recn() Xh,* From B3;

Union Sele Recn() Xh,* From B4;

Union Sele Recn() Xh,* From B5 Order By 1 Into Table B6

 ** 编排准考证号

Select[07]+Alltrim(Str(140000+Recn())) As 准考证号,;                 

**  编排考场号 (这里是每场30人,必要时改为4050都可以)

Right(Alltrim(Str(9000+Ceiling(Recn()/30))),3) As 考场号,;                    **  编排座号号

Right(Alltrim(Str(900+Recn();

-(Ceiling(Recn()/30)-1)*30)),2)  座号,* From As B2;

    Into Table 考场编排表   &&存成结果表

 

 

 

 

阅读    收藏 
标签:

总分与平均分的计算

it

分类: 数据的统计

考生各科成绩的总分与平均分的计算

各科成绩表

学号

姓名

语文

数学

英语

综合

1

 

45

87

99

98

2

 

47

85

95

94

3

 

49

83

91

90

4

 

51

81

87

86

5

 

53

79

83

82

 

总成绩表

学号

姓名

语文

数学

英语

综合

总分

平均

1

 

45

87

99

98

329

329

2

 

47

85

95

94

321

321

3

 

49

83

91

90

313

313

4

 

51

81

87

86

305

305

5

 

53

79

83

82

297

297

 

命令如下:

Select *,语文+数学+英语+综合 As总分,

 (语文+数学+英语+综合)/4  As 平均 From各科成绩表;

Into Table总成绩表

 

 

 

 

 

阅读    收藏 
标签:

教育

分类: 考生号考场号座位号

考生号考场号座位号的编排方法

河南省滑县招生办公室  侯进录

 

    经常组织考试的同志都需要进行考生号、考场号和座位号的编排,其方法各有不同,我通过多年的经验和学习总结出一种这三个号的编排方法。因为大多情况是报名后有现成的报名数据表,所以这里主要使用SQL查询语言及函数,分步骤在原报名表的基础上进行考生号、考场号和座位号的生成,程序运行环境主要在VFP环境当中

首先,我们把考生报名表命名为:bmb,在此表基础上,经过编程方式给它进行随机混合后,增加上考生号(ksh,考场号(kch)和座位号(zwh)三列,最后生成考场表为:kcb。具体方法和思路如下:

1随机排序

我们利用随机函数Recn()给报名表bmk增加一列随机数并命名为随机号Sjh,然后再利用取舍函数Round()将其取6位小数(小数位数越多越好)。为不干涉原表数据我们利用“*”保留原表所有列,最后生成临时表B1。在临时表B1的基础上按随机号列sjh进行从小到大排序,从而打乱原来报名表排序,产生出按随机号Sjh排序的临时表B2,这给以后添加考场号、座位号和考生号奠定基础。

程序代码书写如下:

 

&& 增加随机编号列(Sjh)生成临时表B1

Select Round(Rand(),6) As Sjh,* From Bmb  Into Cursor B1

 

&& 按随机编号列(Sjh)进行从小到大排序生成临时表B2

Select * From B1  Order By Sjh Into Cursor B2

 

2、考场号的产生

每考场安排30人,这样考生人数除以30并向上取整(数学上叫过剩近似值)就是考场总数了。所以,同样的方法,我们把每一个考生所在的记录号Recn()(即位置顺序序号)除以30并向上取整,就得到每一个考生所在的考场了。这样就产生了一列考场号(Kch)。所以我们在表B2的基础上,利用函数Recn()除以30,然后再利用函数Ceiling()向上取整数(过剩近似值),即Ceiling(Recn()/30)就是每一个考生的考场号了,我们把这一列命名为考场号(Kch)从而产生临时表B3

一般情况下,为了使考场号位数相同,考场号位数不足的在前边添加‘0’补齐。所以 ,这样以来就得把考场号转换成字符型字段才行。假设考场号为3位数,那么我们采取复合函数Right(Alltrim(Str(1000+Kch)),3)实现了考场号整齐的要求,这一列为字符型考场号,命名为Kch2。从而产生临时表B4

 

程序代码书写如下:

 

&&编排数值考场号(Kch)

Select Ceiling(Recn()/30) As Kch,* From B2 Into Cursor B3

 

&&把数值考场号(Kch)转化为字符型并添加一列字符型考场号(Kch2

Select Right(Alltrim(Str(1000+Kch)),3)As Kch2,* From B3 Into Cursor B4

 

3、座位号的产生

由于每场安排30人,这时在座号列中是以30为周期的一组数并且和考生所在的记录号、考场号有一定关系,根据这个规律,我们发现使用函数和公式Recn()-(Kch-1)*30 就能完成座位号的编排,所以在表B4的基础上使用这个公式增加一列座位号并命名为Zwh。从而产生临时表B5

一般情况下,为了使座位号号位数相同,座位号位数不足的在前边添加‘0’补齐。所以 ,这样以来就得把座位号转换成字符型字段才行,因此我们在表B5的基础上采取复合函数Right(Alltrim(Str(100+Zwh)),2)实现了座位号整齐的要求,这一列为字符型座位号,命名为(Zwh2)。从而产生临时表B6

 

程序代码书写如下:

 

&&编排数值座位号

Select Recn()-(Kch-1)*30 Zwh,* From B4 Into Cursor B5

 

&&把数值型座位号(Zwh)转化为字符型并添加一列字符型考场号(Zwh 2

Select Right(Alltrim(Str(100+Zwh)),2)  As  Zwh,* From B5 Into Cursor B6

 

4、考生号的产生

考生号是为考试和分数管理提供的唯一性号码,有了考生号在以后考试和分数管理中,不但能起到唯一性还可以根据考生号辨别这个考生,考试的年份、所在的单位或地区、考生类别以及序号等。所以我们在临时表B6的基础上添加一列考生号,并命名为Ksh。从而产生正式结果考场表Kcb

 

程序代码书写如下:

 

&&编排考生号(年份99+地区0714+类别66+顺序号Recn())

Select  990714660000+Recn() As Ksh ,* From B16  Into Table Kcb

 

考生号要是‘0’开头的,同样需要转为字符型字段。

阅读    收藏 
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有