java面向对象的综合训练

题目

定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求2: 添加完毕之后,遍历所有学生信息。
要求3:通过 id 删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息。
要求5:查询数组 id 为“2"的学生,如果存在,则将他的年龄+1岁

分析

一、要求1

 1.定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,
Student [] students = new Student[3];
2.创建一个Student类
public class Student {
    private String name;
    private int ID;
    private int age;

    public Student() {
    }

    public Student(String name, int ID, int age) {
        this.name = name;
        this.ID = ID;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return ID
     */
    public int getID() {
        return ID;
    }

    /**
     * 设置
     * @param ID
     */
    public void setID(int ID) {
        this.ID = ID;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    
}
3.创建学生对象添加到数组中
Student stu1 = new Student("1",1,21);
Student stu2 = new Student("2",2,22);
Student stu3 = new Student("3",3,23);
students [0] = stu1;
students [1] = stu2;
students [2] = stu3;
4.再次添加一个学生对象
//创建学生4
Student stu4 = new Student("4",4,25)
5.并在添加的时候进行学号的唯一性判断。
  要考虑到情况如果数组没有存满,只获取到null前面的元素
 public static boolean contain(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            //从数组中依次获取数组对象
            Student stu = arr[i];
            if(stu != null){
                //获取数组对象中的ID值
                int newid = stu.getID();
                //判断数组中的ID和新增的ID是否相同
                if(newid == id){
                    return true;
                }
            }
        }
       return false;
    }
6.进行函数的调用
boolean flag = contain(students,4);
        if(flag){
            System.out.println("学号重复");
        }else {
            System.out.println("学号不重复,可添加");
        }
7.添加学号
  注意:
  如果初始创建的数组已满,那么就新建一个数组,将所有元素存放进去,
  如果没有满,那么直接存入
  下面就要判断数组中到底有没有存满,存了几个元素。
int count = getnumber(students);
            if(count == students.length){
                //要创建一个新数组
            }else{
                //count所代表的值是数组中存了几个元素
                //现在显示的有空,因为数组从0开始,所以count的值,就是新元素的数组索引值
                students[count] = stu4;
            }
定义一个方法,得到数组中的元素个数
public static int getnumber(Student[] arr){
        int count =0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                count++;
            }
        }
        return count;
    }
8.如果没有存满,现在就写个方法定义一个新数组
public static Student[] newarr(Student[] arr){
        Student [] arr1 = new Student[arr.length+1];
        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
        }
         return arr1;
    }
9.然后进行函数的调用
if(count == students.length){
                //要创建一个新数组
                Student[] arr = newarr(students);
                arr[count] = stu4;

二、要求2

1.添加完毕之后,遍历所有学生信息。
  定义一个打印函数。
public static void print(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu2 = arr[i];
            if(stu2 != null){
                System.out.println(stu2.getName()+","+stu2.getAge()+","+stu2.getID());
            }
        }
    }
2.调用打印方法
if(count == students.length){
                //要创建一个新数组
                Student[] arr = newarr(students);
                arr[count] = stu4;
                print(arr);
            }else{
                //count所代表的值是数组中存了几个元素
                //现在显示的有空,因为数组从0开始,所以count的值,就是新元素的数组索引值
                students[count] = stu4;
                print(students);
            }
小结
要求一 ,要求二结果

请添加图片描述

三、要求3、4

1.通过 id 删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
定义一个deleteId方法,寻找索引
public static int delete(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            //依次得到数组元素
            Student stu = arr[i];
            //判断元素是否为空,如果不为空,则找出索引,否则返回-1
            if(stu!=null){
                int sid = stu.getID();
                if(sid == id){
                    return i;
                }
            }
        }
        return -1;
    }
2.调用deleteId方法
//找到id在数组中的索引
        int  deleteID = delete(students,4);
        if(deleteID>=0){
        //直接将元素置空
            students[deleteID] = null;
           //打印数组元素
            print(students);
        }else{
            System.out.println("删除失败");
        }

三、要求5

查询数组 id 为“2"的学生,如果存在,则将他的年龄+1岁
先获得id为2的索引值,再让年龄加一即可
int Index = delete(students,2);
        //判断索引
        if(Index >=0){
            //找到对应的元素
            Student stu = students[Index];
            int newage = stu.getAge()+1;
            stu.setAge(newage);
        }

完整代码

public class text1 {
    public static void main(String[] args) {
        Student [] students = new Student[3];
        Student stu1 = new Student("1",1,21);
        Student stu2 = new Student("2",2,22);
        Student stu3 = new Student("3",3,23);
        Student stu4 = new Student("4",4,25);
        students [0] = stu1;
        students [1] = stu2;
        students [2] = stu3;
        boolean flag = contain(students,4);
        //定义一个新数组
        Student[] arr = newarr(students);
        //判断学号是否重复
        if(flag){
            System.out.println("学号重复");
        }else {
            System.out.println("学号不重复,可添加");
            int count = getnumber(students);
            if(count == students.length){
                //要创建一个新数组

                arr[count] = stu4;
                print(arr);
            }else{
                //count所代表的值是数组中存了几个元素
                //现在显示的有空,因为数组从0开始,所以count的值,就是新元素的数组索引值
                students[count] = stu4;
                print(students);
            }
        }
        //找到id在数组中的索引
        int  deleteID = delete(students,4);

        if(deleteID>=0){
            students[deleteID] = null;
            print(students);
        }else{
            System.out.println("删除失败");
        }
        int Index = delete(students,1);
        if(Index >=0){
            Student stu = students[Index];
            int newage = stu.getAge()+1;
            stu.setAge(newage);
            //遍历数组
            print(arr);
        }else{
            System.out.println("找不到");
        }
    }

    /*
    通过 id 删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
    通过查找ID
     */

    public static int delete(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            //依次得到数组元素
            Student stu = arr[i];
            if(stu!=null){
                int sid = stu.getID();
                if(sid == id){
                    return i;
                }
            }
        }
        return -1;

    }
    public static void print(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu2 = arr[i];
            if(stu2 != null){
                System.out.println(stu2.getName()+","+stu2.getAge()+","+stu2.getID());
            }
        }
    }
    public static Student[] newarr(Student[] arr){
        Student [] arr1 = new Student[arr.length+1];
        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
        }
         return arr1;
    }



    public static int getnumber(Student[] arr){
        int count =0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=null){
                count++;
            }
        }
        return count;
    }

    //再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
    public static boolean contain(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            //从数组中依次获取数组对象
            Student stu = arr[i];
            if(stu != null){
                //获取数组对象中的ID值
                int newid = stu.getID();
                //判断数组中的ID和新增的ID是否相同
                if(newid == id){
                    return true;
                }
            }
        }
       return false;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面向对象与多线程综合实验是一个综合性实验,旨在帮助学生巩固Java面向对象和多线程的相关知识,并应用在实际编程中。 在这个实验中,学生需要设计一个简单的图书管理系统,该系统可以管理图书的借阅和归还,并包含一些基本的图书信息管理功能。这个系统应该基于面向对象的设计原则,将图书、借阅者和库存等概念抽象为对象,并建立它们之间的关联关系。 为了提高系统的并发性能,学生还需要使用多线程编程技术,将借阅和归还的操作并行执行。可以使用线程池来管理多个借阅和归还的线程,并使用锁机制来确保借阅和归还操作的安全性,避免并发访问冲突。 在实验过程中,学生需要实现以下主要功能: 1. 图书的添加、删除和查询功能:学生可以定义一个图书类,包含图书的基本信息,如书名、作者、ISBN等。通过使用面向对象的思想,学生可以设计一个图书管理类,实现图书的添加、删除和查询等功能。 2. 借阅和归还功能:学生可以定义一个借阅者类,包含借阅者的基本信息,如姓名学号等。通过使用面向对象的思想,借阅者和图书之间可以建立关联关系。学生需要实现借阅和归还的功能,并确保借阅者不能借阅超过一定数量的图书。 3. 多线程处理:学生可以使用多线程编程技术,将借阅和归还的操作并行执行。可以使用线程池来管理多个借阅和归还的线程,并使用锁机制来确保借阅和归还操作的安全性,避免并发访问冲突。 通过完成这个实验,学生可以加深对Java面向对象和多线程的理解,同时也能提高编程的能力和实践经验。此外,这个实验还可以帮助学生培养分析和解决问题的能力,提高软件开发的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值