学生信息管理系统 (直接在命令行 操作)
总体功能需求(利用集合类ArrayList存储对象,序列化写入到文件 再反序列化打印到控制台)1. 录入学生信息 (初始化)
在系统中不存在任何对象时,实现该功能。具体功能为:
(1:检测文件系统是否存在相关文件;
(2:若不存在相关文件,则要求用户录入学生信息,并序列化到文件;
(3:若已存在相关文件,则反序列化读取到程序中。
注意:学生纪录不允许重复,判断的关键字为学号
2. 添加学生记录
往已有的学生纪录添加新的学生纪录。具体功能为:
(1:要求用户从键盘输入一个或多个学生信息;
(2:输入完成后 序列化 到文件。
注意:学生纪录不允许重复,判断的关键字为学号
3. 删除学生记录
在已有的学生纪录中删除一个或多个学生纪录。具体功能为:
(1:要求用户输入欲删除的学生的学号;
(2:删除学生记录;
(3:更新到文件。
4. 修改学生记录
在已有的学生记录中修改某学生的相关信息。具体功能为:
(1:要求用户输入欲修改的学生的学号;
(2:判断该学生是否存在于记录中;
(3:若学生记录存在,提供修改学生信息功能。
5. 查看学生记录
查看单个学生记录。具体功能为:
(1:输入学生学号;
2:若该学生存在,打印该学生相关信息。
查看多个学生记录。具体功能为:
(1:打印出所有学生的记录;
(2:能分别按学号、姓名、性别、年龄和分数进行排序。
6. 退出系统 退出系统。
总体功能需求(利用集合类ArrayList存储对象,序列化写入到文件 再反序列化打印到控制台)1. 录入学生信息 (初始化)
在系统中不存在任何对象时,实现该功能。具体功能为:
(1:检测文件系统是否存在相关文件;
(2:若不存在相关文件,则要求用户录入学生信息,并序列化到文件;
(3:若已存在相关文件,则反序列化读取到程序中。
注意:学生纪录不允许重复,判断的关键字为学号
2. 添加学生记录
往已有的学生纪录添加新的学生纪录。具体功能为:
(1:要求用户从键盘输入一个或多个学生信息;
(2:输入完成后 序列化 到文件。
注意:学生纪录不允许重复,判断的关键字为学号
3. 删除学生记录
在已有的学生纪录中删除一个或多个学生纪录。具体功能为:
(1:要求用户输入欲删除的学生的学号;
(2:删除学生记录;
(3:更新到文件。
4. 修改学生记录
在已有的学生记录中修改某学生的相关信息。具体功能为:
(1:要求用户输入欲修改的学生的学号;
(2:判断该学生是否存在于记录中;
(3:若学生记录存在,提供修改学生信息功能。
5. 查看学生记录
查看单个学生记录。具体功能为:
(1:输入学生学号;
2:若该学生存在,打印该学生相关信息。
查看多个学生记录。具体功能为:
(1:打印出所有学生的记录;
(2:能分别按学号、姓名、性别、年龄和分数进行排序。
6. 退出系统 退出系统。
public class Pojo implements Serializable{
...
}----------------华丽的分割线---------------------------
定义一个泛型的集合list
Collection<Pojo> list=new ArrayList<Pojo>();用Object输出流输出对象list,输出到哪里看你自己的需求,可以是文件,可以是socket传输
ObjectOutputStream.writeObject(list);----------------华丽的分割线---------------------------
用Object输入流读取对象,从哪里读看你自己的需求,可以是从文件,可以是socket传输
读到的对象为Object类型的,强转为Collection
Collection<Pojo> list =(Collection<Pojo>)ObjectInputStream.readObject();输出到控制台
for(Pojo p:list){
System.out.println("学号:"+p.getId());
System.out.println("姓名:"+p.getName());
...
System.out.println("----------华丽的分割线-----------");
}
public static void writeToFile(ArrayList<Student> list){
File dstFile = new File("D:\\studentInfo.obj");
for(Student student : list) {
try {
if(!dstFile.exists()){
System.out.println(" 创建文件中......");
dstFile.createNewFile();
}
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(dstFile,true));
oos.writeObject(student);
oos.close();
}catch (Exception e){
e.printStackTrace();
}
}
}// 读取数据 实现反序列化
public static ArrayList<Student> readFromFile(String fileName) {
ArrayList<Student> list = new ArrayList<Student>();
Student student = new Student();
File dstFile = new File(fileName);
try {
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream(dstFile));
student = (Student)ois.readObject();
list.add(student);
StudentProcess.display(list);
ois.close();
} catch(ClassNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
System.out.println("找不到文件");
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
return list;
}
读出来的是一个对象,你知道自己序列化写入文件的时候的每个student对象的大小么?要是知道还可以反序列成不同的student对象,但是你不觉得这是吃饱了没事做么,为什么不用集合?java有集合给你用你不用,嵌入式用c/c++开发项目你想用还没的用呢,都得自己实现