Java学习——day14
- 手机
- 2025-09-14 08:06:02

文章目录 1. 项目需求分析2. 项目设计3. 代码分析4. 运行示例5. 今日学习总结6. 今日生词 今日学习计划 1. 项目需求分析
功能要求: (1)存储学生信息:
使用 HashMap 存储学生信息(学号作为键,Student 对象作为值)。 (2)操作学生数据:添加学生(姓名、学号、成绩)。删除学生(按学号删除)。查询学生(按学号查询)。显示所有学生信息。 (3)异常处理:防止重复添加(如果学号已存在,抛出异常)。查询/删除不存在的学号(抛出异常)。输入格式错误(如非数字学号,捕获 NumberFormatException)。无效成绩范围(自定义异常 InvalidScoreException)。 2. 项目设计(1) 学生类(Student) 包含:学号、姓名、成绩,并提供构造方法和 toString() 便于显示。
class Student { private String id; private String name; private int score; public Student(String id, String name, int score) { this.id = id; this.name = name; this.score = score; } public String getId() { return id; } public String getName() { return name; } public int getScore() { return score; } @Override public String toString() { return "学号:" + id + ", 姓名:" + name + ", 成绩:" + score; } }(2) 自定义异常类(InvalidScoreException) 当成绩不在 0~100 之间时抛出异常
class InvalidScoreException extends Exception { public InvalidScoreException(String message) { super(message); } }(3) 学生管理类(StudentManager) 使用 HashMap<String, Student> 存储学生数据。 提供增删查改方法,加入异常处理。
import java.util.HashMap; import java.util.Scanner; class StudentManager { private HashMap<String, Student> studentMap = new HashMap<>(); // 添加学生 public void addStudent(String id, String name, int score) throws InvalidScoreException { if (studentMap.containsKey(id)) { throw new IllegalArgumentException("学号 " + id + " 已存在!"); } if (score < 0 || score > 100) { throw new InvalidScoreException("成绩必须在 0 到 100 之间!"); } studentMap.put(id, new Student(id, name, score)); System.out.println("学生添加成功!"); } // 删除学生 public void removeStudent(String id) { if (!studentMap.containsKey(id)) { throw new IllegalArgumentException("学号 " + id + " 不存在!"); } studentMap.remove(id); System.out.println("学生删除成功!"); } // 查询学生 public void searchStudent(String id) { if (!studentMap.containsKey(id)) { throw new IllegalArgumentException("学号 " + id + " 不存在!"); } System.out.println(studentMap.get(id)); } // 显示所有学生 public void displayAllStudents() { if (studentMap.isEmpty()) { System.out.println("当前没有学生数据!"); } else { studentMap.values().forEach(System.out::println); } } }(4) 交互逻辑(主类 Main) 提供菜单交互。 异常处理,防止用户输入错误。
import java.util.Scanner; public class Main { public static void main(String[] args) { StudentManager manager = new StudentManager(); Scanner scanner = new Scanner(System.in); while (true) { 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.print("请选择操作: "); try { int choice = Integer.parseInt(scanner.nextLine()); switch (choice) { case 1: System.out.print("输入学号: "); String id = scanner.nextLine(); System.out.print("输入姓名: "); String name = scanner.nextLine(); System.out.print("输入成绩: "); int score = Integer.parseInt(scanner.nextLine()); manager.addStudent(id, name, score); break; case 2: System.out.print("输入要删除的学号: "); manager.removeStudent(scanner.nextLine()); break; case 3: System.out.print("输入要查询的学号: "); manager.searchStudent(scanner.nextLine()); break; case 4: manager.displayAllStudents(); break; case 5: System.out.println("程序退出!"); return; default: System.out.println("无效输入,请重新选择!"); } } catch (NumberFormatException e) { System.out.println("输入格式错误,请输入正确的数字!"); } catch (InvalidScoreException e) { System.out.println("错误:" + e.getMessage()); } catch (IllegalArgumentException e) { System.out.println("错误:" + e.getMessage()); } } } } 3. 代码分析 功能关键实现异常处理存储学生信息HashMap<String, Student>-添加学生addStudent()1. 学号重复 → IllegalArgumentException 2. 成绩范围错误 → InvalidScoreException删除学生removeStudent()学号不存在 → IllegalArgumentException查询学生searchStudent()学号不存在 → IllegalArgumentException防止输入错误try-catch 捕获 NumberFormatException- 4. 运行示例 === 学生信息管理系统 === 1. 添加学生 2. 删除学生 3. 查询学生 4. 显示所有学生 5. 退出 请选择操作: 1 输入学号: 1001 输入姓名: 张三 输入成绩: 105 错误:成绩必须在 0 到 100 之间! 请选择操作: 1 输入学号: 1001 输入姓名: 张三 输入成绩: 90 学生添加成功! 请选择操作: 3 输入要查询的学号: 1001 学号:1001, 姓名:张三, 成绩:90 请选择操作: 2 输入要删除的学号: 1002 错误:学号 1002 不存在! 5. 今日学习总结集合框架
使用 HashMap<String, Student> 存储学生信息。(List 和 Set 可用于扩展功能(如 ArrayList 存储多个成绩)。异常处理
输入异常:NumberFormatException(防止用户输入非数字)。自定义异常:InvalidScoreException(确保成绩合法)。逻辑异常:IllegalArgumentException(防止重复或无效学号)。面向对象设计
Student 类 代表学生信息。StudentManager 类 负责学生数据管理。 6. 今日生词1.advanced 2.decisions 3.snippet 4.hesitating 5.lightspeed
Java学习——day14由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java学习——day14”
上一篇
Linux常用指令