2020/10/24 劉一辰的JAVA隨筆
阿新 • • 發佈:2020-12-17
今日目標:Java SE 綜合案例:學生管理系統。
實驗程式碼:
該系統主要功能如下:
- 定義一個集合容器用於儲存全部學生物件的資訊操作。
- 新增學生:通過鍵盤錄入學生資訊,新增到集合中。
- 刪除學生:通過鍵盤錄入要刪除學生的學號,將該學生物件從集合中刪除。
- 修改學生:通過鍵盤錄入要修改學生的學號,將該學生物件其他資訊進行修改。
- 檢視學生:將集合中的學生物件資訊進行展示。
- 退出系統:結束程式。
- 在主方法中,設計系統總介面,利用switch語句,根據使用者選擇,執行對應的操作。
- 定義兩個公共方法,用於判斷學生的學號是否重複和獲取物件在集合中的索引。
- 分別定義新增學生、刪除學生、修改學生、檢視學生。
定義學生類
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 {
S
ystem.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 知識,實現了一個簡易的學生資訊管理系統。