Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp "Xây dựng ứng dụng di động quản lý sự kiện" (tên tiếng Anh: Building a Mobile Application to Manage Events) được thực hiện bởi sinh viên Huỳnh Quốc An (MSSV: 17520207), chuyên ngành Kỹ thuật Phần mềm, Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (UIT), dưới sự hướng dẫn của cán bộ hướng dẫn ThS. Trần Thị Hồng Yến và TS. Đỗ Thị Thanh Tuyền. Đề tài được triển khai trong khoảng thời gian từ ngày 01/09/2022 đến ngày 23/12/2022 (kế hoạch hoàn tất báo cáo và nghiệm thu kéo dài đến ngày 10/01/2023).

Lý do chọn đề tài và bối cảnh thực tiễn

Tổ chức sự kiện là hoạt động diễn ra phổ biến ở nhiều môi trường khác nhau, từ các phong trào, hoạt động phong trào trong trường đại học cho đến các chương trình tại các tổ chức, doanh nghiệp. Tuy nhiên, phần lớn các sự kiện hiện nay vẫn được quản lý theo phương thức thủ công, chưa tận dụng tối đa các giải pháp công nghệ chuyên biệt. Ban tổ chức sự kiện thường đối mặt với hai trở ngại lớn: không theo sát được tiến độ công việc và gặp nhiều khó khăn trong việc giao tiếp, tương tác tức thời giữa các thành viên. Đối với các sự kiện quy mô vừa và lớn, những hạn chế này làm tăng nguy cơ phát sinh sai sót, chậm tiến độ và gây lãng phí nguồn lực.

Từ góc độ trải nghiệm cá nhân từng tham gia ban tổ chức các chương trình thực tế tại UIT (điển hình như chương trình ca nhạc gây quỹ), tác giả nhận thấy các thành viên phải kết hợp nhiều công cụ rời rạc để lập kế hoạch và điều hành. Điều này thúc đẩy tác giả nghiên cứu và xây dựng một giải pháp phần mềm chuyên biệt trên nền tảng di động nhằm tối ưu hóa quy trình tổ chức sự kiện.

Hiện trạng bài toán

Để làm rõ cơ sở thực tiễn và xác định yêu cầu hệ thống, tác giả đã tiến hành hai hoạt động khảo sát:

  • Khảo sát người dùng thực tế: Phỏng vấn sâu 7 sinh viên từng tham gia ban tổ chức sự kiện tại khu vực Làng Đại học Quốc gia TP. Hồ Chí Minh. Kết quả cho thấy các nhóm thường dùng Google Drive, Google Docs, Google Sheets để lưu trữ nội dung và lập kế hoạch; đồng thời dùng Messenger hoặc Zalo để trao đổi công việc. Việc kết hợp này dẫn đến tình trạng dữ liệu phân tán, thiếu tính nhất quán, tin nhắn quan trọng dễ bị trôi trong quá trình trao đổi chung, gây chậm trễ khi xử lý sự cố đột xuất và không có công cụ đo lường chính xác tiến độ thực tế của từng cá nhân.
  • Khảo sát các ứng dụng hiện có:
    • Eventbrite: Ưu điểm là hỗ trợ đầy đủ chức năng tạo sự kiện, cho phép người tham gia đặt vé, thanh toán trực tiếp, hỗ trợ thông báo sự kiện trực tuyến và báo cáo doanh thu. Tuy nhiên, nhược điểm là phải liên kết ứng dụng họp trực tuyến (Google Meet, Zoom), không hỗ trợ công cụ theo dõi tiến trình triển khai thực tế của ban tổ chức và chỉ áp dụng một mẫu biểu tổng quát cho mọi loại sự kiện.
    • Event Planner: Ưu điểm là hỗ trợ lập kế hoạch, theo dõi tiến độ và quản lý chi phí. Tuy nhiên, ứng dụng chỉ phục vụ mục đích cá nhân, không có tính năng tương tác nhóm giữa các thành viên và chứa nhiều quảng cáo ảnh hưởng đến trải nghiệm người dùng.

Mục tiêu nghiên cứu

Đề tài hướng tới việc hiện thực hóa các mục tiêu cụ thể sau:

  1. Xây dựng ứng dụng di động hỗ trợ quản lý sự kiện toàn diện, bao gồm quản lý thông tin nội dung, quản lý danh sách công việc, quản lý dòng thời gian (timeline) và theo dõi tiến độ tổng thể.
  2. Quản lý chi tiết công việc của từng thành viên: phân rã nhiệm vụ, phân công trách nhiệm và giám sát tiến độ thực hiện.
  3. Tích hợp kênh liên lạc nội bộ (chat) cho phép các thành viên trong nhóm tương tác trực tiếp bằng văn bản, hình ảnh hoặc giọng nói nhằm kịp thời xử lý các vấn đề phát sinh.
  4. Tích hợp tính năng đồng bộ lịch làm việc của sự kiện vào ứng dụng Calendar trên thiết bị di động cá nhân để tự động nhắc nhở khi đến hạn thực hiện.
  5. Cung cấp tính năng xuất báo cáo thống kê số lượng sự kiện, số lượng công việc của từng sự kiện và phân bổ công việc theo thành viên.
  6. Thiết kế giao diện trực quan, dễ thao tác, có tính thực tiễn cao để áp dụng trực tiếp vào công tác tổ chức sự kiện thực tế.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng sử dụng: Các cá nhân, nhóm sinh viên hoặc công ty có nhu cầu lập kế hoạch, phân bổ nhiệm vụ và giám sát thực hiện sự kiện.
  • Phạm vi môi trường: Hệ điều hành di động Android và iOS.
  • Phạm vi chức năng: Xác thực và quản lý thông tin cá nhân; quản lý sự kiện (tạo mới, lưu mẫu sự kiện, tạo sự kiện từ mẫu có sẵn, quản lý nội dung và timeline); quản lý tiến độ sự kiện; quản lý chi phí; phân rã công việc; tổng kết và rút kinh nghiệm sự kiện; quản lý công việc; quản lý thành viên; đồng bộ lịch sự kiện vào Calendar của điện thoại; hỗ trợ phòng chat nội bộ theo từng sự kiện.

Cơ sở lý thuyết và phương pháp

Quy trình phát triển phần mềm

Tác giả lựa chọn áp dụng Mô hình thác nước (Waterfall Model) để tổ chức quá trình xây dựng phần mềm. Mô hình này được lựa chọn vì các yêu cầu nghiệp vụ và danh mục tính năng của ứng dụng đã được xác định rõ ràng, cụ thể ngay từ giai đoạn đầu thông qua hoạt động khảo sát người dùng và khảo sát đối chuẩn ứng dụng tương tự. Quá trình phát triển được triển khai theo các giai đoạn tuần tự: chuẩn bị kiến thức, phân tích thiết kế hệ thống, xây dựng ứng dụng, kiểm thử sửa lỗi và hoàn thiện báo cáo.

Phương pháp nghiên cứu và kỹ thuật áp dụng

  • Phương pháp thu thập và phân tích dữ liệu: Sử dụng phương pháp điều tra định tính thông qua phỏng vấn 7 sinh viên có kinh nghiệm tổ chức sự kiện; phân tích chức năng đối chuẩn (benchmarking) trên hai nền tảng thương mại Eventbrite và Event Planner.
  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để phân tích yêu cầu người dùng và mô hình hóa hành vi hệ thống: xây dựng biểu đồ Use Case tổng quát, đặc tả Use Case chi tiết, xây dựng 6 biểu đồ tuần tự (Sequence Diagram) để mô hình hóa luồng thông điệp xử lý và sơ đồ thiết kế lớp (Class Diagram) để thiết kế cấu trúc dữ liệu.
  • Chiến lược phát triển hệ thống: Mô hình Client - Server được phát triển song song. Phía Client tập trung xây dựng giao diện và trải nghiệm người dùng, phía Server tập trung xây dựng hệ thống RESTful API; hai bên kết nối và trao đổi dữ liệu thông qua giao thức HTTP Request.

Khung công nghệ và công cụ thực hiện

  • Nền tảng giao diện người dùng (Client): Sử dụng Framework Flutter với ngôn ngữ lập trình Dart, cho phép xây dựng ứng dụng đa nền tảng (Cross-platform) chạy trên cả Android và iOS từ một mã nguồn duy nhất.
  • Nền tảng máy chủ (Backend/Server): Sử dụng Framework Spring Boot với ngôn ngữ lập trình Java để xây dựng các dịch vụ RESTful API tiếp nhận và xử lý yêu cầu nghiệp vụ.
  • Hệ thống cơ sở dữ liệu:
    • MariaDB: Hệ quản trị cơ sở dữ liệu quan hệ dùng để lưu trữ toàn bộ dữ liệu nghiệp vụ có cấu trúc của hệ thống (thông tin người dùng, sự kiện, công việc, phân quyền).
    • Firebase Realtime Database: Dịch vụ cơ sở dữ liệu đám mây của Google được sử dụng chuyên biệt cho tính năng trò chuyện (chat), đảm bảo việc lưu trữ và phân phối tin nhắn theo thời gian thực giữa các thành viên.
  • Giao thức mạng và dịch vụ tích hợp:
    • Giao thức truyền dữ liệu: HTTP/RESTful API.
    • Giao thức thư điện tử: SMTP (Simple Mail Transfer Protocol) được tích hợp trong luồng xử lý gửi mã xác nhận phục vụ tính năng quên và khôi phục mật khẩu tài khoản.
  • Công cụ quản trị và triển khai: Sử dụng GitLab để quản trị mã nguồn (Source Control) và PuTTY để truy cập dòng lệnh quản trị, triển khai máy chủ ứng dụng từ xa.

Thiết kế và triển khai

Kiến trúc hệ thống và luồng dữ liệu

Hệ thống được tổ chức theo kiến trúc Client - Server đa tầng. Ứng dụng di động Flutter đảm nhiệm vai trò giao diện (Frontend), tiếp nhận tương tác của người dùng, kiểm tra tính hợp lệ của dữ liệu đầu vào và gửi các yêu cầu qua giao thức HTTP đến máy chủ Spring Boot (Backend). Máy chủ xử lý logic nghiệp vụ, thực hiện xác thực và tương tác với hệ quản trị cơ sở dữ liệu MariaDB để truy xuất hoặc cập nhật dữ liệu. Đối với chức năng tương tác thời gian thực, Client kết nối trực tiếp với dịch vụ Firebase để cập nhật và đồng bộ tin nhắn trong phòng chat.

Đặc tả Actor và danh mục Use Case

Hệ thống xác định một Actor duy nhất là User (Người dùng ứng dụng), được phân chia theo hai vai trò cụ thể: Quản lý (Leader - người tạo sự kiện) và Thành viên (Member). Toàn bộ hệ thống bao gồm 17 Use Case chức năng:

STT Tên Use Case Mô tả chức năng
1 Đăng nhập Đăng nhập vào hệ thống bằng tài khoản và mật khẩu đã tạo
2 Đăng ký Đăng ký tài khoản mới trên hệ thống
3 Lấy lại mật khẩu Khôi phục mật khẩu thông qua mã xác minh gửi về email
4 Cập nhật thông tin Thay đổi thông tin cá nhân: họ tên, ảnh đại diện, mật khẩu
5 Quản lý sự kiện Thêm, xóa, sửa và lưu mẫu sự kiện để tái sử dụng
6 Quản lý công việc Thêm, xóa, sửa các công việc trong khuôn khổ sự kiện
7 Tạo báo cáo Thống kê trạng thái các công việc để quản lý theo dõi
8 Tổng kết, rút kinh nghiệm Ghi nhận đánh giá, bài học kinh nghiệm sau khi sự kiện kết thúc
9 Quản lý thành viên Thêm thành viên vào sự kiện hoặc xóa thành viên khỏi sự kiện
10 Chức năng chat Phòng trao đổi chung giữa toàn bộ thành viên và leader trong sự kiện
11 Xem danh sách công việc Xem tổng quan danh sách hoặc chi tiết từng công việc (mở rộng từ UC6)
12 Giao việc cho thành viên Phân công một hoặc nhiều công việc cho thành viên (mở rộng từ UC6)
13 Đồng bộ lịch làm việc Đồng bộ thời gian thực hiện công việc vào Calendar của điện thoại (mở rộng từ UC6)
14 Phân quyền thành viên Thiết lập quyền Leader cho người tạo sự kiện và mời thành viên (mở rộng từ UC9)
15 Nhắn tin văn bản Gửi tin nhắn định dạng văn bản trong phòng chat (mở rộng từ UC10)
16 Gửi ảnh Gửi hình ảnh trong phòng chat (mở rộng từ UC10)
17 Thông báo Tự động tạo và gửi thông báo khi có thao tác thêm, sửa, xóa sự kiện hoặc công việc

Thiết kế luồng xử lý (Biểu đồ tuần tự)

Khóa luận chi tiết hóa 6 luồng xử lý trọng tâm thông qua các biểu đồ tuần tự:

  1. Thao tác đăng nhập: Giao diện kiểm tra định dạng dữ liệu đầu vào (tài khoản, email, mật khẩu). Nếu hợp lệ, giao diện gửi yêu cầu đăng nhập sang hệ thống; hệ thống xác thực với cơ sở dữ liệu. Nếu thông tin chính xác, hệ thống trả về thông tin đối tượng User và chuyển hướng vào màn hình chính; nếu sai mật khẩu hoặc tài khoản không tồn tại, giao diện nhận phản hồi lỗi và thông báo cho người dùng.
  2. Thao tác tạo sự kiện mới: Người dùng điền các thông tin sự kiện trên giao diện. Giao diện kiểm tra tính hợp lệ của dữ liệu trước khi gửi yêu cầu lưu trữ đến máy chủ. Hệ thống lưu bản ghi vào cơ sở dữ liệu, trả kết quả thành công và điều hướng về trang Danh sách sự kiện.
  3. Thao tác tạo sự kiện từ sự kiện có sẵn: Người dùng chọn chức năng tạo từ sự kiện mẫu; hệ thống truy vấn cơ sở dữ liệu và hiển thị danh sách các sự kiện đã lưu trước đó. Người dùng lựa chọn mẫu mong muốn; hệ thống nhận yêu cầu, thực hiện sao chép thông tin để khởi tạo bản ghi sự kiện mới trong cơ sở dữ liệu và thông báo hoàn thành.
  4. Thao tác tạo công việc: Người dùng nhập các thông tin nhiệm vụ (tên, mô tả, thời gian bắt đầu, thời gian kết thúc, thuộc tính hiển thị). Sau khi kiểm tra hợp lệ, hệ thống ghi dữ liệu công việc vào cơ sở dữ liệu và làm mới trang Danh sách công việc.
  5. Thao tác giao việc cho thành viên: Từ màn hình chi tiết công việc hoặc màn hình tạo việc, Leader gửi yêu cầu lấy danh sách thành viên thuộc sự kiện. Hệ thống truy xuất dữ liệu từ cơ sở dữ liệu và hiển thị danh sách. Leader chọn nhân sự thực hiện; hệ thống ghi nhận liên kết phân công vào cơ sở dữ liệu và thông báo kết quả.
  6. Thao tác chat: Khi người dùng truy cập phòng chat, hệ thống gửi yêu cầu và nhận lịch sử tin nhắn cũ từ Firebase Realtime Database để kết xuất lên giao diện. Khi người dùng nhập nội dung (văn bản, hình ảnh, âm thanh) và nhấn gửi, giao diện kiểm tra định dạng và gửi yêu cầu ghi dữ liệu trực tiếp lên Firebase; khi nhận phản hồi ghi thành công, tin nhắn mới sẽ hiển thị ngay trên giao diện phòng chat.

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu quan hệ trên MariaDB được thiết kế với các bảng dữ liệu có cấu trúc chặt chẽ nhằm đảm bảo tính toàn vẹn dữ liệu:

Bảng Event (Lưu thông tin sự kiện)

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa, ghi chú
1 id string Khóa chính Mã định danh sự kiện
2 name string Bắt buộc Tên gọi của sự kiện
3 status string Bắt buộc Trạng thái hiện tại của sự kiện
4 description string Tùy chọn Đoạn văn bản miêu tả chi tiết sự kiện
5 startAt datetime Bắt buộc Thời điểm bắt đầu diễn ra sự kiện
6 endAt datetime Bắt buộc Thời điểm kết thúc sự kiện
7 experience string Tùy chọn Kinh nghiệm, bài học rút ra sau sự kiện

Bảng Task (Lưu thông tin công việc)

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa, ghi chú
1 id string Khóa chính Mã định danh công việc
2 name string Bắt buộc Tên công việc
3 status string Bắt buộc Trạng thái thực hiện của công việc
4 description string Tùy chọn Miêu tả chi tiết nội dung công việc
5 startAt datetime Bắt buộc Thời điểm bắt đầu công việc
6 endAt datetime Bắt buộc Thời điểm hạn chót kết thúc công việc
7 eventId string Khóa ngoại Mã sự kiện mà công việc trực thuộc
8 isShow bool Mặc định false Cờ xác định: true thì hiển thị trên Timeline sự kiện, false thì không

Bảng User (Lưu thông tin người dùng)

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa, ghi chú
1 id string Khóa chính Mã định danh người dùng
2 name string Bắt buộc Họ và tên người dùng
3 role string Khóa ngoại Vai trò hệ thống của người dùng
4 email string Bắt buộc Địa chỉ email người dùng
5 avatarUrl string Tùy chọn Đường dẫn URL ảnh đại diện
6 activated bool Mặc định false Cờ xác định tài khoản đã được kích hoạt hay chưa

Các bảng quan hệ và bảng trạng thái

  • UserEvent: Bảng liên kết giữa người dùng và sự kiện, gồm các trường: id (string, PK), eventId (string, FK liên kết Event), userId (string, FK liên kết User), roleId (string, FK liên kết vai trò của người dùng trong sự kiện đó).
  • UserTask: Bảng liên kết giữa người dùng và công việc được giao, gồm các trường: id (string, PK), taskId (string, FK liên kết Task), userId (string, FK liên kết User).
  • EventStatus: Bảng danh mục định nghĩa trạng thái sự kiện, gồm các trường: id (string, PK) và status (string, Bắt buộc - tên loại trạng thái).
  • TaskStatus: Bảng danh mục định nghĩa trạng thái công việc, gồm các trường: id (string, PK) và status (string, Bắt buộc - tên loại trạng thái).
  • Các bảng bổ trợ khác được liệt kê trong danh mục thiết kế hệ thống gồm có: bảng phân quyền (Role), bảng lưu trữ thông tin phòng chat (Chat) và bảng dữ liệu lịch sử thông báo (Notification).

Triển khai giao diện và hệ thống

Hệ thống giao diện ứng dụng bao gồm 20 màn hình chức năng chính (được đánh mã tại Bảng 2.20 của tài liệu), bao gồm các phân hệ:

  • Màn hình xác thực: Đăng nhập, Đăng ký, Quên mật khẩu (giai đoạn 1 và 2), Đổi mật khẩu.
  • Màn hình quản lý sự kiện: Danh sách sự kiện, Thêm mới sự kiện, Chi tiết sự kiện (phần 1 và phần 2), Dòng thời gian sự kiện (Timeline), Tổng kết rút kinh nghiệm.
  • Màn hình quản lý nhiệm vụ và nhân sự: Danh sách công việc, Tạo công việc, Chi tiết công việc, Giao việc cho thành viên, Danh sách thành viên sự kiện.
  • Màn hình tương tác và tiện ích: Danh sách phòng chat, Giao diện chi tiết phòng chat, Màn hình danh sách thông báo hệ thống. Quá trình triển khai máy chủ Backend được thực hiện thông qua công cụ dòng lệnh PuTTY để cấu hình môi trường chạy Java và kết nối MariaDB.

Nội dung chính theo từng chương

Chương 1: Mở đầu

Chương 1 trình bày tổng quan về đề tài, lý do lựa chọn nghiên cứu xuất phát từ thực trạng tổ chức sự kiện tại trường học và doanh nghiệp. Tác giả xác lập mục tiêu nghiên cứu gồm 6 điểm trọng tâm, xác định phạm vi hệ điều hành (Android, iOS) cùng phạm vi 10 nhóm tính năng nghiệp vụ. Phần trọng tâm của chương là báo cáo hiện trạng bài toán: khảo sát thực tế trên 7 sinh viên tại Làng Đại học Quốc gia TP.HCM để chỉ ra các bất cập khi kết hợp rời rạc các công cụ Google Sheets, Messenger, Zalo; đồng thời phân tích ưu điểm và hạn chế của hai phần mềm Eventbrite và Event Planner để làm cơ sở định hình các yêu cầu chức năng cho ứng dụng mới.

Chương 2: Phân tích thiết kế hệ thống và xây dựng ứng dụng

Chương 2 là phần nội dung kỹ thuật cốt lõi của khóa luận, bao gồm:

  • Phân tích yêu cầu hệ thống: xác định các yêu cầu tính năng (truy vấn, cập nhật, lưu trữ, tự động nhắc việc và thông báo) cùng yêu cầu phi chức năng (ngôn ngữ tiếng Việt, giao diện trực quan, bảo mật phân quyền).
  • Phân tích yêu cầu người dùng: mô tả cấu trúc Actor User và chi tiết 17 Use Case thông qua biểu đồ ca sử dụng và các bảng đặc tả Use Case (Đăng nhập, Quản lý sự kiện, Quản lý công việc, Giao việc, Chat, Tạo sự kiện từ mẫu đã lưu, Thông báo).
  • Thiết kế xử lý: mô hình hóa chi tiết 6 biểu đồ tuần tự (Sequence Diagram) thể hiện cơ chế tương tác thông điệp giữa các tầng của hệ thống.
  • Thiết kế cơ sở dữ liệu: xây dựng sơ đồ lớp (Class Diagram) và mô tả chi tiết cấu trúc trường, kiểu dữ liệu, ràng buộc của các bảng Event, Task, User, UserEvent, UserTask, EventStatus, TaskStatus, Role, Chat, Notification.
  • Kiến trúc công nghệ và giao diện: trình bày việc tích hợp Flutter, Spring Boot, MariaDB, Firebase, giao thức SMTP và hiện thực hóa hệ thống thông qua danh mục 20 màn hình giao diện.

Chương 3: Kết luận và hướng phát triển

Chương 3 tổng kết các kết quả kỹ thuật đã hoàn thành so với các mục tiêu đề ra ban đầu; phân tích những điều kiện thuận lợi về mặt công nghệ, sự hỗ trợ chuyên môn từ giảng viên hướng dẫn cũng như những khó khăn phát sinh trong quá trình xây dựng hệ thống và tích hợp đa nền tảng; cuối cùng trình bày định hướng nghiên cứu và phát triển ứng dụng trong các giai đoạn tiếp theo.


Kết quả và đóng góp

Kết quả kỹ thuật chính

  • Xây dựng thành công ứng dụng di động đa nền tảng hoạt động trên Android và iOS bằng Flutter (ngôn ngữ Dart), kết nối ổn định với hệ thống Backend viết bằng Spring Boot (ngôn ngữ Java) thông qua kiến trúc RESTful API.
  • Hiện thực hóa đầy đủ các nhóm chức năng đã đề ra trong đề cương:
    • Xác thực người dùng, hỗ trợ khôi phục mật khẩu thông qua email bằng giao thức SMTP.
    • Quản lý sự kiện: tạo sự kiện mới, xem chi tiết, quản lý timeline và đặc biệt là tính năng nhân bản/tạo sự kiện mới từ các sự kiện mẫu đã lưu trước đó.
    • Quản lý công việc: tạo việc, phân rã công việc, hiển thị nhiệm vụ trên timeline sự kiện thông qua cờ thuộc tính isShow.
    • Phân công nhiệm vụ: cho phép Leader phân bổ một hoặc nhiều công việc cụ thể cho từng thành viên trong sự kiện thông qua bảng quan hệ UserTask.
    • Chức năng trao đổi nhóm: xây dựng phòng chat thời gian thực hỗ trợ nhắn tin văn bản, gửi hình ảnh và âm thanh thông qua nền tảng Firebase Realtime Database.
    • Tiện ích hệ thống: tích hợp cơ chế đồng bộ thời gian công việc trực tiếp vào ứng dụng Calendar của điện thoại di động để tự động phát tín hiệu nhắc việc; hệ thống thông báo tự động khi có biến động về sự kiện và công việc.
  • Hoàn thiện bản thiết kế và hiện thực hóa cơ sở dữ liệu quan hệ gồm 7 bảng nghiệp vụ chính cùng hệ thống 20 màn hình giao diện người dùng.

Giải pháp và đóng góp của tác giả

  • Giải pháp nền tảng tích hợp (All-in-one): Giải quyết triệt để vấn đề phân tán dữ liệu mà sinh viên và các ban tổ chức sự kiện thường gặp phải khi phải dùng song song Google Sheets (để lập kế hoạch) và Zalo/Messenger (để thảo luận). Ứng dụng gom toàn bộ quy trình từ lập kế hoạch, phân rã công việc, giám sát tiến độ, trao đổi nội bộ và nhắc việc vào một môi trường tập trung duy nhất.
  • Tính năng lưu trữ và tái sử dụng mẫu sự kiện: Giúp ban tổ chức tối ưu hóa thời gian chuẩn bị cho các sự kiện có chu kỳ lặp lại hoặc có quy trình tương tự mà không cần phải thiết lập lại dữ liệu từ đầu.
  • Đóng góp so với các nghiên cứu và ứng dụng đi trước:
    • Khắc phục nhược điểm của Eventbrite: bổ sung công cụ quản trị tiến độ chi tiết của ban tổ chức trong suốt quá trình sự kiện diễn ra, không cần phụ thuộc vào ứng dụng ngoài để họp bàn và bổ sung tính năng phân chia công việc cho từng thành sự kiện.
    • Khắc phục nhược điểm của Event Planner: chuyển đổi từ mô hình quản lý cá nhân đơn lẻ sang mô hình làm việc nhóm có phân quyền (Leader và Member), tích hợp kênh chat nội bộ và loại bỏ hoàn toàn quảng cáo làm gián đoạn trải nghiệm người dùng.
    • Hệ thống được thiết kế hoàn toàn bằng ngôn ngữ Tiếng Việt, bám sát văn hóa và quy trình tổ chức sự kiện thực tế của học sinh, sinh viên và các đoàn thể tại Việt Nam.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

Dựa trên phạm vi nghiên cứu và nội dung được trình bày trong văn bản:

  • Quy mô mẫu khảo sát ban đầu còn khiêm tốn (thực hiện khảo sát trên 7 sinh viên thuộc khu vực Làng Đại học Quốc gia TP.HCM), do đó chưa bao quát hết các kịch bản tổ chức sự kiện phức tạp ở quy mô doanh nghiệp lớn.
  • Khóa luận áp dụng mô hình phát triển phần mềm thác nước (Waterfall), dẫn đến việc các yêu cầu phải được đóng băng từ sớm, gây khó khăn nhất định nếu có các yêu cầu nghiệp vụ thay đổi phát sinh đột xuất trong giai đoạn sau.
  • Một số nội dung được định hướng ban đầu trong đề cương (như chi tiết về phân hệ quản lý chi phí tài chính sâu cho sự kiện) chưa được thể hiện thành các thực thể dữ liệu độc lập và chi tiết trong chương thiết kế cơ sở dữ liệu (hệ thống tập trung chủ yếu vào quản lý nhiệm vụ, con người, thời gian và trao đổi thông tin).

Hướng nghiên cứu và phát triển tiếp

  • Mở rộng thêm các tính năng chuyên biệt cho ứng dụng nhằm đáp ứng nhiều loại hình sự kiện đa dạng hơn trong tương lai (theo mục tiêu nêu tại Chương 3).
  • Nghiên cứu và bổ sung các phân hệ mở rộng như quản lý thu chi, ngân sách sự kiện chi tiết.
  • Tối ưu hóa hiệu năng truyền tải dữ liệu và kiến trúc cơ sở dữ liệu khi hệ thống phải xử lý lượng lớn phòng chat và người dùng hoạt động đồng thời.

Giá trị tham khảo

  • Đối tượng tham khảo: Tài liệu là nguồn tham khảo hữu ích cho sinh viên các ngành Kỹ thuật Phần mềm, Công nghệ Thông tin, Hệ thống Thông tin đang thực hiện đồ án chuyên ngành hoặc khóa luận tốt nghiệp về phát triển ứng dụng di động đa nền tảng và hệ thống thông tin quản lý.
  • Các phần nội dung có giá trị tham khảo cao:
    • Quy trình phân tích thiết kế hệ thống phần mềm: Cung cấp mẫu đặc tả hoàn chỉnh theo chuẩn kỹ thuật phần mềm, bao gồm sơ đồ Use Case, bảng mô tả Use Case chi tiết và 6 biểu đồ tuần tự (Sequence Diagram) mô hình hóa chính xác các luồng tương tác hệ thống.
    • Mô hình kiến trúc kết hợp: Tài liệu thể hiện phương án kết hợp kiến trúc thực tế giữa hệ thống Backend Spring Boot (Java) phục vụ xử lý RESTful API nghiệp vụ với nền tảng Firebase Realtime Database phục vụ tính năng trao đổi thông điệp tức thời.
    • Thiết kế cơ sở dữ liệu quan hệ: Cung cấp mô hình dữ liệu chuẩn hóa cho bài toán quản lý sự kiện và phân rã công việc (gồm cấu trúc các bảng Event, Task, User, UserEvent, UserTask), đặc biệt là giải pháp sử dụng cờ boolean (isShow) để điều khiển việc kết xuất dữ liệu nhiệm vụ lên trục thời gian (Timeline).

Câu hỏi thường gặp

1. Ứng dụng giải quyết hạn chế lớn nhất nào của hai phần mềm Eventbrite và Event Planner theo khảo sát của tác giả?

Theo khảo sát của tác giả, Eventbrite chỉ tập trung vào việc tạo sự kiện, bán vé và phải phụ thuộc vào ứng dụng thứ ba (Zoom, Google Meet) chứ không theo dõi được quá trình thực hiện sự kiện cũng như thiếu chức năng phân công công việc. Trong khi đó, Event Planner chỉ hỗ trợ quản lý cá nhân, không có tính năng tương tác nhóm và xuất hiện nhiều quảng cáo. Ứng dụng trong khóa luận giải quyết cả hai hạn chế này bằng cách tích hợp đồng thời công cụ phân rã công việc, gán việc cho từng cá nhân, theo dõi tiến độ và tích hợp phòng chat nội bộ trong cùng một hệ thống không quảng cáo.

2. Hệ thống tổ chức cơ sở dữ liệu như thế nào để vừa xử lý dữ liệu nghiệp vụ vừa đáp ứng yêu cầu chat thời gian thực?

Hệ thống sử dụng cơ chế cơ sở dữ liệu kép:

  • Hệ quản trị cơ sở dữ liệu quan hệ MariaDB được sử dụng để lưu trữ các bảng dữ liệu nghiệp vụ có cấu trúc chặt chẽ gồm Event, Task, User, UserEvent, UserTask, EventStatus, TaskStatus, Role và Notification.
  • Nền tảng Firebase Realtime Database được sử dụng độc lập để phục vụ lưu trữ và truyền nhận dữ liệu phòng chat (tin nhắn văn bản, hình ảnh, âm thanh) nhằm đảm bảo tốc độ phản hồi tức thời giữa các thành viên mà không gây áp lực truy vấn lên cơ sở dữ liệu quan hệ chính.

3. Thuộc tính nào trong thiết kế cơ sở dữ liệu quyết định việc một công việc có được hiển thị trên dòng thời gian (Timeline) của sự kiện hay không?

Trong bảng dữ liệu Task, tác giả thiết kế trường dữ liệu isShow thuộc kiểu boolean với giá trị mặc định là false. Khi người dùng hoặc quản lý thiết lập giá trị này thành true, hệ thống sẽ cho phép công việc đó được hiển thị trực quan trên trục Timeline của sự kiện; nếu giá trị là false, công việc chỉ xuất hiện trong danh sách công việc thông thường.

4. Quá trình xác thực và lấy lại mật khẩu của người dùng được hiện thực hóa thông qua giao thức nào?

Trong thiết kế hệ thống của khóa luận, chức năng lấy lại mật khẩu sử dụng giao thức gửi thư điện tử chuẩn SMTP (Simple Mail Transfer Protocol). Khi người dùng yêu cầu khôi phục mật khẩu, hệ thống sẽ tạo và gửi một mã xác minh về hòm thư điện tử (email) của người dùng; sau khi nhập đúng mã xác minh trên giao diện, người dùng mới được phép cập nhật mật khẩu mới.

5. Tại sao tác giả lại áp dụng mô hình thác nước (Waterfall Model) thay vì các mô hình phát triển phần mềm linh hoạt (Agile/Scrum)?

Tác giả quyết định lựa chọn mô hình thác nước vì toàn bộ ý tưởng, phạm vi đề tài và danh mục các chức năng của ứng dụng đã được khảo sát kỹ lưỡng và xác định rõ ràng, chi tiết ngay từ ban đầu thông qua việc phỏng vấn người dùng thực tế và khảo sát đối chuẩn các ứng dụng tương tự trước khi bước vào giai đoạn thiết kế và lập trình.


Kết luận

Khóa luận tốt nghiệp "Xây dựng ứng dụng di động quản lý sự kiện" của sinh viên Huỳnh Quốc An đã hoàn thành việc nghiên cứu, phân tích và triển khai một giải pháp phần mềm hỗ trợ công tác tổ chức sự kiện toàn diện trên nền tảng di động. Bằng việc kết hợp kiến trúc đa nền tảng Flutter với máy chủ dịch vụ Spring Boot, hệ quản trị cơ sở dữ liệu MariaDB và nền tảng Firebase Realtime Database, tác giả đã giải quyết hiệu quả nhu cầu quản trị nhiệm vụ, phân công nhân sự và giao tiếp nội bộ tập trung. Kết quả đề tài không chỉ đáp ứng đầy đủ các yêu cầu kỹ thuật của một đồ án kỹ sư phần mềm mà còn mang lại giá trị tham khảo thực tiễn rõ nét cho việc phát triển các hệ thống quản lý công việc và sự kiện phục vụ cộng đồng học sinh, sinh viên và các tổ chức đoàn thể.