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

Tags: