From f4cdcf48944a1cdb845632b43946c4ac543f6bf1 Mon Sep 17 00:00:00 2001 From: YZY <1104325451@qq.com> Date: Wed, 9 Apr 2025 20:31:51 +0800 Subject: [PATCH] xiu2 --- server/.idea/workspace.xml | 5 + .../main/java/self/cases/teams/Student.java | 351 ++++++++++++++++++ .../self/cases/teams/CourseManager.class | Bin 0 -> 2036 bytes .../classes/self/cases/teams/FileUtil.class | Bin 0 -> 2647 bytes .../classes/self/cases/teams/InputUtil.class | Bin 0 -> 1552 bytes .../classes/self/cases/teams/Student.class | Bin 0 -> 3421 bytes .../cases/teams/StudentManagementSystem.class | Bin 0 -> 11081 bytes .../classes/self/cases/teams/utils/Tea.class | Bin 0 -> 2000 bytes 8 files changed, 356 insertions(+) create mode 100644 server/src/main/java/self/cases/teams/Student.java create mode 100644 server/target/classes/self/cases/teams/CourseManager.class create mode 100644 server/target/classes/self/cases/teams/FileUtil.class create mode 100644 server/target/classes/self/cases/teams/InputUtil.class create mode 100644 server/target/classes/self/cases/teams/Student.class create mode 100644 server/target/classes/self/cases/teams/StudentManagementSystem.class create mode 100644 server/target/classes/self/cases/teams/utils/Tea.class diff --git a/server/.idea/workspace.xml b/server/.idea/workspace.xml index 0d5a414d..a74db1e5 100644 --- a/server/.idea/workspace.xml +++ b/server/.idea/workspace.xml @@ -78,6 +78,10 @@ + + + + @@ -140,6 +144,7 @@ + diff --git a/server/src/main/java/self/cases/teams/Student.java b/server/src/main/java/self/cases/teams/Student.java new file mode 100644 index 00000000..005c817f --- /dev/null +++ b/server/src/main/java/self/cases/teams/Student.java @@ -0,0 +1,351 @@ +package self.cases.teams; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +// 学生类 +class Student implements Serializable { + private String id; + private String name; + private int age; + private String className; + private Date enrollDate; + private Map scores; + + public Student(String id, String name, int age, String className) { + this.id = id; + this.name = name; + this.age = age; + this.className = className; + this.enrollDate = new Date(); + this.scores = new HashMap<>(); + } + + // Getter和Setter方法 + public String getId() { return id; } + public String getName() { return name; } + public int getAge() { return age; } + public String getClassName() { return className; } + public Date getEnrollDate() { return enrollDate; } + public Map getScores() { return scores; } + + public void updateScore(String course, double score) { + scores.put(course, score); + } + + public double calculateAverage() { + return scores.values().stream() + .mapToDouble(Double::doubleValue) + .average() + .orElse(0.0); + } + + @Override + public String toString() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return String.format("学号: %s\n姓名: %s\n年龄: %d\n班级: %s\n入学日期: %s", + id, name, age, className, sdf.format(enrollDate)); + } +} + +// 课程管理类 +class CourseManager { + private static final List AVAILABLE_COURSES = Arrays.asList( + "数学", "语文", "英语", "物理", "化学" + ); + + public static boolean isValidCourse(String course) { + return AVAILABLE_COURSES.contains(course); + } + + public static void showAvailableCourses() { + System.out.println("可选课程列表:"); + AVAILABLE_COURSES.forEach(c -> System.out.print(c + " ")); + System.out.println(); + } +} + +// 文件工具类 +class FileUtil { + private static final String DATA_FILE = "students.dat"; + + public static void saveData(List students) { + try (ObjectOutputStream oos = new ObjectOutputStream( + new FileOutputStream(DATA_FILE))) { + oos.writeObject(students); + } catch (IOException e) { + System.err.println("数据保存失败: " + e.getMessage()); + } + } + + @SuppressWarnings("unchecked") + public static List loadData() { + File file = new File(DATA_FILE); + if (!file.exists()) return new ArrayList<>(); + + try (ObjectInputStream ois = new ObjectInputStream( + new FileInputStream(DATA_FILE))) { + return (List) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + System.err.println("数据加载失败: " + e.getMessage()); + return new ArrayList<>(); + } + } +} + +// 输入工具类 +class InputUtil { + private static final Scanner scanner = new Scanner(System.in); + + public static int getIntInput(String prompt) { + while (true) { + System.out.print(prompt); + try { + return Integer.parseInt(scanner.nextLine()); + } catch (NumberFormatException e) { + System.out.println("输入无效,请输入整数!"); + } + } + } + + public static String getStringInput(String prompt) { + System.out.print(prompt); + return scanner.nextLine().trim(); + } + + public static double getDoubleInput(String prompt) { + while (true) { + System.out.print(prompt); + try { + return Double.parseDouble(scanner.nextLine()); + } catch (NumberFormatException e) { + System.out.println("输入无效,请输入数字!"); + } + } + } +} + +// 主系统类 +class StudentManagementSystem { + private List students; + private boolean isRunning = true; + + public StudentManagementSystem() { + students = FileUtil.loadData(); + } + + public void start() { + while (isRunning) { + showMainMenu(); + int choice = InputUtil.getIntInput("请选择操作:"); + handleMainMenu(choice); + } + } + + private void showMainMenu() { + System.out.println("\n==== 学生信息管理系统 ===="); + System.out.println("1. 添加学生"); + System.out.println("2. 查询学生"); + System.out.println("3. 录入成绩"); + System.out.println("4. 显示统计"); + System.out.println("5. 删除学生"); + System.out.println("6. 保存数据"); + System.out.println("7. 退出系统"); + } + + private void handleMainMenu(int choice) { + switch (choice) { +// case 1 -> addStudent(); +// case 2 -> searchStudent(); +// case 3 -> inputScore(); +// case 4 -> showStatistics(); +// case 5 -> deleteStudent(); +// case 6 -> saveData(); +// case 7 -> exitSystem(); +// default -> System.out.println("无效选项!"); + } + } + + private void addStudent() { + String id = InputUtil.getStringInput("请输入学号:"); + if (isStudentExist(id)) { + System.out.println("该学号已存在!"); + return; + } + + String name = InputUtil.getStringInput("请输入姓名:"); + int age = InputUtil.getIntInput("请输入年龄:"); + String className = InputUtil.getStringInput("请输入班级:"); + + Student student = new Student(id, name, age, className); + students.add(student); + System.out.println("学生添加成功!"); + } + + private void searchStudent() { + System.out.println("\n==== 查询选项 ===="); + System.out.println("1. 按学号查询"); + System.out.println("2. 按姓名查询"); + System.out.println("3. 显示全部"); + int choice = InputUtil.getIntInput("请选择查询方式:"); + + switch (choice) { +// case 1 -> searchById(); +// case 2 -> searchByName(); +// case 3 -> showAllStudents(); +// default -> System.out.println("无效选项!"); + } + } + + private void searchById() { + String id = InputUtil.getStringInput("请输入学号:"); + students.stream() + .filter(s -> s.getId().equals(id)) + .findFirst(); + + } + + private void searchByName() { + String name = InputUtil.getStringInput("请输入姓名:"); + List result = null; + try { + students.stream() + .filter(s -> s.getName().equalsIgnoreCase(name)) + .wait(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + if (result.isEmpty()) { + System.out.println("找不到该学生"); + } else { + result.forEach(System.out::println); + } + } + + private void showAllStudents() { + if (students.isEmpty()) { + System.out.println("当前没有学生记录"); + return; + } + students.forEach(s -> { + System.out.println(s); + System.out.println("--------------------"); + }); + } + + private void inputScore() { + String id = InputUtil.getStringInput("请输入学号:"); + Student student = findStudentById(id); + if (student == null) { + System.out.println("学生不存在!"); + return; + } + + CourseManager.showAvailableCourses(); + String course = InputUtil.getStringInput("请输入课程名称:"); + if (!CourseManager.isValidCourse(course)) { + System.out.println("无效课程!"); + return; + } + + double score = InputUtil.getDoubleInput("请输入成绩:"); + student.updateScore(course, score); + System.out.println("成绩录入成功!"); + } + + private void showStatistics() { + System.out.println("\n==== 统计信息 ===="); + System.out.println("1. 班级人数统计"); + System.out.println("2. 课程平均分"); + System.out.println("3. 学生个人成绩"); + int choice = InputUtil.getIntInput("请选择统计类型:"); + + switch (choice) { +// case 1 -> showClassStatistics(); +// case 2 -> showCourseStatistics(); +// case 3 -> showStudentScores(); +// default -> System.out.println("无效选项!"); + } + } + + private void showClassStatistics() { + Map classCount = students.stream() + .collect(Collectors.groupingBy( + Student::getClassName, + Collectors.counting())); + + classCount.forEach((className, count) -> + System.out.printf("班级 %s: %d 人\n", className, count)); + } + + private void showCourseStatistics() { + Map courseAverages = new HashMap<>(); + students.forEach(student -> + student.getScores().forEach((course, score) -> + courseAverages.merge(course, score, Double::sum))); + + courseAverages.forEach((course, total) -> { + long count = students.stream() + .filter(s -> s.getScores().containsKey(course)) + .count(); + double average = count > 0 ? total / count : 0; + System.out.printf("%s 平均分: %.2f\n", course, average); + }); + } + + private void showStudentScores() { + String id = InputUtil.getStringInput("请输入学号:"); + Student student = findStudentById(id); + if (student == null) { + System.out.println("学生不存在!"); + return; + } + + System.out.println(student); + if (student.getScores().isEmpty()) { + System.out.println("暂无成绩记录"); + return; + } + + student.getScores().forEach((course, score) -> + System.out.printf("%s: %.2f\n", course, score)); + System.out.printf("平均分: %.2f\n", student.calculateAverage()); + } + + private void deleteStudent() { + String id = InputUtil.getStringInput("请输入要删除的学号:"); + boolean removed = students.removeIf(s -> s.getId().equals(id)); + System.out.println(removed ? "删除成功!" : "学生不存在!"); + } + + private void saveData() { + FileUtil.saveData(students); + System.out.println("数据已保存!"); + } + + private void exitSystem() { + isRunning = false; + System.out.println("正在退出系统..."); + saveData(); + System.out.println("谢谢使用!"); + } + + private boolean isStudentExist(String id) { + return students.stream() + .anyMatch(s -> s.getId().equals(id)); + } + + private Student findStudentById(String id) { + return students.stream() + .filter(s -> s.getId().equals(id)) + .findFirst() + .orElse(null); + } + + public static void main(String[] args) { + new StudentManagementSystem().start(); + } +} \ No newline at end of file diff --git a/server/target/classes/self/cases/teams/CourseManager.class b/server/target/classes/self/cases/teams/CourseManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2b83167f8212b1ce3e70c1ad52f571818c9ecae9 GIT binary patch literal 2036 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 Iz7+c30+wEGSpWb4 literal 0 HcmV?d00001 diff --git a/server/target/classes/self/cases/teams/Student.class b/server/target/classes/self/cases/teams/Student.class new file mode 100644 index 0000000000000000000000000000000000000000..f1825f76f4f65faed5ca667fc6bc661cc229419f GIT binary patch literal 3421 zcma)8Yj+bx7=AWMv+ZV~7oZd;P@vzJ~O+JO&d7m!_4eE@AY|~naSV(UAh9`0sNw& z1p{?x#ZzKRJ&QTdqP?xg}&)Y7gnptoi+wL=bZZ-twCEv0$LPF!DmvdaxQ&1n-8#0RA zs>@pA1;a17wA@s=yJc=35lNp@8nw-?ZsC55Rj~YS1)Dn}3SsJVB?EIsox`lK*U2-9 z`a!E;ZZA!Yn(l6c5d4v)~>UC7ghQK#gC8QdY?cvnR806#~Ny6|H+#^fpMZqShJTOQ_vb9WX zsBaL|)se=lI#yt%jy5seg?1fxW2J)mlG-;>(yDLlFrlL$chK3TpTAZeq!nQy^`EG9&}aa&blZE|0H*Wfi7@ zR9u7H?9y-y--vpuIAf)POfa+C2^9K60W)4) zhN&VQ1*r+6c*8(Jf0&l6?bZ%MfKdf@*0^zUTPup#Q4|;(cA(A7 zTgr|q_lURSZneeTkRUk-PX(sTM7%nJSi#Yh#2qO3=D6vK3uhqO{!q?%$uW63C|DJR zLOw!KgV22iYXg~rN20wA757$YcSICwsrXLEar~s?1bP*;%i3k)R$pd)P2oV=LlEgG>(wC7Oxd3$@a&HX?y0{&8D? z`TX0p0E@5$&3t|qBg2e0P~(9h4!<|@ixFl1id=~bVsa&Fh|86zB7u9kZcI=WEE9a{ zz?Tjz;Xd5YQIwG3EZo$j&mr~)7cq#ul2W)##?}LcFt);6su{;;8@E<9-h>C~Zg%9v zZ?hsVuWI~I)yOroBd@4x{4gG=61jG^@ye>ko6!~aJPKH9wsBh(!Mr&3l!>9qmfnqe(m)WPO*XdSCIK4o7+Wkl*MP^-Lv7LQx){Zv zKs5OY^l}tXzd&Q5+AhM)V7`JG)GN3|Tdo>o9Gdw5=R6ktPOX3e&606z$i@zGu#+T8 zlR#@C1-9R0MBmN69Fk`X=)R1FBTb7gpn0%qaqVAd8Ho#mWk(X6;@J^Fx5Py($&Mts zs>zP1YdP1R$I|RYEGxs>Bw@<%+-)Qf_hK_=0Y|fhr#s9*BPX|_pEbtuq^w{Ye&j4p X>-YE>Kkz(_@LMqXdFt#XA}{_A-7GR2 literal 0 HcmV?d00001 diff --git a/server/target/classes/self/cases/teams/StudentManagementSystem.class b/server/target/classes/self/cases/teams/StudentManagementSystem.class new file mode 100644 index 0000000000000000000000000000000000000000..120b77ffb9b91de5e1b882f6bfca9124e245c1f9 GIT binary patch literal 11081 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 V+%0wPPB(Xx`7ATyyZk*4{y&4Mh$8?1 literal 0 HcmV?d00001 diff --git a/server/target/classes/self/cases/teams/utils/Tea.class b/server/target/classes/self/cases/teams/utils/Tea.class new file mode 100644 index 0000000000000000000000000000000000000000..4732336951218cd13ffcaebcf8540244eed19f31 GIT binary patch literal 2000 zcmaJ?-BS}+6#w09HXFk775NYZgi3ArG9W^0QL92}gNaf>TChqln`^SL*`&KSTI}@A zzr+_``e0w8)6Vp@GyO~Y+NaKRrXS~SmJkazGdX+jx##0|e&^iXU;qB`X8@N_N}wN? z`RS^(9Y4Jx_##7>%5YcYt8SjVa+yocz-;=s-9ma@dbV32zqWPBt^FLY1lbJSBfE-MwuJ95S4*XXx*@~))N$|e<0=N- zb}LoM(3ummSkA9;kC%iL9+l87z7bYciU!PVxlFipUviH;*eY>SuH;8U4;Uh!(; z3v8L##(e`{ns|VRCU)?Z0Sdhfi=pqo&AM5&>v3bt_j0+d9TRy7B_0uVI|d3Sim*-W z!7{P05}tZ^|Hkw-pME+sefhz+m!>Yxd^cvo!8`$f`!G@Kj#A&*-4mAT=8@`fBBC@x zC5Bd6&X%7DZ;1wzc=JTS0mE{0-k$rm1;De`4Qaj&KXI7+f71<@O^S zIUcA>HnmYtWisP*+~QYv{a~~idX=szS7YRxYdP@gZqV(qs-7oYxnY+?&UPGi;pnc? zK*o5bB3zoQ>E?RESjWSMO`?l6m|Fe6<0cRrMNe?b&~^wS+`l==bt?+27lc%U9+&0A zRv0BN>9Y73#c6u0shm#x z@Gj*$Pg)a^zn~jwgXNx^``-OZ)9P+K2SwLiCwNT>O5-MQ>m@MCga)ZM!p>;a(FLj_(%c$GP72Wn{{qXunEn6& literal 0 HcmV?d00001