前言

对于计算机专业的学生来讲,一定对于学生成绩管理系统课程设计十分印象深刻。设计、上机、编码、写报告、答辩等一系列流程,虽然很简单,但也可以综合运用我们所学的一些知识了。

今天就来复习以下这个课题,用 Java SE 来实现该课题,也算是补上当初上课的时候没有好好写的遗憾吧。

虽然很简单,但是对于刚涉足编程学习的人来讲,还是有一定难度的,既要考虑界面打印,也要考虑条件判断、循环语句、输入输出控制等等技巧,所以在这里简单地实现一下,方便给初学的小伙伴们一个参考(对于我的界面比较丑的问题,就不要过于纠结了,下去可以自己调整😂,我们只关注功能实现🤣)。

对于学生成绩管理系统,主要可以分为如下几个功能:

  1. 录入学生成绩
  2. 统计学生成绩
  3. 查找学生成绩
  4. 修改学生成绩
  5. 删除学生成绩
  6. 按平均分排序
  7. 显示所有成绩
  8. 退出管理系统

Java 版学生成绩管理系统,附源码! - 图1

进入系统之后,我们应该有系统菜单,然后根据提示选择我们所要进行的操作。

Java 版学生成绩管理系统,附源码! - 图2

  • 录入学生成绩

该功能是每次录入学生的成绩信息,或者在当前数据的基础上添加录入新的学生成绩信息;

Java 版学生成绩管理系统,附源码! - 图3

  • 统计学生成绩

主要是对学生的成绩进行统计,然后输出平均分,并打印出对应信息;

Java 版学生成绩管理系统,附源码! - 图4

  • 查找学生成绩

根据输入的学号来查找对应学生的相关成绩信息;

Java 版学生成绩管理系统,附源码! - 图5

  • 修改学生成绩

根据输入的学号来对对应学生的成绩进行修改;

Java 版学生成绩管理系统,附源码! - 图6

  • 删除学生成绩

根据输入的学生学号,删除对应学生的成绩信息;

Java 版学生成绩管理系统,附源码! - 图7

  • 按平均分排序

按照平均分降序排序;

Java 版学生成绩管理系统,附源码! - 图8

  • 显示所有成绩

便利所有学生成绩,然后打印出来;

Java 版学生成绩管理系统,附源码! - 图9

  • 退出管理系统

退出菜单;

Java 版学生成绩管理系统,附源码! - 图10

功能设计与实现

主界面

主要是打印出来系统功能的选择菜单,然后根据我们的输入进入不同的子功能模块;

  1. package com.cunyu;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. /**
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @className : Manager
  8. * @date : 2021/4/4 23:54
  9. * @description : 管理系统
  10. */
  11. public class Manager {
  12. public static Scanner scanner = new Scanner(System.in);
  13. public static ArrayList<Student> students = new ArrayList<>();
  14. public static void main(String[] args) {
  15. while (true) {
  16. System.out.println("----------欢迎使用学生成绩管理系统-----------");
  17. System.out.println("-------------【1】录入学生成绩-------------");
  18. System.out.println("-------------【2】显示统计数据-------------");
  19. System.out.println("-------------【3】查找学生成绩-------------");
  20. System.out.println("-------------【4】修改学生成绩-------------");
  21. System.out.println("-------------【5】删除学生成绩-------------");
  22. System.out.println("-------------【6】按平均分排列-------------");
  23. System.out.println("-------------【7】显示所有成绩-------------");
  24. System.out.println("-------------【0】退出管理系统-------------");
  25. Student student = new Student();
  26. System.out.println("输入你的选择【0-7】");
  27. String choice = scanner.next();
  28. switch (choice) {
  29. case "1":
  30. // 录入成绩
  31. student.addScore(students);
  32. break;
  33. case "2":
  34. // 统计信息
  35. student.showAvg(students);
  36. break;
  37. case "3":
  38. // 查找成绩
  39. student.lookupStudent(students);
  40. break;
  41. case "4":
  42. // 修改成绩
  43. student.modifyStudent(students);
  44. break;
  45. case "5":
  46. // 删除成绩
  47. student.deleteStudent(students);
  48. break;
  49. case "6":
  50. // 按照平均分排序
  51. student.sortStudent(students);
  52. break;
  53. case "7":
  54. // 显示所有成绩
  55. student.showAllStudent(students);
  56. break;
  57. case "0":
  58. System.exit(0);
  59. default:
  60. break;
  61. }
  62. }
  63. }
  64. }

主类设计

系统主要是针对学生成绩信息管理的,所以我们设计一个学生类,包括一系列属性(也就是简单的个人信息和各科成绩);

  1. package com.cunyu;
  2. /**
  3. * @author : cunyu
  4. * @version : 1.0
  5. * @className : Student
  6. * @date : 2021/4/4 23:31
  7. * @description : 学生类
  8. */
  9. public class Student {
  10. // 班级
  11. private String grade;
  12. // 学号
  13. private long id;
  14. // 姓名
  15. private String name;
  16. // 高数
  17. private float math;
  18. // 英语
  19. private float english;
  20. // 体育
  21. private float sport;
  22. // Java
  23. private float java;
  24. // C++
  25. private float cPlusPlus;
  26. // 政治
  27. private float polity;
  28. // 算法
  29. private float algorithm;
  30. // 平均分
  31. private double average;
  32. // 各种 setter/getter 以及构造函数
  33. }

录入学生成绩

首先录入学号,判断是否可用,不可用则重新输入,可用则输入其他信息;

然后将信息赋值到学生对象,最后将该学生对象加入集合就可以了。

  1. /**
  2. * @param students 学生对象列表
  3. * @return
  4. * @description 录入学生信息
  5. * @date 2021/4/5 9:14
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void addScore(ArrayList<Student> students) {
  10. System.out.println("----------录入学生数据----------");
  11. System.out.println("请依次输入如下数据:");
  12. long id;
  13. while (true) {
  14. System.out.println("学号");
  15. id = scanner.nextInt();
  16. if (isValid(students, id)) {
  17. System.out.println("学号重复,请重新输入");
  18. } else {
  19. break;
  20. }
  21. }
  22. System.out.println("年级");
  23. String grade = scanner.next();
  24. System.out.println("姓名");
  25. String name = scanner.next();
  26. System.out.println("数学");
  27. float math = scanner.nextFloat();
  28. System.out.println("英语");
  29. float english = scanner.nextFloat();
  30. System.out.println("体育");
  31. float sport = scanner.nextFloat();
  32. System.out.println("Java");
  33. float java = scanner.nextFloat();
  34. System.out.println("C++");
  35. float cPlusPlus = scanner.nextFloat();
  36. System.out.println("政治");
  37. float polity = scanner.nextFloat();
  38. System.out.println("算法");
  39. float algorithm = scanner.nextFloat();
  40. // 创建对象,并设置属性,然后将其加入学生对象集合
  41. Student student = new Student();
  42. student.setId(id);
  43. student.setGrade(grade);
  44. student.setName(name);
  45. student.setMath(math);
  46. student.setAlgorithm(algorithm);
  47. student.setEnglish(english);
  48. student.setcPlusPlus(cPlusPlus);
  49. student.setJava(java);
  50. student.setSport(sport);
  51. student.setPolity(polity);
  52. // 获取平均分
  53. double avg = getAvg(student);
  54. student.setAverage(avg);
  55. // 添加到集合
  56. students.add(student);
  57. // 提示信息
  58. System.out.println("添加成功");
  59. }

统计学生成绩

主要实现对于各学生平均成绩的统计,然后打印出信息;

  1. /**
  2. * @param students 学生对象集合
  3. * @return
  4. * @description 显示简单统计数据
  5. * @date 2021/4/5 10:08
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void showAvg(ArrayList<Student> students) {
  10. System.out.println("----------输出学生统计数据----------");
  11. if (students.size() == 0) {
  12. System.out.println("当前无数据,请先添加数据!");
  13. } else {
  14. System.out.println("班级\t\t学号\t\t姓名\t\t平均分");
  15. System.out.println("---------------------------------");
  16. for (Student student : students) {
  17. System.out.format("%s\t\t%d\t\t%s\t\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getAvg(student));
  18. }
  19. }
  20. }

查找学生成绩

先判断是否有数据,有数据再进行后续操作。然后通过对输入的学号进行匹配,找到对应学号的学生成绩信息并打印;

  1. /**
  2. * @param students 学生对象集合
  3. * @return
  4. * @description 查找对应学号学生的成绩信息
  5. * @date 2021/4/5 12:59
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void lookupStudent(ArrayList<Student> students) {
  10. System.out.println("----------查找学生成绩----------");
  11. if (students.size() == 0) {
  12. System.out.println("当前无数据,请添加后重试");
  13. } else {
  14. System.out.println("请输入要查找学生的学号:");
  15. long id = scanner.nextLong();
  16. int flag = -1;
  17. Student student = new Student();
  18. // 查找对应学号,找到就退出
  19. for (int i = 0; i < students.size(); i++) {
  20. student = students.get(i);
  21. if (student.getId() == id) {
  22. flag = i;
  23. break;
  24. }
  25. }
  26. if (flag == -1) {
  27. System.out.println("未找到对应学号的学生,请确认后重新输入!");
  28. } else {
  29. System.out.println("对应学号的学生成绩如下:");
  30. System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分");
  31. System.out.format("%s\t%d\t\t%s\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student));
  32. System.out.println("查找信息成功!");
  33. }
  34. }
  35. }

修改学生成绩

先判断是否有数据,有数据再进行后续操作。然后通过对输入的学号进行匹配,找到对应学号的学生,然后对其成绩信息进行修改,但不修改个人其他信息;

  1. /**
  2. * @param students 学生对象集合
  3. * @return
  4. * @description 修改对应学号学生的信息
  5. * @date 2021/4/5 12:59
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void modifyStudent(ArrayList<Student> students) {
  10. System.out.println("----------修改学生成绩----------");
  11. if (students.isEmpty()) {
  12. System.out.println("当前无数据,请添加后重试");
  13. } else {
  14. System.out.println("请输入要修改学生的学号:");
  15. long id = scanner.nextLong();
  16. for (Student student : students) {
  17. if (id == student.getId()) {
  18. System.out.println("请重新输入该学生的成绩");
  19. System.out.println("数学");
  20. float math = scanner.nextFloat();
  21. System.out.println("英语");
  22. float english = scanner.nextFloat();
  23. System.out.println("体育");
  24. float sport = scanner.nextFloat();
  25. System.out.println("Java");
  26. float java = scanner.nextFloat();
  27. System.out.println("C++");
  28. float cPlusPlus = scanner.nextFloat();
  29. System.out.println("政治");
  30. float polity = scanner.nextFloat();
  31. System.out.println("算法");
  32. float algorithm = scanner.nextFloat();
  33. student.setMath(math);
  34. student.setAlgorithm(algorithm);
  35. student.setEnglish(english);
  36. student.setcPlusPlus(cPlusPlus);
  37. student.setJava(java);
  38. student.setSport(sport);
  39. student.setPolity(polity);
  40. // 获取平均分
  41. double avg = getAvg(student);
  42. student.setAverage(avg);
  43. System.out.println("修改成功!");
  44. } else {
  45. System.out.println("未找到对应学号的学生,请确认后重新输入!");
  46. }
  47. break;
  48. }
  49. }
  50. }

删除学生成绩

先判断是否有数据,有数据再进行后续操作。然后通过对输入的学号进行匹配,找到对应学号的学生,然后将其从集合中删除即可;

  1. /**
  2. * @param students 学生对象集合
  3. * @return
  4. * @description 删除学生成绩
  5. * @date 2021/4/5 14:28
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void deleteStudent(ArrayList<Student> students) {
  10. System.out.println("----------删除学生成绩----------");
  11. if (students.isEmpty()) {
  12. System.out.println("当前无数据,请添加后重试");
  13. } else {
  14. System.out.println("输入要删除学生成绩的学号");
  15. long id = scanner.nextLong();
  16. int index = -1;
  17. for (int i = 0; i < students.size(); i++) {
  18. Student student = students.get(i);
  19. if (student.getId() == id) {
  20. index = i;
  21. break;
  22. }
  23. }
  24. if (index == -1) {
  25. System.out.println("未找到对应学号学生信息,请确认后再删除!");
  26. } else {
  27. students.remove(index);
  28. System.out.println("----------删除成功----------");
  29. }
  30. }
  31. }

按平均分排序

先判断是否有数据,有数据再进行后续操作。然后对集合中的学生的平均成绩进行排序,然后依次从高到低打印出学生信息;

  1. /**
  2. * @param students 学生对象集合
  3. * @return
  4. * @description 按照平均分排序
  5. * @date 2021/4/5 14:29
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void sortStudent(ArrayList<Student> students) {
  10. if (students.isEmpty()) {
  11. System.out.println("当前无数据,请添加后重试");
  12. } else {
  13. for (int i = 0; i < students.size() - 1; i++) {
  14. if (students.get(i).getAvg(students.get(i)) < students.get(i + 1).getAvg(students.get(i + 1))) {
  15. Student tmp = students.get(i);
  16. students.set(i, students.get(i + 1));
  17. students.set(i + 1, tmp);
  18. }
  19. }
  20. System.out.println("排序后的学生成绩");
  21. System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分");
  22. for (Student student : students) {
  23. System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student));
  24. }
  25. }
  26. }

显示所有成绩

先判断是否有数据,有数据再进行后续操作。遍历学生对象集合,然后打印出各个学生的成绩信息。

  1. /**
  2. * @param students 学生对象集合
  3. * @return
  4. * @description 显示所有学生成绩
  5. * @date 2021/4/5 14:30
  6. * @author cunyu1943
  7. * @version 1.0
  8. */
  9. public void showAllStudent(ArrayList<Student> students) {
  10. if (students.isEmpty()) {
  11. System.out.println("当前无数据,请先添加数据");
  12. } else {
  13. System.out.println("----------所有学生成绩如下----------");
  14. System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分");
  15. for (Student student : students) {
  16. System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student));
  17. }
  18. }
  19. }

总程序

将上述所有模块整合之后,我们得到最终的程序;

  1. Manager.java
  1. package com.cunyu;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. /**
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @className : Manager
  8. * @date : 2021/4/4 23:54
  9. * @description : 管理系统
  10. */
  11. public class Manager {
  12. public static Scanner scanner = new Scanner(System.in);
  13. public static ArrayList<Student> students = new ArrayList<>();
  14. public static void main(String[] args) {
  15. while (true) {
  16. System.out.println("----------欢迎使用学生成绩管理系统-----------");
  17. System.out.println("-------------【1】录入学生成绩-------------");
  18. System.out.println("-------------【2】显示统计数据-------------");
  19. System.out.println("-------------【3】查找学生成绩-------------");
  20. System.out.println("-------------【4】修改学生成绩-------------");
  21. System.out.println("-------------【5】删除学生成绩-------------");
  22. System.out.println("-------------【6】按平均分排列-------------");
  23. System.out.println("-------------【7】显示所有成绩-------------");
  24. System.out.println("-------------【0】退出管理系统-------------");
  25. Student student = new Student();
  26. System.out.println("输入你的选择");
  27. String choice = scanner.next();
  28. switch (choice) {
  29. case "1":
  30. student.addScore(students);
  31. break;
  32. case "2":
  33. student.showAvg(students);
  34. break;
  35. case "3":
  36. student.lookupStudent(students);
  37. break;
  38. case "4":
  39. student.modifyStudent(students);
  40. break;
  41. case "5":
  42. student.deleteStudent(students);
  43. break;
  44. case "6":
  45. student.sortStudent(students);
  46. break;
  47. case "7":
  48. student.showAllStudent(students);
  49. break;
  50. case "0":
  51. System.exit(0);
  52. default:
  53. break;
  54. }
  55. }
  56. }
  57. }
  1. Student.java
  1. package com.cunyu;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4. /**
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @className : Student
  8. * @date : 2021/4/4 23:31
  9. * @description : 学生类
  10. */
  11. public class Student {
  12. public static Scanner scanner = new Scanner(System.in);
  13. // 班级
  14. private String grade;
  15. // 学号
  16. private long id;
  17. // 姓名
  18. private String name;
  19. // 高数
  20. private float math;
  21. // 英语
  22. private float english;
  23. // 体育
  24. private float sport;
  25. // Java
  26. private float java;
  27. // C++
  28. private float cPlusPlus;
  29. // 政治
  30. private float polity;
  31. // 算法
  32. private float algorithm;
  33. // 平均分
  34. private double average;
  35. public Student() {
  36. }
  37. public Student(String grade, long id, String name, float math, float english, float sport, float java, float cPlusPlus, float polity, float algorithm, double average) {
  38. this.grade = grade;
  39. this.id = id;
  40. this.name = name;
  41. this.math = math;
  42. this.english = english;
  43. this.sport = sport;
  44. this.java = java;
  45. this.cPlusPlus = cPlusPlus;
  46. this.polity = polity;
  47. this.algorithm = algorithm;
  48. this.average = average;
  49. }
  50. public String getGrade() {
  51. return grade;
  52. }
  53. public void setGrade(String grade) {
  54. this.grade = grade;
  55. }
  56. public long getId() {
  57. return id;
  58. }
  59. public void setId(long id) {
  60. this.id = id;
  61. }
  62. public String getName() {
  63. return name;
  64. }
  65. public void setName(String name) {
  66. this.name = name;
  67. }
  68. public float getMath() {
  69. return math;
  70. }
  71. public void setMath(float math) {
  72. this.math = math;
  73. }
  74. public float getEnglish() {
  75. return english;
  76. }
  77. public void setEnglish(float english) {
  78. this.english = english;
  79. }
  80. public float getSport() {
  81. return sport;
  82. }
  83. public void setSport(float sport) {
  84. this.sport = sport;
  85. }
  86. public float getJava() {
  87. return java;
  88. }
  89. public void setJava(float java) {
  90. this.java = java;
  91. }
  92. public float getcPlusPlus() {
  93. return cPlusPlus;
  94. }
  95. public void setcPlusPlus(float cPlusPlus) {
  96. this.cPlusPlus = cPlusPlus;
  97. }
  98. public float getPolity() {
  99. return polity;
  100. }
  101. public void setPolity(float polity) {
  102. this.polity = polity;
  103. }
  104. public float getAlgorithm() {
  105. return algorithm;
  106. }
  107. public void setAlgorithm(float algorithm) {
  108. this.algorithm = algorithm;
  109. }
  110. public double getAvg(Student student) {
  111. return (student.getAlgorithm() + student.getcPlusPlus() + student.getEnglish() + student.getSport() + student.getJava() + student.getPolity() + student.getMath()) / 7;
  112. }
  113. public void setAverage(double average) {
  114. this.average = average;
  115. }
  116. /**
  117. * @param students 学生对象列表
  118. * @return
  119. * @description 录入学生信息
  120. * @date 2021/4/5 9:14
  121. * @author cunyu1943
  122. * @version 1.0
  123. */
  124. public void addScore(ArrayList<Student> students) {
  125. System.out.println("----------录入学生数据----------");
  126. System.out.println("请依次输入如下数据:");
  127. long id;
  128. while (true) {
  129. System.out.println("学号");
  130. id = scanner.nextInt();
  131. if (isValid(students, id)) {
  132. System.out.println("学号重复,请重新输入");
  133. } else {
  134. break;
  135. }
  136. }
  137. System.out.println("年级");
  138. String grade = scanner.next();
  139. System.out.println("姓名");
  140. String name = scanner.next();
  141. System.out.println("数学");
  142. float math = scanner.nextFloat();
  143. System.out.println("英语");
  144. float english = scanner.nextFloat();
  145. System.out.println("体育");
  146. float sport = scanner.nextFloat();
  147. System.out.println("Java");
  148. float java = scanner.nextFloat();
  149. System.out.println("C++");
  150. float cPlusPlus = scanner.nextFloat();
  151. System.out.println("政治");
  152. float polity = scanner.nextFloat();
  153. System.out.println("算法");
  154. float algorithm = scanner.nextFloat();
  155. // 创建对象,并设置属性,然后将其加入学生对象集合
  156. Student student = new Student();
  157. student.setId(id);
  158. student.setGrade(grade);
  159. student.setName(name);
  160. student.setMath(math);
  161. student.setAlgorithm(algorithm);
  162. student.setEnglish(english);
  163. student.setcPlusPlus(cPlusPlus);
  164. student.setJava(java);
  165. student.setSport(sport);
  166. student.setPolity(polity);
  167. // 获取平均分
  168. double avg = getAvg(student);
  169. student.setAverage(avg);
  170. // 添加到集合
  171. students.add(student);
  172. // 提示信息
  173. System.out.println("添加成功");
  174. }
  175. /**
  176. * @param students 学生对象集合
  177. * @param id 学号
  178. * @return true,学号重复;false 学号可用
  179. * @description 判断学号是否可用
  180. * @date 2021/4/5 9:19
  181. * @author cunyu1943
  182. * @version 1.0
  183. */
  184. public boolean isValid(ArrayList<Student> students, long id) {
  185. for (Student student : students) {
  186. if (student.getId() == id) {
  187. return true;
  188. }
  189. }
  190. return false;
  191. }
  192. /**
  193. * @param students 学生对象集合
  194. * @return
  195. * @description 显示简单统计数据
  196. * @date 2021/4/5 10:08
  197. * @author cunyu1943
  198. * @version 1.0
  199. */
  200. public void showAvg(ArrayList<Student> students) {
  201. System.out.println("----------输出学生统计数据----------");
  202. if (students.size() == 0) {
  203. System.out.println("当前无数据,请先添加数据!");
  204. } else {
  205. System.out.println("班级\t\t学号\t\t姓名\t\t平均分");
  206. System.out.println("---------------------------------");
  207. for (Student student : students) {
  208. System.out.format("%s\t\t%d\t\t%s\t\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getAvg(student));
  209. }
  210. }
  211. }
  212. /**
  213. * @param students 学生对象集合
  214. * @return
  215. * @description 查找对应学号学生的成绩信息
  216. * @date 2021/4/5 12:59
  217. * @author cunyu1943
  218. * @version 1.0
  219. */
  220. public void lookupStudent(ArrayList<Student> students) {
  221. System.out.println("----------查找学生成绩----------");
  222. if (students.size() == 0) {
  223. System.out.println("当前无数据,请添加后重试");
  224. } else {
  225. System.out.println("请输入要查找学生的学号:");
  226. long id = scanner.nextLong();
  227. int flag = -1;
  228. Student student = new Student();
  229. // 查找对应学号,找到就退出
  230. for (int i = 0; i < students.size(); i++) {
  231. student = students.get(i);
  232. if (student.getId() == id) {
  233. flag = i;
  234. break;
  235. }
  236. }
  237. if (flag == -1) {
  238. System.out.println("未找到对应学号的学生,请确认后重新输入!");
  239. } else {
  240. System.out.println("对应学号的学生成绩如下:");
  241. System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分");
  242. System.out.format("%s\t%d\t\t%s\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student));
  243. System.out.println("查找信息成功!");
  244. }
  245. }
  246. }
  247. /**
  248. * @param students 学生对象集合
  249. * @return
  250. * @description 修改对应学号学生的信息
  251. * @date 2021/4/5 12:59
  252. * @author cunyu1943
  253. * @version 1.0
  254. */
  255. public void modifyStudent(ArrayList<Student> students) {
  256. System.out.println("----------修改学生成绩----------");
  257. if (students.isEmpty()) {
  258. System.out.println("当前无数据,请添加后重试");
  259. } else {
  260. System.out.println("请输入要修改学生的学号:");
  261. long id = scanner.nextLong();
  262. for (Student student : students) {
  263. if (id == student.getId()) {
  264. System.out.println("请重新输入该学生的成绩");
  265. System.out.println("数学");
  266. float math = scanner.nextFloat();
  267. System.out.println("英语");
  268. float english = scanner.nextFloat();
  269. System.out.println("体育");
  270. float sport = scanner.nextFloat();
  271. System.out.println("Java");
  272. float java = scanner.nextFloat();
  273. System.out.println("C++");
  274. float cPlusPlus = scanner.nextFloat();
  275. System.out.println("政治");
  276. float polity = scanner.nextFloat();
  277. System.out.println("算法");
  278. float algorithm = scanner.nextFloat();
  279. student.setMath(math);
  280. student.setAlgorithm(algorithm);
  281. student.setEnglish(english);
  282. student.setcPlusPlus(cPlusPlus);
  283. student.setJava(java);
  284. student.setSport(sport);
  285. student.setPolity(polity);
  286. // 获取平均分
  287. double avg = getAvg(student);
  288. student.setAverage(avg);
  289. System.out.println("修改成功!");
  290. } else {
  291. System.out.println("未找到对应学号的学生,请确认后重新输入!");
  292. }
  293. break;
  294. }
  295. }
  296. }
  297. /**
  298. * @param students 学生对象集合
  299. * @return
  300. * @description 删除学生成绩
  301. * @date 2021/4/5 14:28
  302. * @author cunyu1943
  303. * @version 1.0
  304. */
  305. public void deleteStudent(ArrayList<Student> students) {
  306. System.out.println("----------删除学生成绩----------");
  307. if (students.isEmpty()) {
  308. System.out.println("当前无数据,请添加后重试");
  309. } else {
  310. System.out.println("输入要删除学生成绩的学号");
  311. long id = scanner.nextLong();
  312. int index = -1;
  313. for (int i = 0; i < students.size(); i++) {
  314. Student student = students.get(i);
  315. if (student.getId() == id) {
  316. index = i;
  317. break;
  318. }
  319. }
  320. if (index == -1) {
  321. System.out.println("未找到对应学号学生信息,请确认后再删除!");
  322. } else {
  323. students.remove(index);
  324. System.out.println("----------删除成功----------");
  325. }
  326. }
  327. }
  328. /**
  329. * @param students 学生对象集合
  330. * @return
  331. * @description 显示所有学生成绩
  332. * @date 2021/4/5 14:30
  333. * @author cunyu1943
  334. * @version 1.0
  335. */
  336. public void showAllStudent(ArrayList<Student> students) {
  337. if (students.isEmpty()) {
  338. System.out.println("当前无数据,请先添加数据");
  339. } else {
  340. System.out.println("----------所有学生成绩如下----------");
  341. System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分");
  342. for (Student student : students) {
  343. System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student));
  344. }
  345. }
  346. }
  347. /**
  348. * @param students 学生对象集合
  349. * @return
  350. * @description 按照平均分排序
  351. * @date 2021/4/5 14:29
  352. * @author cunyu1943
  353. * @version 1.0
  354. */
  355. public void sortStudent(ArrayList<Student> students) {
  356. if (students.isEmpty()) {
  357. System.out.println("当前无数据,请添加后重试");
  358. } else {
  359. for (int i = 0; i < students.size() - 1; i++) {
  360. if (students.get(i).getAvg(students.get(i)) < students.get(i + 1).getAvg(students.get(i + 1))) {
  361. Student tmp = students.get(i);
  362. students.set(i, students.get(i + 1));
  363. students.set(i + 1, tmp);
  364. }
  365. }
  366. System.out.println("排序后的学生成绩");
  367. System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分");
  368. for (Student student : students) {
  369. System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student));
  370. }
  371. }
  372. }
  373. }

总结

虽然功能比较简陋,但还是需要一定时间来完成的。此外,本设计只是针对一次运行过程,一旦程序终止,录入的数据就无法保存了,这一点需要注意。后续考虑加入文件写入或者数据库的方式来实现该课程设计,以保存我们所录入的数据。

代码示例

最后,关于本文示例的代码,我已经上传至 Github,需要的小伙伴可以自取:

🎉传送门:https://github.com/cunyu1943/java-in-actions

如果您觉得本文不错,欢迎 **Star** 支持,您的关注就是我坚持不断更新的动力!