| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2711 人关注过本帖
标题:如何作出成绩分析,自动每科名次入库?这个是算出来一科的,有更简单的方法 ...
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
程序代码:
Close DataBases All
Local abj[4],akm[3],atj[8],x[4]
* 班级
abj[1]=1701
abj[2]=1702
abj[3]=1703
abj[4]=1704
* 科目
akm[1]="Ywnjmc"
akm[2]="Sxnjmc"
akm[3]="Yynjmc"
* 条件
atj[1]="For bjs=abj[j] And &akm[i]> 0 And &akm[i]<=10"
atj[2]="For bjs=abj[j] And &akm[i]>10 And &akm[i]<=50"
atj[3]="For bjs=abj[j] And &akm[i]>50 And &akm[i]<=100"
atj[4]="For bjs=abj[j] And &akm[i]>100 And &akm[i]<=200"
atj[5]="For bjs=abj[j] And &akm[i]>200 And &akm[i]<=600"
atj[6]="For bjs=abj[j] And &akm[i]>600 And &akm[i]<=1000"
atj[7]="For bjs=abj[j] And &akm[i]>1000 And &akm[i]<=1600"
atj[8]="For bjs=abj[j] And &akm[i]>1600 And &akm[i]<=2400"

Create Cursor jfb (Km C(10),B1701 N(6),B1702 N(6),B1703 N(6),B1704 N(6)) && 将积分表的结构做了调整
Use g1 In 0
Select g1
For i=1 To Alen(akm,1)
    For i1=1 To Alen(atj,1)
        For j=1 To Alen(abj,1)
            Count &atj[i1]  To x[j]
        EndFor
        Insert Into jfb Values (left(akm[i],2)+str(i1,1),x[1],x[2],x[3],x[4])
        X=0
    EndFor
EndFor
Select jfb
browse

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

坚守VFP最后的阵地
2017-10-21 22:54
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
总的来说两个数据表的结构设计的都不合理;表是用来存贮数据的地方,不是记事本,无关内容不要保存在数据表中。一个表上百个字段,查看数据方便吗?
G1.DBF让我设计结构的话应该是:
BJH
学生号
XM
KM
ZF
BJMC
NJMC

而不是你现在的这种情况。表结构的设计是真功夫,不是随便放几个字段那么简单。

坚守VFP最后的阵地
2017-10-22 08:34
分号
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2006-12-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


我报表结果想这样出。
2017-10-22 08:51
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
问题要一个一个解决,要说清楚每个字段的意思,别人才能帮助你。每贴解决一个问题。
论坛只能帮你解决技术问题,不可能帮你解决所有工作问题。基础知识还是要靠自己掌握的。

[此贴子已经被作者于2017-10-22 09:02编辑过]


坚守VFP最后的阵地
2017-10-22 09:00
分号
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2006-12-4
收藏
得分:0 
能变成竖列显示吗?还是入库到JF库。
2017-10-22 09:09
分号
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2006-12-4
收藏
得分:0 
因为我班级多。有40多个班。这个只是一部分。
2017-10-22 09:18
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
用变量替换科目
程序代码:
Clear 
Close Databases all
*!* 数组变量设置
Local akm[3],X[8]
* 科目
akm[1]="Yw" && 语文
akm[2]="Sx" && 数学
akm[3]="Yy" && 英语
* 保存计数结果的变量
X=0
Use g1 In 0
Use jf In 0
Select jf
* 从第5个字段开始清空JF表中数值型数据的值
For i=5 to Fcount()
    Blank fields (Field(i)) for Type("Evaluate(Field(i))")=="N"
EndFor 

SCAN for !Empty(bjs)
    Select g1
    For i=1 to Alen(akm,1)
        ckm=akm[i]+"njmc"
        count for bjs=jf.bjs .and. &ckm>0 and &ckm<=10 to x[1]
        count for bjs=jf.bjs .and. &ckm>10 and &ckm<=50 to x[2]
        count for bjs=jf.bjs .and. &ckm>50 and &ckm<=100 to x[3]
        count for bjs=jf.bjs .and. &ckm>100 and &ckm<=200 to x[4]
        count for bjs=jf.bjs .and. &ckm>200 and &ckm<=600 to x[5]
        count for bjs=jf.bjs .and. &ckm>600 and &ckm<=1000 to x[6]
        count for bjs=jf.bjs .and. &ckm>1000 and &ckm<=1600 to x[7]
        count for bjs=jf.bjs .and. &ckm>1600 and &ckm<=2400 to x[8]
        * 保存计数结果
        FOR ii=1 to 8
            Replace (akm[i]+Str(ii,1)) with x[ii] in jf
        EndFor
        X=0
    EndFor 
EndScan
browse

坚守VFP最后的阵地
2017-10-23 12:25
分号
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2006-12-4
收藏
得分:0 
Replace (akm[i]+Str(ii,1)) with x[ii] in jf  如果超过9,到10后,就无法替换数据。是不是因为只能到9?
2023-03-12 22:47
快速回复:如何作出成绩分析,自动每科名次入库?这个是算出来一科的,有更简单的 ...
数据加载中...
 
   



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

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