Bối cảnh và vấn đề nghiên cứu
Trong môi trường giáo dục đại học, tình trạng sinh viên mất tập trung, sao nhãng việc học hoặc sớm đi làm thêm dẫn đến việc vắng mặt trên lớp diễn ra tương đối phổ biến. Việc quản lý điểm danh không chỉ là biện pháp duy trì kỷ luật học đường mà còn là công cụ thúc đẩy, khuyến khích sinh viên đến lớp và tham gia học tập một cách nghiêm túc. Tuy nhiên, qua khảo sát thực tế của nhóm tác giả, trong khi các hoạt động học tập, tài liệu và kiểm tra trực tuyến đã trở nên quen thuộc thì các hệ thống theo dõi điểm danh trực tuyến chuyên biệt vẫn chưa thực sự phổ biến hoặc chưa đáp ứng tối ưu nhu cầu quản lý.
Đề tài khóa luận tốt nghiệp "Xây dựng hệ thống theo dõi điểm danh sinh viên" (Building A Student Attendance Tracking System) được thực hiện nhằm giải quyết các vấn đề trên, hướng tới mục tiêu xây dựng một nền tảng website hỗ trợ giảng viên kiểm soát điểm danh chặt chẽ, hỗ trợ sinh viên tra cứu lịch sử điểm danh nhanh chóng, đồng thời cung cấp tính năng tính thù lao giảng dạy cho giảng viên dựa trên số ca lớp thực dạy.
Theo văn bản đồ án, các nhiệm vụ nghiên cứu cụ thể bao gồm:
- Làm rõ cơ sở lý thuyết liên quan đến việc phát triển ứng dụng web hiện đại.
- Khảo sát tình hình thực tế của các hệ thống điểm danh hiện hữu.
- Thiết kế giao diện và cấu trúc website dựa trên phong cách bố cục và bảng màu của các website thương mại điện tử (eCommerce).
- Phân chia chức năng hệ thống thành các phân hệ/module độc lập nhằm thuận tiện cho công tác quản trị và sử dụng.
Đối tượng nghiên cứu của đề tài là quy trình quản lý điểm danh và các công nghệ phát triển web hiện đại (MERN Stack gồm ReactJS, NodeJS, ExpressJS, MongoDB). Phạm vi triển khai đề tài diễn ra trong thời gian 15 tuần (từ ngày 15 tháng 9 năm 2022 đến tháng 2 năm 2023) tại Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE).
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng mô hình công nghệ MERN Stack làm nền tảng kỹ thuật cốt lõi để phát triển toàn diện cả hai phía Frontend và Backend của ứng dụng web:
- ReactJS: Thư viện giao diện người dùng mã nguồn mở dựa trên JavaScript (phát triển bởi Facebook từ tháng 5/2013). Đồ án phân tích sâu cơ chế chia tách giao diện thành các thành phần tái sử dụng (Reusable Components bao gồm Function Components và Class Components), cú pháp JSX kết hợp JavaScript và HTML, cơ chế Virtual DOM lưu trữ trong bộ nhớ giúp đồng bộ với Real DOM mà không gây gián đoạn trải nghiệm, cùng khả năng hỗ trợ tối ưu hóa công cụ tìm kiếm (SEO Friendly).
- NodeJS: Môi trường thực thi JavaScript phía máy chủ chạy trên V8 Engine của Google Chrome. Đồ án trình bày kiến trúc xử lý sự kiện bất đồng bộ dựa trên luồng đơn (Single-threaded Event Loop), hàng đợi sự kiện (Event Queue) và hồ luồng đa luồng (Thread Pool dựa trên thư viện C++), cho phép xử lý I/O không chặn (Non-blocking I/O), tiếp nhận khối lượng lớn yêu cầu đồng thời với mức tiêu thụ tài nguyên thấp mà không cần bộ đệm dữ liệu (No Buffering).
- ExpressJS: Khung ứng dụng web phía máy chủ (Back-end framework) tiêu chuẩn dành cho NodeJS, phát hành dưới giấy phép MIT, chuyên dùng để xây dựng ứng dụng web và các cổng giao tiếp RESTful API.
- MongoDB: Hệ quản trị cơ sở dữ liệu NoSQL hướng tài liệu (Document-oriented NoSQL Database). Dữ liệu được lưu trữ dưới dạng các cặp khóa - giá trị (Key-Value pairs) trong các Document và gom thành Collection, cho phép cấu trúc lược đồ linh hoạt (Schema-less), biểu diễn quan hệ phân cấp phức tạp và hỗ trợ mở rộng quy mô phân tán trên các cụm máy chủ lớn.
Phương pháp nghiên cứu và phát triển được áp dụng bao gồm:
- Phương pháp phân tích yêu cầu phần mềm: Phân tách yêu cầu chức năng (nghiệp vụ, hệ thống, phân quyền) và yêu cầu phi chức năng.
- Phương pháp mô hình hóa hướng đối tượng: Sử dụng biểu đồ Use Case, xây dựng đặc tả Use Case chi tiết cho từng tác vụ của hệ thống.
- Phương pháp thiết kế kiến trúc và cơ sở dữ liệu: Xây dựng sơ đồ màn hình, luồng chuyển dịch trạng thái, mô hình MVC (Model-View-Controller) trên NodeJS kết hợp RESTful API, thiết kế lược đồ quan hệ thực thể cho CSDL tài liệu MongoDB.
- Phương pháp kiểm thử phần mềm: Sử dụng kỹ thuật kiểm thử hộp đen (Black box testing) và lập báo cáo lỗi (Bug report) dựa trên danh mục bàn giao kiểm thử (Test Deliverables).
Thiết kế và triển khai
Hệ thống được thiết kế theo cấu trúc tách biệt giữa lớp giao diện (Frontend) và lớp dịch vụ xử lý dữ liệu (Backend), giao tiếp qua giao thức HTTP/HTTPS bằng chuẩn RESTful API.
1. Kiến trúc phân quyền và tác nhân hệ thống
Hệ thống xác định hai nhóm tác nhân chính với các vai trò và quyền hạn phân định rõ rệt:
| Nhóm tác nhân |
Phân quyền & Chức năng chính |
| Giảng viên (Teacher / Administrator) |
Đăng nhập, Đăng ký, Quản lý sinh viên (Thêm, Xóa, Sửa, Xem thông tin, Tìm kiếm theo ID/Tên), Liên hệ sinh viên (Email, Messenger), Quản lý dự án/lớp học (Thêm, Sửa ngày học, Sửa danh sách sinh viên, Tìm kiếm, Xem chi tiết, Xóa dự án), Quản lý yêu cầu (Thêm, Sửa, Xem, Duyệt/Từ chối đơn xin nghỉ), Điểm danh và chỉnh sửa điểm danh cho sinh viên. |
| Sinh viên (Student) |
Đăng nhập, Đăng ký, Xem hồ sơ giảng viên, Xem thông tin dự án/lớp học, Điểm danh (Check attendance / Punch out), Xem lịch sử điểm danh (theo Ngày/Tháng/Năm), Gửi yêu cầu xin nghỉ phép (kèm lý do và minh chứng), Tìm kiếm yêu cầu, Chỉnh sửa thông tin cá nhân. |
2. Thiết kế cơ sở dữ liệu
Cơ sở dữ liệu của hệ thống được tổ chức thành các bảng/tập hợp dữ liệu chính nhằm quản lý tài khoản, lớp học/dự án và các đơn từ phát sinh:
Bảng cấu trúc dữ liệu người dùng (User Database):
| Thuộc tính (Attribute) |
Kiểu dữ liệu (Type) |
Ý nghĩa (Meaning) |
Ghi chú |
userNameID |
Int |
Định danh ID người dùng |
Khóa chính (Primary Key) |
firstname |
Varchar |
Tên sinh viên / giảng viên |
|
lastname |
Varchar |
Họ và tên đệm |
|
userName |
Varchar |
Tên tài khoản đăng nhập |
|
userPassword |
Varchar |
Mật khẩu tài khoản |
|
dateOfBirth |
Date |
Ngày tháng năm sinh |
|
role |
Varchar |
Phân quyền vai trò (Teacher/Student) |
|
userEmail |
Varchar |
Địa chỉ thư điện tử |
|
userPhone |
Int |
Số điện thoại liên lạc |
|
address |
Varchar |
Địa chỉ liên hệ |
|
emailVerified |
Boolean |
Trạng thái xác thực email |
|
Bảng cấu trúc dữ liệu dự án / lớp học (Project Database):
| Thuộc tính (Attribute) |
Kiểu dữ liệu (Type) |
Ý nghĩa (Meaning) |
Ghi chú |
userID |
Int |
ID người tạo / quản lý |
Khóa ngoại (Foreign Key) |
projectName |
Varchar |
Tên dự án / lớp học |
|
projectDescription |
Varchar |
Mô tả chi tiết nội dung dự án |
|
startDate |
Date |
Ngày bắt đầu |
|
endDate |
Date |
Ngày kết thúc |
|
learnDate |
Date |
Lịch học / ngày học trong tuần |
|
attendanceAfter |
Number |
Thời gian cho phép điểm danh trễ |
Đơn vị: Phút (Minute) |
createdBy |
Int |
ID tài khoản tạo dự án |
|
maxJoin |
Int |
Số lượng sinh viên tối đa |
|
joined |
Int |
Số lượng sinh viên đã tham gia |
|
totalLesson |
Int |
Tổng số buổi học / ca học |
|
Bảng cấu trúc dữ liệu yêu cầu xin phép (Request Database):
| Thuộc tính (Attribute) |
Kiểu dữ liệu (Type) |
Ý nghĩa (Meaning) |
Ghi chú |
requestID |
Int |
Mã định danh yêu cầu |
Khóa chính |
projectId |
Int |
Mã dự án / lớp học liên quan |
Khóa ngoại |
userId |
Int |
Mã sinh viên gửi yêu cầu |
Khóa ngoại |
date |
Date |
Ngày gửi yêu cầu / ngày xin nghỉ |
|
proof |
Varchar |
Đường dẫn ảnh / tài liệu minh chứng |
|
reason |
Varchar |
Lý do xin nghỉ phép |
|
status |
String |
Trạng thái xử lý (Pending, Approved, Declined) |
|
type |
String |
Phân loại yêu cầu |
|
Hệ thống còn mở rộng lưu trữ với các tập hợp dữ liệu khác như bảng quản lý phân công nhiệm vụ (Task), bảng dữ liệu sinh viên tham gia (Student join) và bảng lịch trình học tập (studentSchedules).
3. Quy trình thực thi và kiểm thử
- Quy trình điểm danh (Check attendance): Sinh viên truy cập vào giao diện điểm danh của dự án tương ứng, hệ thống đối chiếu thời gian học thực tế với tham số giới hạn
attendanceAfter (tính bằng phút) và ghi nhận trạng thái tham gia khi người dùng nhấn nút xác nhận ("Punch out").
- Quy trình gửi và phê duyệt đơn từ (Absent request): Sinh viên điền biểu mẫu gồm mã dự án, lý do, ngày xin nghỉ và minh chứng đính kèm. Giảng viên truy cập giao diện quản trị yêu cầu để đánh giá và chọn phê duyệt (Approve) hoặc từ chối (Decline), hệ thống lập tức cập nhật trạng thái tới tài khoản sinh viên.
- Kiểm thử hệ thống: Quá trình kiểm thử áp dụng kỹ thuật kiểm thử hộp đen (Black box testing) đối với toàn bộ các ca sử dụng (Use Case), bao gồm kiểm thử luồng sự kiện cơ bản (Basic Flow), các luồng sự kiện thay thế (Alternate Flows) khi nhập sai mật khẩu, thiếu thông tin đăng ký, hoặc sai lệch dữ liệu kết nối API bên thứ ba. Toàn bộ các khiếm khuyết được theo dõi qua báo cáo lỗi (Bug report) và đối chiếu với danh mục kết quả kiểm thử (Test Deliverables).
Nội dung chính theo từng chương
Chapter 1: Introduction
Chương 1 mở đầu bằng việc phân tích lý do chọn đề tài xuất phát từ thực trạng sinh viên lơ là chuyên cần hoặc đi làm sớm, khẳng định vai trò của công tác điểm danh trong việc nâng cao ý thức học tập. Chương này xác định rõ mục tiêu hệ thống là xây dựng giải pháp web quản lý điểm danh chặt chẽ, tối ưu trải nghiệm người dùng, hỗ trợ tra cứu cho sinh viên và hỗ trợ tính lương/thù lao cho giảng viên theo số ca giảng dạy. Phạm vi đề tài được xác lập xoay quanh việc nghiên cứu và ứng dụng MERN Stack (ReactJS, NodeJS, MongoDB, ExpressJS) trong khuôn khổ đồ án tốt nghiệp đại học thời gian 15 tuần.
Chapter 2: Theory Basis
Chương 2 trình bày toàn diện cơ sở lý thuyết về ngăn xếp công nghệ MERN. Tác giả phân tích cấu trúc hoạt động của ReactJS (từ Function Component, Class Component, cú pháp JSX đến Virtual DOM và khả năng tương thích SEO), giải thích cơ chế xử lý sự kiện bất đồng bộ của NodeJS (gồm Event Queue, Event Loop, Thread Pool và hệ thống quản lý thư viện NPM), giới thiệu vai trò khung trung gian của ExpressJS trong việc định tuyến API, và mô tả mô hình lưu trữ dạng tài liệu (BSON Document/Collection) cùng tính năng co giãn linh hoạt của CSDL NoSQL MongoDB.
Chapter 3: System Requirements and Modeling
Chương 3 tập trung phân tích các yêu cầu hệ thống và mô hình hóa chức năng. Tác giả làm rõ các yêu cầu lưu trữ (User, Project, Attendance), tìm kiếm, tính toán tỷ lệ tiến độ và báo cáo lịch sử. Chương này thiết lập hệ thống bảng phân tích chi tiết cho vai trò Giảng viên (11 nhóm chức năng chính) và Sinh viên (7 nhóm chức năng chính), đồng thời đưa ra các tiêu chí phi chức năng nghiêm ngặt:
- Khả năng thích ứng (Resilience): Hệ thống dễ dàng cập nhật và tùy biến theo xu hướng người dùng.
- Tính khả dụng (Usability): Giao diện thân thiện, nút bấm bố trí khoa học, các cửa sổ chức năng tương tác liền mạch.
- Hiệu năng (Efficiency): Cơ sở dữ liệu an toàn, truy xuất nhanh, hệ thống phản hồi tức thì.
- Khả năng tái sử dụng (Reusability): Các module và mã nguồn có thể tái sử dụng cho các dự án sau mà không cần thay đổi phần lõi.
- Chất lượng và tốc độ xử lý (Effectiveness): Hỗ trợ tìm kiếm theo từ khóa tự nhiên và thời gian xử lý các tác vụ in ấn/giao dịch dưới 2 giây.
Đi kèm với đó là 12 bảng đặc tả Use Case chi tiết (Use case specifications từ Bảng 8 đến Bảng 19) mô tả đầy đủ luồng sự kiện chính, luồng phụ, tiền điều kiện và hậu điều kiện cho các tác vụ: Đăng nhập, Đăng ký, Xem/Tìm kiếm dự án, Xem lịch sử điểm danh, Gửi yêu cầu, Điểm danh, Xem/Sửa/Xóa/Thêm thông tin sinh viên - dự án - yêu cầu, và Phê duyệt yêu cầu.
Chapter 4: System Design
Chương 4 cung cấp thiết kế kiến trúc giao diện và cơ sở dữ liệu chi tiết của hệ thống. Về dữ liệu, chương này trình bày tường minh các bảng User, Project, Request, Task, Student join và studentSchedules với đầy đủ thuộc tính, kiểu dữ liệu và ràng buộc khóa. Về mặt giao diện và điều hướng, chương mô tả hệ thống 28 sơ đồ luồng và bản vẽ thiết kế: từ màn hình trang chủ (Landing page), biểu mẫu Đăng nhập/Đăng ký, trang thông tin cá nhân, trang danh sách sinh viên, trang quản lý dự án, các cửa sổ popup thêm mới, đến các sơ đồ tương tác xử lý nghiệp vụ điểm danh, gửi đơn nghỉ phép và phê duyệt trực tuyến.
Chapter 5: Implementation and Testing
Chương 5 hiện thực hóa thiết kế thông qua việc triển khai ngăn xếp MERN Stack trên mô hình kiến trúc MVC ở phía máy chủ NodeJS kết hợp giao diện ReactJS và RESTful API. Chương này công bố các phương pháp và kỹ thuật kiểm thử đã áp dụng, trọng tâm là phương pháp kiểm thử hộp đen (Black box testing) nhằm thẩm định tính chính xác của các luồng nghiệp vụ, tổng hợp danh mục sản phẩm bàn giao kiểm thử (Test Deliverables, Bảng 26), lập bảng theo dõi và khắc phục lỗi (Bug report), đồng thời vạch ra các định hướng phát triển hoàn thiện hệ thống trong tương lai.
Kết quả và đóng góp
- Kết quả triển khai kỹ thuật: Đề tài đã xây dựng hoàn chỉnh ứng dụng web theo dõi điểm danh sinh viên với đầy đủ hai phân hệ người dùng độc lập: phân hệ Giảng viên (đóng vai trò quản trị toàn diện thông tin sinh viên, dự án lớp học, phê duyệt đơn từ và tính toán tiến độ giảng dạy) và phân hệ Sinh viên (thực hiện điểm danh theo ca, tra cứu lịch sử và gửi đơn xin nghỉ trực tuyến).
- Đáp ứng các chỉ tiêu phi chức năng: Hệ thống đạt được tính ổn định cao, giao diện web mô phỏng bố cục thương mại điện tử trực quan, đáp ứng tiêu chuẩn thời gian phản hồi/xử lý tác vụ dưới 2 giây, cơ sở dữ liệu MongoDB đảm bảo lưu trữ an toàn và xử lý đồng thời hiệu quả.
- Đóng góp thực tiễn: Khóa luận cung cấp một giải pháp số hóa toàn diện quy trình điểm danh truyền thống trong nhà trường, giúp giảng viên giảm tải công tác quản lý thủ công, hỗ trợ tính thù lao dạy học chính xác, đồng thời cung cấp kênh tương tác minh bạch giữa sinh viên và giảng viên thông qua hệ thống tiếp nhận và phê duyệt minh chứng xin nghỉ trực tuyến.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế được ghi nhận: Nhóm tác giả tự thừa nhận do kiến thức và kinh nghiệm thực tế về công nghệ cũng như nghiệp vụ quản lý xã hội còn hạn chế, phần mềm chưa thể đạt tới mức độ hoàn hảo tuyệt đối cho mọi nhóm đối tượng người dùng khác nhau trong môi trường giáo dục mở rộng.
- Hướng phát triển tiếp theo: Đồ án đặt ra phương hướng tiếp tục thu thập phản hồi thực tế từ người dùng (giảng viên, sinh viên) để hoàn thiện giao diện, tối ưu hóa hơn nữa hiệu năng xử lý của các API, và mở rộng thêm các tính năng bổ trợ phục vụ công tác quản trị học tập chuyên sâu.
Giá trị tham khảo
Đồ án tốt nghiệp là tài liệu tham khảo có giá trị cao cho sinh viên, học viên và các kỹ sư phần mềm thuộc các ngành Công nghệ thông tin, Kỹ thuật phần mềm hoặc Hệ thống thông tin:
- Tham khảo về kiến trúc ứng dụng web MERN: Cung cấp tài liệu chi tiết về cách thức tổ chức dự án fullstack kết hợp ReactJS, NodeJS/Express theo mô hình MVC, xây dựng RESTful APIs và thiết kế cơ sở dữ liệu phi quan hệ MongoDB.
- Tham khảo về quy trình phân tích và mô hình hóa phần mềm: Cung cấp mẫu phân tích yêu cầu phần mềm chuẩn mực, bao gồm bảng phân rã chức năng theo vai trò, hệ thống chỉ tiêu phi chức năng rõ ràng và hệ thống 12 bảng đặc tả Use Case chi tiết (tiền điều kiện, luồng chính, luồng phụ, hậu điều kiện).
- Tham khảo về thiết kế CSDL và kiểm thử: Cung cấp lược đồ dữ liệu thực tế cho bài toán quản lý lớp học/điểm danh và quy trình thực hiện kiểm thử hộp đen (Black box testing) kèm quản lý danh mục kiểm thử phần mềm.
Câu hỏi thường gặp
1. Đề tài sử dụng ngăn xếp công nghệ nào để phát triển hệ thống?
Hệ thống được xây dựng hoàn toàn dựa trên MERN Stack, bao gồm: ReactJS cho tầng giao diện người dùng (Frontend), NodeJS kết hợp framework ExpressJS xây dựng dịch vụ máy chủ theo mô hình MVC và RESTful API (Backend), cùng cơ sở dữ liệu NoSQL MongoDB lưu trữ dữ liệu dưới dạng tài liệu BSON/JSON.
2. Hệ thống phân chia quyền hạn giữa Giảng viên và Sinh viên như thế nào?
Giảng viên đóng vai trò Administrator với quyền hạn toàn diện: thêm/sửa/xóa sinh viên, quản lý dự án lớp học, duyệt hoặc từ chối đơn xin nghỉ của sinh viên, theo dõi và chỉnh sửa điểm danh. Sinh viên chỉ có quyền xem hồ sơ cá nhân, thực hiện điểm danh ("Punch out") theo ca học của dự án, xem lịch sử điểm danh và tạo đơn gửi yêu cầu xin nghỉ kèm lý do/minh chứng.
3. Cơ chế điểm danh của sinh viên hoạt động dựa trên tham số nào?
Quá trình điểm danh của sinh viên gắn liền với thông tin dự án/lớp học và tham số attendanceAfter (tính theo số phút quy định trong CSDL). Sinh viên truy cập vào giao diện điểm danh của dự án và xác nhận tham gia bằng thao tác "Punch out" trong khung thời gian hợp lệ được thiết lập.
4. Yêu cầu phi chức năng của hệ thống quy định thời gian xử lý tác vụ là bao lâu?
Theo bảng tiêu chí phi chức năng về tính hiệu quả (Effectiveness), thời gian xử lý tác vụ in ấn/giao dịch của hệ thống được tối ưu hóa để phản hồi dưới 2 giây.
5. Thông tin chi tiết về tác giả, người hướng dẫn và đơn vị đào tạo của đồ án?
Đề tài do nhóm sinh viên Nguyễn Tấn Thành (MSSV: 18110046), Hoàng Ngọc Bảo Trân (MSSV: 18110057) và Nguyễn Hoàng Vũ (MSSV: 18110398) thực hiện dưới sự hướng dẫn của ThS. Nguyễn Trần Thị Vân, bảo vệ vào tháng 2/2023 tại Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE).
Kết luận
Khóa luận tốt nghiệp "Xây dựng hệ thống theo dõi điểm danh sinh viên" của nhóm tác giả tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh đã giải quyết thành công bài toán quản lý điểm danh và theo dõi chuyên cần trong môi trường đại học bằng giải pháp web trực tuyến hiện đại. Thông qua việc ứng dụng ngăn xếp công nghệ MERN (MongoDB, ExpressJS, ReactJS, NodeJS) và quy trình thiết kế phần mềm bài bản từ mô hình Use Case đến kiểm thử hộp đen, đồ án đã hiện thực hóa một hệ thống ổn định, phân quyền rõ ràng và tối ưu thời gian xử lý dưới 2 giây. Toàn bộ tài liệu đồ án mang lại giá trị tham khảo thực tiễn cao cho sinh viên và các nhà phát triển phần mềm trong việc xây dựng các hệ thống quản lý học tập và ứng dụng web fullstack.