import java.io.Serializable;public class Student implements Serializable{ private String name ; private int age ; private int grade ; public Student(String name, int age, int grade) { this.name = name ; this.age = age ; this.grade = grade ; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age ; } public void setGrade(int grade) { this.grade = grade; } public String getName() { return this.name; } public int getAge() { return this.age; } public int getGrade() { return this.grade; } public Student() { } public String toString() { return name+" "+age+" "+grade; } }
以上是关于Student类的定义,大家也可以做自己的修改,这都是源码哦
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.Scanner;public class Main { static ArrayLists = new ArrayList (); //设置为整个类都可以访问的 public static void main(String[] args) { try { System.out.println("数据载入中..."); ObjectInputStream in = new ObjectInputStream( new FileInputStream("obj.bat")); try { s = ((ArrayList )in.readObject()); System.out.println("数据载入完成!"); } catch (ClassNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } in.close(); } catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } while(true) { choose() ; try { ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream("obj.bat")); out.writeObject(s); out.close(); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } public static void choose() { Scanner in = new Scanner(System.in); System.out.println("1 add " + "2 rm " + "\n" + "3 show " + "4 quit" ); int flag = Integer.parseInt(in.nextLine()); //in.close(); switch(flag) { case 1 : add(); break ; case 2 : rm(); break ; case 3 : show(); break ; case 4 : quit(); break ; } } public static void add() { Scanner in = new Scanner(System.in); Student s1 = new Student(); System.out.println("please input the name of the student: "); s1.setName( in.nextLine() ); System.out.println("please input the age of the student: "); s1.setAge(Integer.parseInt(in.nextLine())); System.out.println("please input the grade of the student: "); s1.setGrade(Integer.parseInt(in.nextLine())) ; s.add(s1); //in.close(); System.out.println("over"); } public static void show() { Student [] s_all = new Student[s.size()] ; s.toArray(s_all); for(Student s1 : s_all) { System.out.println(s1.toString()); } } public static void quit() { System.out.println("exit"); System.exit(0); } public static void rm() { byte [] temp = new byte[20]; String name = ""; try { System.in.read(temp); name = new String(temp); }catch(IOException e) { } Student [] s_all = new Student[s.size()]; s.toArray(s_all); for(Student s1 : s_all) { if(s1.getName().trim().equals(name.trim())) { System.out.println(s.indexOf(s1)); s.remove(s.indexOf(s1)); System.out.println(s1.getName()+"have been removed"); } } }}
这上面的是一个主要的操作类,定义了一些可以进行的操作,大家也可以根据自己的需要进行修改,这里我只写了一个按照name删除的方法,其实也可以根据age和grade的操作,其实都是大同小异的。
在这里感觉在这个程序上收获最多的是关于ArrayList的使用,真的是方便,大大节省了关于存储文件和读取文件的过程,ObjectOutputStream和ObjectInputStream的使用大大减少了关于文件的操作。
当然了,这只是我作为一个初学者的认识,如果又不对的地方,还请大家指出来,我会更正的。
最后,等自己学完Swing之后,我争取可以做出一个带UI的程序,到时候也会分享的。
原文:https://blog.csdn.net/qq_42330141/article/details/89159173