package TodoListApp; import java.util.Scanner; // 主类 public class TodoListApp { private static final String ADD_TODO = "1"; private static final String LIST_TODOS = "2"; private static final String REMOVE_TODO = "3"; private static final String MARK_AS_COMPLETED = "4"; private static final String SAVE_TODOS = "5"; private static final String EXIT = "6"; private static final TodoListManager manager = new TodoListManager(); private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { boolean exit = false; while (!exit) { printMenu(); String choice = scanner.nextLine(); switch (choice) { case ADD_TODO: addTodoUI(); break; case LIST_TODOS: manager.listTodos(); break; case REMOVE_TODO: removeTodoUI(); break; case MARK_AS_COMPLETED: markAsCompletedUI(); break; case SAVE_TODOS: manager.saveToFile("todos.dat"); break; case EXIT: exit = true; System.out.println("退出程序。"); break; default: System.out.println("无效的选择,请重新输入。"); } } scanner.close(); } // 打印菜单 private static void printMenu() { 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.print("请选择操作(1-6):"); } // 添加待办事项的用户界面 private static void addTodoUI() { String description = getNonEmptyInput("请输入待办事项描述:"); try { manager.addTodo(description); } catch (EmptyDescriptionException e) { System.out.println("自定义异常:" + e.getMessage()); } } // 删除待办事项的用户界面 private static void removeTodoUI() { System.out.print("请输入要删除的待办事项编号:"); String input = scanner.nextLine().trim(); try { int id = Integer.parseInt(input); manager.removeTodo(id); } catch (NumberFormatException e) { try { throw new InvalidIdException("请输入有效的ID编号。"); } catch (InvalidIdException ex) { System.out.println("自定义异常:" + ex.getMessage()); ; } } catch (TodoNotFoundException e) { System.out.println("自定义异常:" + e.getMessage()); } } //用于对用户的输入进行提示和预处理的能用方法 private static String getNonEmptyInput(String prompt) { System.out.println(prompt); String input = scanner.nextLine().trim(); while (input.isEmpty()) { System.out.println("输入不能为空,请重新输入。"); System.out.println(prompt); input = scanner.nextLine().trim(); } return input; } private static void markAsCompletedUI() { String input = getNonEmptyInput("请输入要标记为已完成的待办事项编号:"); try { int id = Integer.parseInt(input); manager.markAsCompleted(id); } catch (NumberFormatException e) { System.out.println("请输入有效的数字编号。"); } } }