JavaSe实现ArrayList存放对象并对其进行增删改查操作

项目描述

1.本项目中涉及两个实体类,分别是:

  • Student(sid,name,sex,age,gid
  • Grade(gid,gname)

2.项目要求:实现ArrayList存放实体类对象并对其进行增删改查操作。

3.项目难点:若要向班级中添加一个学生,需要先判断是否存在该班级。

具体实现

1.项目结构

  • dao-持久层:作为软件和数据库之间的桥梁;用于采集和保存数据。
  • service-业务逻辑层:作为软件和人交互的桥梁,用于实现业务功能。
  • model-实体类:提高代码的灵活性和复用性。
  • util-工具类:减少重复代码。
    在这里插入图片描述

2.创建实体类(model)

  • 声明变量
  • 属性封装(getter-setter)
  • 构造方法
  • toString方法

3.定义接口(dao) - 以StudentDao为例
在这里插入图片描述
4.创建工具类(util)- 以StudentUtil为例

  • 获取sid
  • 获取Student对象
    //获取sid
    public int getGid(String str){
        System.out.println("请输入需要"+str+"的sid:");
        int sid=in.nextInt();
        return sid;
    }

    //获取Student对象
    public Student getStudent(String str){
        System.out.println(str+"学生");

        System.out.println("请输入需要"+str+"的学生编号");
        int sid=in.nextInt();

        System.out.println("请输入需要"+str+"的学生姓名");
        String name=in.next();

        System.out.println("请输入需要"+str+"的学生性别");
        String sex=in.next();

        System.out.println("请输入需要"+str+"的学生年龄");
        int age=in.nextInt();

        System.out.println("请输入需要"+str+"的学生班级编号");
        int gid=in.nextInt();

        Student stu=new Student(sid,name,sex,age,gid);
        return stu;
    }

5.实现接口的方法(dao-Impl) - 以StudentDaoImpl为例

5.1创建ArrayList集合用于存放学生数据

List<Student> slist=new ArrayList<>();

5.2初始化

 @Override
    public void doInintStudent() {
    	//实例化学生类对象
        Student stu1=new Student(1,"hl","女",22,185);
        //将创建的对象存入集合中
        slist.add(stu1);

        Student stu2=new Student(2, "zyq","男",22,184);
        slist.add(stu2);
    }

5.3添加记录

实现方法: 从工具类中获取学生对象-获取其班级编号-查看该班级编号是否存在–存在则将该学生对象插入到学生集合中。

具体代码如下所示:

 //实例ClassDaoImpl对象
 ClassDao cd=new ClassDaoImpl();
  
 @Override
    public boolean doAddStudent(Student stu) {
        try{
            int pid=stu.getGid();          //获取输入的gid
            if(cd.doSelectByPid(pid)){      //新增学生至班级前先判断是否存在该班级
                slist.add(stu);            //存在则添加该学生
                System.out.println("新增成功!");
            }
            else {
                System.out.println("该班级不存在!");
            }
        }catch (Exception e){
            System.out.println(e);
        }
        return false;
    }

其中ClassDaoImpl中doSelectByPid(int pid)方法与StudentDaoImpl中doSelectBySid(int sid)方法类似,具体见5.4节。

5.4 按sid单查
通过迭代器取出每条记录的sid并逐一与工具类中传入的sid进行比较。

    @Override
    public boolean doSelectBySid(int sid) {
        try{
            Iterator it=slist.iterator();             //将集合中数据存入it中
            while (it.hasNext()){                    //遍历集合
                Student stu=(Student)it.next();
                if(stu.getSid()==sid){
                    System.out.println(stu);
                    return true;
                }
            }
        }catch (Exception e){
            System.out.println(e);
        }
        return false;
    }

5.5查看所有记录-通过遍历集合实现

    @Override
    public void doSelectAll() {
        for (Student stu:slist){
            System.out.println(stu);
        }
    }

5.6删除记录
与单查类似-只是将找到的记录通过remove方法删除

    @Override
    public boolean doDelStudent(int sid) {
        try{
            Iterator it=slist.iterator();
            while(it.hasNext()){
                Student stu=(Student)it.next();
                if(stu.getSid()==sid){
                    slist.remove(stu);
                    return true;
                }
            }
        }catch (Exception e){
            System.out.println(e);
        }
        return false;
    }

6.Service层 - 以StudentService为例

6.1定义接口(StudentService) - 与dao层接口同
在这里插入图片描述
6.2实现接口的方法
service层不做具体的方法实现,只需调用dao层的方法,以新增记录为例:

StudentDao dao=new StudentDaoImpl();
StudentUtil su=new StudentUtil();
@Override
    public boolean doAddStudent(Student stu) {
        if(dao.doAddStudent(stu)){
            System.out.println("新增成功!");
            return true;
        }
        System.out.println("新增失败!");
        return false;
    }
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值