标题:求助按科目成绩等级录取学生
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
* VFP9 代码
SELECT PADL(RECNO(), 4, "0" ) Xh, zy2, wldj, hxdj, zzdj, lsdj, dldj, swdj, tydj, zbs, tzs FROM 录取资格库 INTO CURSOR tj READWRITE 
SCAN
    * 等级中是否包含 E 
    cdj1 = ALLTRIM(wldj - hxdj - zzdj - lsdj - dldj - swdj - tydj)
    IF "E" $ cdj1
        LOOP 
    ENDIF 
    * A学校指标生
    STORE 0 TO ok1, ok2, ok3 && 如果为 1,表示符合条件
    * 1 物理、化学,最低条件:BC
    cdjA_1 = ALLTRIM(wldj - hxdj)
    IF "D" $ cdjA_1
    ELSE 
        IF djpx(cdjA_1) <= "BC"
            ok1 = 1
        ENDIF
    ENDIF 
    * 2 思想品德、历史、地理、生物,最低条件:BCCC
    cdjA_2 = ALLTRIM(zzdj - lsdj - dldj - swdj)
    IF "D" $ cdjA_2
    ELSE 
        IF djpx(cdjA_2) <= "BCCC"
            ok2 = 1
        ENDIF
    ENDIF 
    ok3 = 1
    IF ok1 = 1 AND ok2 = 1 AND ok3 = 1
        REPLACE zbs WITH "31"
    ENDIF 
    * A学校统招生
    cdjA_3 = ALLTRIM(wldj - hxdj - zzdj - lsdj - dldj - swdj)
    IF djpx(cdjA_3) <= "BBCCDD"
        REPLACE tzs WITH "31"
    ENDIF
ENDSCAN
GO TOP 
BROWSE
RETURN 
*
* 等级排序
*
FUNCTION djpx(cStr)
LOCAL px[LEN(cStr)]
FOR i = 1 TO LEN(cStr)
    px[i] = SUBSTR(cStr, i, 1)
ENDFOR
=ASORT(px)

cStr1 = ""
FOR i = 1 TO ALEN(px,1)
    cStr1 = cStr1 + px[i]
ENDFOR
RETURN cStr1 

ZBS、TZS 字段中的数据只是符合 A 学校的条件


[此贴子已经被作者于2019-6-19 21:40编辑过]


坚守VFP最后的阵地
2019-06-19 21:27
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
我再看、再验,发现:
1.C学校的指标生字段zy2的值是否应为"34"?否则BC两校一样的。
2.按sdta的统计结果看来,序号为0002、0003的,应该理解为:没有填报指标生志愿吧?所以,其指标生资格字段zbs中应该没有合格值"31",对吗?

2019-06-20 06:43
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
我测试了一下,结果如下,不知对否?

新_录取资格库.rar (201.65 KB)
2019-06-20 06:52
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 12楼 schtg
怎么说呢,意思就是就是将分别报三个学校指标生(zy2)符合等级要求的学生,在zbs字段打上标记。
2019-06-20 08:03
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
以下是引用chychychy在2019-6-19 20:32:34的发言:

谢谢关注,数学和逻辑的确重要,学生报名分为指标生和统招生两类,zy2为指标生,zy3 为统招生。
我测试了一下你写的代码(精简了还算错误,如下),只执行了第一分支,没有写入所有的符合条件的‘f’。关键是C学校的指标生和A学校的统招生排除法也不好解决。
REPL ALL ZBS WITH ' '
GO TOP
SCAN
   
      DO CASE
         CASE  wldj='E' OR hxdj='E' or zzdj='E' or lsdj='E' or dldj='E' or swdj='E' or tydj='E' &&排除1.所有为E的
               repl bj with 'f'
         CASE wldj='D' or hxdj='D'
               repl bj with 'f'
         CASE wldj='C' and hxdj='C'         
               repl bj with 'f'
         CASE zzdj='D' or lsdj='D' or dldj='D' or swdj='D'         
               repl bj with 'f'
         CASE zzdj='C' and lsdj='C' and dldj='C' and swdj='C'         
               repl bj with 'f'
      ENDCASE
      Repl zbs with '31' FOR(bj!='f')         
      
   
ENDSCAN

不好意思,楼主,由于我没有写其他两所学校的条件,所以贴上去的程序没进行测试。现经过测试,发现错误在于      Repl zbs with '31' FOR(bj!='f')  这条命令。你把他放到endscan 后面去,改为      Repl zbs with '31' FOR(bj!='f') and zy2='31'         
      
2019-06-20 08:25
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 12楼 schtg
贴错图了,你说的是对的
2019-06-20 08:28
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 11楼 sdta
谢谢,学习了,判断部分准确不会落漏,等级排序部分高明,排了序就能比较大小(但此处没大看明白,也是今后可能更改的,请注释一下,教会如何导出需要的组合并排序,新手,见笑了)。有几处不合适(A学校指标生4348合适,A学校统招是4133),是我造成的。A指标生要看zy2字段为31的,将符合等级要求在zbs字段的打上标记,A学校统招生要看zy3字段为31的将符合等级要求的在tzs字段打上标记,新上传完整数据。
录取资格库(上传完整去掉单位姓名).rar (363.05 KB)
,比如如何实现下图结果,谢谢指教。


[此贴子已经被作者于2019-6-20 14:54编辑过]

2019-06-20 09:22
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 9楼 schtg
谢谢,没一行行看代码,你的这个结果和我的不很对应,正确的结果A学校指标生4348,统招生4133。我上传了新的数据库,请查看一下。

[此贴子已经被作者于2019-6-20 09:55编辑过]

2019-06-20 09:54
chychychy
Rank: 2
等 级:论坛游民
帖 子:126
专家分:18
注 册:2015-4-18
得分:0 
回复 15楼 wangzhiyi
du case 语句应该是执行完第一case若符合条件就跳出了,剩下的case没有执行,好像是。
2019-06-20 09:57
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
是不是达到A学校录取标准了,就不考虑B及以后的学校了?也就是说学校有优先级.

dBase有人接盘了。
2019-06-20 10:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495360-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023871 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved