当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/S-YAnLEi/p/7492794.html

相关文章:

  • js和JQuery区别
  • Puppet apply命令参数介绍(五)
  • Spring中Bean的depends-on属性
  • esxi嵌套华为Fusioncomputer安装VRM几个关键步骤。
  • SQL Server 中的6种事务隔离级别简单总结
  • 《区块链原理、设计与应用》一3.1 应用场景概览
  • json数据导出excel
  • spring cloud 学习(9) - turbine stream无法在eureka注册的解决办法
  • 什么是Ubuntu的云计算?
  • 高危预警!移动设备安全面临的5大新型威胁
  • IOCP vs EPOLL
  • 体验Windows Mobile 6.5 (模拟器)
  • 这是要逆天么,看我控制台程序玩Microsoft XPS Document 打印
  • Spring Cloud中负载均衡器概览
  • 文件特殊权限:SUID,SGID,SBIT
  • [iOS]Core Data浅析一 -- 启用Core Data
  • crontab执行失败的多种原因
  • Docker 笔记(2):Dockerfile
  • es6要点
  • extjs4学习之配置
  • HTML中设置input等文本框为不可操作
  • Java Agent 学习笔记
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • leetcode388. Longest Absolute File Path
  • Linux gpio口使用方法
  • log4j2输出到kafka
  • Node项目之评分系统(二)- 数据库设计
  • PHP 小技巧
  • Python语法速览与机器学习开发环境搭建
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 跨域
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 免费小说阅读小程序
  • 盘点那些不知名却常用的 Git 操作
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 区块链将重新定义世界
  • 算法---两个栈实现一个队列
  • 微信小程序:实现悬浮返回和分享按钮
  • 小程序开发中的那些坑
  • 学习HTTP相关知识笔记
  • 智能网联汽车信息安全
  • zabbix3.2监控linux磁盘IO
  • ​Python 3 新特性:类型注解
  • ​批处理文件中的errorlevel用法
  • #FPGA(基础知识)
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (+4)2.2UML建模图
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (6)添加vue-cookie
  • (8)STL算法之替换
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException