Java 9天入門(黑馬程式設計師) 課程收尾 ——學生管理系統 (9.13)
1 實現功能
2 結構概述
分為兩個包,各自一個類 Student.java 為學生類,目的是儲存學生資訊
StudentManager.java 是主程式的程式碼
3 Student.java 的程式碼如下
可以快捷生成(eciplise—>右鍵程式碼區—–>選擇source—–>選擇 generate)
1 package com.itheima.domain; 2 3 public class Student { 4 private String sid;//學生學號 5 private String name;//學生姓名 6 private int age;//學生年齡 7 private String birthday;//學生生日 8 //無參數構造方法 9 public Student() { 10 super(); 11 } 12 //有參數構造方法 13 public Student(String sid, String name, int age, String birthday) { 14 super(); 15 this.sid = sid; 16 this.name = name; 17 this.age = age; 18 this.birthday = birthday; 19 } 20 21 public String getSid() { 22 return sid; 23 } 24 25 public void setSid(String sid) { 26 this.sid = sid; 27 } 28 29 public String getName() { 30 return name; 31 } 32 33 public void setName(String name) { 34 this.name = name; 35 } 36 37 public int getAge() { 38 return age; 39 } 40 41 public void setAge(int age) { 42 this.age = age; 43 } 44 45 public String getBirthday() { 46 return birthday; 47 } 48 49 public void setBirthday(String birthday) { 50 this.birthday = birthday; 51 } 52 53 }
4 StudentManager.java 程式碼如下 (各個功能以自定義方法實現)
具體程式碼如下:
1 package com.itheima.test; 2 import java.util.ArrayList; 3 import java.util.Scanner; 4 5 import com.itheima.domain.Student; 6 7 public class StudentManager { 8 9 public static void main(String[] args) { 10 11 // TODO Auto-generated method stub 12 Scanner sc = new Scanner(System.in); 13 // 創建集合容器對象 14 ArrayList<Student> list = new ArrayList<Student>(); 15 lo: while (true) { 16 // lo 為循環標號 break lo; 17 // 1、搭建主介面菜單 18 System.out.println("--------------歡迎來到學生管理系統--------------"); 19 System.out.println("1 添加學生"); 20 System.out.println("2 刪除學生"); 21 System.out.println("3 修改學生"); 22 System.out.println("4 查看學生"); 23 System.out.println("5 退出"); 24 System.out.println("請輸入您的選擇:"); 25 int sel = sc.nextInt(); 26 switch (sel) { 27 case 1: 28 System.out.println("開始添加學生"); 29 addStudent(list); 30 break; 31 case 2: 32 System.out.println("刪除學生"); 33 deleteStudent(list); 34 break; 35 case 3: 36 System.out.println("修改學生"); 37 updateStudent(list); 38 break; 39 case 4: 40 System.out.println("查看學生"); 41 viewStudent(list); 42 break; 43 case 5: 44 System.out.println("感謝您的使用"); 45 break lo; 46 default: 47 System.out.println("輸入的數字不在我識別之內,請重新輸入"); 48 break; 49 } 50 51 } 52 } 53 54 // 修改學生的方法 55 private static void updateStudent(ArrayList<Student> list) { 56 // TODO Auto-generated method stub 57 System.out.println("請輸入您要修改的學號"); 58 Scanner sc = new Scanner(System.in); 59 String updateSid = sc.next(); 60 int index = getIndex(list, updateSid); 61 if (index == -1) { 62 System.out.println("查無資訊,請重新輸入"); 63 } else { 64 // 存在: 接受新的學生資訊 65 System.out.println("請輸入新的學生姓名"); 66 String name = sc.next(); 67 System.out.println("請輸入新的學生年齡"); 68 int age = sc.nextInt(); 69 System.out.println("請輸入新的學生生日"); 70 String birthday = sc.next(); 71 // 封裝為一個新的學生對象 72 Student stu = new Student(updateSid, name, age, birthday); 73 // 調用集合的set方法,完成修改 74 list.set(index, stu); 75 System.out.println("修改成功"); 76 } 77 78 } 79 80 // 刪除學生的方法 81 public static void deleteStudent(ArrayList<Student> list) { 82 // TODO Auto-generated method stub 83 System.out.println("請輸入您要刪除的學號"); 84 Scanner sc = new Scanner(System.in); 85 String deleteSid = sc.next(); 86 int index = getIndex(list, deleteSid); 87 if (index == -1) { 88 System.out.println("查無資訊,請重新輸入"); 89 } else { 90 list.remove(index); 91 System.out.println("刪除成功"); 92 } 93 } 94 95 // 查看學生的方法 96 public static void viewStudent(ArrayList<Student> list) { 97 98 // TODO Auto-generated method stub 99 // 判斷是否為空數據 100 if (list.size() == 0) { 101 System.out.println("無資訊,請添加後重新查詢"); 102 return; 103 } 104 System.out.println("學號\t姓名\t年齡\t生日"); 105 for (int i = 0; i < list.size(); i++) { 106 Student stu = list.get(i); 107 System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday()); 108 } 109 } 110 111 // 添加學生的方法 112 public static void addStudent(ArrayList<Student> list) { 113 Scanner sc = new Scanner(System.in); 114 String sid; 115 while (true) { 116 System.out.println("請輸入學號"); 117 sid = sc.next(); 118 int index = getIndex(list, sid); 119 if (index == -1) { 120 // sid can use 121 break; 122 } 123 } 124 // 1 給出錄入的提示資訊 125 126 System.out.println("請輸入姓名"); 127 String name = sc.next(); 128 System.out.println("請輸入年齡"); 129 int age = sc.nextInt(); 130 System.out.println("請輸入生日"); 131 String birthday = sc.next(); 132 // 2 將鍵盤錄入的資訊封裝為學生對象 133 Student stu = new Student(sid, name, age, birthday); 134 // 3 將封裝好的學生對象添加到集合容器中 135 list.add(stu); 136 // 4 給出添加成功的提示資訊 137 System.out.println("添加成功"); 138 } 139 140 /* 141 * 定義getIndex方法 : 接受一個集合對象,接受一個學生學號 查找這個學號在集合中出現的索引位置 142 */ 143 public static int getIndex(ArrayList<Student> list, String sid) { 144 // 假設傳入的學號,在集合中不存在 145 int index = -1; 146 // 遍歷集合,獲取每一個學生對象,準備進行查找 147 for (int i = 0; i < list.size(); i++) { 148 Student stu = list.get(i); 149 String id = stu.getSid(); 150 // 和傳入的sid進行比對 151 if (id.equals(sid)) { 152 // 存在:讓index變數記錄正確的索引位置 153 index = i; 154 } 155 156 } 157 return index; 158 } 159 160 }
5 小結:
這個項目融合了Java入門級別的知識,綜合性強!(總計約210行程式碼)
—— BTLord 小白工作室
2020.9.13