1. 程式人生 > 實用技巧 >2020/10/24 劉一辰的JAVA隨筆

2020/10/24 劉一辰的JAVA隨筆

今日目標:Java SE 綜合案例:學生管理系統。

實驗程式碼:

該系統主要功能如下:

  1. 定義一個集合容器用於儲存全部學生物件的資訊操作。
  2. 新增學生:通過鍵盤錄入學生資訊,新增到集合中。
  3. 刪除學生:通過鍵盤錄入要刪除學生的學號,將該學生物件從集合中刪除。
  4. 修改學生:通過鍵盤錄入要修改學生的學號,將該學生物件其他資訊進行修改。
  5. 檢視學生:將集合中的學生物件資訊進行展示。
  6. 退出系統:結束程式。
  1. 在主方法中,設計系統總介面,利用switch語句,根據使用者選擇,執行對應的操作。
  2. 定義兩個公共方法,用於判斷學生的學號是否重複和獲取物件在集合中的索引。
  3. 分別定義新增學生、刪除學生、修改學生、檢視學生。

定義學生類

public class Student { private String sid; private String name; private String age; private String address; public Student() { } public Student(String sid, String name, String age, String address) { this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid()
{ return sid; } public void setSid(String sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress()
{ return address; } public void setAddress(String address) { this.address = address; } }

學生資訊管理系統具體實現

public class StudentManager { public static void main(String[] args) { ArrayList<Student> students = new ArrayList<>(); Scanner sc = new Scanner(System.in); while (true) { System.out.println("===========歡迎來到學生管理系統==========="); System.out.println("以下為操作命令:")" System.out.println("1. 新增學生資訊:add"); System.out.println("2. 刪除學生資訊:delete"); System.out.println("3. 修改學生資訊:update"); System.out.println("4. 查詢學生資訊:query"); System.out.println("5. 退出學生系統:exit"); System.out.print("請您輸入您要操作的命令:"); String command = sc.nextLine(); switch (command) { case "add": addStudent(students); System.out.println("新增資訊成功!!"); break; case "delete": deleteStudent(students); break; case "update": updateStudent(students); break; case "query": queryStudent(students); break; case "exit": System.out.println("退出系統!"); System.exit(0); break; default: System.out.println("您輸入的命令有誤,請重新輸入!"); } System.out.println(""); } } /** * 新增學生資訊方法 * * @param students */ public static void addStudent(ArrayList<Student> students) { System.out.println("=================新增學生資訊============"); // 直接定義掃描器,錄入學生資訊 Scanner sc = new Scanner(System.in); String sid; //接收學生資訊 while (true) { System.out.println("請您輸入學號:"); sid = sc.nextLine(); // 判斷學號是否重複 boolean bool = isSIdRepeat(sid, students); if (bool) { System.out.println("您輸入的學號重複!"); } else { break; } } System.out.println("請您輸入姓名:"); String name = sc.nextLine(); System.out.println("請您輸入年齡:"); String age = sc.nextLine(); System.out.println("請您輸入地址:"); String address = sc.nextLine(); // 封裝學生資訊 Student student = new Student(sid, name, age, address); // 新增學生物件到集合容器 students.add(student); } /** * 刪除某個學生的資訊 * * @param students */ public static void deleteStudent(ArrayList<Student> students) { System.out.println("=================刪除學生資訊============"); if (students.size() > 0)while (true) } { System.out.println("請您刪除要刪除的學號:"); Scanner sc = new Scanner(System.in); String sid = sc.nextLine(); // 判斷學號是否存在 Boolean bool = isSIdRepeat(sid, students); if (bool) { int i = getIndex(sid, students); students.remove(i); break; } else { System.out.println("您刪除的學生不存在"); System.out.println("請問您要繼續嗎? Y/N"); String rs = sc.nextLine(); if ("N".equals(rs)) { break; } } } } else { System.out.println("學生資訊為空,請先新增學生資訊!"); } } /** * 修改某個學生的資訊 * * @param students */ public static void updateStudent(ArrayList<Student> students) { System.out.println("=================修改學生資訊============"); Scanner sc = new Scanner(System.in); if (students.size() > 0) { while (true) { System.out.println("請輸入要修改的學生的學號:"); String sid = sc.nextLine(); // 判斷學號是否存在 Boolean bool = isSIdRepeat(sid, students); if (bool) { // 獲取到物件集合中的角標 int index = getIndex(sid, students); // 使用者輸入新的學生資訊 System.out.println("請您輸入姓名:"); String name = sc.nextLine(); System.out.println("請您輸入年齡:"); String age = sc.nextLine(); System.out.println("請您輸入地址:"); String address = sc.nextLine(); Student newStu = new Student(sid, name, age, address); students.set(index, newStu); System.out.println("修改學生資訊成功"); break; } else { System.out.println("您需要修改的學生不存在!"); System.out.println("請問您要繼續嗎? Y/N"); String rs = sc.nextLine(); if ("N".equals(rs) ) { break; } } } } else { System.out.println("學生資訊為空,請先新增學生資訊!"); } } /** * 查詢全部學生資訊 * * @param students */ private static void queryStudent(ArrayList<Student> students) { System.out.println("學生資訊為:"); if (students.size() > 0) { System.out.println("學號\t\t姓名\t\t年齡\t\t住址"); for (int i = 0; i < students.size(); i++) { Student s = students.get(i); StringBuilder sb = new StringBuilder(); System.out.println(sb.append(s.getSid()). append("\t\t"). append(s.getName()). append("\t\t"). append(s.getAge()). append("\t\t"). append(s.getAddress())); } } else { System.out.println("學生資訊為空,請先新增學生資訊!"); } } /** * 判斷學生的學號是否重複 * * @param sid * @param students * @return true 代表重複 false 代表沒有重複 */ public static boolean isSIdRepeat(String sid, ArrayList<Student> students) { // 遍歷集合獲取到所有學生物件,並判斷學號是否重複 for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if (sid.equals(s.getSid() ) ) { return true; } } return false; } /** * 獲取物件在集合中的索引 * * @param sid * @param students * @return */ public static int getIndex(String sid, ArrayList<Student> students) { for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if (sid.equals(s.getSid() ) ) { return i; } } return -1; } }

以上案例運用了 Java SE 知識,實現了一個簡易的學生資訊管理系統。