| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9399 人关注过本帖, 1 人收藏
标题:求助按科目成绩等级录取学生
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:20 
程序代码:
* VFP9 代码
SELECT PADL(RECNO(), 4, "0" ) Xh, zy2, zy3, wldj, hxdj, zzdj, lsdj, dldj, swdj, tydj, SPACE(2) 理化, SPACE(4) 政史地生, SPACE(6) 六科, SPACE(7) 七科, zbs, tzs FROM 录取资格库 INTO CURSOR tj READWRITE 
SCAN
    * 等级中是否包含 E 
    cdj1 = ALLTRIM(wldj - hxdj - zzdj - lsdj - dldj - swdj - tydj)
    IF "E" $ cdj1
        LOOP 
    ENDIF 
    REPLACE 七科 WITH djpx(ALLTRIM(wldj - hxdj - zzdj - lsdj - dldj - swdj - tydj))
    REPLACE 六科 WITH djpx(ALLTRIM(wldj - hxdj - zzdj - lsdj - dldj - swdj))
    
    * A学校指标生
    STORE 0 TO ok1, ok2, ok3 && 如果为 1,表示符合条件
    * 1 物理、化学,最低条件:BC
    cdjA_1 = ALLTRIM(wldj - hxdj)
    REPLACE 理化 WITH djpx(cdjA_1)
    IF "D" $ cdjA_1
    ELSE 
        IF djpx(cdjA_1) <= "BC"
            ok1 = 1
        ENDIF
    ENDIF 
    * 2 思想品德、历史、地理、生物,最低条件:BCCC
    cdjA_2 = ALLTRIM(zzdj - lsdj - dldj - swdj)
    REPLACE 政史地生 WITH djpx(cdjA_2)
    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 


结果
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2019-06-20 22:13
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 31楼 sdta
非常感谢,刚刚测试完全实现目的,谢谢指教!
2019-06-20 22:34
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 31楼 sdta
又有新的问题,因为A<B<C<D<E,所以导致ACCCCD\ACDDDD等不符合2B2C2D(BBCCDD)的情况也被计算为合格了
图片附件: 游客没有浏览图片的权限,请 登录注册
2019-06-21 11:30
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
2B2C2D 应该如何理解才是关键
* A学校统招生
cdjA_3 = ALLTRIM(wldj - hxdj - zzdj - lsdj - dldj - swdj)
IF djpx(cdjA_3) <= "BBCCDD" AND OCCURS("D", cdjA_3) <= 2  AND OCCURS("C", cdjA_3) <= 2 && D 最多只能有2个,C 最多只能有2个
   REPLACE tzs WITH "31"
ENDIF

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


坚守VFP最后的阵地
2019-06-21 12:10
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
可以通过下面的方法来理解2B2C2D

CREATE CURSOR TT (X1 C(1))
FOR I = 65 TO 68
    INSERT INTO TT VALUES(CHR(I))
ENDFOR
SELECT AA.X1 + BB.X1 + CC.X1 + DD.X1 + EE.X1 + FF.X1 A1, SPACE(6) A2  FROM TT AA, TT BB, TT CC, TT DD, TT EE, TT FF INTO CURSOR TT1 READWRITE
REPLACE A2 WITH DJPX(A1) ALL
SELECT DISTINCT A2 FROM TT1 WHERE OCCURS("D", A2) <= 2 AND OCCURS("C", A2) <= 2
* 等级排序
*
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

坚守VFP最后的阵地
2019-06-21 13:39
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 34楼 sdta
我觉得2B2C2D组合(BBCCDD)是底线,D最多有两个,但不能说C最多有两个,因为(BBCCCC)组合虽有4个C,但是底线符合要求,排序之后再逐个对位比较才是最安全的比如说六个位置分别为A1\A2\A3\A4\A5\A6,需要A1<=B,A2<=B,A3<=C,A4<=C,A5<=D,A6<=D,才可以
我这样试了一下,逐个位置进行比较再替换,就是有点长。
REPLACE ALL tzs1 WITH '31' FOR substr(六科,1,1)<='B' AND substr(六科,2,1)<='B' AND substr(六科,3,1)<='C' AND substr(六科,4,1)<='C'AND substr(六科,5,1)<='D'AND substr(六科,6,1)<='D' AND ZY3='31'

再请教如何将临时表tj中的字段没有的六科、七科、和已经有的,写会原数据表

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

2019-06-21 14:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用chychychy在2019-6-21 14:38:57的发言:

我觉得2B2C2D组合(BBCCDD)是底线,D最多有两个,但不能说C最多有两个,因为(BBCCCC)组合虽有4个C,但是底线符合要求,排序之后再逐个对位比较才是最安全的比如说六个位置分别为A1\A2\A3\A4\A5\A6,需要A1<=B,A2<=B,A3<=C,A4<=C,A5<=D,A6<=D,才可以
我这样试了一下,逐个位置进行比较再替换,就是有点长。
REPLACE ALL tzs1 WITH '31' FOR substr(六科,1,1)<='B' AND substr(六科,2,1)<='B' AND substr(六科,3,1)<='C' AND substr(六科,4,1)<='C'AND substr(六科,5,1)<='D'AND substr(六科,6,1)<='D' AND ZY3='31'

再请教如何将临时表tj中的字段没有的六科、七科、和已经有的,写会原数据表

有这个必要吗

坚守VFP最后的阵地
2019-06-21 19:17
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1735
专家分:3329
注 册:2012-2-29
收藏
得分:0 
我再次研究了一下这个志愿中合格问题,而且做了一个统计,不知与你的数据是否吻合?
图片附件: 游客没有浏览图片的权限,请 登录注册

新_录取资格库.rar (220.36 KB)
2019-06-21 20:09
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
    关于 BBCCDD 问题很有必要探讨一下,ABCD四个字母可以组合成从小到大排列的任意6个字符的字符串,共有84种组合,内容如下:
  
  AAAAAA     
  AAAAAB     
  AAAAAC     
  AAAAAD     
  AAAABB     
  AAAABC     
  AAAABD     
  AAAACC     
  AAAACD     
  AAAADD     
  AAABBB     
  AAABBC     
  AAABBD     
  AAABCC     
  AAABCD     
  AAABDD     
  AAACCC     
  AAACCD     
  AAACDD     
  AAADDD     
  AABBBB     
  AABBBC     
  AABBBD     
  AABBCC     
  AABBCD     
  AABBDD     
  AABCCC     
  AABCCD     
  AABCDD     
  AABDDD     
  AACCCC     
  AACCCD     
  AACCDD     
  AACDDD     
  AADDDD
   
  ABBBBB     
  ABBBBC     
  ABBBBD     
  ABBBCC     
  ABBBCD     
  ABBBDD     
  ABBCCC     
  ABBCCD     
  ABBCDD     
  ABBDDD     
  ABCCCC     
  ABCCCD     
  ABCCDD     
  ABCDDD     
  ABDDDD
     
  ACCCCC     
  ACCCCD     
  ACCCDD     
  ACCDDD     
  ACDDDD     
  ADDDDD
   
  BBBBBB     
  BBBBBC     
  BBBBBD     
  BBBBCC     
  BBBBCD     
  BBBBDD     
  BBBCCC     
  BBBCCD     
  BBBCDD     
  BBBDDD    
  BBCCCC     
  BBCCCD     
  BBCCDD     
  BBCDDD     
  BBDDDD     
  BCCCCC     
  BCCCCD     
  BCCCDD     
  BCCDDD     
  BCDDDD     
  BDDDDD     
  CCCCCC     
  CCCCCD     
  CCCCDD     
  CCCDDD     
  CCDDDD     
  CDDDDD     
  DDDDDD   

但是能符合BBCCDD条件的组合,本人认为有 58 种(黑色字的内容),在中考的录取中,这些组合是否包含在条件表达式中,决定了一个学生是否能由初中升入高中。作为程序人员在处理这些条件时,一定要慎之又慎。

[此贴子已经被作者于2019-6-22 12:29编辑过]


坚守VFP最后的阵地
2019-06-22 12:28
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 37楼 sdta
我觉得,逐个对位比较很重要,写回数据上为了下发是方便查看数据
2019-06-24 10:13
快速回复:求助按科目成绩等级录取学生
数据加载中...
 
   



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

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