Java日常学习027(基于对象数组与管理的学生信息管理系统的优化)

学习目标:

基于对象数组与管理以及以往学习,优化学生信息管理系统

学习内容:

package com.qf.lzp.system;

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

public class StuSystem {
public static void main(String[] args) {
StuManager cm = new StuManager(5);
boolean bool = true;
while (bool) {
System.out.println(“请输入你需要的操作:0、查看所有,1、增加,2、删除,3、查找,4、修改,-1、结束操作”);
Scanner input = new Scanner(System.in);
int a = input.nextInt();
switch (a) {
case 0:
cm.printAll();
break;
case 1:
cm.add();
break;
case 2:
System.out.println(“请输入需要删除的学生id:”);
int delcteId = input.nextInt();
cm.delete(delcteId);
break;
case 3:
System.out.println(“请输入需要查找的学生id:”);
int findId = input.nextInt();
cm.find(findId).print();
break;
case 4:
System.out.println(“请输入需要查找的学生id”);
cm.update(input.nextInt());
break;
case -1:
bool = false;
break;
default:
System.out.println(“输入错误,重新输入”);
}
}
}
}

//定义一个学生管理类
class StuManager {
private Stu[] cs = null;//定义一个空的数组
Scanner input = new Scanner(System.in);
private int count = 0;//记录当前数组的元素个数,

public StuManager() {
    cs = new Stu[5];
}

public StuManager(int size) {  //对数组申请空间
    if (size > 0) {
        cs = new Stu[size];
    } else {
        cs = new Stu[5];
    }
}

//增加:      实现动态数组,从而解决数组初始申请空间不足
public void add() {
    int z=0;
    System.out.println("请输入增加的学生的学生信息,id,name,age ");
    Stu stu=new Stu(input.nextInt(),input.next(),input.nextInt());
    for(int i=0;i<count;i++){
        if(cs[i].getId()==stu.getId()){
            z=1;
        }
    }
    if (stu.getId() == 0 || stu.getName() == null || stu.getAge() <= 0 || stu.getAge() > 50) {
        System.out.println("输入有误,添加失败");
    } else if(z==1) {
        System.out.println("该id已存在,添加失败");
    }else {
        if (count >= cs.length) {  //数组已满,需要扩充
            //算法1:每次扩充原来大小的一半  cs.length*3/2+1;
            //算法2:每次扩充原来的一倍     cs.length*2;
            int newLen = cs.length * 2;
            cs = Arrays.copyOf(cs, newLen);//通过Arrays工具类的copyof方法扩充
            cs[count] = stu;
            count++;
        } else {
            cs[count] = stu;
            count++;
        }
        System.out.println("添加成功");
    }
}

//删除
public void delete(int id) {
    int z=0;
    System.out.println("----------------");
    System.out.println(id);
    for (int i = 0; i < count; i++) {
        System.out.println(cs[i].getId());
        if (cs[i].getId() == id) {
            for (int j = i; j < count - 1; j++) {
                cs[j] = cs[j + 1];
            }
            cs[count - 1] = null;
            count--;
            z=1;
            break;
        }
    }
    if (z == 0) {
        System.out.println("未找到该id为:" + id + "对应的学生信息,删除失败");
    }
}

//查找
public Stu find(int id) {
    int i;
    for (i = 0; i < count; i++) {
        if (cs[i].getId() == id) {
            return cs[i];
        }
    }
    if (i==count) {
        System.out.println("未找到该id为:" + id + "对应的学生信息");
    }
    return null;
}
//修改
public void update(int id) {
    Stu stu = find(id);
    if (stu != null) {
        System.out.println("请输入修改后的name age:");
        stu.setName(input.next());
        stu.setAge(input.nextInt());
    } else {
        System.out.println("未找到该学生信息,无法修改,请进行添加该学生信息操作");
    }
}

//输出所有
public void printAll() {
    for (int i = 0; i < count; i++) {
        cs[i].print();
    }
    if (count == 0) {
        System.out.println("暂无数据,请先添加数据");
    }
}

}

//定义一个学生类(数据对象) value object (vo)
class Stu {
private int id;
private String name;
private int age;

public Stu() {
}

public Stu(int id, String name, int age) {
    this.id = id;
    this.name = name;
    this.age = age;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public void print() {
    System.out.println("id=" + id + " name=" + name + " age=" + age);
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值