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.最後寫上主方法,就可以進行使用