==============实体类================= package com.newcoder_10; import java.io.Serializable; public class Student implements Serializable { /** * 实体类: */ private static final long serialVersionUID = 4888503192302777566L; private String id; // 学号字段 private String name; // 名称 private String age; // 年龄 private String adderss; // 地址 private String score; // 分数 public Student() { } // 为了方便封装数据提供了有参构造 public Student(String id, String name, String age, String adderss, String score) { super(); this.id = id; this.name = name; this.age = age; this.adderss = adderss; this.score = score; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAdderss() { return adderss; } public void setAdderss(String adderss) { this.adderss = adderss; } } ===============主程序=========== package com.newcoder_10; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class StudentManager { public static void main(String[] args) throws ClassNotFoundException, IOException { // 程序开始加载本地数据 ArrayList<Student> array = new ArrayList<Student>(); File file = new File("Date.txt"); if (file.exists() && file.length() > 0) { // 本地数据存在则加载数据(判断大小是因为,如果空文件会报空指针异常) ArrayList<Student> list = load(); array = list; } else { // 如果本地不存在数据,则创建文件 file.createNewFile(); } while (true) { // 主界面 1.打印表头 2.输入信息 3. System.out.println("--------欢迎使用学生成绩管理系统--------"); System.out.println("1查询所有学生"); System.out.println("2增加学生"); System.out.println("3根据学号查询"); System.out.println("4按学号排序查询"); System.out.println("5按照分数排序查询"); System.out.println("6退出"); // 录入信息 Scanner sc = new Scanner(System.in); System.out.println("请输入你想要选择的功能:"); String choice = sc.nextLine(); // 选择 switch (choice) { case "1": // 1查询所有学生 findAllStudent(array); break; case "2": // 2增加学生 addStudent(array); store(array); break; case "3": // 3根据学号查询 selectById(array); break; case "4": // 按学号排序查询 orderById(array); break; case "5": // 5按照分数排序查询 orderByScore(array); break; case "6": // 退出 store(array); System.out.println("谢谢你的使用"); System.exit(0); break; default: System.out.println("此功能暂未开放"); break; } } } // 根据分数排序 private static void orderByScore(ArrayList<Student> array) { if (array.size() <= 0) { System.out.println("数据库为空!!"); return; } // 为了保护原始数据,采用克隆副本进行排序 List<Student> cList = (ArrayList<Student>) array.clone(); // 排序按照分数 Collections.sort(cList, new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { Double id1 = new Double(s1.getScore()); Double id2 = new Double(s2.getScore()); Integer result = id1 > id2 ? 1 : id1 < id2 ? -1 : 0; return result; } }); // 打印输出分数 System.out.println("学号\t\t姓名\t年龄\t地址\t成绩"); for (int i = 0; i < cList.size(); i++) { Student st = cList.get(i); System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss() + "\t" + st.getScore()); } } // 根据学号排序 private static void orderById(ArrayList<Student> array) { if (array.size() <= 0) { System.out.println("数据库为空!!"); return; } List<Student> cList = (ArrayList<Student>) array.clone(); // Collections.copy(array, cList); Collections.sort(cList, new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { Integer id1 = Integer.parseInt(s1.getId()); Integer id2 = Integer.parseInt(s2.getId()); Integer result = id1 > id2 ? 1 : id1 < id2 ? -1 : 0; return result; } }); System.out.println("学号\t\t姓名\t年龄\t地址\t成绩"); for (int i = 0; i < cList.size(); i++) { Student st = cList.get(i); System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss() + "\t" + st.getScore()); } } // 根据学号查询 private static void selectById(ArrayList<Student> array) { System.out.println("请输入要查询的学号"); Scanner sc = new Scanner(System.in); String id = sc.nextLine(); if (id == null) { System.out.println("输入为空!"); return; } if (array.size() <= 0) { System.out.println("数据库为空!!"); return; } boolean flag = false; Student st = null; for (int i = 0; i < array.size(); i++) { st = array.get(i); if (id.equals(st.getId())) { flag = true; break; } } if (flag) { System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss()); } else { System.out.println("数据库中未查询到数据!请修改学号"); } } // 存储数据 public static void store(ArrayList<Student> array) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Date.txt")); oos.writeObject(array); oos.flush(); oos.close(); } // 加载数据: public static ArrayList<Student> load() throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Date.txt")); Object obj = ois.readObject(); ois.close(); ArrayList<Student> list = (ArrayList<Student>) obj; return list; } // 查询所有学生信息方法 public static void findAllStudent(ArrayList<Student> array) { if (array.size() <= 0) { System.out.println("当前管理系统暂时没有信息"); } else { System.out.println("学号\t\t姓名\t年龄\t地址\t成绩"); for (int i = 0; i < array.size(); i++) { Student st = array.get(i); System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss() + "\t" + st.getScore()); } } } // 添加学生信息的方法 public static void addStudent(ArrayList<Student> array) { // 键盘录入信息 Scanner sc = new Scanner(System.in); String id; while (true) { System.out.println("请输入学号"); boolean flag = false; id = sc.nextLine(); // 添加判断是否已经有了这个学号 for (int i = 0; i < array.size(); i++) { Student s = array.get(i); String userId = s.getName(); if (userId.equals(id)) { flag = true; break; } } if (flag == true) { System.out.println("当前学号已经被占用,请重新输入"); // continue; } else { break; } } System.out.println("请输入姓名"); String name = sc.nextLine(); System.out.println("请输入年龄"); String age = sc.nextLine(); System.out.println("请输入住址"); String adderss = sc.nextLine(); System.out.println("请输入成绩"); String score = sc.nextLine(); // 创建学生对象 Student st = new Student(id, name, age, adderss, score); // 添加到集合中 array.add(st); } }
点赞 1

相关推荐

09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务