大概功能:
1.顯示所有教師 2.按姓名查找教師 3.按工號查找教師 4.增加教師 5.刪除教師 6.退出
數據會保存到 txt 文件里面
姓名:必須是中文
手機號碼:必須是11位,必須是數字
效果展示:
代碼展示:
TeacherSystem類:
package TEACHERSYSTEM;import java.io.*;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Random;
import java.util.Scanner;public class TeacherSystem {public static void main(String[] args) {ArrayList<User> list = new ArrayList<>();User u1 = new User("1238", "張三", "18716699212", "35612341243123@qq.com", 701);User u2 = new User("1234", "李四", "18716699212", "35612341243123@qq.com", 801);User u3 = new User("12345", "王五", "18716699212", "35612341243123@qq.com", 901);list.add(u1);list.add(u2);list.add(u3);// 從文件加載數據LoadFromFile(list);// 啟動登錄流程login(list);// 保存數據到文件SaveToFile(list);}private static void login(ArrayList<User> list) {Scanner sc = new Scanner(System.in);System.out.println("請輸入工號:");while (true) {String inputID = sc.next();boolean found = false;for (User user : list) {if (user.getId().equals(inputID)) {found = true;break;}}if (found) {break;} else {System.out.println("賬號 " + inputID + " 不存在,請重新輸入");}}System.out.println("請輸入姓名:");while (true) {String inputName = sc.next();boolean found = false;for (User user : list) {if (Objects.equals(user.getName(), inputName)) {found = true;break;}}if (found) {break;} else {System.out.println("姓名 " + inputName + " 不存在,請重新輸入");}}// 獲取驗證碼while (true) {String rightCode = getCode();System.out.println("當前正確的驗證碼為:" + rightCode);System.out.print("請輸入驗證碼:");String code = sc.next();if (code.equalsIgnoreCase(rightCode)) {System.out.println("驗證碼正確");OperaterTeacher(list);break;} else {System.out.println("驗證碼錯誤,請重新輸入");}}sc.close();}public static void OperaterTeacher(ArrayList<User> list) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("---------------------------------------------------------------------");System.out.println("Welcome to the use 教師管理系統");System.out.println("請選擇你需要進行的操作:1.顯示所有教師 2.按姓名查找教師 3.按工號查找教師 4.增加教師 5.刪除教師 6.退出");System.out.println("---------------------------------------------------------------------");int choose = sc.nextInt();switch (choose) {case 1:ShowAllTeacher(list);break;case 2:SeekName(list);break;case 3:SeekId(list);break;case 4:AddTeacher(list);break;case 5:DeleteTeacher(list);break;case 6:System.out.println("退出管理員操作頁面");return;default:System.out.println("沒有該選項");}}}public static void ShowAllTeacher(ArrayList<User> list) {System.out.println("工號\t\t\t姓名\t\t\t電話\t\t\t\t郵箱\t\t\t\t\t班級");for (User user : list) {System.out.println(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());}}public static void SeekName(ArrayList<User> list) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("請輸入姓名:");String inputName = sc.next();boolean found = false;for (User user : list) {if (user.getName().equals(inputName)) {System.out.println("工號\t\t\t姓名\t\t\t電話\t\t\t\t郵箱\t\t\t\t班級");System.out.println(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());found = true;}}if (!found) {System.out.println("輸入的姓名不存在,請重新輸入");} else {return; // 如果找到教師信息,退出循環}}}public static void SeekId(ArrayList<User> list) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("請輸入工號:");String inputID = sc.next();boolean found = false;for (User user : list) {if (user.getId().equals(inputID)) {System.out.println("工號\t\t\t姓名\t\t\t電話\t\t\t\t郵箱\t\t\t\t班級");System.out.println(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());found = true;}}if (!found) {System.out.println("輸入的工號不存在,請重新輸入");} else {return;}}}public static void AddTeacher(ArrayList<User> list) {Scanner sc = new Scanner(System.in);System.out.println("請輸入新教師工號:");String newID = sc.next();if (contain(list, newID)) {System.out.println("該工號已經存在,請選擇其他工號");return;}String newName;while (true) {System.out.println("請輸入新教師的姓名:");newName = sc.next();if (checkChineseName(newName)) {break;} else {System.out.println("輸入無效,請輸入中文姓名。");}}String newPhone;while (true) {System.out.println("請輸入新教師的手機號碼:");sc.nextLine();newPhone = sc.nextLine();boolean flag = checkPhoneNumber(newPhone);if (flag) {break;} else {System.out.println("手機號碼格式錯誤,請重新輸入");}}System.out.println("請輸入新教師的郵箱賬號:");String newLetterBox = sc.next();System.out.println("請輸入新教師的所在班級:");int newClassNumber = Integer.parseInt(sc.next());User newUser = new User(newID, newName, newPhone, newLetterBox, newClassNumber);list.add(newUser);System.out.println("教師添加成功");}public static void DeleteTeacher(ArrayList<User> list) {Scanner sc = new Scanner(System.in);System.out.println("請輸入要刪除的工號:");String IDToDelete = sc.next();User AimUser = findUserByAccount(list, IDToDelete);if (AimUser == null) {System.out.println("用戶賬號不存在");return;}list.remove(AimUser);System.out.println("用戶刪除成功");}private static boolean checkChineseName(String name) {return name.matches("^[\\u4e00-\\u9fa5]+$"); // 判斷是否全為中文}private static boolean checkPhoneNumber(String phoneNumber) {int len = phoneNumber.length();// 檢查手機號碼長度并且只包含數字return len == 11 && phoneNumber.matches("\\d+");}// 用戶者尋找用戶private static User findUserByAccount(ArrayList<User> list, String ID) {for (User user : list) {if (user.getId().equals(ID)) {return user;}}return null;}public static boolean contain(ArrayList<User> list, String ID) {for (User user : list) {if (ID.equals(user.getId())) {return true;}}return false;}private static String getCode() {ArrayList<Character> list = new ArrayList<>();for (int i = 0; i < 26; i++) {list.add((char) ('a' + i));list.add((char) ('A' + i));}Random r = new Random();StringBuilder sb = new StringBuilder();for (int i = 0; i < 4; i++) {int index = r.nextInt(list.size());char c = list.get(index);sb.append(c);}int number = r.nextInt(10);sb.append(number);char[] arr = sb.toString().toCharArray();int randomIndex = r.nextInt(arr.length);char temp = arr[randomIndex];arr[randomIndex] = arr[arr.length - 1];arr[arr.length - 1] = temp;return new String(arr);}private static void LoadFromFile(ArrayList<User> list) {try (BufferedReader br = new BufferedReader(new FileReader("teachers.txt"))) {String line;line = br.readLine(); // 讀取并忽略第一行標題while ((line = br.readLine()) != null) {String[] parts = line.split(",");if (parts.length == 5) {String id = parts[0];String name = parts[1];String phone = parts[2];String email = parts[3];int classNumber = Integer.parseInt(parts[4]);User user = new User(id, name, phone, email, classNumber);list.add(user);}}} catch (IOException e) {System.out.println("加載文件失敗,可能是文件不存在。");}}private static void SaveToFile(ArrayList<User> list) {try (BufferedWriter bw = new BufferedWriter(new FileWriter("teachers.txt"))) {bw.write("工號\t\t\t姓名\t\t\t電話\t\t\t\t郵箱\t\t\t\t\t班級");bw.newLine();for (User user : list) {bw.write(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());bw.newLine();}} catch (IOException e) {System.out.println("保存文件失敗");}}
}
User類:
package TEACHERSYSTEM;public class User {private String id;private String name;private String PhoneNumber;private String Letterbox;private int ClassNumber;public User(){}public User(String id, String name, String phoneNumber, String letterbox, int classNumber) {this.id = id;this.name = name;PhoneNumber = phoneNumber;Letterbox = letterbox;ClassNumber = classNumber;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhoneNumber() {return PhoneNumber;}public void setPhoneNumber(String phoneNumber) {PhoneNumber = phoneNumber;}public String getLetterbox() {return Letterbox;}public void setLetterbox(String letterbox) {Letterbox = letterbox;}public int getClassNumber() {return ClassNumber;}public void setClassNumber(int classNumber) {ClassNumber = classNumber;}
}