我做学校办公管理的项目过程中,需要学生成绩排名。
学生的成绩排名有个特点,就是相同分数,名次相同,但后面的排名要按前面的人数顺次排下去。如有两个第三名,那么接下来就是第五名了。
下面是自己做的测试代码:
public void pxout(){
//在hashmap中放学生成绩,用hashmap来排序
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 80);
map.put("b", 85);
map.put("c", 90);
map.put("d", 95);
map.put("e", 85);
map.put("f", 90);
map.put("g", 90);
map.put("h", 95);
List<Map.Entry<String, Integer>> infoIds =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
System.out.println("排序前");
//排序前
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
//排序方法
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return (o2.getValue() - o1.getValue());
}
});
System.out.println("排序后");
//排序后
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
//计算学生名次
HashMap hashmap = new HashMap();
int currmc=0;
int currfz=0;
int isChange = 1;
for (int i = 0; i < infoIds.size(); i++) {
if(i>0)
{
currfz = infoIds.get(i-1).getValue();
if(infoIds.get(i).getValue()== currfz)
isChange= 0;
}
if(isChange==1)
{
hashmap.put(infoIds.get(i).getKey(), String.valueOf(i+1));
currmc = i+1;
}
else
{
hashmap.put(infoIds.get(i).getKey(), String.valueOf(currmc));
isChange=1;
}
}
System.out.println("排名次后");
Iterator iter = hashmap.entrySet().iterator();
while (iter.hasNext()) {
Entry entry = (Entry) iter.next();
//Object value= entry.getValue();
//Object key =entry.getKey();
System.out.println(entry.getKey()+ "="+entry.getValue());
}
特简单的,呵呵。
分享到:
相关推荐
学生成绩排名系统是教育信息化领域的一个重要组成部分,它能够帮助教师、学生和家长了解学生的学习状况,并通过数据驱动的方式促进教学效率的提升。在这个系统中,主要涉及到的技术包括C#编程语言和SQLServer数据库...
学生成绩排名管理系统-C++-课程设计报告书样本 本课程设计报告的主要内容是设计一个学生成绩排名管理系统,该系统使用 C++ 语言编写,旨在帮助学生掌握 C++ 语言的编程知识和编程技巧。该系统的主要功能包括成绩...
学生成绩排名系统课程设计报告书 本报告旨在设计一个学生成绩排名系统,旨在提高学生的编程能力和解决实际问题的能力。本系统的主要功能包括学生信息录入、浏览、查询、排序和删除等。其设计过程将遵循结构化程序...
汇编 学生成绩排名,汇编学生成绩排名,能将各个学生的学号,成绩,名次输出
在这个简单的学生成绩排名程序中,我们主要涉及的是数据处理和排序算法,这对于初学者来说是一个很好的学习项目。首先,我们需要理解如何存储和组织学生的信息,包括他们的班级、学号和成绩。这通常可以通过创建一个...
本次课程设计是一项C++语言的实践项目,旨在通过设计一个学生成绩排名系统,让学生在实践中巩固并提升C++编程技能。设计过程中,学生需要结合理论知识解决实际问题,培养分析问题、设计解决方案以及编写高效程序的...
C语言-课程设计-学生成绩排名系统 还有一个数组版的,需要可以去看看,需要什么的话留言,我都会逐一上传!
学生成绩排名管理系统是一款基于C++编程语言的课程设计项目,旨在通过实践加深学生对C++语言的理解,提升其分析问题、解决问题以及编程能力。在这个系统中,学生将学习到如何利用C++来构建一个实用的软件应用,涵盖...
【JavaEE课程设计学生成绩排名系统】是一个典型的Java Web应用程序,旨在训练学生将JavaEE技术应用于实际项目中。这个系统允许用户以管理员或学生身份登录,并实现一系列功能,包括成绩管理与排名。 1. **设计目标*...
### 数据结构(Java语言描述)案例13:学生成绩排名 #### 1. 案例背景 在教育领域,特别是在学校管理中,经常需要对学生进行成绩排名。这一过程通常涉及大量的数据处理,比如根据学生的多门课程成绩来确定其在班级...
"用Excel电子表格为学生成绩排名次优质资料" 本文档主要介绍了如何使用 Excel 电子表格来排名次优质资料,特别是针对学生成绩的排名次优质资料。通过使用 Excel 的 RANK 函数,可以快速计算学生成绩的排名次。同时...
软件工程专业第一学期学生成绩排名.xls
21计网1-学生成绩排名[有效].xls
计算机类学生成绩排名[有效] (2).xls
c语言 成绩排名 c++ 系统 #include #include struct student { char name[20]; long int num; float score[4]; } ;
很全面的,综合实验,适合刚刚学习的人使用