学习目标:
基于对象数组与管理以及以往学习,优化学生信息管理系统
学习内容:
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);
}
}