麻心小汤圆 2023-06-07 23:38 采纳率: 66.7%
浏览 18

关于#java#的问题:把创建的学生对象录入文件,在需要对信息进行操作时

把创建的学生对象录入文件,在需要对信息进行操作时,读取数据。怎么进行修改啊?

用io的file

img


package managementSystem;
import java.util.ArrayList;
import java.util.Scanner;
public class system {
     public static void main(String[] args) {
            ArrayList<Student> list = new ArrayList<>();
            //创建学生对象
            Student s1 = new Student("202201","李一","男","数据科学与大数据技术","一班","401","2004.1","重庆");
            Student s2 = new Student("202202","李二","男","数据科学与大数据技术","一班","401","2004.4","重庆");
            Student s3 = new Student("202203","李三","男","数据科学与大数据技术","一班","401","2004.7","重庆");
            Student s4 = new Student("202204","李四","男","数据科学与大数据技术","二班","402","2004.7","重庆");
            Student s5 = new Student("202205","李五","女","数据科学与大数据技术","二班","402","2003.9","重庆");
            Student s6 = new Student("202206","李六","男","数据科学与大数据技术","二班","402","2004.5","重庆");
            Student s7 = new Student("202207","李七","女","计算机科学与技术","一班","403","2004.4","重庆");
            Student s8 = new Student("202208","李八","男","计算机科学与技术","一班","403","2004.3","重庆");
            Student s9 = new Student("202209","李九","男","计算机科学与技术","一班","403","2003.1","重庆");
            Student s10 = new Student("202210","李十","男","计算机科学与技术","二班","404","2004.2","重庆");
            Student s11 = new Student("202211","李十一","女","计算机科学与技术","二班","404","2004.3","重庆");
            Student s12= new Student("202212","李十二","女","计算机科学与技术","二班","404","2003.5","重庆");
            Student s13 = new Student("202213","李十三","女","计算机科学与技术","三班","405","2004.6","重庆");
            Student s14 = new Student("202214","李十四","女","计算机科学与技术","三班","405","2004.1","重庆");
            Student s15 = new Student("202215","李十五","女","计算机科学与技术","三班","405","2004.8","重庆");
            //把学生添加到集合
            list .add(s1);
            list .add(s2);
            list .add(s3);
            list .add(s4);
            list .add(s5);
            list .add(s6);
            list .add(s7);
            list .add(s8);
            list .add(s9);
            list .add(s10);
            list .add(s11);
            list .add(s12);
            list .add(s13);
            list .add(s14);
            list .add(s15);
            start:
            while (true) {
                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:显示所有学生信息");
                System.out.println("7:退出");
                System.out.println("请输入您的选择:");
                Scanner sc = new Scanner(System.in);
                String choose = sc.next();
                switch (choose) {
                case "1":
                    Add.addStudent(list);
                    break;
                case "2":
                    Delete.deleteStudent(list);
                    break;
                case "3":
                    break;
                case "4":
                    ccSearch.ccSearchStudent(list);
                    break;
                case "5":
                    idSearch.viewStudent(list);
                    break;   
                case "6":
                    View.viewStudent(list);
                    break;
                case "7":
                {
                    System.out.println("退出");
                    break start;
                }
                default:
                    System.out.println("没有这个选项,请重新输入");
                }
            }
     }
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-08 12:05
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7673223
    • 这篇博客你也可以参考下:使用file把文件读取到浏览器并用进度条显示
    • 以下回答来自chatgpt:

      针对您的问题,您需要使用Java的IO流将创建的学生对象录入到文件中,并且能够在需要对其信息进行操作时进行读取,同时还需要实现对文件中数据的修改操作。

      具体步骤如下:

      1. 创建一个Student类,包含各种学生属性的定义(姓名、学号、年龄等等),并且实现Serializable接口,以便在写入文件时可以顺利进行对象序列化,代码如下:
      import java.io.Serializable;
      
      public class Student implements Serializable{
          private String name;
          private int id;
          private int age;
      
          public Student(String name, int id, int age) {
              this.name = name;
              this.id = id;
              this.age = age;
          }
      
          public String getName() {
              return name;
          }
      
          public int getId() {
              return id;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public void setId(int id) {
              this.id = id;
          }
      
          public void setAge(int age) {
              this.age = age;
          }   
      }
      
      1. 创建一个操作文件的类,用于存储、读取以及修改学生对象数据。首先,需要使用File类创建一个指向文件的对象,然后使用ObjectOutputStream将学生对象写入文件中。
      import java.io.*;
      
      public class StudentFile {
          private File file;
      
          public StudentFile(String filePath) {
              file = new File(filePath);
          }
      
          public void save(Student student) {
              try {
                  ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
                  out.writeObject(student);
                  out.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      
          public Student load() {
              try {
                  ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
                  Student student = (Student) in.readObject();
                  in.close();
                  return student;
              } catch (IOException | ClassNotFoundException e) {
                  e.printStackTrace();
              }
              return null;
          }
      
          public void update(Student newStudent) {
              try {
                  Student oldStudent = load();
                  ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
                  out.writeObject(newStudent);
                  out.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      }
      
      1. 在主函数中进行测试。首先是创建一个学生对象,并通过StudentFile的save方法将这个对象存储到文件中。然后,再通过StudentFile的load方法读取存储在文件中的学生对象,测试读取是否成功。最后,调用StudentFile的update方法进行学生对象数据的修改测试。
      public class Main {
          public static void main(String[] args) {
              // 创建学生对象并存储到文件
              Student student1 = new Student("张三", 1001, 20);
              StudentFile fileHelper = new StudentFile("D://Student.txt");
              fileHelper.save(student1);
      
              // 从文件中读取学生对象
              Student student2 = fileHelper.load();
              System.out.println("学生姓名:" + student2.getName());
              System.out.println("学生学号:" + student2.getId());
              System.out.println("学生年龄:" + student2.getAge());
      
              // 修改学生对象数据
              Student student3 = new Student("李四", 1002, 22);
              fileHelper.update(student3);
              Student student4 = fileHelper.load();
              System.out.println("修改后学生姓名:" + student4.getName());
              System.out.println("修改后学生学号:" + student4.getId());
              System.out.println("修改后学生年龄:" + student4.getAge());
          }
      }
      

      以上就是一种基于Java IO流实现将学生对象写入文件并进行读取和修改的解决方案。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 6月7日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料