以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教学生成绩统计中的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170237)

--  作者:xusuyang
--  发布时间: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


       谢谢


--  作者:有点蓝
--  发布时间: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