練習----學生管理系統
阿新 • • 發佈:2018-12-25
/* * 學生管理系統 * * 1.定義學生類 * 2.學生管理系統的主介面的程式碼編碼 * 3.學生管理系統的檢視所有學生的程式碼編寫 * 4.學生管理系統的新增學生的程式碼編寫 * 5.學生管理系統的刪除學生的程式碼編寫 * 6.學生管理系統的修改學生的程式碼編寫 * */ public class StudentManager { public static void main(String[] args) { ArrayList<Student> arrl=new ArrayList<Student>(); while (true) { 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("請輸入你的選擇"); Scanner sc = new Scanner(System.in); String xuanze = sc.nextLine(); switch (xuanze) { case "1": // 1.檢視所有學生 findAllStudent(arrl); break; case "2": // 2.新增學生 addStudent(arrl); break; case "3": // 3.刪除學生 deleteStudent(arrl); break; case "4": // 4.修改學生 updateStudent(arrl); break; case "5": // 5.退出 default: System.out.println("感謝使用"); System.exit(0); break; } } } public static void findAllStudent(ArrayList<Student> arrl){ if(arrl.size()==0){ System.out.println("暫無資訊,返回上一層"); //return是不往下執行的意思,並不是返回值 return; } // \t是tap鍵的文字寫法 System.out.println("學號\t姓名\t年齡\t性別\t家庭地址"); for(int a=0;a<arrl.size();a++){ Student s=arrl.get(a); System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getXingbie()+"\t"+s.getAddress()); } } public static void addStudent(ArrayList<Student> arrl){ //1.鍵盤輸入學生資訊 Scanner sc=new Scanner(System.in); //定義物件id放這裡,因為放while裡面,下面外面的程式碼會報錯 String id; //迴圈判斷學號有沒有被人佔用 while(true){ System.out.println("請輸入學號:"); id=sc.nextLine(); //標記 boolean flag=false; //遍歷集合 for(int a=0;a<arrl.size();a++){ //定義物件s接收集合索引a的元素 Student s=arrl.get(a); //如果物件s接收的元素和鍵盤輸入的元素一樣,標記變成true,break退出for迴圈 if(s.getId().equals(id)){ flag=true; break; } } //如果標記flag變成true,繼續迴圈,false就跳出while迴圈 if(flag){ System.out.println("輸入的學號重複,重新輸入"); }else{ break; } } System.out.println("請輸入姓名:"); String name=sc.nextLine(); System.out.println("請輸入年齡:"); String age=sc.nextLine(); System.out.println("請輸入性別:"); String xingbie=sc.nextLine(); System.out.println("請輸入家庭地址:"); String address=sc.nextLine(); //2.把輸入的資訊通過方法存到學生類 Student s=new Student(); s.setId(id); s.setName(name); s.setAge(age); s.setXingbie(xingbie); s.setAddress(address); //3.把學生類的資訊加到集合中 arrl.add(s); System.out.println("資訊新增成功"); } public static void deleteStudent(ArrayList<Student> arrl){ //建立鍵盤輸入,輸入學號 Scanner sc=new Scanner(System.in); System.out.println("請輸入要刪除學生的學號"); String id=sc.nextLine(); //標記,索引=-1表示不存在 int index=-1; //迴圈比較集合中是否有匹配的資訊 for(int a=0;a<arrl.size();a++){ Student s=arrl.get(a); if(s.getId().equals(id)){ //如果相同,進來,a賦值給index index=a; break; } } //如果index等於-1,說明上面if不成立,說明沒找到,else則是找到了 if(index==-1){ System.out.println("未找到要刪除的學生資訊,重新輸入"); }else{ arrl.remove(index); System.out.println("刪除成功"); } } public static void updateStudent(ArrayList<Student> arrl){ //建立鍵盤輸入 Scanner sc=new Scanner(System.in); System.out.println("請輸入要修改學生的學號"); String id=sc.nextLine(); //標記,索引=-1時,不存在該元素 int index=-1; //建立迴圈看集合中有沒有匹配資訊 for(int a=0;a<arrl.size();a++){ Student s=arrl.get(a); //如果找到集合中有匹配的資訊,把索引a賦值給index,然後跳出for迴圈 if(s.getId().equals(id)){ index=a; break; } } //如果索引=-1,說明上面for迴圈中沒有匹配的資訊 if(index==-1){ System.out.println("未找到要修改的學生資訊,請重新輸入"); }else{ //鍵盤輸入要修改的資訊 System.out.println("請輸入姓名:"); String name=sc.nextLine(); System.out.println("請輸入年齡:"); String age=sc.nextLine(); System.out.println("請輸入性別:"); String xingbie=sc.nextLine(); System.out.println("請輸入家庭地址:"); String address=sc.nextLine(); //2.把輸入的資訊通過方法存到學生類 Student s=new Student(); s.setId(id); s.setName(name); s.setAge(age); s.setXingbie(xingbie); s.setAddress(address); //3.把學生類的資訊加到集合中 //arrl.add(index, s);不能用這個,用這個的話,是新加上一條資訊了 arrl.set(index,s); System.out.println("資訊新增成功"); } } }
成功輸入的截圖
碰到的問題
又做了一遍練習
package com.StudentManager; import java.util.ArrayList; import java.util.Scanner; /* * 學生管理系統 * * 1.定義學生類 * 2.學生管理系統的主介面的程式碼編碼 * 3.學生管理系統的檢視所有學生的程式碼編寫 * 4.學生管理系統的新增學生的程式碼編寫 * 5.學生管理系統的刪除學生的程式碼編寫 * 6.學生管理系統的修改學生的程式碼編寫 * */ public class StudentManager { public static void main(String[] args) { // 建立一個集合物件 ArrayList<Student> arrl = new ArrayList<Student>(); while (true) { // 完成主介面 System.out.println("--歡迎來到學生管理系統--"); System.out.println("1.檢視所有學生資料"); System.out.println("2.新增新的學生資訊"); System.out.println("3.刪除學生資訊"); System.out.println("4.修改學生資訊"); System.out.println("5.退出系統"); // 建立鍵盤輸入 Scanner sc = new Scanner(System.in); String xuanze = sc.nextLine(); // 通過鍵盤輸入來選擇以下 switch (xuanze) { case "1": // 1.檢視所有學生資料 findAllStudent(arrl); break; case "2": // 2.新增新的學生資訊 addNewStudent(arrl); break; case "3": // 3.刪除學生資訊 deleteStudent(arrl); break; case "4": // 4.修改學生資訊 updateStudent(arrl); break; case "5": // 5.退出系統 default: System.out.println("感謝使用本系統"); System.exit(0); }// 這個大括號是switch } // 這個大括號是while }// 這個大括號是main方法 // 檢視所有學生資料方法 public static void findAllStudent(ArrayList<Student> arrl) { if (arrl.size() == 0) { System.out.println("對不起,暫時沒有學生資料"); return; } System.out.println("學號\t姓名\t年齡"); for (int a = 0; a < arrl.size(); a++) { Student s = arrl.get(a); System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t"); } System.out.println("已載入所有學生資料"); }// 這個大括號是findAllStudent public static void addNewStudent(ArrayList<Student> arrl) { // 鍵盤輸入 Scanner sc = new Scanner(System.in); // 因為加了一個while迴圈,下面s.setId(id)報錯了,於是就把id定義在外面了 String id; while (true) { System.out.println("請輸入學號"); id = sc.nextLine(); // 回過頭來考慮,如果輸入的學號跟已有的有重複,怎麼辦?? // 首先定一個標記 int index = -1; // 迴圈遍歷出集合中已有的元素 for (int a = 0; a < arrl.size(); a++) { Student s = arrl.get(a); // 如果集合已有的學號和鍵盤輸入的學號相同,a賦值給index,迴圈結束 if (s.getId().equals(id)) { index = a; break; } } // 這個大括號是for迴圈 // 如果index=-1,說明上面遍歷後沒有相同的學號 if (index == -1) { // 滿足就跳出迴圈,注意如果不加break下面Syso("請輸入姓名")報錯, break; } else { System.out.println("輸入的學號有重複,請重新輸入"); } } // 這個大括號是while System.out.println("請輸入姓名"); String name = sc.nextLine(); System.out.println("請輸入年齡"); String age = sc.nextLine(); // 鍵盤錄入的資訊賦值給學生類 Student s = new Student(); s.setId(id); s.setName(name); s.setAge(age); // 學生類的資訊賦值給集合arrl arrl.add(s); System.out.println("新增成功"); }// 這個大括號是addNewStudent public static void deleteStudent(ArrayList<Student> arrl) { // 鍵盤輸入學號 Scanner sc = new Scanner(System.in); if(arrl.size()==0){ System.out.println("對不起,暫時沒有學生資料"); return; } while (true) { System.out.println("請輸入要刪除的學生學號"); String id = sc.nextLine(); // 標記 int index = -1; // for迴圈找匹配資訊 for (int a = 0; a < arrl.size(); a++) { Student s = arrl.get(a); // 如果學號相同,進if,把a賦值給index if (s.getId().equals(id)) { index = a; break; } } // 如果標記==-1,說明沒有匹配的學號,return重新輸入 if (index == -1) { System.out.println("輸入的學號不存在,請重新輸入"); } else { arrl.remove(index); System.out.println("刪除成功"); return; } } // 這個大括號是while }// 這個大括號是deleteStudent public static void updateStudent(ArrayList<Student> arrl){ //鍵盤輸入學號 Scanner sc=new Scanner(System.in); if(arrl.size()==0){ System.out.println("對不起,暫時沒有學生資料"); return; } while(true){ System.out.println("請輸入要修改的學生學號"); String id=sc.nextLine(); int index=-1; //for迴圈找匹配資訊 for(int a=0;a<arrl.size();a++){ Student s=arrl.get(a); //如果集合中找到和鍵盤輸入相同的物件,a賦值給index if(s.getId().equals(id)){ index=a; } }//這個大括號是for //如果index==-1,沒找到匹配資訊 if(index==-1){ System.out.println("輸入的學號不存在,請重新輸入"); }else{ System.out.println("請輸入姓名"); String name=sc.nextLine(); System.out.println("請輸入年齡"); String age=sc.nextLine(); Student s=new Student(); s.setId(id); s.setName(name); s.setAge(age); arrl.set(index,s); System.out.println("修改成功"); return; } }//這個大括號是while }//這個大括號是updateStudent }// 這個大括號是類的