Foxtable(狐表)用户栏目专家坐堂 → 请教学生成绩统计中的代码


  共有2481人关注过本帖树形打印复制链接

主题:请教学生成绩统计中的代码

帅哥哟,离线,有人找我吗?
xusuyang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:1120 威望:0 精华:0 注册:2017/5/3 18:40:00
请教学生成绩统计中的代码  发帖心情 Post By:2021/7/17 21:52:00 [只看该作者]

 

班级

姓名

语文

数学

英语

语数英

物理

化学

生物

物化生

语数英物化生

分数

级名

班名

分数

级名

班名

分数

级名

班名

小计

级名

班名

分数

级名

班名

分数

级名

班名

分数

级名

班名

小计

级名

班名

总分数

级名

班名

1

150

9

3

145

9

3

148

9

3

443

9

3

89

9

3

100

9

3

99

9

3

288

9

3

731

9

3

1

146

8

2

138

8

2

128

8

2

412

8

2

90

8

2

98

8

2

98.5

8

2

286.5

8

2

698.5

8

2

2

145

5

2

125

5

2

135.5

5

2

405.5

5

2

95

5

2

99.5

5

2

90

5

2

284.5

5

2

690

5

2

2

140

4

1

119.5

4

1

132

4

1

391.5

4

1

89

4

1

78

4

1

98

4

1

265

4

1

656.5

4

1

3

138

6

4

128

6

4

119

6

4

385

6

4

79

6

4

88

6

4

98

6

4

265

6

4

650

6

4

3

135

7

3

132

7

3

129

7

3

396

7

3

99.5

7

3

82

7

3

90

7

3

271.5

7

3

667.5

7

3

3

130

3

2

108

3

2

148

3

2

386

3

2

100

3

2

100

3

2

99

3

2

299

3

2

685

3

2

3

125

2

1

 

2

1

 

2

1

125

2

1

 

2

1

 

2

1

 

2

1

0

2

1

125

2

1

1

126

1

1

 

1

1

 

1

1

126

1

1

 

1

1

 

1

1

 

1

1

0

1

1

126

1

1

老师:您好!

上表是“AA学校”一年级的一次考试成绩。请老师修改一下代码。A、如表所示:1、共计9个同学3个班,如何用代码来实现每个同学各科的班级排名第一名为“1 、班级排名第二名为“2”? 如表所示的语文成绩,一班的“宗”同学是年级排名第一名,如何在“级名”列显示为“1”? 班级排名第一名,如何在“班名”列显示为“1”? 而一班的“需”同学是年级排名第二名,如何在“级名”列显示为“2”? 班级排名第二名,如何在“班名”列显示为“2”? 三班的“王”同学是年级排名第9名,如何在“级名”列显示为“9”? 班级排名第四名,如何在“班名”列显示为“4”?

For Each dr As DataRow In DataTables("学生成绩统计表").DataRows

    dr("语数英_小计")=dr("语文_分数")+dr("数学_分数")+dr("英语_分数")

    dr("物化生_小计")=dr("物理_分数")+dr("化学_分数")+dr("生物_分数")

    dr("语数英物化生_总分数")=dr("语文_分数")+dr("数学_分数")+dr("英语_分数")+dr("物理_分数")+dr("化学_分数")+dr("生物_分数")

Next

Dim drs As List(of DataRow) = DataTables("学生成绩统计表").Select("班级 is not null","数学_分数")

For i As Integer = 0 To drs.Count - 1

    drs(i)("语文_级名") = i+ 1

    drs(i)("数学_级名") = i+ 1

    drs(i)("英语_级名") = i + 1

    drs(i)("语数英_级名") = i+ 1

    drs(i)("物理_级名") = i + 1

    drs(i)("化学_级名") = i + 1

    drs(i)("生物_级名") = i+ 1

    drs(i)("物化生_级名") = i+ 1

    drs(i)("语数英物化生_级名") = i+ 1

Next

Dim lst As List(of String ) = DataTables("学生成绩统计表").GetValues("班级","班级 is not null")

For Each s As String In lst

    drs = DataTables("学生成绩统计表").Select("班级='" & s & "'","语文_分数")

    For i As Integer = 0 To drs.Count - 1

        drs(i)("语文_班名") = i + 1

        drs(i)("数学_班名") = i + 1

        drs(i)("英语_班名") = i + 1

        drs(i)("语数英_班名") = i+ 1

        drs(i)("物理_班名") = i + 1

        drs(i)("化学_班名") = i + 1

        drs(i)("生物_班名") = i+ 1

        drs(i)("物化生_班名") = i+ 1

        drs(i)("语数英物化生_班名") = i+ 1

    Next

Next


       谢谢


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106809 积分:543246 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/18 20:27:00 [只看该作者]

每个科目都单独计算,比如

For Each s As String In lst

    drs = DataTables("学生成绩统计表").Select("班级='" & s & "'","语文_分数")

    For i As Integer = 0 To drs.Count - 1

        drs(i)("语文_班名") = i + 1

    Next

Next

For Each s As String In lst

    drs = DataTables("学生成绩统计表").Select("班级='" & s & "'","数学_分数")

    For i As Integer = 0 To drs.Count - 1

        drs(i)("数学_班名") = i + 1

    Next

Next




 回到顶部