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