diff --git a/main.py b/main.py new file mode 100644 index 0000000..0c3b89d --- /dev/null +++ b/main.py @@ -0,0 +1,116 @@ +import tkinter as tk +from tkinter import messagebox, simpledialog +from tkinter import ttk +import json +from datetime import datetime + +class HomeworkManager: + def __init__(self, root): + self.root = root + self.root.title("作业管理系统") + self.homework_list = [] + + self.frame = tk.Frame(self.root) + self.frame.pack(pady=10) + + self.label = tk.Label(self.frame, text="作业列表") + self.label.pack() + + self.tree = ttk.Treeview(self.frame, columns=("描述", "截止日期", "优先级", "状态"), show="headings") + self.tree.heading("描述", text="描述") + self.tree.heading("截止日期", text="截止日期") + self.tree.heading("优先级", text="优先级") + self.tree.heading("状态", text="状态") + self.tree.pack(pady=10) + + self.add_button = tk.Button(self.frame, text="添加作业", command=self.add_homework) + self.add_button.pack(side=tk.LEFT, padx=10) + + self.delete_button = tk.Button(self.frame, text="删除作业", command=self.delete_homework) + self.delete_button.pack(side=tk.LEFT, padx=10) + + self.details_button = tk.Button(self.frame, text="查看详情", command=self.view_details) + self.details_button.pack(side=tk.LEFT, padx=10) + + self.complete_button = tk.Button(self.frame, text="标记为完成", command=self.mark_as_completed) + self.complete_button.pack(side=tk.LEFT, padx=10) + + self.stats_button = tk.Button(self.frame, text="查看统计", command=self.view_stats) + self.stats_button.pack(side=tk.LEFT, padx=10) + + self.save_button = tk.Button(self.frame, text="保存作业", command=self.save_homework) + self.save_button.pack(side=tk.LEFT, padx=10) + + self.load_button = tk.Button(self.frame, text="加载作业", command=self.load_homework) + self.load_button.pack(side=tk.LEFT, padx=10) + + def add_homework(self): + description = simpledialog.askstring("输入", "输入作业描述:") + if description: + due_date = simpledialog.askstring("输入", "输入截止日期(YYYY-MM-DD):") + priority = simpledialog.askstring("输入", "输入优先级(高/中/低):") + try: + due_date = datetime.strptime(due_date, '%Y-%m-%d').date() + except ValueError: + messagebox.showwarning("无效日期", "截止日期格式应为YYYY-MM-DD") + return + self.homework_list.append({"描述": description, "截止日期": str(due_date), "优先级": priority, "状态": "未完成"}) + self.update_treeview() + + def delete_homework(self): + selected_item = self.tree.selection() + if selected_item: + index = self.tree.index(selected_item) + del self.homework_list[index] + self.update_treeview() + else: + messagebox.showwarning("警告", "未选择任何作业进行删除") + + def view_details(self): + selected_item = self.tree.selection() + if selected_item: + index = self.tree.index(selected_item) + hw = self.homework_list[index] + message = f"描述: {hw['描述']}\n截止日期: {hw['截止日期']}\n优先级: {hw['优先级']}\n状态: {hw['状态']}" + messagebox.showinfo("作业详情", message) + else: + messagebox.showwarning("警告", "未选择任何作业查看详情") + + def mark_as_completed(self): + selected_item = self.tree.selection() + if selected_item: + index = self.tree.index(selected_item) + self.homework_list[index]['状态'] = "已完成" + self.update_treeview() + else: + messagebox.showwarning("警告", "未选择任何作业进行标记") + + def view_stats(self): + total_homework = len(self.homework_list) + completed_homework = sum(1 for hw in self.homework_list if hw["状态"] == "已完成") + message = f"总作业数: {total_homework}\n已完成作业数: {completed_homework}\n未完成作业数: {total_homework - completed_homework}" + messagebox.showinfo("统计信息", message) + + def save_homework(self): + with open("homework_list.json", "w", encoding='utf-8') as f: + json.dump(self.homework_list, f, ensure_ascii=False, indent=4) + messagebox.showinfo("保存", "作业列表已成功保存") + + def load_homework(self): + try: + with open("homework_list.json", "r", encoding='utf-8') as f: + self.homework_list = json.load(f) + self.update_treeview() + messagebox.showinfo("加载", "作业列表已成功加载") + except FileNotFoundError: + messagebox.showwarning("加载", "未找到保存的作业列表") + + def update_treeview(self): + self.tree.delete(*self.tree.get_children()) + for hw in self.homework_list: + self.tree.insert("", tk.END, values=(hw["描述"],hw["截止日期"], hw["优先级"], hw["状态"])) + +if __name__ == "__main__": + root = tk.Tk() + app = HomeworkManager(root) + root.mainloop()