世界另一端 2023-04-11 14:43 采纳率: 50%
浏览 222
已结题

学生贯籍信息记录簿设计

编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能如下:
(1)创建学生信息并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询成绩;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息(可选项);

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-04-11 15:03
    关注

    引用new bing作答:
    以下是一个 Java 实现的学生籍贯信息记录簿,实现了上述功能:

    import java.io.*;
    import java.util.*;
    
    class Student implements Serializable {
        private int id;
        private String name;
        private String address;
    
        public Student(int id, String name, String address) {
            this.id = id;
            this.name = name;
            this.address = address;
        }
    
        public int getId() {
            return id;
        }
    
        public String getName() {
            return name;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String toString() {
            return "ID: " + id + "\tName: " + name + "\tAddress: " + address;
        }
    }
    
    public class StudentRecord {
        private static ArrayList<Student> students = new ArrayList<Student>();
        private static Scanner scanner = new Scanner(System.in);
    
        private static void save() {
            try {
                FileOutputStream fileOut = new FileOutputStream("students.ser");
                ObjectOutputStream out = new ObjectOutputStream(fileOut);
                out.writeObject(students);
                out.close();
                fileOut.close();
                System.out.println("Student records saved to file students.ser");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private static void load() {
            try {
                FileInputStream fileIn = new FileInputStream("students.ser");
                ObjectInputStream in = new ObjectInputStream(fileIn);
                students = (ArrayList<Student>) in.readObject();
                in.close();
                fileIn.close();
                System.out.println("Student records loaded from file students.ser");
            } catch (IOException e) {
                System.out.println("No saved student records found");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        private static void addStudent() {
            System.out.println("Enter student ID:");
            int id = scanner.nextInt();
            scanner.nextLine();
            System.out.println("Enter student name:");
            String name = scanner.nextLine();
            System.out.println("Enter student address:");
            String address = scanner.nextLine();
            students.add(new Student(id, name, address));
            save();
        }
    
        private static void deleteStudent() {
            System.out.println("Enter student ID:");
            int id = scanner.nextInt();
            scanner.nextLine();
            for (Student student : students) {
                if (student.getId() == id) {
                    students.remove(student);
                    System.out.println("Student with ID " + id + " deleted");
                    save();
                    return;
                }
            }
            System.out.println("No student with ID " + id + " found");
        }
    
        private static void modifyStudent() {
            System.out.println("Enter student ID:");
            int id = scanner.nextInt();
            scanner.nextLine();
            for (Student student : students) {
                if (student.getId() == id) {
                    System.out.println("Enter new student address:");
                    String address = scanner.nextLine();
                    student.setAddress(address);
                    System.out.println("Student with ID " + id + " modified");
                    save();
                    return;
                }
            }
            System.out.println("No student with ID " + id + " found");
        }
    
        private static void displayAllStudents() {
            for (Student student : students) {
                System.out.println(student);
            }
        }
    
        private static void displayStudentsByLocation() {
            System.out.println("Enter location:");
            String location = scanner.nextLine();
            boolean found = false;
            for (Student student : students) {
                if (student.getAddress().equalsIgnoreCase(location)) {
                    System.out.println(student);
                    found = true;
                }
            }
            if (!found) {
    System.out.println("No students found in " + location);
    }
    }
    private static void searchStudent() {
        System.out.println("Enter student ID or name:");
        String input = scanner.nextLine();
        boolean found = false;
        for (Student student : students) {
            if (student.getId() == Integer.parseInt(input) || student.getName().equalsIgnoreCase(input)) {
                System.out.println(student);
                found = true;
            }
        }
        if (!found) {
            System.out.println("No student found with ID or name " + input);
        }
    }
    
    public static void main(String[] args) {
        load();
        while (true) {
            System.out.println("\nWhat would you like to do?");
            System.out.println("1. Add a student");
            System.out.println("2. Delete a student");
            System.out.println("3. Modify a student");
            System.out.println("4. Display all students");
            System.out.println("5. Display students by location");
            System.out.println("6. Search for a student");
            System.out.println("0. Exit");
            int choice = scanner.nextInt();
            scanner.nextLine();
            switch (choice) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    deleteStudent();
                    break;
                case 3:
                    modifyStudent();
                    break;
                case 4:
                    displayAllStudents();
                    break;
                case 5:
                    displayStudentsByLocation();
                    break;
                case 6:
                    searchStudent();
                    break;
                case 0:
                    System.exit(0);
                default:
                    System.out.println("Invalid choice");
            }
        }
    }
    }
    

    该程序使用了一个 Student 类来表示每个学生,包含学号、姓名和籍贯。使用 ArrayList 来存储所有学生的信息,并使用序列化将其保存到磁盘文件中。

    在主方法中,使用一个 while 循环来处理用户的不同操作选择。用户可以选择添加、删除、修改学生信息,或者查询所有学生信息或者按照籍贯查询学生信息。还可以搜索学生信息,通过输入学号或姓名来查找相应的学生。

    该程序实现了一个基本的学生籍贯信息记录簿,可以根据需要进行扩展和改进。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数