fork download
  1. # Hệ thống quản lý công việc học tập (phiên bản mô phỏng)
  2. # Chạy được trực tiếp trên Ideone
  3.  
  4. from datetime import datetime
  5.  
  6. # ----- Dữ liệu mẫu -----
  7. users = []
  8. tasks = []
  9. subjects = []
  10.  
  11. # ----- Các hàm quản lý -----
  12. def add_user(name, email):
  13. user = {"id": len(users)+1, "name": name, "email": email}
  14. users.append(user)
  15. return user
  16.  
  17. def add_subject(name):
  18. subject = {"id": len(subjects)+1, "name": name}
  19. subjects.append(subject)
  20. return subject
  21.  
  22. def add_task(title, subject_id, owner_id, due_date):
  23. task = {
  24. "id": len(tasks)+1,
  25. "title": title,
  26. "subject_id": subject_id,
  27. "owner_id": owner_id,
  28. "due_date": due_date,
  29. "status": "todo"
  30. }
  31. tasks.append(task)
  32. return task
  33.  
  34. def update_task(task_id, **kwargs):
  35. for t in tasks:
  36. if t["id"] == task_id:
  37. t.update(kwargs)
  38. return t
  39. return None
  40.  
  41. def search_tasks(keyword=None, status=None):
  42. result = tasks
  43. if keyword:
  44. result = [t for t in result if keyword.lower() in t["title"].lower()]
  45. if status:
  46. result = [t for t in result if t["status"] == status]
  47. return result
  48.  
  49. # ----- Mô phỏng hoạt động -----
  50. u1 = add_user("Nguyễn Khang", "khang@example.com")
  51. u2 = add_user("Minh An", "minhan@example.com")
  52.  
  53. s1 = add_subject("Toán học")
  54. s2 = add_subject("Lịch sử")
  55.  
  56. add_task("Ôn tập chương 3", s1["id"], u1["id"], "2025-10-20")
  57. add_task("Làm bài tập số 5", s1["id"], u1["id"], "2025-10-21")
  58. add_task("Đọc tài liệu chiến tranh thế giới", s2["id"], u2["id"], "2025-10-22")
  59.  
  60. update_task(2, status="done")
  61.  
  62. # ----- Khai thác thông tin -----
  63. print("=== Danh sách người dùng ===")
  64. for u in users:
  65. print(f"- {u['name']} ({u['email']})")
  66.  
  67. print("\n=== Danh sách môn học ===")
  68. for s in subjects:
  69. print(f"- {s['name']}")
  70.  
  71. print("\n=== Công việc cần làm ===")
  72. for t in tasks:
  73. sub = [s for s in subjects if s["id"] == t["subject_id"]][0]["name"]
  74. print(f"[{t['status']}] {t['title']} ({sub}) - hạn {t['due_date']}")
  75.  
  76. print("\n=== Tìm kiếm công việc chứa 'bài tập' ===")
  77. for t in search_tasks(keyword="bài tập"):
  78. print(f"- {t['title']} ({t['status']})")
Success #stdin #stdout 0.13s 14132KB
stdin
1
2
10
42
11
stdout
=== Danh sách người dùng ===
- Nguyễn Khang (khang@example.com)
- Minh An (minhan@example.com)

=== Danh sách môn học ===
- Toán học
- Lịch sử

=== Công việc cần làm ===
[todo] Ôn tập chương 3 (Toán học) - hạn 2025-10-20
[done] Làm bài tập số 5 (Toán học) - hạn 2025-10-21
[todo] Đọc tài liệu chiến tranh thế giới (Lịch sử) - hạn 2025-10-22

=== Tìm kiếm công việc chứa 'bài tập' ===
- Làm bài tập số 5 (done)