| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9394 人关注过本帖, 1 人收藏
标题:求助按科目成绩等级录取学生
只看楼主 加入收藏
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 20楼 xuminxz
差不多吧,这一步意思就是分别将报指标生和统招生符合等级条件的挑出来,比如报A学校指标生5403人(coun for zy2=='31')将符合等级条件的人挑出来,完成后结果是4348人(coun for zbs='31' and zy2=='31')
2019-06-20 10:24
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 11楼 sdta
如何实现将ALLTRIM(wldj - hxdj -swdj - zzdj - lsdj - dldj)提取到的两个或者更多个排序并保存?CCCCDC变成CCCCCD,BABBCB变成ABBBBC
2019-06-20 15:22
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
回复 19楼 chychychy
是因为REPL 命令带了FOR条件,记录指针就会移动到DBF文件尾部,第一条记录执行完多条件分支后,再执行这条命令,记录指针就会移动到DBF尾部,不会再处理其他记录了。
2019-06-20 15:41
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用chychychy在2019-6-20 15:22:41的发言:

如何实现将ALLTRIM(wldj - hxdj -swdj - zzdj - lsdj - dldj)提取到的两个或者更多个排序并保存?CCCCDC变成CCCCCD,BABBCB变成ABBBBC

11楼的代码楼主没有细看吧
* 等级排序
*
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
上面的代码是自定义函数,有两个功能:
1 将上层程序传递过来的字符串按照升序进行排序
FOR i = 1 TO LEN(cStr)
    px[i] = SUBSTR(cStr, i, 1)
ENDFOR
=ASORT(px)
2 将排序后的字符,重新生成新的字符串,并返回上层程序
cStr1 = ""
FOR i = 1 TO ALEN(px,1)
    cStr1 = cStr1 + px[i]
ENDFOR

坚守VFP最后的阵地
2019-06-20 19:05
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 24楼 sdta
看是真看了,代码中前面基本看懂了,平时从没用过这样的函数和命令,没看懂等级排序这一关键部分
2019-06-20 20:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用chychychy在2019-6-20 20:43:11的发言:

看是真看了,代码中前面基本看懂了,平时从没用过这样的函数和命令,没看懂等级排序这一关键部分

明白了代码中的思路,就可以完成17楼截图中的需求了

坚守VFP最后的阵地
2019-06-20 20:51
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 26楼 sdta
如果能将科目等级组合提取后并排序存放,就可以用它直接和要求比较小于等于为真,大于为否。可是苦于只会简单用alltrim提取,不会排序。所以就绕路用的排除法(具体如下,),提前将各种等级提取出来,为此并且增加了许多辅助字段。虽能解决但觉得有点绕,尤其统招生2B2C2D(BBCCDD)的排除怕有落漏,最好的方法还是你的提取排序后比较大小,我们的想法总感觉不够数学和逻辑,想学习你的等级排序,可是象你11行就解决的,处于知识所限,平时没用也没看懂(FUNCTION \LOCAL \ASORT\ ALEN意思作用没看懂,见笑了,请指教,能否帮编辑实现先将提取的等级组合排序后存放,然后我直接比较大小用repl替换即可)

&&&排除法指标生
repl all zbs with ''
&&提取A指标生(物理、化学1B1C以上;思想品德、历史、地理、生物1B3C以上;体育与健康D以上)
repl  zbs with '31' for zy2=='31' and 科目合计=7 and (OCCURS('D',理化)=0 and OCCURS('E',理化)=0 and OCCURS('C',理化)<=1) and (OCCURS('D',政史地生)=0 and OCCURS('E',政史地生)=0 and OCCURS('C',政史地生)<=3) and OCCURS('E',tydj)=0

&&提取B指标生,5C2D以上
repl  zbs with '32' for E=0 and D<=2  and zy2=='32' and 科目合计=7

&&提取C指标生,5C2D以上
repl  zbs with '33' for E=0 and D<=2 and zy2=='33' and 科目合计=7

&&提D指标生,物理、化学、生物、地理3C1D以上,政史体2C1D以上
repl zbs with '34' for OCCURS('E',理化生地)=0 and OCCURS('D',理化生地)<=1 and OCCURS('D',政史体)<=1 and OCCURS('E',政史体)=0 and zy2=='34' and 科目合计=7

&&排除法统招生把不符合条件的考生作出标记40
repl all tzs with ''
*repl  tzs with '40' for zy3=='31' and ((OCCURS('E',六科)<>0 or OCCURS('D',六科)>2) or (OCCURS('C',六科)=4 and OCCURS('D',六科)=2)  or (OCCURS('C',六科)=3 and OCCURS('D',六科)=2) or (OCCURS('C',六科)=4 and OCCURS('D',六科)=1) or (OCCURS('C',六科)=5 and OCCURS('D',六科)=1) or  (OCCURS('C',六科)>=5 and OCCURS('D',六科)=0))
repl  tzs with '40' for zy3=='31' and ((OCCURS('E',六科)<>0 or OCCURS('D',六科)>2) or (OCCURS('C',六科)=3 and OCCURS('D',六科)=2) or (OCCURS('C',六科)=4 and OCCURS('D',六科)=2) or (OCCURS('C',六科)=4 and OCCURS('D',六科)=1) or  (OCCURS('C',六科)>=5 and OCCURS('D',六科)<=1))

&&剩余的就是符合等级要求的用31标记
repl tzs with '31' for zy3=='31' and tzs<>'40'
repl tzs with '32' for e<=1 and zy3=='32'
repl tzs with '33' for e<=1 and zy3=='33'
repl tzs with '34' for e<=1 and zy3=='34'
2019-06-20 21:21
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 26楼 sdta
请勿见笑,没系统学习过计算机,就是早年接触过foxbase,比较喜欢数据库,但基础比较薄弱,平时用的命令也比较简单,向你等级排序中的第一次见。这样想过用数学的办法比较最为准确,可是不会,终于找着你这个高手了,请多指教。
2019-06-20 21:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
不会就看帮助文件
完整代码也给你了,后边就看你的了

坚守VFP最后的阵地
2019-06-20 21:55
chychychy
Rank: 2
等 级:论坛游民
帖 子:287
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 29楼 sdta
还是想麻烦你,我想有这个目的的一段程序,第一将各种组合的等级提取出来,第二将提取出来等级排序后写入记录,方便查看和比较。谢谢
对你来讲不难,对我来讲真的困扰好长时间了,请指教。

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

2019-06-20 21:58
快速回复:求助按科目成绩等级录取学生
数据加载中...
 
   



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

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