Java听课笔记7.1(鸡舍管理系统,面向对象之对象数组与管理)

1.对象数组就是数组中里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组。

正常数组:
int [ ] cs= new int[10];
示例:
Chicken[ ] cs=new Chicken [10];

使用对象数组实现多个Chicken的管理。
在这里插入图片描述
动态数组:
1.数组是一种线性数据结构
2.数组不适合做 插入(插入操作也得挪) 删除 等操作,适合添加,查找,遍历

package test;

import java.util.Arrays;
import java.util.Scanner;

public class test{
	
	public static void main(String[] args){
		 ChickenManager cm=new ChickenManager(5);
		 //添加
		 cm.add(new Chicken(1,"小一",11));
		 cm.add(new Chicken(2,"小二",12));
		 cm.add(new Chicken(3,"小三",13));
		 cm.add(new Chicken(4,"小四",14));
		 cm.add(new Chicken(5,"小五",15));
		 cm.add(new Chicken(6,"小六",16));
		 
		 System.out.println("数组的长度是"+cm.length());
		 
		 //键盘获得查询ID号
		 System.out.println("------find-------");
		 System.out.println("请输入要查找的ID号(ID号<="+cm.getCount()+")");
		 Scanner sc=new Scanner(System.in);
	     int id = sc.nextInt();
	     while(id>cm.getCount()){
	    	 System.out.println("没有,请重新输入");
	    	 id=sc.nextInt();
	     }
	     //调用查询和全部显示
	     Chicken c=cm.find(id);
	     c.print();
		 System.out.println("------find all-------");
		 cm.printAll();
		 
		 System.out.println("------update-------");
		 cm.update(new Chicken(1,"新一",12));
		 cm.printAll();

		 System.out.println("------delete-------");
		 cm.delete(id);
		 cm.printAll();

	     
	     		 
	}
	
}

//小鸡管理类
class ChickenManager{
	
	public ChickenManager(){}
	private Chicken[] cs=null;
	private int count=0;//记录当前数组的元素个数(下标)
	
	public ChickenManager(int size){ 
		if (size>0){
			cs=new Chicken[size];
		}else{
			cs=new Chicken[5];
		}
	}
	
	//打印数组长度
	public int length(){
		return cs.length;
	}
	//小鸡基本操作方法
	//添加
	public void add(Chicken c){
		if(getCount()>=cs.length){
			//数组已满,需要扩充
			//算法一:扩充原来数组大小的一半 cs.length *3/2+1
			//算法二:扩充原来数组的一倍 cs.length*2
			int newlength =cs.length*2;
			//前面是原数组,后面是新的长度
			cs=Arrays.copyOf(cs, newlength);
		}
			cs[getCount()]=c;
			setCount(getCount() + 1);
		
	}
	//删除
	public void delete(int id){
		Chicken c=new Chicken();
		for(int i=0;i<count;i++){//外层循环找到要删除的ID
			if(cs[i].getId()==id){//找到了要删除的对象,把该对象之后的对象向前移动一位		
				for(int j=i;j<=count-1-i;count++){
					cs[j]=cs[j+1];
				}
				//把最后一个对象赋值为空(删除)
				cs[count]=null;
				count--;//下标减一
				break;
			}
		}
		
		
	}
	//更新
	public void update(Chicken c){
		Chicken temp=find(c.getId());
		if(temp!=null){
			temp.setName(c.getName());						
			temp.setAge(c.getAge());

		}
	}
	//查找
	public Chicken find(int id){
		for (int i=0;i<getCount();i++){
			if (cs[i].getId()==id){
				return cs[i];
			}
		}
		return null;
		}
	//输出所有
	public void printAll(){
		for(int i=0;i<getCount();i++){
			cs[i].print();
		}
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	
	
}


//小鸡类(数据对象)value object(vo)/实体类/传输对象dto
class Chicken{
	private int id;
	private String name;
	private int age;
	public Chicken(){}//一般情况下最好保留默认的构造方法
	public Chicken(int id ,String name,int age){
		this.id=id;
		this.name=name;
		this.age=age;
	}//设置三个私有参数的getter and setter方法
	public void setId(int id){
		this.id=id;
	}
	public int getId(){
		return id;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void setAge(int age){
		this.age=age;
	}
	public int getAge(){
		return age;
	}
	//设置查看方法
	public void print(){
		System.out.println("姓名是"+name+",年龄是"+age+",id是"+id);
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值