以list容器,保存,修改,查找,删除,持久化学生信息

一、课程介绍:
1.测试    javaoop 
    JavaWeb
    Springboot
2.学习方法:
    1.笔记  csdn 操作截图,知识点
    2.案例  完成上课的案例
    3.项目  学习知识点
    4.考试  答辩
3.纪律
    1.出勤
    2.手机
    3.完成  每天任务
4.分组
    完成分组

二、测试,完成信息管理系统
1、主要 

              List接口
              ArrayList
              LinkedList

  2、说明

工具:idea

 以list容器,保存,修改,查找,删除,持久化学生信息
Stu(id,name,grade,group,score)
除开score为int,其他全部为String

list.add(stu)

list.set(i,newStu)

list.remove(i);

最后将修改好的arrayList对象保存到磁盘

三、实现方法代码

1、Main.java

public class Main {

    public static void main(String[] args) {
        new View();//调用试图类
    }

}

2、Stu.java    学生实体


public class Stu implements Serializable {
    private String id;
    private String name;
    private String grade;
    private String group;
    private int score;

    public Stu() {
    }

    public Stu(String id, String name, String grade, String group, int score) {
        this.id = id;
        this.name = name;
        this.grade = grade;
        this.group = group;
        this.score = score;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    public String getGroup() {
        return group;
    }

    public void setGroup(String group) {
        this.group = group;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "--------------------------------------------" +
                "\n号:" + id +
                "\n名:" + name +
                "\n班:" + grade +
                "\n组:" + group +
                "\n分:" + score;
    }
}

3、Mainager.java    增删查改 功能实现

public class Manager {
    public Manager(){
        File file=new File("stus");
        if (!file.exists()){
            List<Stu>stus=new ArrayList<Stu>();
            try {
                ObjectOutputStream oos=new ObjectOutputStream(
                        new FileOutputStream("stus")
                );
                oos.writeObject(stus);
                oos.flush();
                oos.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
    public List<Stu> getStu() {
        List<Stu>stus=(List<Stu>) this.readData();
        return stus;
    }

    private Object readData() {
        Object o=null;
        try {
            ObjectInputStream ois=new ObjectInputStream(
                    new FileInputStream("stus")
            );
            o=ois.readObject();
            ois.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
        return o;
    }

    public void addStu(Stu stu) {
        stu.setId(UUID.randomUUID().toString());
        List<Stu>stus= (List<Stu>) this.readData();
        stus.add(stu);
        this.saveData(stus);
    }

    private void saveData(List<Stu> stus) {
        try {
            ObjectOutputStream oos=new ObjectOutputStream(
                    new FileOutputStream("stus")
            );
            oos.writeObject(stus);
            oos.flush();
            oos.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public Stu getStuById(String id) {
        Stu stu=null;
        List<Stu>stus= (List<Stu>) this.readData();
        for (Stu stu0:stus
        ) {
            if (stu0.getId().equals(id)){
                stu=stu0;
            }
        }
        return stu;
    }

    public void setStu(Stu newStu) {
        List<Stu>stus= (List<Stu>) this.readData();
        for (int i=0;i<stus.size();i++) {
            if (newStu.getId().equals(stus.get(i).getId())){
                stus.set(i,newStu);
            }
        }
        this.saveData(stus);
    }

    public void delStu(Stu stu) {
        System.out.println(stu);
        List<Stu>stus= (List<Stu>) this.readData();
        System.out.println(stus);
        for (int i=0;i<stus.size();i++) {
            if(stus.get(i).getId().equals(stu.getId())){
                stus.remove(i);
            }
        }
        this.saveData(stus);
    }

    public List<Stu> getStusByName(String name) {
        List<Stu>stus= new ArrayList<Stu>();
        List<Stu>dataList= (List<Stu>) this.readData();
        for (int i=0;i<dataList.size();i++){
            if(dataList.get(i).getName().indexOf(name)!=-1){
                stus.add(dataList.get(i));
            }
        }
        return stus;
    }
}

4、View.java      调用所写的方法 ,系统流程实现


public class View {
    private Scanner scanner;
    private Manager manager;

    /**
     * 构造方法
     * 1.实例Scanner
     * 2.实例Manager
     * 3.启动了视图
     */
    public View() {
        scanner=new Scanner(System.in);
        manager=new Manager();
        while (true){
            this.showMenu();
            System.out.println("=================");
            System.out.println("==>继续操作请输入y:");
            String ct= scanner.next();
            if (!ct.equals("y")){
                System.exit(0);
            }
        }
    }

    /**
     * 显示并且选择目录
     */
    private void showMenu() {
        System.out.println("==>\t1\t查看学生信息");
        System.out.println("==>\t2\t新增学生信息");
        System.out.println("==>\t3\t修改学生信息");
        System.out.println("==>\t4\t删除学生信息");
        System.out.println("==>\t5\t根据名称查询");
        System.out.println("==>\t0\t退出信息管理");
        System.out.println("==>请输入序号选择");
        int rb=scanner.nextInt();
        switch (rb){
            case 1:
                this.showStudents();
                break;
            case 2:
                this.addStudent();
                break;
            case 3:
                this.setStudent();
                break;
            case 4:
                this.delStudent();
                break;
            case 5:
                this.getStusByName();
                break;
            case 0:
                System.out.println("退出学生信息管理系统");
                System.exit(0);
                break;
            default:
                System.out.println("其他需求正在开发");
        }
    }

    /**
     * 根据名称模糊查找
     */
    private void getStusByName() {
        System.out.println("请输入姓名");
        String name=scanner.next();
        List<Stu>stus=manager.getStusByName(name);
        stus.forEach(stu->{
            System.out.println(stu);
        });
    }

    /**
     * 删除学生信息
     */
    private void delStudent() {
        System.out.println("请输入学生信息编号:");
        String id=scanner.next();
        Stu stu=manager.getStuById(id);
        System.out.println(stu);
        System.out.println("是否删除?y删除,");
        String wd= scanner.next();
        if (wd.equals("y")){
            manager.delStu(stu);
            System.out.println("删除成功");
        }
    }

    /**
     * 修改信息
     */
    private void setStudent() {
        System.out.println("请输入要修改的学生信息");
        String id=scanner.next();
        Stu oldStu=manager.getStuById(id);
        System.out.println(oldStu);
        System.out.println("====修改====");
        Stu newStu=this.getNewStu();
        newStu.setId(id);
        manager.setStu(newStu);
        System.out.println("修改完成");
    }

    /**
     * 添加信息
     */
    private void addStudent() {
        Stu stu=this.getNewStu();
        manager.addStu(stu);
    }

    /**
     *
     * 生成一个新的学生对象
     * @return
     */
    private Stu getNewStu() {
        Stu stu=null;

        System.out.println("请输入姓名:");
        String name=scanner.next();
        System.out.println("请输入班级:");
        String grade=scanner.next();
        System.out.println("请输入分组:");
        String group=scanner.next();

        stu=new Stu(null,name,grade,group,0);



        return stu;
    }

    /**
     * 显示学生信息
     */
    private void showStudents() {
        List<Stu>stus=manager.getStu();
        stus.forEach(stu->{
            System.out.println(stu);
        });
    }
}

四、系统流程

1、文件目录

2、

五、总结

1.Scaner的用法
2.Sout
3.switch
4.构造方法   重写(在子类覆盖父类方法),重载 在同一个类中编写同名不同参的方法
5.File f=new File("f:/abc.txt");
6.File 文件类,file.existe(),文件存在就返回true,否则返回false
7.file。createNewFile
8.ObjectOutputStream,ObjectInputStream
9.ObjectOutputStream(new FIleOutputStream("stus"));
10.objectOutputStream.writeObject(Object o);   object对象必须实现Serializable接口
    ArrayList中引用对象也必须实现Serializable接口
12.out:oos.writeObject(object)
13.ObjectInputStream ois=new ObjectInputSteam(new FileInputSteam("stus"));
    Object o=ois.readObject();
14.idea 生成jar包
    1.file-projectsturt..-artfact
    2.+
    3.MainClass
    4.设置初始化文件。main/res/
    5.确定之后,生成一个红色的out目录。out/artfacts/jar
    6.java环境。java -jar stu.jar

五、预习下次上课内容

1.预习,反射

arr.fiter((o)=>{console.log(o);});


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值