Java基础—学生信息管理系统(借助Array List)

  • 2019 年 12 月 17 日
  • 笔记

需求: 制作一个简单的学生信息管理系统

1、通过键盘选择操作进行添加学生(学号,姓名,性别,年龄,成绩)的信息,这些信息通过数组存储。

2、同时还可以进行:

(1)查询某个或全体学生信息;

(2)修改学生信息;

(3)删除学生信息的操作。

要求: 有一定的优化,例如对用户输入信息是否符合要求的处理。

1.首先对学生的学号,姓名,性别,年龄,成绩这五个信息进行定义,为了不让所有人都能访问到,所以权限都定义为private,通过getter、setter方法进行访问:

/**   *   * 设置学生信息   *   * @author Incentancy   *   */  public class Student {    	private String stuName;    	private String stuNo;    	private String gender;    	private int age;    	private int score;    	public String getStuName() {  		return stuName;  	}    	public void setStuName(String stuName) {  		this.stuName = stuName;  	}    	public String getStuNo() {  		return stuNo;  	}    	public void setStuNo(String stuNo) {  		this.stuNo = stuNo;  	}    	public String getGender() {  		return gender;  	}    	public void setGender(String gender) {  		this.gender = gender;  	}    	public int getAge() {  		return age;  	}    	public void setAge(int age) {  		this.age = age;  	}    	public int getScore() {  		return score;  	}    	public void setScore(int score) {  		this.score = score;  	}    }

2.然后在一个新类中添加对学生信息的增删改查操作,并且要求能对用户输入的数据进行初步的判断:

import java.util.ArrayList;  import java.util.Scanner;    import com.xt.eleventhHW.stu.Student;    public class StuData {    		private ArrayList stus = new ArrayList();    		//static int index = 0;    		Scanner scanner = new Scanner(System.in);        		/**  		 * 增加学生信息  		 * @param stu  		 */  		public void addStu(Student stu){  			stus.add(stu);  		}    		//输入学生信息  		public void append(){    			Student stu = new Student();    			/**  			 * 通过封装方法,将学生信息赋给stus  			 */  			stu.setStuName(name());    			stu.setStuNo(stuNum());    			stu.setGender(gender());    			stu.setAge(age());    			stu.setScore(score());    			//将stu中的信息增添到stus中  			addStu(stu);    			System.out.println("学生信息已添加!");  			System.out.println();  		}      		//得到学生姓名  		public String name(){    			String name;    			System.out.println("请输入学生的姓名:");  			name = scanner.next();    			return name;  		}      		//得到学生学号  		public String stuNum(){    			String stuNum;    			System.out.println("请输入学生的学号:");  			stuNum = scanner.next();      			//如果学号不为11位,则重新输入,直到学号正确  			if(stuNum.length() != 11){  				System.out.println("您输入的学号有误!请重新输入!");  				stuNum();  			}    			//如果学号已存在,则重新输入,直到不存在  			for(int i = 0; i < stus.size(); i++){  				if(stuNum.equals(stus.get(i).getStuNo())){  					System.out.println("该学号已存在!请重新输入!");  					stuNum();  					break;  				}  			}    			return stuNum;  		}    		//得到学生的性别  		public String gender(){    			String stuGender;    			System.out.println("请输入学生的性别:");  			stuGender = scanner.next();    			if(!stuGender.equals("男") && !stuGender.equals("女") ){  				System.out.println("您输入的学生性别有误!请重新输入!");  				gender();  			}    			return stuGender;  		}    		//得到学生的年龄  		public int age(){    			int stuAge;    			System.out.println("请输入学生的年龄:");  			stuAge = scanner.nextInt();    			if(stuAge < 0 || stuAge >=  80){  				System.out.println("您输入的年龄有误!请重新输入!");  				age();  			}    			return stuAge;  		}    		//得到学生的成绩  		public int score(){  			int stuScore;    			System.out.println("请输入学生的成绩:");  			stuScore = scanner.nextInt();    			if(stuScore < 0 || stuScore > 100){  				System.out.println("您输入的成绩有误!请重新输入!");  				score();  			}    			return stuScore;  		}      		/**  		 *  		 * 删除学生信息  		 *  		 * @param stuNo  		 */  		public void delStu(){    			System.out.println("请输入您想删除的学号:");  			String stuNo = scanner.next();    			boolean isDel = false;    			for(int i = 0; i < stus.size(); i++){  				if(stuNo.equals(stus.get(i).getStuNo())){  					isDel = true;  					stus.remove(i);  					break;  				}  			}    			if(isDel){  				System.out.println("删除操作已完成!");  			}else{  				System.out.println("无此学生信息!");  			}  		}      		/**  		 * 修改学生信息:  		 * 1.姓名  		 * 2.学号  		 * 3.性别  		 * 4.年龄  		 * 5.成绩  		 * @param stu  		 */  		public void updateStu(String stuNo){    			boolean flag = false;    			for(int i = 0; i < stus.size(); i ++){  				if(stuNo.equals(stus.get(i).getStuNo())){    					flag = true;    					information();    					switch(scanner.nextInt()){  						case 1:  							String name = name();  							stus.get(i).setStuName(name);;  							break;  						case 2:  							String stuNum = stuNum();  							stus.get(i).setStuNo(stuNum);  							break;  						case 3:  							String gender = gender();  							stus.get(i).setGender(gender);  							break;  						case 4:  							int age = age();  							stus.get(i).setAge(age);  							break;  						case 5:  							int score = score();  							stus.get(i).setScore(score);  							break;  						case 0:  							System.exit(0);  					}    					break;  				}    				if(!flag)  					System.out.println("您输入的学号不存在!");  			}  		}    		public void information(){  			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("0.退出");  			System.out.println("请输入序号:");  		}  		/**  		 * 根据学号查询学生信息  		 * 如果存在,输出学生信息  		 * @param stuNo  		 */  		public void queryStuByStuNo(String stuNo){    			boolean flag = false;    			for(int i = 0; i < stus.size(); i ++){  				if(stuNo.equals(stus.get(i).getStuNo())){  					System.out.println("姓名:" + stus.get(i).getStuName());  					System.out.println("学号:" + stus.get(i).getStuNo());  					System.out.println("性别:" + stus.get(i).getGender());  					System.out.println("年龄:" + stus.get(i).getAge());  					System.out.println("成绩:" + stus.get(i).getScore());    					System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");  					System.out.println("|t姓名t|tt学号tt|t性别t|t年龄t|t成绩t|");  					System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");  					System.out.println("|t" + stus.get(i).getStuName() + "t|t    " + stus.get(i).getStuNo() + "     t|t" + stus.get(i).getGender() +  							"t|t"  + stus.get(i).getAge() + "t|t" + stus.get(i).getScore() + "t|");  					System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");    					flag = true;  				}  			}    			if(!flag)  				System.out.println("该学号不存在!");  		}  }

3.再新建一个类,将这个类作为操作菜单,通过用户输入的数字调用之前的增删改查操作:

import java.util.Scanner;    public class SystemService {    	Scanner scanner = new Scanner(System.in);      	public void bulletin(){  		System.out.println("1.添加学生信息");  		System.out.println("2.删除学生信息");  		System.out.println("3.修改学生信息");  		System.out.println("4.查询学生信息");  		System.out.println("0.退出系统");    		System.out.println("请输入序号:");  	}    	public void serviceChoose(){    		StuData sd = new StuData();    		System.out.println("-----欢迎使用学生信息管理系统-----");    		while(true){    			bulletin();    			switch(scanner.nextInt()){    				case 1:  					sd.append();  					System.out.println();  					break;  				case 2:  					sd.delStu();  					System.out.println();  					break;  				case 3:  					System.out.println("请输入要修改的学生的学号:");  					sd.updateStu(scanner.next());  					System.out.println();  					break;  				case 4:  					System.out.println("请输入要查询的学生的学号:");  					sd.queryStuByStuNo(scanner.next());  					System.out.println();  					break;  				case 0:  					System.exit(0);//退出系统  			}  		}  	}  }

4.最后写上主方法,就可以进行使用