HBNU-School/Java/TodoListApp/TodoListApp.java
2024-10-22 09:49:04 +08:00

110 lines
3.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("请输入有效的数字编号。");
}
}
}