zoukankan      html  css  js  c++  java
  • 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;
    	}
    	}
    
    • 管理类

      public class Control {

      //数组
      Student[] arr = new Student[2];
      //记录当前数组中存放几个学生
      int index = 0;
      //初始化学生
      void init (){
      Student student = new Student();
      student.name = "小敏";
      student.gender = false;
      student.id = 1;

        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]);
      }
      }

      //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;
      }

      //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;
      }

      //4,增加学生对象
      void addStudent(Student st) {
      //如果index < 数组的长度,直接添加元素
      if (index < this.arr.length) {
      this.arr[index] = st;
      index++;
      }else { //数组没有空位置了
      //扩充数组
      this.expandArr();
      //添加 当扩充完数组以后,index就小于数组的长度,上边的判断就可以成立,,所以这里调用方法自身;
      this.addStudent(st);

        }
      

      }

      //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; //把新数组赋值给数组;
      }
      }

    小二寄语:感谢每一个看完这篇文章的人。希望我们可以在奋斗的路上砥砺前行!
  • 相关阅读:
    CentOS 7中cAdvisor的安装过程
    怎么查看centos版本
    使docker命令不用加sudo的方法
    Linux进程相关函数system,fork,exec函数族的区别
    git pre-commit hook failed 解决办法
    lint-staged 教程
    用webpack将多个scss文件打包成一个css文件
    js连按键盘事件
    vscode快捷键
    vim 操作命令大全
  • 原文地址:https://www.cnblogs.com/S-YAnLEi/p/7492794.html
Copyright © 2011-2022 走看看