實現學生對象的增刪改查數組
public class Student { static int num = 0; int id ; //系統自動生成id; String name; boolean gender; //true 男, false 女 //當初始化對象的時候調用構造方法,經過num自動生成id; public Student() { this.id = num++; } //爲了防止打印的是地址 @Override public String toString() { String temp = "男"; if (!gender) { temp = "女"; } String string = "學號是:" + this.id + "姓名是:" + this.name + "性別是:" + temp; return string; } }
管理類ide
public class Control {this
//數組
Student[] arr = new Student[2];
//記錄當前數組中存放幾個學生
int index = 0;
//初始化學生
void init (){
Student student = new Student();
student.name = "小敏";
student.gender = false;
student.id = 1;code
Student student1 = new Student(); student1.name = "小張"; student1.gender = true; student1.id = 2; arr[0] = student; arr[1] = student1; this.index = 2; //存放兩個學生;
}對象
public Control() {
this.init();
}
//1,顯示全部學生
void show() {
System.out.println("--------------");
//遍歷存儲的學生;
for (int i = 0; i < this.index; i++) {
//打印學生信息
System.out.println(arr[i]);
}
}string
//2,根據ID查找學生 (返回查找到的學生)
Student selectStudentById(int id) {
for (int i = 0; i < index; i++) {
//判斷,傳進去的ID和數組中的ID是否相同
if (this.arr[i].id == id) {
//若是相同,輸出這個對象
System.out.println(this.arr[i]);
return this.arr[i];
}
}
//若是代碼執行到這個位置沒有找到學生,返回null;
return null;
}it
//3,根據ID刪除學生;而且返回被刪除的元素對象
Student deleteStudentByid(int id) {
//若是ID小於0,直接返回空
if (id < 0) {
return null;
}
//先找到這個學生
int tag = -1; //假定的學生在數組中的位置,不能夠爲0;由於若是爲0,當沒有找到要刪除的學生的時候,就會把第0個元素的學生刪除.
for (int i = 0; i < index; i++) {
if (id == this.arr[i].id) { //找到這個學生
tag = i; //記錄他的下標
break;
}
}
if (tag == -1) { //說明沒有找到要刪除的學生;
return null;
}
//記錄要刪除的元素對象,根據記錄的tag去找
Student temp = this.arr[tag];
//刪除學生,後邊的元素向前移動一位;(若是有四個學生對象,刪除一個,因此只需移動三次便可,因此index要減一)
for (int i = 0; i < index - 1; i++) {
//後邊的元素前移;
this.arr[i] = this.arr[i+1];
}
index--;
return temp;
}class
//4,增長學生對象
void addStudent(Student st) {
//若是index < 數組的長度,直接添加元素
if (index < this.arr.length) {
this.arr[index] = st;
index++;
}else { //數組沒有空位置了
//擴充數組
this.expandArr();
//添加 當擴充完數組之後,index就小於數組的長度,上邊的判斷就能夠成立,,因此這裏調用方法自身;
this.addStudent(st);date
}
}select
//5,修改學生信息
void updateStudentByStudent(Student stu) {
//查找學生
Student st = this.selectStudentById(stu.id);
//修改
st.name = stu.name;
st.gender = stu.gender;
}
//擴充數組 void expandArr() { //建立一個新數組 (直接給他的長度加10,避免屢次增長長度) Student[] stus = new Student[this.arr.length + 10]; //把元素複製過去 for (int i = 0; i < index; i++) { //把舊數組的元素給新數組 stus[i] = this.arr[i]; } //新數組名存放的是地址,把這個地址再賦值給舊數組,因此經過舊數組訪問的也是新的元素 this.arr = stus; //把新數組賦值給數組; } }