자바:학생 관리 시스템:파일 IO 스 트림
61983 단어 자바 초보 자 프로젝트
다음은 구체 적 인 수정 사항 을 쓰 고 마지막 으로 수 정 된 구체 적 인 코드 를 보 내 참고 하도록 하 겠 습 니 다.
간단 한 정보 초기 화 는 더 이상 사용 하지 않 습 니 다.초기 화 된 내용 을 한 파일 에 기록 합 니 다.방법 은 학생 집합 을 사용 할 때 파일 내용 을 읽 고 한 학생 집합 으로 돌아 가 는 방법 만 호출 하면 됩 니 다.
구체 적 으로 파일 을 읽 는 방법:
// 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();
}
}
}