你学生和学生的总成绩,用Dictionary<学号,成绩>,应该是Dictionary
new 一个变量,Dictionary
然后循环遍历所有学生,每次循环中又循环该生的所有成绩,并totalScoreDic[学号]+=该生成绩,循环完就得到每个学生总成绩了。
至于前三名只要对totalScoreDic遍历3次就好了,每次取出最大的那个,取出后将该个从totalScoreDic删掉。
1.不知道你文件格式,如果是cvs文件,直接用ado.net 读成datatable,剩下的东西估计你自己一会做
2.如果文件不是cvs,用stream流,readline一行一行读,同时把最后组每3位一截,截成5科的单独成绩
3.算法部分,如果要求只打印出每班前三名,则不必做全排序。按班级Dictionary做堆排序就ok了
堆排资料:http://baike.baidu.com/view/157305.htm
你把所有人成绩放到数组里,然后直接用Array.Sort排序(默认是升序排序),然后从数组最后一个元素起逆向输出三个就行了,那就是前三名。(当然象这种读取文件的话,Array可能不太适合,可以考虑用Dictionary或者两个List,这两个排序资料也不少了,自己查查看)
从txt文件中读出数据时,就应该得到他们的总成绩,然后再保存到Array中,然后用他内部了的排序方法得到最后 的结果哦!
select top 3 * from (你的统计查询) ;
可以放在数组里,然后通过冒泡排序进行排序,然后取数组下标的前三位。。