用集合做一个学生管理系统(JAVA)

这个集合做的学生管理系统功能还是很完备的

1.建一个学生实体类

public class Student implements Comparable{
	//如果还有什么想加的属性,直接在这里加就行了,记得加上get与set方法
	private String name;
	private String id;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String toString(){
		return "学号:"+getId()+" 姓名:"+getName()+" 年龄:"+getAge();
	}
	@Override
	public int compareTo(Object o) {
		return Integer.valueOf(this.getId())-Integer.valueOf(((Student)o).getId());
	}

2.建一个MainTest类(实现的代码全部都在这个类里面)

import java.util.*;

public class MainTest {
	static Scanner sc = new Scanner(System.in);
	//让所有方法都操作这一个集合
	static ArrayList<Student> al = new ArrayList<Student>();


	public static void main(String[] args) {
		run();
}


	//运行界面
	public static void run(){
		//1:添加信息  2:查询信息(学号)  3:查询信息(姓名)  4:修改信息(学号) 5:修改信息(姓名) 6:删除信息(学号) 7:删除信息(姓名) 8:查看全部  9:退出系统");	
		System.out.println("******************************************************欢迎进入学生管理系统******************************************************");
		while(true){
		System.out.println("1:添加信息  2:查询信息(学号)  3:查询信息(姓名)  4:修改信息(学号) 5:修改信息(姓名) 6:删除信息(学号) 7:删除信息(姓名) 8:查看全部  9:退出系统");
		int choice = sc.nextInt();
		switch(choice)
		{
		case 1:addMessage();break;
		case 2:serMessageById();break;
		case 3:serMessageByName();break;
		case 4:upMessageById();break;
		case 5:upMessageByName();break;
		case 6:delMessageById();break;
		case 7:delMessageByName();break;
		case 8:serAllMessage();break;
		case 9:System.out.println("谢谢使用!");System.exit(0);
		}
		}
	}

    //1.添加信息  将学号设为唯一的值
	public static void addMessage(){
		while(true){
			Student stu = new Student();
			System.out.println("请输入学生学号");
			String ID = sc.next();
			boolean boo = true;
			//进行学号唯一性检查,如果输入的学号已经存在于集合中,就让其重新输入,直至输入一个不存在的学号
			while(boo){
				boo = false;
				for(Student s : al){
					if(s.getId().equals(ID)){
						System.out.println("此学号已经存在,请重新输入学号!");
						ID = sc.next();
						boo = true;
						}
					}
				}
			stu.setId(ID);
			System.out.println("请输入学生姓名");
			stu.setName(sc.next());
			System.out.println("请输入学生年龄");
			stu.setAge(sc.nextInt());
			if(al.add(stu)){
				System.out.println("添加成功!");
				System.out.println("继续添加输入y");
				String chose = sc.next();
				String regex = "[y]";
				//利用递归来实现继续添加学生的功能
				if(chose.matches(regex)){
					addMessage();
				}
			}else{
				System.out.println("添加失败!");
			}
			break;
		}	
}
		
	//2.查询信息(学号)
	public static void serMessageById()
	{
		//这个判断是为了检测集合里有没有学生,如果没有的话提醒添加学生
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
		}else{
		int i;
		int count = 0;
		System.out.println("请输入学生学号:");
		String ID = sc.next();
		//因为学号唯一,所以只会有一条信息,没有其他的情况
		for(i=0;i<al.size();i++){
			if(al.get(i).getId().equals(ID)){
				System.out.println(al.get(i).toString());
				count++;
			}
		}
		//这个是一个标记,如果查找的学生存在的话,count不可能等于0,如果不存在这个学生,count等于0,然后报出未找到该学生的提示
		if(count == 0){
			System.out.println("未找到这个学生,请查证后再找!");
		}
	}
}
	//3.查询信息(姓名)
	public static void serMessageByName()
	{
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
		}else{
		//这个是为了给集合排序,让查找出来的学生按照ID的大小来排序
		Collections.sort(al);
		int i;
		int count = 0;
		System.out.println("请输入学生姓名:");
		String name = sc.next();
		for(i=0;i<al.size();i++){
			if(al.get(i).getName().equals(name)){
				System.out.println(al.get(i).toString());
				count++;
			}
		}
		if(count == 0){
			System.out.println("未找到这个学生,请查证后再找!");
		}
	}
}		
	//4.修改信息(学号)
	public static void upMessageById()
	{
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
			return;
		}
		int i;
		int count = 0;
		System.out.println("请输入学生学号:");
		String ID = sc.next();
		//遍历集合
		for(i=0;i<al.size();i++){
			//找到该学生
			if(al.get(i).getId().equals(ID)){
				System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
				count++;
				//提供四种修改方式
				System.out.println("1.修改学号	2.修改姓名	3.修改年龄 	4.全部修改	5.取消修改");
                switch (sc.nextInt())
                {
                    case 1:
                    	System.out.println("请输入新学号");
            		    String newID = sc.next();
            			boolean boo = true;
            			//进行学号唯一性检查
            			while(boo){
            				boo = false;
            				for(Student s : al){
            					//如果输入的是自己查的那个学号,改成自己的学号是没有问题的
            					if(newID.equals(ID)){
            						//这句话删除也是没有问题的,只是提示一下
            						System.out.println("请注意你输入的是当前学生的学号");
            						al.get(i).setId(newID);
            						break;
            					}else if(s.getId().equals(newID)){
            						System.out.println("此学号已经存在,请重新输入学号!");
            						newID = sc.next();
            						boo = true;
            						}else{
            						al.get(i).setId(newID);
            						}
            					}
            				}
                        System.out.println("修改成功,该生此后的学号为:"+al.get(i).getId());
                        break;
                    case 2:
                        System.out.println("输入新姓名");
                        al.get(i).setName(sc.next());
                        System.out.println("修改成功,该生此后的姓名为:"+al.get(i).getName());
                        break;
                    case 3:
                        System.out.println("输入新年龄");
                        al.get(i).setAge(sc.nextInt());
                        System.out.println("修改成功,该生此后的年龄为:"+al.get(i).getAge());
                        break;
                    case 4:
                        System.out.println("请输入新学号");
            		    newID = sc.next();
            		    boo = true;
            			//进行学号唯一性检查
            			while(boo){
            				boo = false;
            				for(Student s : al){
            					if(newID.equals(ID)){
            						System.out.println("请注意你输入的是当前学生的学号");
            						al.get(i).setId(newID);
            						break;
            					}else if(s.getId().equals(newID)){
            						System.out.println("此学号已经存在,请重新输入学号!");
            						newID = sc.next();
            						boo = true;
            					}else{
            						//上面都没走的话就走这一步,不管循环几次,newID的值最终都是你输入的那个
                                    al.get(i).setId(newID);
            					}
            				}
            			}
            			System.out.println("输入新姓名");
                        String name = sc.next();
                        System.out.println("输入新年龄");
                        int age = sc.nextInt();
                        al.get(i).setName(name);
                        al.get(i).setAge(age);
                        System.out.println("修改成功,该生此后的信息为:"+al.get(i).toString());
                        break;
                    case 5:
                    	break;
                    default:
                        System.out.println("请输入正确的数字!");
                        break;
                }
			}
		}
		if(count == 0){
			System.out.println("未找到这个学生,请查证后再找!");
		}
	}
	//5.修改信息(姓名)
	public static void upMessageByName()
	{
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
			return;
		}
		int i;
		int count = 0;
		System.out.println("请输入学生姓名:");
		String name = sc.next();
		//注意,学生姓名不唯一,可重复,可能有好几个同姓的
		for(i=0;i<al.size();i++){
			if(al.get(i).getName().equals(name)){
				System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
				count++;
				System.out.println("1.修改学号	2.修改姓名	3.修改年龄 	4.全部修改	5.取消修改");
                switch (sc.nextInt())
                {
                    case 1:
                    	System.out.println("请输入新学号");
                    	String ID = al.get(i).getId();
            		    String newID = sc.next();
            			boolean boo = true;
            			//进行学号唯一性检查
            			while(boo){
            				boo = false;
            				for(Student s : al){
            					if(ID.equals(newID)){
            						System.out.println("请注意你输入的是当前学生的学号");
            						al.get(i).setId(newID);
            						break;
            					}else if(s.getId().equals(newID)){
            						System.out.println("此学号已经存在,请重新输入学号!");
            						newID = sc.next();
            						boo = true;
            						}else{
            	                    al.get(i).setId(newID);
            						}
            					}
            				}
                        System.out.println("修改成功,该生此后的学号为:"+al.get(i).getId());
                        break;
                    case 2:
                        System.out.println("输入新姓名");
                        al.get(i).setName(sc.next());
                        System.out.println("修改成功,该生此后的姓名为:"+al.get(i).getName());
                        break;
                    case 3:
                        System.out.println("输入新年龄");
                        al.get(i).setAge(sc.nextInt());
                        System.out.println("修改成功,该生此后的年龄为:"+al.get(i).getAge());
                        break;
                    case 4:
                        System.out.println("请输入新学号");
                        ID = al.get(i).getId();
            		    newID = sc.next();
            			boo = true;
            			//进行学号唯一性检查
            			while(boo){
            				boo = false;
            				for(Student s : al){
            					if(ID.equals(newID)){
            						System.out.println("请注意你输入的是当前学生的学号");
            						al.get(i).setId(newID);
            						break;
            					}else if(s.getId().equals(newID)){
            						System.out.println("此学生学号已经存在,请重新输入学号!");
            						newID = sc.next();
            						boo = true;
            						}else{
            							al.get(i).setId(newID);
            						}
            					}
            				}
            			System.out.println("输入新姓名");
                        String nam = sc.next();
                        System.out.println("输入新年龄");
                        int age = sc.nextInt();
                        al.get(i).setName(nam);
                        al.get(i).setAge(age);
                        System.out.println("修改成功,该生此后的信息为:"+al.get(i).toString());
                        break;
                    case 5:
                    	break;
                    default:
                        System.out.println("请输入正确的数字!");
                        break;
                }
			}
		}
		if(count == 0){
			System.out.println("未找到这个学生,请查证后再找!");
		}
	}
	//6.删除信息(学号)
	public static void delMessageById()
	{
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
			return;
		}
		int i;
		int count = 0;
		//分两种情况来删除
		System.out.println("1.删除某学生	2.清空所有学生信息");
		int input = sc.nextInt();
		if(input==1){
			System.out.println("请输入学生学号:");
			String ID = sc.next();
			for(i=0;i<al.size();i++){
				if(al.get(i).getId().equals(ID)){
					System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
					count++;
					System.out.println("确认删除请输入y,否则输入n");
					String chose = sc.next();
					if(chose.equals("y")){
						al.remove(i);
						System.out.println("删除完毕!");
					}
			}
		}
			if(count == 0){
				System.out.println("未找到这个学生,请查证后再找!");
			}
	}else if(input==2){
		System.out.println("确认清空请输入y,否则输入n");
		String chose = sc.next();
		if(chose.equals("y")){
			if(al.removeAll(al)){
				System.out.println("清空完毕!");
			}else{
				System.out.println("清空失败!");
			}
		}
	}
		
}
	//7.删除信息(姓名)
	public static void delMessageByName()
	{
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
			return;
		}
		int i;
		int count = 0;
		System.out.println("1.删除某学生	2.清空所有学生信息");
		int input = sc.nextInt();
		if(input==1){
			System.out.println("请输入学生姓名:");
			String name = sc.next();
			for(i=0;i<al.size();i++){
				if(al.get(i).getName().equals(name)){
					System.out.println("找到该学生,该生信息为:"+al.get(i).toString());
					count++;
					System.out.println("确认删除请输入y,否则输入n");
					String chose = sc.next();
					if(chose.equals("y")){
						al.remove(i);
						System.out.println("删除完毕!");
					}
				}
		}
			if(count == 0){
				System.out.println("未找到这个学生,请查证后再找!");
			}
	}else if(input==2){
		System.out.println("确认清空请输入y,否则输入n");
		String chose = sc.next();
		if(chose.equals("y")){
			if(al.removeAll(al)){
				System.out.println("清空完毕!");
			}else{
				System.out.println("清空失败!");
			}
		}
	}
}
	//8.查看全部学生信息
//	@SuppressWarnings("unchecked")
	public static void serAllMessage(){
		if(al.isEmpty()){
			System.out.println("还没有学生,请返回添加学生信息!");
		}else{
			//使之有序,看起来舒服
			Collections.sort(al);
			for(int i=0;i<al.size();i++){
				System.out.println(al.get(i).toString());
				}
			}
	}
	}

完毕!后续还需继续努力

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值