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

Trong bối cảnh công nghiệp 4.0 và sự phát triển của công nghệ thông tin, việc áp dụng khoa học kỹ thuật vào các mô hình kinh doanh dịch vụ ngày càng trở nên thiết yếu. Tại các doanh nghiệp và cơ sở kinh doanh như quán cà phê, mô hình sử dụng lao động bán thời gian (part-time) chiếm tỷ trọng lớn. Hoạt động này dẫn đến những phức tạp trong công tác quản lý nhân sự, điển hình là việc theo dõi ca làm việc, chấm công, sắp xếp lịch làm việc phù hợp với lịch rảnh/bận của từng nhân viên và tính toán tiền lương định kỳ. Việc thực hiện các công việc này theo phương thức thủ công gây tiêu tốn thời gian, dễ xảy ra sai sót và làm giảm hiệu quả vận hành.

Từ thực tiễn đó, nhóm sinh viên Khoa Công nghệ Thông tin, Trường Đại học Bách khoa – Đại học Đà Nẵng đã thực hiện đồ án môn học "PBL3: Đồ án Công nghệ phần mềm" với đề tài "Quản Lý Nhân Viên Quán Cafe". Đồ án được thực hiện bởi nhóm tác giả gồm Phạm Thành Công, Đào Duy Long và Nguyễn Tiến Thịnh (Nhóm học phần 20.11), dưới sự hướng dẫn của giảng viên Mai Văn Hà (năm 2022).

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định cụ thể:

  1. Xây dựng một phần mềm quản lý giúp chủ cửa hàng cà phê thuận tiện trong việc quản lý nhân sự và các hoạt động vận hành nội bộ.
  2. Cung cấp công cụ cho nhân viên quán cà phê dễ dàng điểm danh, tra cứu lịch làm việc cá nhân, đăng ký lịch bận và theo dõi mức lương.
  3. Ứng dụng quy trình phát triển phần mềm theo mô hình chuẩn, từ thu thập yêu cầu, phân tích nghiệp vụ, thiết kế giao diện, thiết kế kiến trúc và cơ sở dữ liệu đến hiện thực hóa mã nguồn và kiểm thử.
  4. Cung cấp tài liệu kỹ thuật hoàn chỉnh phục vụ cho sinh viên phát triển dự án, kiểm thử viên và các bên liên quan.

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

  • Đối tượng nghiên cứu: Quy trình nghiệp vụ quản lý nhân viên tại quán cà phê (quản lý hồ sơ nhân viên, phân quyền tài khoản, đăng ký lịch bận, xếp lịch làm việc tự động/thủ công, điểm danh nhận ca và tính toán tiền lương).
  • Phạm vi áp dụng: Hệ thống được thiết kế và triển khai ứng dụng cho phạm vi vận hành của một quán cà phê, phục vụ hai nhóm người dùng chính là Người quản lý (Admin) và Nhân viên (User).

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

Đề tài áp dụng các nguyên lý kỹ thuật phần mềm chuẩn trong phân tích, thiết kế và phát triển hệ thống ứng dụng:

Khung lý thuyết và mô hình kiến trúc

  • Kiến trúc phần mềm 3 lớp (3-tier Architecture): Ứng dụng được tổ chức theo mô hình phân tầng nhằm tách biệt giữa tầng hiển thị giao diện (GUI), tầng xử lý logic nghiệp vụ và tầng truy xuất dữ liệu, giúp tăng tính module hóa, dễ bảo trì và mở rộng mã nguồn.
  • Mô hình hóa hệ thống bằng UML (Unified Modeling Language): Sử dụng các biểu đồ chuẩn hóa để phân tích và thiết kế, bao gồm:
    • Biểu đồ ca sử dụng (Use Case Diagram): Xác định ranh giới hệ thống, các tác nhân và chức năng tương ứng.
    • Biểu đồ hoạt động (Activity Diagram): Mô hình hóa luồng xử lý chi tiết cho từng tác vụ như đăng nhập, quản lý nhân viên, xếp lịch, điểm danh và tính lương.
    • Biểu đồ tuần tự (Sequence Diagram): Thể hiện tương tác theo thời gian giữa các đối tượng trong hệ thống cho từng ca sử dụng cụ thể.
  • Mô hình cơ sở dữ liệu quan hệ (Relational Database): Thiết kế cấu trúc bảng, khóa chính, khóa ngoại và các ràng buộc toàn vẹn để quản lý dữ liệu nhân sự, lịch làm việc, chấm công và phân quyền.

Phương pháp nghiên cứu và quy trình phát triển

  • Phương pháp phân tích nghiệp vụ: Khảo sát các yêu cầu thực tế trong việc quản lý nhân sự tại quán cà phê để đưa ra danh mục ca sử dụng và các luồng sự kiện (chính, thay thế).
  • Phương pháp thiết kế và phát triển lặp: Quy trình triển khai được chia thành 8 giai đoạn cụ thể trong khoảng thời gian xác định.
  • Công cụ và phương thức phối hợp quản lý dự án:
    • Figma: Thiết kế nguyên mẫu giao diện người dùng (wireframe/mockup).
    • GitHub: Quản lý kho mã nguồn (source code) và phân nhánh phát triển giữa các thành viên.
    • Google Drive & Mạng xã hội: Lưu trữ tài liệu thống nhất và trao đổi nội bộ.
    • Họp rà soát và kiểm thử (Code review & Testing): Đánh giá công việc, phát hiện và sửa chữa lỗi phần mềm.

Thiết kế và triển khai

Kế hoạch và tiến độ thực hiện

Dự án được triển khai qua 8 giai đoạn với tổng thời gian thực hiện kéo dài 16 tuần:

Giai đoạn Khoảng thời gian Nhiệm vụ thực hiện
Giai đoạn 1 1 tuần Chọn đề tài cho dự án
Giai đoạn 2 1 tuần Phân tích các tác nhân và các chức năng cơ bản của phần mềm
Giai đoạn 3 2 tuần Lên ý tưởng và bắt đầu thiết kế giao diện trên Figma
Giai đoạn 4 2 tuần Thiết kế cơ sở dữ liệu cho phần mềm
Giai đoạn 5 1 tuần Thực hiện thiết kế giao diện từ bản vẽ Figma trước đó
Giai đoạn 6 3 tuần Lên ý tưởng và nghiên cứu thuật toán cho phần mềm
Giai đoạn 7 4 tuần Lập trình các chức năng, chuyển giao thuật toán vào phần mềm
Giai đoạn 8 2 tuần Hoàn thiện báo cáo đồ án công nghệ phần mềm

Phân công nhiệm vụ nhóm

Thành viên thực hiện Trách nhiệm và hạng mục công việc đảm nhiệm
Phạm Thành Công - Khởi tạo dự án.
- Xây dựng cơ sở dữ liệu, thiết lập mô hình 3 lớp.
- Lập trình chức năng: Đăng nhập, phân quyền, đổi mật khẩu, xếp lịch làm việc, tính lương nhân viên, xem thông tin cá nhân và toàn bộ nhân viên.
- Quản lý mã nguồn (Source code) và viết báo cáo.
Nguyễn Tiến Thịnh - Thiết kế giao diện trên Figma.
- Lập trình GUI và các chức năng: Thêm, sửa, xóa, xem thông tin nhân viên (CRUD).
- Viết báo cáo và xây dựng slide thuyết trình.
Đào Duy Long - Lập trình chức năng: Điểm danh nhân viên, đăng ký lịch bận, xem lịch làm việc cá nhân.
- Viết báo cáo và xây dựng slide thuyết trình.

Phân tích ca sử dụng (Use Case) và tác nhân hệ thống

Hệ thống xác định hai tác nhân (actors) chính với các quyền hạn riêng biệt:

Tác nhân Danh mục chức năng / Quyền hạn
Quản lý (Admin) Đăng nhập, Đổi mật khẩu, Xem thông tin nhân viên, Tìm kiếm nhân viên, Thêm nhân viên, Cập nhật thông tin nhân viên, Xóa nhân viên, Xếp lịch làm việc, Xem lịch làm việc, Tính lương cho toàn bộ nhân viên, Chỉnh sửa lương theo giờ, Xem giới thiệu.
Nhân viên (User) Đăng nhập, Đổi mật khẩu, Điểm danh (check-in/check-out), Đăng ký lịch bận, Xóa lịch bận, Xem toàn bộ lịch làm việc, Xem lịch làm việc cá nhân, Xem thông tin cá nhân, Xem giới thiệu.

Đặc tả các ca sử dụng tiêu biểu:

  • UC001 - Đăng nhập: Kiểm tra tính hợp lệ của tài khoản và mật khẩu, điều hướng giao diện phù hợp với vai trò (Admin hoặc User).
  • UC002 - Thay đổi mật khẩu: Xác thực mật khẩu cũ, kiểm tra trùng khớp mật khẩu mới và cập nhật vào hệ thống.
  • UC004 - Quản lý nhân viên (Admin): Thực hiện các tác vụ tạo mới, cập nhật hồ sơ, xóa nhân viên theo mã nhân viên và tìm kiếm theo tiêu chí.
  • UC005 - Quản lý lịch làm việc (Admin): Tự động tổng hợp dữ liệu đăng ký lịch bận của nhân viên để xếp lịch làm việc, cho phép quản lý chỉnh sửa trực tiếp trên bảng lịch sau khi sắp xếp.
  • UC006 - Tính lương nhân viên (Admin): Tính lương theo chức vụ, hệ số lương hoặc mức lương theo giờ và hiển thị chi tiết theo từng bộ phận.
  • Chức năng Điểm danh (User): Xác nhận thời gian bắt đầu và kết thúc làm việc, kiểm tra tính hợp lệ về thời gian và ca làm quy định.
  • Chức năng Đăng ký / Xóa lịch bận (User): Nhân viên đăng ký các ca bận trong tuần/tháng để làm dữ liệu đầu vào cho quản lý xếp lịch.

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

Hệ thống sử dụng cơ sở dữ liệu quan hệ gồm 7 bảng dữ liệu chính:

  1. Bảng chucvu (Đối tượng chức vụ):

    • id_chucvu (Int, Primary Key): Mã phân biệt giữa các chức vụ.
    • tenchucvu (Varchar(50), Not Null): Tên gọi chức vụ.
    • luongcoban (Float, Not Null): Mức lương cơ bản quy định cho từng chức vụ.
  2. Bảng thongtinchung (Hồ sơ nhân viên):

    • id_nhanvien (Char(10), Primary Key): Mã định danh nhân viên.
    • hoten (Varchar(50), Not Null): Họ và tên nhân viên.
    • gioitinh (Int, Not Null): Giới tính.
    • ngaysinh (Date, Null): Ngày tháng năm sinh.
    • sdt (Char(15), Null): Số điện thoại liên lạc.
    • diachi (Varchar(150), Null): Địa chỉ cư trú.
    • cccd (Varchar(100), Not Null): Số căn cước công dân hoặc CMND.
    • email (Varchar(100), Not Null): Địa chỉ email.
    • id_chucvu (Int, Not Null, Foreign Key liên kết chucvu): Mã chức vụ đảm nhiệm.
    • username (Varchar(20), Not Null): Tên đăng nhập hệ thống.
  3. Bảng lich (Danh mục lịch làm việc):

    • id_lich (Int, Primary Key, Auto Increment): Mã nhận diện bản ghi lịch làm việc.
    • ngaylamviec (Date, Not Null): Ngày làm việc trong tháng hiện tại và kế tiếp.
    • buoi (Varchar(20), Not Null): Ca làm việc trong ngày (Ca sáng, Ca chiều, Ca tối).
  4. Bảng ban (Lịch bận của nhân viên):

    • id_ban (Int, Primary Key, Auto Increment): Mã nhận diện bản ghi báo bận.
    • id_lich (Int, Not Null, Foreign Key liên kết lich): Ca làm việc bị bận.
    • id_nhanvien (Char(10), Not Null, Foreign Key liên kết thongtinchung): Mã nhân viên báo bận.
  5. Bảng nhanvien_lich (Phân công và điểm danh làm việc):

    • id_nvLich (Int, Primary Key, Auto Increment): Mã phân công ca làm.
    • id_lich (Int, Not Null, Foreign Key liên kết lich): Ca làm việc được phân công.
    • id_nhanvien (Varchar(50), Not Null, Foreign Key liên kết thongtinchung): Nhân viên thực hiện.
    • thoigianbatdau (DateTime, Null): Thời gian thực tế khi nhân viên Check-in.
    • thoigianketthuc (DateTime, Null): Thời gian thực tế khi nhân viên Check-out.
  6. Bảng lich_chi_tiet (Cấu hình thời gian ca làm việc):

    • buoi (String, Primary Key): Tên buổi làm việc quy chuẩn (Sáng, Chiều, Tối).
    • thoigianbatdau (DateTime, Null): Giờ bắt đầu quy định của ca.
    • thoigianketthuc (DateTime, Null): Giờ kết thúc quy định của ca.
  7. Bảng role (Tài khoản và phân quyền):

    • username (Varchar(20), Primary Key): Tên đăng nhập của người dùng.
    • password (Varchar(30), Null): Mật khẩu truy cập.
    • role (Varchar(20), Null): Quyền hạn tài khoản (Admin hoặc User).

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

1. Quá trình triển khai

Trình bày kế hoạch thực hiện đồ án môn học gồm 8 giai đoạn trong vòng 16 tuần, bao gồm các mốc từ chọn đề tài, phân tích hệ thống, thiết kế giao diện trên Figma, xây dựng cơ sở dữ liệu, nghiên cứu thuật toán, lập trình chức năng đến hoàn thiện báo cáo kỹ thuật.

2. Danh sách phân công nhiệm vụ và Quản lý dự án

Xác định vai trò cụ thể của ba thành viên trong nhóm và quy trình quản trị dự án:

  • Phân chia công việc theo các module chức năng (Admin, User, Database, Giao diện).
  • Sử dụng Figma và GitHub làm công cụ quản lý thiết kế và lưu trữ mã nguồn chung.
  • Tổ chức họp nhóm định kỳ để rà soát tiến độ (task review), kiểm thử hệ thống và khắc phục lỗi phát sinh.

3. Giới thiệu và Phân tích nghiệp vụ hệ thống

Làm rõ mục đích xây dựng phần mềm nhằm hỗ trợ vận hành quán cà phê, xác định phạm vi phục vụ nội bộ giữa người quản lý và nhân viên. Phân tích chi tiết quy trình nghiệp vụ: cấp phát tài khoản, quy trình điểm danh vào/ra ca, quy trình nhân viên đăng ký lịch bận và cách thức quản lý sử dụng dữ liệu lịch bận để bố trí ca làm việc và tính toán tiền lương.

4. Phân tích thiết kế hệ thống

Là nội dung trọng tâm của đồ án, bao gồm:

  • Thiết lập danh mục tác nhân và đặc tả chi tiết các Use Case (UC001 đến UC006, cùng các ca sử dụng điểm danh, báo bận, tra cứu).
  • Xây dựng hệ thống biểu đồ hoạt động và biểu đồ tuần tự cho từng luồng chức năng của hai phân hệ Admin và User.
  • Thiết kế mô hình cơ sở dữ liệu quan hệ hoàn chỉnh với 7 bảng dữ liệu, chuẩn hóa các trường thông tin, kiểu dữ liệu và mối quan hệ khóa ngoại.

5. Yêu cầu phi chức năng

Xác lập các tiêu chuẩn vận hành cho ứng dụng:

  • Yêu cầu giao diện: Thân thiện, trực quan, dễ thao tác và phản hồi chính xác tương tác của người dùng.
  • Yêu cầu bảo mật: Kiểm soát chặt chẽ quyền truy cập dữ liệu và chức năng theo vai trò tài khoản được phân quyền.
  • Yêu cầu ràng buộc hệ thống: Ứng dụng hoạt động trên nền tảng Desktop (máy tính cá nhân), dung lượng cơ sở dữ liệu đáp ứng lưu trữ dữ liệu vận hành và bàn giao đúng tiến độ quy định.

6. Chương trình và kết quả

Trình bày chi tiết kết quả xây dựng giao diện và kiểm thử vận hành thực tế của phần mềm:

  • Phân hệ Admin: Giao diện đăng nhập, đổi mật khẩu, xem danh sách bảng nhân viên, tìm kiếm nhân viên theo mã, thêm/cập nhật/xóa nhân viên, chức năng tự động xếp lịch dựa trên lịch bận, xem lịch làm việc tổng thể, tính lương theo chức vụ và cập nhật mức lương theo giờ.
  • Phân hệ User: Giao diện đăng nhập, đổi mật khẩu, bảng điểm danh theo ca, form đăng ký/xóa lịch bận, xem lịch làm việc cá nhân và xem toàn bộ lịch làm việc của quán.

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

Kết quả chính

  • Hoàn thành trọn vẹn phần mềm quản lý nhân viên quán cà phê trên môi trường Desktop theo mô hình 3 lớp.
  • Xây dựng thành công hệ thống cơ sở dữ liệu gồm 7 bảng liên kết chặt chẽ, đáp ứng đầy đủ các nghiệp vụ nhân sự đặc thù của quán cà phê.
  • Triển khai đầy đủ 2 nhóm giao diện chức năng riêng biệt theo phân quyền:
    • Phân hệ Admin với 11 chức năng quản lý, nổi bật là module xếp lịch làm việc dựa trên lịch bận và module tính lương theo chức vụ/giờ.
    • Phân hệ User với 7 chức năng hỗ trợ nhân viên chủ động điểm danh, báo bận và tra cứu thông tin cá nhân.
  • Hoàn thành đầy đủ hồ sơ thiết kế công nghệ phần mềm với hệ thống biểu đồ Use Case, Activity Diagram và Sequence Diagram cho từng trường hợp sử dụng.

Đóng góp thực tiễn

  • Giải quyết được bài toán phân ca làm việc phức tạp đối với lao động bán thời gian tại các quán cà phê nhờ cơ chế đăng ký lịch bận trước khi xếp lịch.
  • Tự động hóa quá trình tính lương dựa trên chức vụ và thời gian làm việc thực tế, giảm thiểu sai sót so với việc ghi chép sổ sách thủ công.
  • Cung cấp tài liệu quy trình phát triển phần mềm chi tiết từ khâu thiết kế Figma, quản lý mã nguồn GitHub đến hiện thực hóa mã nguồn, làm tài liệu tham khảo cho các dự án phát triển ứng dụng quản lý tương tự.

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

Hạn chế

  • Đồ án là sản phẩm lập trình ứng dụng đầu tay của nhóm tác giả nên khó tránh khỏi một số thiếu sót trong tối ưu hóa giao diện và xử lý các ngoại lệ nghiệp vụ phức tạp.
  • Phạm vi ứng dụng hiện tại chỉ hoạt động dưới dạng ứng dụng Desktop cục bộ trên máy vi tính, chưa hỗ trợ truy cập đa nền tảng hoặc ứng dụng di động cho nhân viên.
  • Thuật toán xếp lịch làm việc tự động mới dừng ở mức xử lý cơ bản dựa trên lịch bận đã đăng ký, chưa tích hợp nhiều ràng buộc nâng cao (như giới hạn số ca tối đa/tối thiểu của nhân viên trong tuần, ưu tiên thâm niên).

Hướng phát triển

  • Tiếp tục tối ưu và nâng cấp thuật toán sắp xếp lịch làm việc để đáp ứng linh hoạt hơn các yêu cầu phân ca phức tạp.
  • Cải tiến giao diện người dùng nhằm nâng cao trải nghiệm sử dụng trên các màn hình kích thước khác nhau.
  • Mở rộng thêm các module bổ trợ trong quản lý quán cà phê như quản lý doanh thu, ca bán hàng hoặc tích hợp giao tiếp trực tuyến giữa quản lý và nhân viên.

Giá trị tham khảo

Tài liệu đồ án PBL3 này mang lại giá trị tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo thực tế về cấu trúc một báo cáo đồ án công nghệ phần mềm (PBL), cách phân rã chức năng, vẽ biểu đồ UML chuẩn hóa (Use Case, Activity, Sequence) và thiết kế cơ sở dữ liệu quan hệ cho một bài toán quản lý.
  • Nhóm phát triển phần mềm và kiểm thử viên: Tham khảo mô hình phân chia công việc nhóm 3 người, quy trình kiểm soát mã nguồn trên GitHub, thiết kế nguyên mẫu trên Figma và cách đặc tả kịch bản kiểm thử (luồng sự kiện chính/thay thế) cho các chức năng CRUD và tính lương.
  • Người nghiên cứu các giải pháp quản trị nhân sự vừa và nhỏ: Nắm bắt được mô hình luồng dữ liệu giữa nhân viên bán thời gian và người quản lý trong bài toán phân ca và chấm công thực tế.

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

1. Đề tài đồ án này do ai thực hiện và thuộc đơn vị đào tạo nào?

Đồ án được thực hiện bởi nhóm sinh viên Phạm Thành Công, Đào Duy Long và Nguyễn Tiến Thịnh (Nhóm học phần 20.11), Khoa Công nghệ Thông tin, Trường Đại học Bách khoa – Đại học Đà Nẵng, dưới sự hướng dẫn của giảng viên Mai Văn Hà (năm 2022).

2. Phần mềm quản lý nhân viên quán cà phê được xây dựng theo mô hình kiến trúc nào?

Phần mềm được thiết kế và xây dựng theo mô hình kiến trúc 3 lớp (3-tier architecture), phân tách rõ ràng giữa giao diện người dùng (GUI), xử lý logic nghiệp vụ và truy xuất cơ sở dữ liệu.

3. Cơ sở dữ liệu của phần mềm gồm những bảng dữ liệu nào?

Cơ sở dữ liệu của hệ thống gồm 7 bảng quan hệ: chucvu (quản lý chức vụ và lương cơ bản), thongtinchung (thông tin hồ sơ nhân viên), lich (danh mục ca và ngày làm việc), ban (dữ liệu lịch bận của nhân viên), nhanvien_lich (phân công ca và lưu vết giờ check-in/check-out), lich_chi_tiet (thời gian quy định của các buổi làm sáng/chiều/tối) và role (thông tin đăng nhập và phân quyền Admin/User).

4. Hệ thống phân chia quyền hạn giữa Người quản lý (Admin) và Nhân viên (User) như thế nào?

  • Admin: Có toàn quyền quản lý hồ sơ nhân viên (thêm, sửa, xóa, tìm kiếm), thực hiện xếp lịch làm việc, xem lịch làm việc chung, tính toán tiền lương theo chức vụ và thay đổi mức lương theo giờ.
  • User (Nhân viên): Chỉ có quyền đăng nhập, đổi mật khẩu, điểm danh nhận/kết thúc ca, đăng ký hoặc xóa lịch bận, xem lịch làm việc cá nhân/toàn bộ nhân viên và tra cứu thông tin lương của bản thân.

5. Cơ chế xếp lịch làm việc của phần mềm hoạt động dựa trên thông tin gì?

Hệ thống sắp xếp lịch làm việc cho nhân viên dựa trên nguồn dữ liệu đăng ký ca bận do chính nhân viên gửi lên hệ thống từ trước. Sau khi hệ thống thực hiện sắp xếp, Người quản lý vẫn có quyền can thiệp và chỉnh sửa trực tiếp trên bảng lịch nếu cần điều chỉnh theo tình hình thực tế.


Kết luận

Đồ án "Báo cáo PBL3: Đồ án Công nghệ phần mềm – Đề tài: Quản Lý Nhân Viên Quán Cafe" của nhóm sinh viên Trường Đại học Bách khoa – Đại học Đà Nẵng đã trình bày một quy trình phát triển phần mềm hoàn chỉnh và bài bản. Bằng việc ứng dụng kiến trúc 3 lớp, hệ thống biểu đồ phân tích UML và thiết kế cơ sở dữ liệu quan hệ 7 thực thể, nhóm tác giả đã xây dựng thành công ứng dụng Desktop phục vụ hiệu quả công tác quản lý nhân viên bán thời gian tại quán cà phê. Tài liệu báo cáo cung cấp đầy đủ các thông tin kỹ thuật, đặc tả ca sử dụng và kết quả thực nghiệm, đóng vai trò là nguồn tài liệu tham khảo có giá trị cho sinh viên và các nhà phát triển trong lĩnh vực công nghệ phần mềm.