练习----学生管理系统

/*
 * 学生管理系统
 * 
 * 1.定义学生类
 * 2.学生管理系统的主界面的代码编码
 * 3.学生管理系统的查看所有学生的代码编写
 * 4.学生管理系统的添加学生的代码编写
 * 5.学生管理系统的删除学生的代码编写
 * 6.学生管理系统的修改学生的代码编写
 * 
 */
public class StudentManager {
	public static void main(String[] args) {
		ArrayList<Student> arrl=new ArrayList<Student>();
	
	while (true) {
		System.out.println("--------欢迎来到学生管理系统--------");
		System.out.println("1.查看所有学生信息");
		System.out.println("2.添加学生信息");
		System.out.println("3.删除学生信息");
		System.out.println("4.修改学生信息");
		System.out.println("5.退出");
		System.out.println("请输入你的选择");

		Scanner sc = new Scanner(System.in);
		String xuanze = sc.nextLine();
		switch (xuanze) {
		case "1":
			// 1.查看所有学生
			findAllStudent(arrl);
			break;
		case "2":
			// 2.添加学生
			addStudent(arrl);
			break;
		case "3":
			// 3.删除学生
			deleteStudent(arrl);
			break;
		case "4":
			// 4.修改学生
			updateStudent(arrl);
			break;
		case "5":
			// 5.退出
		default:
			System.out.println("感谢使用");
			System.exit(0);
			break;		
		}		
	}
}



public static void findAllStudent(ArrayList<Student> arrl){
	if(arrl.size()==0){
		System.out.println("暂无信息,返回上一层");
		//return是不往下执行的意思,并不是返回值
		return;
	}
	//  \t是tap键的文字写法
	System.out.println("学号\t姓名\t年龄\t性别\t家庭地址");	
	for(int a=0;a<arrl.size();a++){
		Student s=arrl.get(a);
		System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getXingbie()+"\t"+s.getAddress());
	}	
}



public static void addStudent(ArrayList<Student> arrl){

	//1.键盘输入学生信息
	Scanner sc=new Scanner(System.in);
	//定义对象id放这里,因为放while里面,下面外面的代码会报错
	String id;	
	
	//循环判断学号有没有被人占用
	while(true){
		System.out.println("请输入学号:");
		id=sc.nextLine();
		//标记
		boolean flag=false;
		//遍历集合
		for(int a=0;a<arrl.size();a++){
			//定义对象s接收集合索引a的元素
			Student s=arrl.get(a);
			//如果对象s接收的元素和键盘输入的元素一样,标记变成true,break退出for循环
			if(s.getId().equals(id)){
				flag=true;
				break;
			}	
		}
		//如果标记flag变成true,继续循环,false就跳出while循环
		if(flag){
			System.out.println("输入的学号重复,重新输入");
		}else{
			break;
		}
	}
	
	System.out.println("请输入姓名:");
	String name=sc.nextLine();
	System.out.println("请输入年龄:");
	String age=sc.nextLine();
	System.out.println("请输入性别:");
	String xingbie=sc.nextLine();
	System.out.println("请输入家庭地址:");
	String address=sc.nextLine();
	//2.把输入的信息通过方法存到学生类
	Student s=new Student();
	s.setId(id);
	s.setName(name);	
	s.setAge(age);	
	s.setXingbie(xingbie);	
	s.setAddress(address);	
	//3.把学生类的信息加到集合中
	arrl.add(s);
	System.out.println("信息添加成功");
}



public static void deleteStudent(ArrayList<Student> arrl){
	//创建键盘输入,输入学号
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入要删除学生的学号");
	String id=sc.nextLine();
	//标记,索引=-1表示不存在
	int index=-1;
	//循环比较集合中是否有匹配的信息
	for(int a=0;a<arrl.size();a++){
		Student s=arrl.get(a);
		if(s.getId().equals(id)){
			//如果相同,进来,a赋值给index
			index=a;
			break;
		}
	}
	//如果index等于-1,说明上面if不成立,说明没找到,else则是找到了
	if(index==-1){
		
		System.out.println("未找到要删除的学生信息,重新输入");
	}else{
		arrl.remove(index);
		System.out.println("删除成功");
	}
}



public static void updateStudent(ArrayList<Student> arrl){
	//创建键盘输入
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入要修改学生的学号");
	String id=sc.nextLine();
	//标记,索引=-1时,不存在该元素
	int index=-1;
	//创建循环看集合中有没有匹配信息
	for(int a=0;a<arrl.size();a++){
		Student s=arrl.get(a);
		//如果找到集合中有匹配的信息,把索引a赋值给index,然后跳出for循环
		if(s.getId().equals(id)){
			index=a;
			break;

		}
	}
	//如果索引=-1,说明上面for循环中没有匹配的信息
	if(index==-1){
		System.out.println("未找到要修改的学生信息,请重新输入");
	}else{
		//键盘输入要修改的信息
		System.out.println("请输入姓名:");
		String name=sc.nextLine();
		System.out.println("请输入年龄:");
		String age=sc.nextLine();
		System.out.println("请输入性别:");
		String xingbie=sc.nextLine();
		System.out.println("请输入家庭地址:");
		String address=sc.nextLine();
		//2.把输入的信息通过方法存到学生类
		Student s=new Student();
		s.setId(id);
		s.setName(name);	
		s.setAge(age);	
		s.setXingbie(xingbie);	
		s.setAddress(address);	
		//3.把学生类的信息加到集合中
		//arrl.add(index, s);不能用这个,用这个的话,是新加上一条信息了
		arrl.set(index,s);
		System.out.println("信息添加成功");
	}
	
}
}

成功输入的截图

在这里插入图片描述

碰到的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

又做了一遍练习

package com.StudentManager;
    
import java.util.ArrayList;
import java.util.Scanner;

/*
 * 学生管理系统
 * 
 * 1.定义学生类
 * 2.学生管理系统的主界面的代码编码
 * 3.学生管理系统的查看所有学生的代码编写
 * 4.学生管理系统的添加学生的代码编写
 * 5.学生管理系统的删除学生的代码编写
 * 6.学生管理系统的修改学生的代码编写
 * 
 */
public class StudentManager {
	public static void main(String[] args) {
		// 创建一个集合对象
		ArrayList<Student> arrl = new ArrayList<Student>();

		while (true) {
			// 完成主界面
			System.out.println("--欢迎来到学生管理系统--");
			System.out.println("1.查看所有学生资料");
			System.out.println("2.添加新的学生信息");
			System.out.println("3.删除学生信息");
			System.out.println("4.修改学生信息");
			System.out.println("5.退出系统");
			// 创建键盘输入
			Scanner sc = new Scanner(System.in);
			String xuanze = sc.nextLine();
			// 通过键盘输入来选择以下
			switch (xuanze) {
			case "1":
				// 1.查看所有学生资料
				findAllStudent(arrl);
				break;
			case "2":
				// 2.添加新的学生信息
				addNewStudent(arrl);
				break;
			case "3":
				// 3.删除学生信息
				deleteStudent(arrl);
				break;
			case "4":
				// 4.修改学生信息
				updateStudent(arrl);
				break;
			case "5":
				// 5.退出系统
			default:
				System.out.println("感谢使用本系统");
				System.exit(0);
			}// 这个大括号是switch

		} // 这个大括号是while
	}// 这个大括号是main方法

	// 查看所有学生资料方法
	public static void findAllStudent(ArrayList<Student> arrl) {
		if (arrl.size() == 0) {
			System.out.println("对不起,暂时没有学生资料");
			return;
		}
		System.out.println("学号\t姓名\t年龄");
		for (int a = 0; a < arrl.size(); a++) {
			Student s = arrl.get(a);
			System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t");
		}
		System.out.println("已加载所有学生资料");
	}// 这个大括号是findAllStudent

	public static void addNewStudent(ArrayList<Student> arrl) {
		// 键盘输入
		Scanner sc = new Scanner(System.in);

		// 因为加了一个while循环,下面s.setId(id)报错了,于是就把id定义在外面了
		String id;
		while (true) {
			System.out.println("请输入学号");
			id = sc.nextLine();
			// 回过头来考虑,如果输入的学号跟已有的有重复,怎么办??
			// 首先定一个标记
			int index = -1;
			// 循环遍历出集合中已有的元素
			for (int a = 0; a < arrl.size(); a++) {
				Student s = arrl.get(a);
				// 如果集合已有的学号和键盘输入的学号相同,a赋值给index,循环结束
				if (s.getId().equals(id)) {
					index = a;
					break;
				}
			} // 这个大括号是for循环

			// 如果index=-1,说明上面遍历后没有相同的学号
			if (index == -1) {
				// 满足就跳出循环,注意如果不加break下面Syso("请输入姓名")报错,
				break;
			} else {
				System.out.println("输入的学号有重复,请重新输入");

			}
		} // 这个大括号是while

		System.out.println("请输入姓名");
		String name = sc.nextLine();
		System.out.println("请输入年龄");
		String age = sc.nextLine();
		// 键盘录入的信息赋值给学生类
		Student s = new Student();
		s.setId(id);
		s.setName(name);
		s.setAge(age);
		// 学生类的信息赋值给集合arrl
		arrl.add(s);
		System.out.println("添加成功");

	}// 这个大括号是addNewStudent

	public static void deleteStudent(ArrayList<Student> arrl) {

		// 键盘输入学号
		Scanner sc = new Scanner(System.in);
		if(arrl.size()==0){
			System.out.println("对不起,暂时没有学生资料");
			return;
		}

		while (true) {
			System.out.println("请输入要删除的学生学号");
			String id = sc.nextLine();
			// 标记
			int index = -1;
			// for循环找匹配信息
			for (int a = 0; a < arrl.size(); a++) {
				Student s = arrl.get(a);
				// 如果学号相同,进if,把a赋值给index
				if (s.getId().equals(id)) {
					index = a;
					break;
				}
			}
			// 如果标记==-1,说明没有匹配的学号,return重新输入
			if (index == -1) {
				System.out.println("输入的学号不存在,请重新输入");
			} else {
				arrl.remove(index);
				System.out.println("删除成功");
				return;
			}
		} // 这个大括号是while

	}// 这个大括号是deleteStudent

	public static void updateStudent(ArrayList<Student> arrl){
		
		//键盘输入学号
		Scanner sc=new Scanner(System.in);
		if(arrl.size()==0){
			System.out.println("对不起,暂时没有学生资料");
			return;
		}
		
		while(true){
		System.out.println("请输入要修改的学生学号");
		String id=sc.nextLine();
		int index=-1;
		//for循环找匹配信息
		for(int a=0;a<arrl.size();a++){
			Student s=arrl.get(a);
			//如果集合中找到和键盘输入相同的对象,a赋值给index
			if(s.getId().equals(id)){
				index=a;
			}
		}//这个大括号是for
		//如果index==-1,没找到匹配信息
		if(index==-1){
			System.out.println("输入的学号不存在,请重新输入");
		}else{
			
			System.out.println("请输入姓名");
			String name=sc.nextLine();
			System.out.println("请输入年龄");
			String age=sc.nextLine();
			
			Student s=new Student();
			s.setId(id);
			s.setName(name);
			s.setAge(age);
			
			arrl.set(index,s);
			System.out.println("修改成功");
			return;
		}
		}//这个大括号是while
		
	}//这个大括号是updateStudent
}// 这个大括号是类的

猜你喜欢

转载自blog.csdn.net/qq_44063001/article/details/85218474