ArrayList的学生管理

xiaoxiao2021-02-28  24

一个学生类

学生的属性有:学生学号,姓名,高数成绩,计算机成绩(java成绩),专业,性别。

package com.stu.test; /** * * @author Feng 2018年1月27日上午10:21:49 */ public class Student { private String studentNumber;// 学生学号 private String studentName;// 学生姓名 private double mathScores;// 高数成绩 private double javaScores;// 计算机成绩 private String subject;// 专业 private String sex;// 性别 public Student(String studentNumber, String studentName, double MathScores, double javaScores, String subject, String sex) { super(); this.studentNumber = studentNumber; this.studentName = studentName; this.mathScores = MathScores; this.javaScores = javaScores; this.subject = subject; this.sex = sex; } public Student() { // 无参构造 } public String getStudentNumber() { return studentNumber; } public void setStudentNumber(String studentNumber) { this.studentNumber = studentNumber; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public double getScores() { return mathScores; } public void setScores(double scores) { this.mathScores = scores; } @Override public String toString() { return studentNumber + "\t" + studentName + "\t" + subject + "\t" + sex + "\t" + mathScores + "\t\t" + javaScores; } public double getComputerScores() { return javaScores; } public void setComputerScores(double computerScores) { this.javaScores = computerScores; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }

比较器用来比较成绩的平均分

package com.stu.test; import java.util.Comparator; public class ComparatorScore implements Comparator<Student> { public int compare(Student stu1, Student stu2) { // TODO Auto-generated method stub return (int) ((stu1.getScores() +stu1.getComputerScores() )/2 - (stu2.getScores() + stu2.getComputerScores())/2); } }

学生管理类

这里就不写测试类了,直接把main方法也放到了学生管理类中了。

package com.stu.test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class StudentManager { private static List<Student> list = new ArrayList<Student>(); private StudentManager() { list.add(new Student("15060205102", "冯劲松", 59.9, 50.2, "软件", "男")); list.add(new Student("15060205101", "程尚明", 60.1, 60, "软件", "男")); list.add(new Student("15060205124", "刘璐", 89.5, 78, "软件", "女")); list.add(new Student("15060205103", "冯乐", 70.3, 65, "软件", "男")); list.add(new Student("15060205104", "胡越", 10.1, 40, "软件", "男")); list.add(new Student("15060205105", "黄人", 65, 30, "软件", "男")); list.add(new Student("15060205107", "李鹏骁", 80.1, 72, "软件", "男")); } /** * @return 学生信息 */ public List<Student> getAll() { return list; } /** * 添加学生 添加失败就返回false,成功就返回true */ public boolean addStudent(Student student) { for (int i = 0; i < list.size(); i++) { Student studentAdd = list.get(i); if (studentAdd.getStudentNumber().equals(student.getStudentNumber())) { return false; } } list.add(student); return true; } /** * 删除学生。 */ public boolean removeStudent(String studentNumber) { for (int i = 0; i < list.size(); i++) { Student studentDel = list.get(i); if (studentDel.getStudentNumber().equals(studentNumber)) { list.remove(i); return true; } } return false; } /** * main 方法入口 * * @param args */ public static void main(String[] args) { ComparatorScore cs = new ComparatorScore(); StudentManager manager = new StudentManager(); @SuppressWarnings("resource") Scanner input = new Scanner(System.in); boolean isGoing = true; String name = null;// 临时输入的名字 String stuNumber = null;// 临时学号 String study = null;// 临时输入的学科 String sexual = null;// 性别 double math = 0; double java = 0; while (isGoing) { int choose = 0; do { System.out.println("------Welcome to 学生管理系统-------"); System.out.println("========选择界面========"); System.out.println("\t1\t查看所有学生--------"); System.out.println("\t2\t添加一个学生--------"); System.out.println("\t3\t删除一个学生--------"); System.out.println("\t4\t退出本系统----"); System.out.println("----------------------------------"); System.out.println(); System.out.println("请输入你的选择:"); if (input.hasNext()) { choose = input.nextInt(); } input.nextLine(); } while (choose < 1 || choose > 4); switch (choose) { case 1: List<Student> list = manager.getAll(); Collections.sort(list, cs);// 升序排列平均成绩 Collections.reverse(list);// 然后降序 System.out.println("\t学号\t|姓名|\t|专业|\t|性别|\t|高数成绩|\t|java成绩|"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } break; case 2: System.out.println("请输入要添加的学生的学号:"); stuNumber = input.nextLine(); System.out.println("输入所要添加的学生的姓名:"); name = input.nextLine(); System.out.println("请输入要添加的学生的专业:"); study = input.nextLine(); System.out.println("请输入要添加的学生的性别:"); sexual = input.nextLine(); System.out.println("请输入要添加的学生的数学成绩:"); math = input.nextDouble(); System.out.println("请输入要添加的学生的java成绩:"); java = input.nextDouble(); Student student = new Student(stuNumber, name, math, java, study, sexual); if (manager.addStudent(student)) { System.out.println("添加学生成功"); } else { System.out.println("添加失败,可能重复添加某学生"); } break; case 3: System.out.println("请输入要删除的学生学号"); stuNumber = input.nextLine(); if (manager.removeStudent(stuNumber)) { System.out.println("已经成功删除该学生信息!"); } else { System.out.println("删除失败,请检查是否学号输入错误!"); } break; case 4: isGoing = false; break; } } } }

这个简单的例子,ArrayList一般用来查看,遍历。因为它的底层是数组,所以效率会高些。LinkedList则多数用来进行增加,删除,其底层类似于C 语言中的指针,所以增加和删除效率会高些。 说这些呢,是为了说一句,我们平时用的话,不会单一的就只有查看,或者只有增加,删除,一般都会是一半的一半,他们哥俩都会有,如果不知道选什么集合容器,那么这个时候,就去选择ArrayList,因为一般用到集合,很少去对它操纵,查看的机会会多一些。还有就是程序的截图就不发了哈。ArrayList是一个动态的数组,当添加的元素个数大于当前的容量时,会1.5倍增加自己的容量,反之当少于当前一半容量时会自动的把容量变成当前的一半,变化是相同的道理。 但是,ArrayList在不传入参数时,默认大小时10,当传入参数时,传了多少,最小容量就是多少。 举个例子: 假如当前申请容量是默认的10,当传入10个元素之后,再次添加会自动扩容到15。

转载请注明原文地址: https://www.6miu.com/read-2149974.html

最新回复(0)