解读JAVA处理排名问题-关于学生成绩排名及Collections中的sort方法与Comparable的使用

简介: 写一个项目真是存在很多的bug,修复的时间往往比开发所需要的时间更长,今天又出了一个bug,在这里记录一下,主要是针对系统中学生的成绩排名。

关于学生总成绩排名问题及Collections使用

写一个项目真是存在很多的bug,修复的时间往往比开发所需要的时间更长,今天又出了一个bug,在这里记录一下,主要是针对系统中学生的成绩排名。


出现的问题是当管理员对成绩进行删除操作的时候排名不会变化

因为成绩是以Excel表格的形式进行导入的,在导入的同时对里面的成绩进行汇总和排序,在排序上分别对学生成绩的班级进行排名和全校名次进行排名,排名的关键点就是考试的批次,这么说可能有点笼统,下面举个栗子:

20200615085204819.jpg

成绩由管理员和教师进行上传,上传的同时教师选择考试批次:第一次模拟考试 ,选择班主任,选择Excel文件,然后点击导入。对于导入文件功能等过几天我在发布上来。

20200615085339935.png

后台的代码如下:

20200615085402308.png

在这里可以看到考试批次的eid编号,所以在排序的时候sql语句加一个where值为eid,根据考试批次进行班级和全校的排名。


区域排名代码如下:

Control
//区域排名
    List<Score> listAllR = scoreService.findRegionalranking(eid);//获取学生的班级排名
    if(listAllR==null||listAllR.equals("")){
        String failurl=request.getContextPath()+"/ScoreServlet?action=adm_findAllScore";
        String msg = "<script>window.alert('该考试批次已不存在相关学生成绩!');window.location.href='"+failurl+"';</script>";
        request.setAttribute("msg", msg);
        request.getRequestDispatcher("msg.jsp").forward(request, response);    
    }else{
        Collections.sort(listAllR);//将数据库查询的数组进行排序
        for (int i = 0; i <listAllR.size(); i++) {
            listAllR.get(i).setRegionalranking(i+1+"");
            scoreService.updateRegionalranking(listAllR.get(i));
        }
    }

Collections 中有一个方法叫做sort可以对集合中的内容进行排序
static void sort(List list): 对集合中的内容进行排序


要使用这个sort方法进行排序的集合,里面的泛型必须实现Comparable接口


实现这个接口的对象才具备排序的功能, 这种排序自然排序。


口诀:

升序就是我减他,降续就是他减我


想要在哪个对象中使用就要继承Comparable接口

20200615085636914.png

与此同时我们按照降序排列

20200615085654892.png

然后调用scoreService.updateRegionalranking(listAllR.get(i));这个方法,将请求送到Dao,最后修改排名。


效果如下

未删除成绩前界面如下:

2020061508582386.png

点击删除乔峰,木婉清就变成了第一名,效果如下:

20200615085840173.png

总之,还是很烦返修程序的,但是程序都是在不断的探索中逐步强化,自身的能力也是一样,这是我写的一个成绩与考试管理系统,已经有学校在使用了,有想要源码的联系我QQ:2692369712

相关文章
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
143 0
|
存储 Java 关系型数据库
学生成绩管理系统【GUI/Swing+MySQL】(Java课设)
学生成绩管理系统【GUI/Swing+MySQL】(Java课设)
234 0
|
9月前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
198 4
|
12月前
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
254 1
|
7月前
|
算法 搜索推荐 Java
Java中的Sort
Java中的排序机制主要通过`Arrays.sort()`和`List.sort()`实现。`Arrays.sort()`支持多种排序算法,包括归并排序(`legacyMergeSort`)和TimSort。`legacyMergeSort`采用递归分割数组并合并的方式,适用于小规模数据的插入排序优化。TimSort则结合了归并排序和插入排序的优点,通过分段处理和合并优化排序性能,特别适合处理部分有序的数据。对于数值排序,Java还提供了`DualPivotQuicksort`算法。而`List.sort()`则是将列表转化为数组进行排序后再写回列表。
154 2
|
存储 Java 索引
[Java]随机排名
需求:某公司开发部5名开发人员需按随机顺序进行项目进展汇报。实现步骤包括: 1. 使用动态初始化数组录入5名员工的工号。 2. 遍历数组,每次随机选择一个索引并与当前索引的数据交换,实现随机排序。 3. 输出随机排序后的工号序列。
126 1
|
9月前
|
Java 程序员
Java 排序神器:Comparable 和 Comparator 该怎么选?
嗨,大家好,我是小米!今天和大家聊一聊Java社招面试中常考的经典问题——Comparable和Comparator的区别。Comparable定义对象的自然排序,适用于单一固定的排序规则;Comparator则是策略接口,用于定义自定义排序规则,适用于多样化或多变的排序需求。掌握这两者的区别是理解Java排序机制的基础,也是面试中的加分题。结合实际项目场景深入探讨它们的应用,能更好地打动面试官。如果你觉得有帮助,欢迎点赞、收藏、分享,期待你的一键三连!我们下期见~ 我是小米,一个喜欢分享技术的程序员,关注我的微信公众号“软件求生”,获取更多技术干货!
115 20
|
11月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
232 19
|
12月前
|
Java 关系型数据库 MySQL
基于Java的学生成绩管理系统/学生信息管理系统
基于Java的学生成绩管理系统/学生信息管理系统
256 2
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)

热门文章

最新文章