使用数组实现增删

数组实现宿舍的增删

一。前期准备编写的逻辑
1.准备素材
两大类(Person 和 room)
Person(pid,name,sex) 入住人员
Room(rid,type,Person[] people) 入住宿舍

2.流程显示
1.准备宿舍 – 人住到宿舍里面去(首先有人,初始化人,在定义宿舍,初始化宿舍)
2.实现增删查
增 – 解决新增的人信息何处来; – 怎么将此数据存储到宿舍中。
删 --解决删除的人信息何处来; – 怎么将此数据从宿舍中删除。
查 --解决查找的人信息何处来; – 怎么将此数据从宿舍中查找出来。

具体逻辑完成下面编写代码

二.编写程序
1.新建一下结构
(包含 model层 , dao层 ,dao层下面的impl ,封装的util ,service层和ui界面层)

在这里插入图片描述
2.首先编写model层
编写人员

package com.erha.model;

public class Person {
    private int pid;        // 编号
    private String name;    // 姓名
    private String sex;     // 性别

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    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 Person() {
    }

    public Person(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public Person(int pid, String name, String sex) {
        this.pid = pid;
        this.name = name;
        this.sex = sex;
    }

    public String toString(){
        return "人员编号:"+pid+",人员姓名:"+name+",人员性别:"+sex;
    }
}

编写宿舍

package com.erha.model;

public class Person {
    private int pid;        // 编号
    private String name;    // 姓名
    private String sex;     // 性别

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    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 Person() {
    }

    public Person(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public Person(int pid, String name, String sex) {
        this.pid = pid;
        this.name = name;
        this.sex = sex;
    }

    public String toString(){
        return "人员编号:"+pid+",人员姓名:"+name+",人员性别:"+sex;
    }
}

3.编写增删的方法(dao层)

person中
// 1. 先解决初始化人的问题
void doInitPerson();
// 2. 新增一个人员到宿舍中
boolean doAddPersonToRoom(Person person);
//3.删除人员
void doDelPersonFromRoom(int id);
//4.修改人员
boolean doUpdate(Person person);
//5.根据id查找人员
void findPerson(int id);
// 6. 全查住宿信息
void doPrintAll();

room中
// 1. 准备好宿舍 , 为了给别人住的
Room[] getRooms();

4.编写impl下的代码
room下

Room[] rooms = new Room[10];

/**
 * 1. 获取宿舍提供有效住宿房间
 * @return 多个房间返回
 */
@Override
public Room[] getRooms() {

    // (1)定义前6个房间为男生宿舍
    for(int i =0;i<=5;i++){
        rooms[i] = new Room((i+100),new Person[6],"男");
    }

    // (2)定义后4个房间为女生宿舍
    for(int i=6;i<rooms.length;i++){
        rooms[i] = new Room((i+100),new Person[6],"女");
    }

    return rooms;
}

person下

// 获取宿舍部分
RoomDaoImpl rdi = new RoomDaoImpl();
Room[] rooms = rdi.getRooms();

/**
 * 1. 初始化人
 */
@Override
public void doInitPerson() {
    Person p1 = new Person(1001,"刘德华","男");
    Person p2 = new Person(1002,"刘烨","男");

    Person p3 = new Person(1003,"刘若英","女");

    rooms[0].getPeople()[0] = p1;
    rooms[0].getPeople()[1] = p2;

    rooms[6].getPeople()[0] = p3;
}


/**
 * 2. 新增数据
 * @param person : 来源来自于PersonUtil
 * @return true 代表成功,false 代表失败
 */
@Override
public boolean doAddPersonToRoom(Person person) {
    // 首先应该找到空宿舍 : 对应到相应的男生宿舍还是女生宿舍
    if(person.getSex().equals("男")){        // 代表男生宿舍
        for(int i=0;i<6;i++){   // 宿舍
            for(int j=0;j<rooms[i].getPeople().length;j++){ // 每个宿舍的人
                if(rooms[i].getPeople()[j]==null){
                    rooms[i].getPeople()[j] = person;
                    return true;
                }
            }
        }
    }else if(person.getSex().equals("女")){  // 代表女生宿舍
        for(int i=6;i<rooms.length;i++){   // 宿舍
            for(int j=0;j<rooms[i].getPeople().length;j++){ // 每个宿舍的人
                if(rooms[i].getPeople()[j]==null){
                    rooms[i].getPeople()[j] = person;
                    return true;
                }
            }
        }
    }
    return false;
}

/**
 * 删除人员
 * @param person
 */
@Override
public void doDelPersonFromRoom(int id) {
    for (int i=0;i<rooms.length;i++){
        if (rooms[i].getPeople()!=null){
            for (int j=0;j<rooms[i].getPeople().length;j++){
                if (rooms[i].getPeople()[j]!=null){
                    if (rooms[i].getPeople()[j].getPid()== id){
                        rooms[i].getPeople()[j]=null;
                        System.out.println("删除成功");
                        break;
                    }else {
                        System.out.println("人员不存在");
                        break;
                    }
                }
            }
            break;
        }
    }
}
@Override
public boolean doUpdate(Person person) {
    return false;
}

@Override
public void findPerson(int id) {
    for (int i=0;i<rooms.length;i++){
        if (rooms[i].getPeople()!=null){
            for (int j=0;j<rooms[i].getPeople().length;j++){
                if(rooms[i].getPeople()[j]!=null){
                    if (rooms[i].getPeople()[j].getPid()==id){
                        System.out.println(rooms[i].getPeople()[j]);
                        break;
                    }else {
                        System.out.println("人员不存在");
                    }
                }
            }break;
        }
    }
}
/**
 * 6. 打印住宿的所有信息
 */
@Override
public void doPrintAll() {
    // 首先需要找到宿舍
    for(int i=0;i<rooms.length;i++){

        int num = 0;    // 刚开始每个宿舍都是没有人的

        // 打印住宿人员信息
        if(rooms[i].getPeople()!=null){
            for(int j=0;j<rooms[i].getPeople().length;j++){
                if(rooms[i].getPeople()[j]!=null){
                    num ++;
                }
            }
            // 打印宿舍的信息
            System.out.println("当前宿舍为:"+rooms[i].getRid()+",此宿舍当前人数为:"+num+",宿舍类型为:"+rooms[i].getType()+"生宿舍");

            for(int j=0;j<rooms[i].getPeople().length;j++){
                if(rooms[i].getPeople()[j]!=null){
                    System.out.println(rooms[i].getPeople()[j]);
                }
            }
        }
        System.out.println();
    }
}

}

5.编写service层

  // 1. 先解决初始化人的问题
    void doInitPerson();
    // 2. 新增一个人员到宿舍中
    boolean doAddPersonToRoom(Person person);
    //3.删除人员
    void doDelPersonFromRoom(int id);
    //5.根据id查找人员
    void findPerson(int id);
    // 6. 全查住宿信息
    void doPrintAll();

6.编写service下impl

public class PersonServiceImpl implements PersonService {
    PersonDaoImpl pdidao = new PersonDaoImpl();
    @Override
    public void doInitPerson() {
        pdidao.doInitPerson();
    }

    @Override
    public boolean doAddPersonToRoom(Person person) {
        boolean b =  pdidao.doAddPersonToRoom(person);
        if(b){
            System.out.println("新增成功!");
            return true;
        }else{
            System.out.println("新增失败!");
            return false;
        }
    }

    @Override
    public void doDelPersonFromRoom(int id) {
        pdidao.doDelPersonFromRoom(id);
    }

    @Override
    public void findPerson(int id) {
        pdidao.findPerson(id);
    }

    @Override
    public void doPrintAll() {
        pdidao.doPrintAll();
    }

}

7.编写util层(为增和查找)

Scanner in = new Scanner(System.in);

    // 1. 获取到新的人员对象
    public Person getPerson(String str) {
        System.out.println("请您输入需要" + str + "的人员编号:");
        int pid = in.nextInt();
        System.out.println("请您输入需要" + str + "的人员名称:");
        String name = in.next();
        System.out.println("请您输入需要" + str + "的人员性别:");
        String sex = in.next();

        Person person = new Person(pid, name, sex);
        return person;
    }
    public int getPersonId(String str) {
        System.out.println("请您输入需要" + str + "的人员编号:");
        int id = in.nextInt();
        return id;
    }

8.ui界面层显示

  Scanner in = new Scanner(System.in);

    PersonServiceImpl psi = new PersonServiceImpl();
    PersonUtil personUtil = new PersonUtil();

    public void getMenu(){
        System.out.println("\t欢迎使用宿舍管理系统");

        // 初始化
        psi.doInitPerson();

        System.out.println("1.宿舍管理\t2.注销用户\t3.退出软件");
        System.out.println("请选择菜单(1-2):");
        int choice = in.nextInt();
        switch (choice){
            case 1:
                // 实现宿舍管理
                getSusheMenu();
                break;
            case 2:
                // 返回登录页面
                break;
            case 3:
                System.exit(0);
                break;
        }
    }

    public void getSusheMenu(){
        System.out.println("1.增加人员\t2.删除人员\t3.修改人员\t4.单查信息\t5.全查信息\t6.返回上层");
        System.out.println("请选择菜单(1-6):");
        int choice = in.nextInt();
        switch (choice){
            case 1:
                Person person = new PersonUtil().getPerson("新增");
                psi.doAddPersonToRoom(person);
                psi.doPrintAll();
                break;
            case 2:
                int m=personUtil.getPersonId("删除");
                psi.doDelPersonFromRoom(m);
                break;
            case 3:
                break;
            case 4:
                int n=personUtil.getPersonId("查询");
                psi.findPerson(n);
                break;
            case 5:
                psi.doPrintAll();
                break;
            case 6:
                getMenu();
                break;
            case 7:
                System.exit(0);
        }
    }

    public static void main(String[] args) {
    //显示界面
        new AppUi().getMenu();
    }

三,显示结果(前面的女生管理没有删除,就当不存在了)
在这里插入图片描述

在Java中使用数组实现增删改查的基本操作可以通过编写相应的方法来完成。以下是一个简单的例子,演示如何在数组实现这些基本操作: ```java public class ArrayCRUD { private int[] data; // 假设数组中存储的是整型据 private int size; // 当前数组中元素的量 public ArrayCRUD(int capacity) { this.data = new int[capacity]; this.size = 0; } // 增加元素 public void add(int element) { ensureCapacity(); data[size++] = element; } // 删除指定位置的元素 public int delete(int index) { if (index >= size || index < 0) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } int removedElement = data[index]; for (int i = index; i < size - 1; i++) { data[i] = data[i + 1]; } size--; return removedElement; } // 修改指定位置的元素 public void update(int index, int element) { if (index >= size || index < 0) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } data[index] = element; } // 查询指定位置的元素 public int get(int index) { if (index >= size || index < 0) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } return data[index]; } // 确保数组有足够的容量 private void ensureCapacity() { if (size == data.length) { int oldCapacity = data.length; int newCapacity = oldCapacity + (oldCapacity >> 1); data = java.util.Arrays.copyOf(data, newCapacity); } } // 获取当前数组中的元素量 public int getSize() { return size; } } ``` 这个简单的类`ArrayCRUD`实现了基本的增删改查操作。这里仅提供了一个框架,具体实现可能需要根据实际应用场景进行调整。例如,在实际应用中可能需要处理数组扩容、异常情况、输入验证等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值