ArrayList方式写学生管理系统

package homework;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentManagerArrayList extends Student {
	
	private List<Student> list = new ArrayList<>();
	private Scanner input = new Scanner(System.in);
	public void startMenm() {
		
		while(true) {
			
			
			System.out.println("=====欢迎来到xxxx的学生管理系统");
			System.out.println("1.增加学生");
			System.out.println("2.修改学生");
			System.out.println("3.删除学生 ");
			System.out.println("4.查询所有学生信息");
			System.out.println("5.根据学号查询学生信息");
			System.out.println("============================");
			System.out.println("请输入您的选择");
			int choice = input.nextInt();
			switch(choice) {
			case 1:
				addStudent();
				break;
			case 2:
				modifyStudent();
				break;
			case 3:
				deleteStudent();
				break;
			case 4:
				queryAll();
				break;
			case 5:
				queryById() ;
				break;
			default:
				System.out.println("输入错误,请重新输入!");
			
			}
			
		}

}
	public void addStudent() {
//		int index = judge();//调用数组是否满的对象,并赋值给index
//		if(index == -1) {
//			System.out.println("对不起,集合已满");//索引值为-1,数组已满
//		}else {	//索引值不为-1
				int index1 = 0;//定义就一个判断
				int id = 0;//定义一个学号
				while(index1 != -1) {//定义一个循环
					System.out.println("请输入学号");
					id = input.nextInt();//手动输入id
					index1 = existStu(id);//调用有参通过id查找对象的索引值,并赋值给index1,如果为-1则没有这个对象,打破循环,
				}

			System.out.println("请输出姓名");//输入对象的属性
			String name = input.next();
			System.out.println("请输出年龄");
			int age = input.nextInt();
			System.out.println("请输出性别");
			String sex = input.next();
			Student stu1 = new Student(name,id,age,sex);//创建一个Student对象并把地址给Student类的应用变量stu1
			list.add(stu1);//把对象赋值给数组中对应id的索引值的对象中
		}
		

//	}
//	private int judge() {//方法,返回数组中对象为null值的索引值,如果为-1表示数组已满
//		for(int i = 0;i < list.size();i++) {
//			if(list.get(i) == null) {
//				return i;
//			}
//		} 
//		return -1;
//	}
	public void modifyStudent() {
		int index = existStu();//调用无参通过id查对象的索引值
		if(index == -1) {//如果索引值为-1,则没有此人
			System.out.println("查无此人");
		}else {//如果索引值不为-1,通过父类方法修改属性
			System.out.println("请输出修改姓名");
			String name = input.next();
			System.out.println("请输出修改年龄");
			int age = input.nextInt();
			System.out.println("请输出修改性别");
			String sex = input.next();
			list.get(index).setName(name);
			list.get(index).setAge(age);
			list.get(index).setSex(sex);
			System.out.println("修改成功");
		}
			
			
		}
	public void deleteStudent() {
		int index = existStu();//调用无参通过学号查对象的索引值的方法
		if(index == -1) {//如果索引值为-1,表明没有这个对象
			System.out.println("查无此人");
		}else {
			list.remove(index);//如果不为-1,则将此索引值的对象赋值为null
		}
		
	}
	
	public void queryAll() {

		boolean flag = false;//定义一个判断
		for(Student st :list) {//遍历集合中的学生对象
			if(st != null) {
				System.out.println(st);//学生对象不为null,打印学生对象并把判断改为真
				flag = true;
			}

			}
		if(flag == false) {//遍历结束后,判断如果为假,说明数组里全部为null值,无任何对象
			System.out.println("暂无学生");
		}
		
	}
		public void queryById() {//用id查询集合中的对象

//		System.out.println(student[a-1]);
		int index = existStu();//调用无参返回索引值的方法
		if(index == -1) {
			System.out.println("查无此人");//如果索引值为-1,就没有此人
		}else {
			System.out.println(list.get(index));//打印该索引值的学生对象
		}
		}
		
		private int existStu() {//查询学生学号,如果有返回学生对象的索引值,没有返回-1
			System.out.println("请输入需要查询学生的学号学号");
			int id = input.nextInt();
			
			int index = -1;
			for(int i = 0; i<list.size();i++) {
				if( list.get(i).getId() == id) {
					index = i;
				}
			}
			return index;
			
		}
		private int existStu(int id) {//传入id查找索引值,如果有这个id返回的是这个对象的索引值,如果没有返回-1
//			System.out.println("请输入需要查询学生的学号学号");
//			int id = input.nextInt();
			int index = -1;
			for(int i = 0; i<list.size();i++) {
				if(list.get(i).getId() == id) {
					index = i;
				}
			}
			return index;

}
	}

你可能感兴趣的:(ArrayList方式写学生管理系统)