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