标题:我简单的做了一个分班系统,每次运行都提示程序错误,“已到文件尾”,怎么 ...
只看楼主
lifeng123
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-6-9
得分:0 
5楼的朋友,我试着还是不行

2012-05-29 09:38
lifeng123
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-6-9
得分:0 
我的想法是首先计算出满足的学制和专业人数赋值给a,再定义一个变量pic让它等于a%50,若小于等于50人分一个班,大于50人再进行下面分班,思路有就是代码不太对,请大家帮忙看看!!!
STORE 0 to a
COUNT for xz=ALLTRIM() and zymc=ALLTRIM() to a
pic=a%50         
IF pic<=1
replace bj with ALLTRIM()+"班"
ELSE   pic>1
do while .T.
   for n=1 to pic
      replace bj with ALLTRIM()+alltrim()+"年"+ALLTRIM(STR(n))+"班"
      SKIP
      if eof()
        return
      endif
   ENDFOR
    for m=pic to 1 step -1
      replace bj with ALLTRIM()+alltrim()+"年"+ALLTRIM(STR(m))+"班"
      SKIP
      if eof()
        return
      endif
   ENDFOR
ENDDO
ENDIF

2012-05-29 10:06
sxy166
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:68
专家分:127
注 册:2012-3-28
得分:0 
我记得count for 命令后指针会到文件尾的


n=1
i=1
GO top
SCAN FOR NOT EOF()
    IF i<=50
        IF xz=ALLTRIM() and zymc=ALLTRIM()
            replace bj with ALLTRIM()+alltrim()+"年"+ALLTRIM(STR(n))+"班"
            i=i+1
        ENDIF
    ELSE
        n=n+1
        i=1
    endi
ends

[ 本帖最后由 sxy166 于 2012-5-29 15:31 编辑 ]
2012-05-29 15:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
没有测试表,一切都是无用功。

坚守VFP最后的阵地
2012-05-29 15:34
lifeng123
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-6-9
得分:0 
13楼的朋友有点问题我上传一个附件,大家看一下

2012-05-29 16:03
lifeng123
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-6-9
得分:0 
生成的班级第五十个是空的,每个班都一样

2012-05-29 16:04
lifeng123
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-6-9
得分:0 
我做的数据库,请大家帮忙改正

[ 本帖最后由 lifeng123 于 2012-6-1 09:58 编辑 ]

2012-05-29 16:15
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 17楼 lifeng123
表与表之间都有什么关系,各个表都是什么意思,分班原则是什么

坚守VFP最后的阵地
2012-05-29 16:30
sxy166
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:68
专家分:127
注 册:2012-3-28
得分:0 
n=1
i=0
GO top
SCAN FOR NOT EOF()
    IF xz=ALLTRIM() and zymc=ALLTRIM()
        replace bj with ALLTRIM()+alltrim()+"年"+ALLTRIM(STR(n))+"班"
          i=i+1
    ENDIF
   
    IF i=50
        n=n+1
        i=0
    endi
ends
2012-05-29 16:33
lifeng123
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-6-9
得分:0 
能计算出满足的学制和专业人数,正如13楼的朋友所说count for指针会到文件尾,这时候如何给它赋值?
set filter to xz=alltrim() and zymc=ALLTRIM()
locate for xz=alltrim() and zymc=ALLTRIM()
STORE 0 to a
COUNT for xz=ALLTRIM() and zymc=ALLTRIM() to a
a=a%50
IF a<=1
   IF xz=ALLTRIM() and zymc=ALLTRIM()
      replace bj with ALLTRIM()+"班"
   endif
ELSE   a>1
   IF xz=ALLTRIM() and zymc=ALLTRIM()
    do while .T.
        for n=1 to a
          replace bj with ALLTRIM()+alltrim()+"年"+ALLTRIM(STR(n))+"班"
          SKIP
          if eof()
          return
          endif
       ENDFOR
      for m=a to 1 step -1
          replace bj with ALLTRIM()+alltrim()+"年"+ALLTRIM(STR(m))+"班"
          SKIP
         if eof()
         return
        endif
    ENDFOR
  ENDDO
  ENDIF
ENDIF

2012-05-29 16:52



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




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

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