자바:학생 관리 시스템:파일 IO 스 트림

지난번 간단 한 수강생 관리 시스템 에 이 어(https://blog.csdn.net/qq_38353993/article/details/82594809)이전에 간단 한 수강생 관리 시스템 은 수강생 정 보 를 하나의 집합 에 저장 하 는 것 이다.시스템 이 작 동 하지 않 으 면 수강생 정보 에 대한 첨삭 과 개조 도 잃 어 버 릴 수 있다.이번 에는 수강생 관리 시스템 에 대한 첫 번 째 강화 판 으로 수강생 의 정 보 를 파일 IO 흐름(IO 구체 적 인 기초 내용:https://blog.csdn.net/qq_38353993/article/details/82762657)시스템 이 더 이상 실행 되 지 않 더 라 도 이전에 수 정 된 정 보 는 여전히 존재 합 니 다.
다음은 구체 적 인 수정 사항 을 쓰 고 마지막 으로 수 정 된 구체 적 인 코드 를 보 내 참고 하도록 하 겠 습 니 다.
간단 한 정보 초기 화 는 더 이상 사용 하지 않 습 니 다.초기 화 된 내용 을 한 파일 에 기록 합 니 다.방법 은 학생 집합 을 사용 할 때 파일 내용 을 읽 고 한 학생 집합 으로 돌아 가 는 방법 만 호출 하면 됩 니 다.
구체 적 으로 파일 을 읽 는 방법:
//       Student     
    private static ArrayList<Student> readAll() {
        ArrayList<Student> stuList = new ArrayList<>();
        //              data.txt    
        //               
        try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
            String s = null;
            while ((s = br.readLine())!=null){
                String[] strings = s.split(",");//               “,”    
                Student student = new Student();
                student.setStuNo(Integer.parseInt(strings[0]));//  
                student.setName(strings[1]);//  
                student.setSex(strings[2]);//  
                student.setAge(Integer.parseInt(strings[3]));//  
                stuList.add(student);//              
            }
            return stuList;//     
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;//          null
    }

추가,수정,삭제 방법 에서 모두 학생 집합 을 수정 했다.그러면 파일 에 있 는 학생 정 보 를 업데이트 해 야 하기 때문에 수 정 된 학생 집합 을 파일 에 기록 하 는 방법 이 필요 하 다.
//             
    public static void writeAll(ArrayList<Student> stuList){
        try (BufferedWriter out = new BufferedWriter(new FileWriter("data.txt"))) {
            //     ,              
            for (Student s:stuList) {
                out.write(s.getStuNo()+","+s.getName()+","+s.getSex()+","+s.getAge());
                out.newLine();//     ,         
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

전체 코드
Student 클래스:
public class Student {
    private int stuNo;
    private String name;
    private String sex;
    private int age;

    public Student() {
    }

    public Student(int stuNo, String name, String sex, int age) {
        this.stuNo = stuNo;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public int getStuNo() {
        return stuNo;
    }

    public void setStuNo(int stuNo) {
        this.stuNo = stuNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuNo=" + stuNo +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}

테스트 클래스:
package cn.khd.Test01;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("          ");
        while (true){
            System.out.println("1、   2、   3、   4、      5、     6、  ");
            System.out.println("         :");
            int num = scanner.nextInt();
            switch (num){
                case 1:
                    addStuent(scanner);
                    break;
                case 2:
                    upData(scanner);
                    break;
                case 3:
                    delectStudent(scanner);
                    break;
                case 4:
                    findById(scanner);
                    break;
                case 5:
                    finAll();
                    break;
                case 6:
                    System.out.println("    ,   ");
                    System.exit(0);
                    break;
                    default:
                        System.out.println("    ,     ");
                        break;
            }
        }
    }

    private static void upData(Scanner scanner) {
        ArrayList<Student> stuList = readAll();
        int n = 0;
        loop:
        while (true){
            System.out.println("         :");
            n = scanner.nextInt();
            for (Student s:stuList) {
                if (s.getStuNo() == n){
                    System.out.println("         :");
                    System.out.println(s);
                    System.out.println("          (  0   ):");
                    String name = scanner.next();
                    System.out.println("          (  0   ):");
                    String sex = scanner.next();
                    System.out.println("          (  0   ):");
                    int age = scanner.nextInt();
                    if (!name.equals("0")){
                        s.setName(name);
                    }
                    if (!sex.equals("0")){
                        s.setSex(sex);
                    }
                    if (age != 0){
                        s.setAge(age);
                    }
                    writeAll(stuList);
                    System.out.println("   ");
                    return;
                }

            }
            System.out.println("         ,     ");
            continue loop;
        }
    }

    private static void delectStudent(Scanner scanner) {
        ArrayList<Student> stuList = readAll();
        int n = 0;
        loop:
        while (true){
            System.out.println("         :");
            n = scanner.nextInt();
            for (Student s:stuList) {
                if (s.getStuNo() == n){
                    System.out.println("         :");
                    System.out.println(s);
                    System.out.println("      (y/n):");
                    String chack = scanner.next();
                    if (chack.equalsIgnoreCase("y")){
                        stuList.remove(s);
                        writeAll(stuList);
                        System.out.println("   ");
                    }

                    return;
                }
            }
            System.out.println("         ,     ");
            continue loop;
        }
    }

    private static void findById(Scanner scanner) {
        ArrayList<Student> stuList = readAll();
        int n = 0;
        loop:
        while (true){
            System.out.println("         :");
            n = scanner.nextInt();
            for (Student s:stuList) {
                if (s.getStuNo() == n){
                    System.out.println("        :");
                    System.out.println(s);
                    return;
                }
            }
            System.out.println("         ,     ");
            continue loop;
        }
    }

    private static void addStuent(Scanner scanner) {
        ArrayList<Student> stuList = readAll();
        int n = 0;
        loop:
        while (true){
            System.out.println("         :");
            n = scanner.nextInt();
            for (Student s:stuList) {
                if (s.getStuNo() == n){
                    System.out.println("         ,     ");
                    continue loop;
                }
            }
            System.out.println("         :");
            String name = scanner.next();
            System.out.println("         :");
            String sex = scanner.next();
            System.out.println("         :");
            int age = scanner.nextInt();
            Student student = new Student(n,name,sex,age);
            stuList.add(student);
            writeAll(stuList);
            break ;
        }
    }

    private static void finAll() {
        ArrayList<Student> stuList = readAll();
        System.out.println("-----------------------------");
        System.out.println("  \t\t  \t\t  \t\t  ");
        System.out.println(".............................");
        if (stuList == null || stuList.size() == 0){
            //stuList      ,   ,  stuList.size()==0            
            System.out.println("   ");
        }else {
            for (Student s:stuList) {
                System.out.println(s.getStuNo()+"\t\t"+s.getName()+"\t\t"+s.getSex()+"\t\t"+s.getAge());
            }
        }
        System.out.println("-----------------------------");
    }
    //       Student     
    private static ArrayList<Student> readAll() {
        ArrayList<Student> stuList = new ArrayList<>();
        try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
            String s = null;
            while ((s = br.readLine())!=null){
                String[] strings = s.split(",");
                Student student = new Student();
                student.setStuNo(Integer.parseInt(strings[0]));
                student.setName(strings[1]);
                student.setSex(strings[2]);
                student.setAge(Integer.parseInt(strings[3]));
                stuList.add(student);
            }
            return stuList;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    //             
    public static void writeAll(ArrayList<Student> stuList){
        try (BufferedWriter out = new BufferedWriter(new FileWriter("data.txt"))) {
            //     ,              
            for (Student s:stuList) {
                out.write(s.getStuNo()+","+s.getName()+","+s.getSex()+","+s.getAge());
                out.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

좋은 웹페이지 즐겨찾기