Java學生管理系統

學生管理系統

實現學生對象的增刪改查數組

  • 學生類:
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; //把新數組賦值給數組; } }

相關文章
相關標籤/搜索