集合:学生管理系统

JAVA面向对象集合学生管理系统

  • 功能:增加,删除,修改,查询单个学生,显示全部学生,登录账号与退出系统。

  • 模块:将每个功能独立开来写出对应方法。

  • 创建一个实体学生类,声明变量,写出无参, 带参构造

    public class Student {
    	 		 private String stuId;//学生学号
    			 private String stuName;//学生姓名
    			 private short stuAge;//学生年龄
    		     private  String stuClass;//学生班级
        	//无参构造
    		  public Student() {
    			
    		}//带参构造
    		public Student(String stuId, String stuName, short stuAge, String stuClass) {
    			
    			this.stuId = stuId;
    			this.stuName = stuName;
    			this.stuAge = stuAge;
    			this.stuClass = stuClass;
    		}
    
  • 定义get,set方法

    public String getStuId() {
    			return stuId;
    		}
    		public void setStuId(String stuId) {
    			this.stuId = stuId;
    		}
    		public String getStuName() {
    			return stuName;
    		}
    		public void setStuName(String stuName) {
    			this.stuName = stuName;
    		}
    		public short getStuAge() {
    			return stuAge;
    		}
    		public void setStuAge(short stuAge) {
    			this.stuAge = stuAge;
    		}
    		public String getStuClass() {
    			return stuClass;
    		}
    		public void setStuClass(String stuClass) {
    			this.stuClass = stuClass;
    		}
    	
    }
    
  • 创建学生Demo类

    这里注意方法外的集合要加static关键字,不然后面创建Student对象会报错!

    1.若是对象的特有行为(某个实例方法特有的行为),不加static。

    2.若是对象集合共有的集合,则加static。

    public class StudentDemo {
    	// 创建ArrayList集合
    	static ArrayList<Student> a = new ArrayList<Student>();
    
  • 写出main方法,循环内给出提示并用switch提供选择。

    // 用while循环回到主界面
    		while (true) {
    			System.out.println("欢迎来到学生管理系统!");
    			System.out.println("1-添加学生\t2-删除学生\t3-修改学生\t4-查看单个学生\t5-查看所有学生\t6-退出系统");
    			Scanner scanner = new Scanner(System.in);
    			System.out.println("请输入你的选择:");
    			String s = scanner.nextLine();
    			// 使用switch提供选择
    			switch (s) {
    			case "1": {
    				addStu();
    				break;
    			}
    			case "2": {
    				deleteStu();
    				break;
    			}
    			case "3": {
    				updateStu();
    				break;
    			}
    			case "4": {
    				findStu();
    				break;
    			}
    			case "5": {
    				findAllStu();
    				break;
    			}
    			case "6": {
    				System.out.println("退出系统成功!");
    				System.exit(0);// JVM虚拟机退出系统
    				break;
    			}
    			default:
    				System.out.println("输入的选择不存在!,请重新输入");
    				break;
    			}
    		}
    	}
    
  • 添加学生Add方法

    关于tianbu()这个方法调用,主要是解决用户输入学号可能出现重复的问题,下面会详细说。

    public static void addStu() {
    		Scanner scanner = new Scanner(System.in);
    		String id;
    		//采用while语句,解决添加的学号重复问题
    		while (true) {
    			System.out.println("请输入要添加的学生学号:");
    			id = scanner.nextLine();
    			boolean flag = tianbu(id);
    			if (flag) {
    				System.out.println("输入的学号已存在!请重新输入");
    			} else {
    				break;
    			}
    		}
    		// 创建学生对象,把键盘录入的学生的数据赋值给学生对象
    		Student s = new Student();
    		System.out.println("请输入要添加的学生姓名:");
    		String name = scanner.nextLine();
    		System.out.println("请输入要添加的学生班级:");
    		String classStu = scanner.nextLine();
    		System.out.println("请输入要添加的学生年龄:");
    		short age = scanner.nextShort();
    			if(age<=120&&age>=0) {
    			s.setStuAge(age);  
    			s.setStuId(id);
    			s.setStuName(name);
    			s.setStuClass(classStu);
    			a.add(s);
    			System.out.println("添加学生成功!");
    			}else {
    				System.out.println("添加失败,输入的年龄不合法!");
    			}
    		 
    			// 将整个学生对象添加到集合中,注:集合存储学生对象,存储的是对象的内存地址
                
    	}
    
  • tianbu()

    这里主要通过声明布尔类型flag标志变量来做add方法中if语句的判断条件

    首先给flag设置成false,遍历集合,将集合的元素赋值给Student对象。

    通过对象调用Student类中的学号与用户输入的学号做比较,若学号相同,则出现了学号重复的问题,

    给flag赋值为true,返回flag的值。

  • public static boolean tianbu(String id) {
    
    		boolean flag = false;
    		for (int i = 0; i < a.size(); i++) {
    			Student student = a.get(i);
    			if (student.getStuId().equals(id)) {
    				flag = true;
    				break;
    			}
    		}
    		return flag;
    	}
    
  • 删除学生Delete方法

    这里通过flag解决了学号不存在问题,遍历集合可采取迭代器也可用for循环。

  • public static void deleteStu() {
    		// 键盘录入要删除的学生学号
    		Scanner scanner = new Scanner(System.in);
    		System.out.println("请输入要删除的学生学号:");
    		String string1 = scanner.nextLine();
    	    //定义布尔类型变量,提供条件判断
    		boolean flag = true;
    		/*	 遍历集合,此处可采用for循环的方法
    		 for (int i = 0; i < a.size(); i++) {
    			Student student = a.get(i);
    			if (student.getStuId().equals(string1)) {
    				a.remove(i);
    				flag = false;
    				System.out.println("删除成功!");
    			}
    		}
    		if(flag) {
    			System.out.println("该学号不存在!");
    		} 
    		 */
    		//采用迭代器遍历集合,并添加相应判断
    		Iterator<Student> iterator = a.iterator();
    		while (iterator.hasNext()) {
    			Student student = iterator.next();
    			if (student.getStuId().equals(string1)) {
    				iterator.remove();
    				System.out.println("删除成功!");
    				flag = false;
    				break;
    			}
    		}
    		if (flag) {
    			System.out.println("删除失败!,输入的学号有误!");
    		}
    	}
    
  • 修改学生Updata方法

    与上面添加的方法类似,比较简单,没什么好说的。

  • public static void updateStu() {
    		// 键盘录入要修改的学生学号
    		Scanner scanner = new Scanner(System.in);
    		String id;
    		//while语句解决,用户修改的学号重复问题
    		while (true) {
    			System.out.println("请输入要修改的学生学号:");
    			id = scanner.nextLine();
    			boolean flag = xiubu(id);
    			if (flag) {
    				System.out.println("要修改的学号不存在!请重新输入");
    			} else {
    				break;
    			}
    		}
    		System.out.println("请输入要修改的学生姓名:");
    		String name = scanner.nextLine();
    		System.out.println("请输入要修改的学生班级:");
    		String classStu = scanner.nextLine();
    		System.out.println("请输入要修改的学生年龄:");
    		short age = scanner.nextShort();
    
    		// 创建学生对象,存储键盘录入的数据
    		Student student = new Student();
    		student.setStuId(id);
    		student.setStuAge(age);
    		student.setStuName(name);
    		student.setStuClass(classStu);
    
    		// 遍历集合,通过if条件控制语句修改对于学生信息
    		for (int i = 0; i < a.size(); i++) {
    			Student student1 = a.get(i);
    			if (student1.getStuId().equals(id)) {
    				a.set(i, student1);
    				System.out.println("修改学生成功");
    				break;
    			}
    		}
    	}
    
  • xiubu()方法

  • public static boolean xiubu(String id) {
    		boolean flag = true;
    		for (int i = 0; i < a.size(); i++) {
    			Student student = a.get(i);
    			if (student.getStuId().equals(id)) {
    				flag = false;
    				break;
    			}
    		}
    		return flag;
    	}
    
  • 查询单个学生Query方法

    这里表头信息输出语句加\t是为了隔开信息。

  • public static void findStu() {
    		//采用条件判断语句,若集合无数据,提供相应提示
    		if (a.size() == 0) {
    			System.out.println("该系统未录入学生信息,请添加学生信息!");
    		} else {
    			Scanner scanner = new Scanner(System.in);
    			System.out.println("请输入要查找学生的学号:");
    			String str = scanner.nextLine();
    			for (int i = 0; i < a.size(); i++) {
    				Student s = a.get(i);
    				if (str.equals(s.getStuId())) {
    					// 显示表头信息
    					System.out.println("学号\t姓名\t年龄\t班级");
    					System.out.println(s.getStuId() + "\t" + s.getStuName() + "\t" + s.getStuAge() + "\t" +s.getStuClass());
    				}
    			}
    		}
    	}
    
    
  • 显示全部学生Query方法

  • public static void findAllStu() {
    		if (a.size() == 0) {
    			System.out.println("该系统未录入学生信息,请添加学生信息!");
    		} else {
    			// 显示表头信息
    			System.out.println("学号\t姓名\t年龄\t班级");
    			// 遍历集合,将集合中的数据的数据取出,按照对应的格式显示
    			for (int i = 0; i < a.size(); i++) {
    				Student s = a.get(i);
    				System.out.println(s.getStuId() + "\t" + s.getStuName() + "\t" + s.getStuAge() + "\t" +s.getStuClass());
    			}
    		}
    	}
    
    
posted @   1(*^_^*)1小菜  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示