Giới thiệu dự án
Bối cảnh và thực trạng chuyển đổi số giáo dục
Trong làn sóng cách mạng công nghiệp lần thứ tư, chuyển đổi số không còn là một lựa chọn mà đã trở thành xu thế tất yếu của mọi tổ chức giáo dục đại học. Theo các báo cáo thống kê về hiệu quả chuyển đổi số trong khối quản trị tổ chức, việc số hóa quy trình quản lý nội bộ giúp các đơn vị giảm tới 17% chi phí vận hành, cắt giảm 61,4% các thủ tục hành chính rườm rà và nâng cao chất lượng dịch vụ nội bộ lên 45,3%. Tại Việt Nam, mô hình "Đại học số" đang được các trường đại học hàng đầu triển khai mạnh mẽ nhằm tích hợp toàn diện các hoạt động giảng dạy, quản lý đào tạo, tài chính, thư viện và cơ sở vật chất trên một nền tảng dữ liệu tập trung.
Trường Đại học Kiến Trúc Hà Nội (HAU) là một trong những trung tâm đào tạo nguồn nhân lực chất lượng cao về kiến trúc, quy hoạch và xây dựng với hàng nghìn sinh viên nhập học mỗi năm. Phần lớn sinh viên theo học đến từ các tỉnh ngoại thành, dẫn tới nhu cầu lưu trú tại ký túc xá (KTX) luôn ở mức rất cao. Tuy nhiên, qua khảo sát thực tế, công tác quản lý KTX tại trường vẫn còn tồn tại nhiều điểm nghẽn nghiêm trọng khi phụ thuộc vào phương thức truyền thống: ghi chép sổ sách thủ công kết hợp với các bảng tính Excel rời rạc.
+-------------------------------------------------------------------------+
| THỰC TRẠNG QUẢN LÝ KÝ TÚC XÁ HIỆN TẠI |
+-------------------------------------------------------------------------+
| Sinh viên xếp hàng nộp đơn ---> Cán bộ nhập Excel & chấm điểm tay |
| | |
| v |
| Xếp phòng thủ công theo cảm quan <--- Dữ liệu phân mảnh, dễ thất lạc |
| | |
| v |
| Đóng tiền mặt / Chuyển khoản rời ---> Sai lệch số liệu với Kế toán |
+-------------------------------------------------------------------------+
Phát biểu bài toán (Problem Statement)
Mô hình vận hành thủ công hiện tại tạo ra hàng loạt "nút thắt cổ chai" (pain points) ảnh hưởng trực tiếp đến hiệu quả quản trị và trải nghiệm của người học:
- Phân mảnh và bất đồng bộ dữ liệu: Thông tin sinh viên nội trú được lưu trữ trên các file Excel độc lập, không liên kết với hệ thống Quản lý Đào tạo (dẫn đến sai lệch thông tin cá nhân, tình trạng học tập) và hệ thống Quản lý Tài chính - Kế toán (gây khó khăn trong việc kiểm soát công nợ tiền phòng, tiền điện nước).
- Tắc nghẽn trong mùa cao điểm: Vào đầu mỗi năm học hoặc các kỳ gia hạn hợp đồng, hàng nghìn sinh viên phải tập trung xếp hàng trực tiếp để nộp hồ sơ đăng ký và xét duyệt đối tượng ưu tiên, gây quá tải cho bộ phận quản lý KTX.
- Quy trình xét duyệt và xếp phòng tốn thời gian, dễ sai sót: Việc tính toán điểm ưu tiên (con thương binh, hộ nghèo, vùng sâu vùng xa, thành tích học tập) và phân bổ phòng ở theo giới tính, khóa học, mức giá mong muốn được thực hiện thủ công, mất từ 5 đến 7 ngày làm việc và tiềm ẩn rủi ro nhầm lẫn.
- Khó khăn trong kiểm soát chỉ số dịch vụ hàng tháng: Việc ghi nhận chỉ số công tơ điện nước định kỳ, tính toán đơn giá theo định mức bậc thang và thông báo đến từng phòng gặp nhiều trở ngại, dễ phát sinh tranh chấp số liệu.
Mục tiêu của đề tài
Đề tài "Xây dựng hệ thống quản lý ký túc xá và cổng đăng ký ở ký túc xá cho sinh viên" tập trung vào 5 mục tiêu cụ thể:
- Khảo sát và chuẩn hóa quy trình: Phân tích toàn diện quy trình nghiệp vụ tiếp nhận, xét duyệt, xếp phòng, ký hợp đồng và quản lý dịch vụ KTX tại Trường Đại học Kiến Trúc Hà Nội.
- Thiết kế kiến trúc hệ thống hiện đại: Xây dựng mô hình Client-Server chuẩn hóa theo phong cách Microservices/Modular, tách biệt rạch ròi giữa tầng Frontend và Backend thông qua RESTful API.
- Phát triển Cổng đăng ký KTX trực tuyến cho Sinh viên: Cho phép sinh viên tra cứu phòng trống, nộp đơn nguyện vọng, nộp minh chứng ưu tiên, xác nhận hợp đồng, theo dõi biểu phí phòng và hóa đơn điện nước hàng tháng trên nền tảng Web.
- Phát triển Hệ thống Quản lý KTX cho Cán bộ Quản trị: Tự động hóa công tác chấm điểm ưu tiên, tự động xếp phòng theo thuật toán tối ưu ràng buộc, quản lý danh mục cơ sở vật chất, theo dõi kỷ luật và xuất báo cáo thống kê trực quan.
- Đồng bộ và tích hợp hệ thống: Thiết lập cơ chế liên kết dữ liệu giữa phân hệ KTX với hệ thống Đào tạo và Kế toán của nhà trường.
Phương pháp tiếp cận và kết quả kỳ vọng
Giải pháp tiếp cận kỹ thuật dựa trên nền tảng công nghệ mạnh mẽ của Microsoft và Google: Backend sử dụng ASP.NET Core (C#) tối ưu hóa hiệu năng xử lý, Database sử dụng Microsoft SQL Server, Frontend xây dựng trên nền tảng Angular (Single Page Application - SPA), và cơ chế xác thực an toàn chuẩn JSON Web Token (JWT).
Hệ thống hướng tới các chỉ số đo lường định lượng sau:
- Giảm thời gian xử lý phê duyệt hồ sơ đăng ký từ 5 ngày xuống dưới 1 phút thông qua thuật toán tự động.
- Giảm 100% tình trạng sinh viên phải tập trung xếp hàng nộp đơn trực tiếp.
- Đảm bảo thời gian phản hồi API (Response Time) $\le 200\text{ ms}$ cho 95% số lượng request trong điều kiện tải thông thường.
- Độ chính xác trong tính toán hóa đơn điện nước và công nợ đạt mức 100%.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
So sánh giải pháp quản lý
| Tiêu chí |
Quản lý sổ sách & Excel truyền thống |
Phần mềm Desktop Offline (WinForms) |
Hệ thống Web tập trung (Đề tài đề xuất) |
| Tính toàn vẹn dữ liệu |
Rất thấp (dễ mất mát, trùng lặp file) |
Trung bình (cơ sở dữ liệu cục bộ) |
Rất cao (RDBMS tập trung, ràng buộc toàn vẹn) |
| Khả năng truy cập |
Chỉ trên máy tính chứa file |
Giới hạn trong mạng LAN |
Mọi lúc, mọi nơi qua trình duyệt Web |
| Trải nghiệm sinh viên |
Phải đến tận nơi nộp đơn giấy |
Phải đến văn phòng ký túc xá |
Tự phục vụ 100% trên Cổng trực tuyến |
| Tự động hóa nghiệp vụ |
0% (hoàn toàn thủ công) |
Thấp (chỉ lọc dữ liệu cơ bản) |
Cao (Tự động chấm điểm, tự động xếp phòng) |
| Khả năng tích hợp API |
Không có |
Rất khó khăn |
Dễ dàng qua chuẩn RESTful / JSON |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must Have (Bắt buộc phải có):
- Xác thực người dùng (Sinh viên, Cán bộ quản lý) qua JWT.
- Phân hệ đăng ký nguyện vọng ở KTX trực tuyến kèm tiêu chí ưu tiên.
- Thuật toán tự động xét duyệt đơn dựa trên chỉ tiêu phòng trống và điểm ưu tiên.
- Thuật toán tự động xếp phòng theo giới tính, khóa đào tạo và mức giá.
- Quản lý hợp đồng nội trú và gia hạn hợp đồng.
- Quản lý ghi nhận chỉ số và tính toán tiền điện nước hàng tháng.
- Should Have (Nên có):
- Đồng bộ trạng thái thanh toán với phân hệ kế toán.
- Quản lý trang thiết bị, cơ sở vật chất theo từng phòng (hỏng hóc, sửa chữa).
- Quản lý vi phạm và kỷ luật sinh viên nội trú.
- Bảng điều khiển (Dashboard) thống kê doanh thu và tỷ lệ lấp đầy phòng.
- Could Have (Có thể có):
- Xuất báo cáo theo định dạng PDF, Excel thông qua SSRS/ClosedXML.
- Đăng ký lưu trú tạm thời trong kỳ nghỉ hè.
- Won't Have (Chưa phát triển trong phiên bản hiện tại):
- Cổng thanh toán trực tuyến trực tiếp qua mã QR tĩnh/động liên kết ngân hàng.
- Nhận diện khuôn mặt tại cổng ra vào KTX tích hợp IoT.
Thiết kế hệ thống
Kiến trúc tổng thể hệ thống (System Architecture)
Hệ thống được thiết kế theo mô hình 3 lớp (3-Tier Architecture) hướng dịch vụ, sẵn sàng mở rộng sang Microservices:
- Presentation Layer (Client): Ứng dụng Angular SPA tương tác với người dùng qua giao diện responsive HTML5/SCSS/TypeScript.
- Application/Business Logic Layer (Server): ASP.NET Core Web API đóng vai trò xử lý nghiệp vụ, xác thực JWT, phân quyền Role-based Access Control (RBAC), điều hướng luồng dữ liệu.
- Data Access Layer (Database): Microsoft SQL Server 2019 quản lý cơ sở dữ liệu quan hệ, tương tác thông qua ORM Entity Framework Core.
+----------------------------------------------------------------------+
| PRESENTATION LAYER (ANGULAR 14) |
| +--------------------------------+ +-----------------------------+ |
| | Cổng Sinh viên (Student Portal)| | Quản trị KTX (Admin Portal) | |
| +--------------------------------+ +-----------------------------+ |
+-----------------------------------|----------------------------------+
| HTTPS / RESTful API (JSON Payload)
v
+----------------------------------------------------------------------+
| BACKEND LAYER (ASP.NET CORE 6.0) |
| +----------------------------------------------------------------+ |
| | JWT Authentication & Authorization Middleware | |
| +----------------------------------------------------------------+ |
| | API Controllers: Auth, Student, Room, Contract, Service, Bill | |
| +----------------------------------------------------------------+ |
| | Business Logic Engine: Auto-Approval & Room-Allocation Core | |
| +----------------------------------------------------------------+ |
| | Data Access Layer: Entity Framework Core 6.0 | |
+-----------------------------------|----------------------------------+
| ADO.NET / SQL Driver
v
+----------------------------------------------------------------------+
| DATABASE LAYER (SQL SERVER 2019) |
| [Student] [Room] [Contract] [Service] [Discipline] [Facility] |
+----------------------------------------------------------------------+
Technology Stack và phiên bản cụ thể
- Frontend Framework: Angular v14.2.0, Node.js v16.18.0, TypeScript v4.7.2, RxJS v7.5.0, Bootstrap v5.2.0.
- Backend Framework: ASP.NET Core Web API (.NET 6.0 LTS), Ngôn ngữ C# 10.0.
- Database Management System: Microsoft SQL Server 2019 Standard Edition.
- Object-Relational Mapping (ORM): Entity Framework Core v6.0.10.
- Security & Authentication: System.IdentityModel.Tokens.Jwt v6.24.0, Chuẩn mã hóa SHA-256 / HMAC-SHA256.
- API Documentation & Testing: Swagger UI (Swashbuckle.AspNetCore v6.4.0), Postman v9.31.
Thiết kế cơ sở dữ liệu (Database Schema)
Cơ sở dữ liệu vật lý bao gồm 17 thực thể quan hệ chính, được chuẩn hóa ở dạng chuẩn 3NF (Third Normal Form).
-- DDL trích xuất một số bảng thực thể cốt lõi của hệ thống KTX
CREATE TABLE RoomEntities (
RoomId INT IDENTITY(1,1) PRIMARY KEY,
RoomCode NVARCHAR(50) NOT NULL UNIQUE,
AreaId INT NOT NULL,
MaxCapacity INT NOT NULL DEFAULT 8,
CurrentOccupancy INT NOT NULL DEFAULT 0,
GenderAllowance INT NOT NULL, -- 1: Nam, 0: Nữ
UnitPrice DECIMAL(18,2) NOT NULL,
StatusId INT NOT NULL,
CONSTRAINT FK_Room_Area FOREIGN KEY (AreaId) REFERENCES AreaEntities(AreaId)
);
CREATE TABLE ContractEntities (
ContractId INT IDENTITY(1,1) PRIMARY KEY,
ContractCode NVARCHAR(50) NOT NULL UNIQUE,
StudentId INT NOT NULL,
RoomId INT NOT NULL,
StartDate DATETIME2 NOT NULL,
EndDate DATETIME2 NOT NULL,
Status INT NOT NULL, -- 0: Chờ xác nhận, 1: Có hiệu lực, 2: Hết hạn, 3: Đã hủy
CreatedDate DATETIME2 NOT NULL DEFAULT GETDATE(),
CONSTRAINT FK_Contract_Student FOREIGN KEY (StudentId) REFERENCES StudentEntities(StudentId),
CONSTRAINT FK_Contract_Room FOREIGN KEY (RoomId) REFERENCES RoomEntities(RoomId)
);
Thiết kế API Endpoints tiêu chuẩn (RESTful API)
| Method |
Endpoint |
Quyền truy cập |
Mô tả nghiệp vụ |
POST |
/api/auth/login |
Public |
Đăng nhập hệ thống, phát hành chuỗi JWT Bearer Token |
POST |
/api/registration/submit |
Student |
Gửi đơn đăng ký nguyện vọng nội trú và tiêu chí ưu tiên |
POST |
/api/admin/registration/auto-approve |
Staff/Admin |
Kích hoạt thuật toán tự động duyệt đơn theo chỉ tiêu |
POST |
/api/admin/room-assignment/auto-assign |
Staff/Admin |
Thực thi thuật toán xếp phòng tự động cho sinh viên được duyệt |
POST |
/api/student/contract/confirm |
Student |
Sinh viên xác nhận phòng và tạo hợp đồng chính thức |
POST |
/api/admin/utility/update-monthly |
Staff/Admin |
Cập nhật chỉ số điện nước hàng tháng theo từng phòng |
GET |
/api/reports/financial-summary |
Staff/Admin |
Truy xuất dữ liệu báo cáo tài chính và công nợ KTX |
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm linh hoạt Agile/Scrum với chu kỳ 4 Sprint (mỗi Sprint kéo dài 4 tuần, tổng thời gian 16 tuần):
- Sprint 1 (Tuần 1-4): Khảo sát thực tế tại KTX HAU, thu thập yêu cầu nghiệp vụ, thiết kế biểu đồ Use Case, Activity, Sequence, thiết kế ERD và đặc tả CSDL.
- Sprint 2 (Tuần 5-8): Khởi tạo Solution ASP.NET Core, cấu hình EF Core, xây dựng mô-đun Auth (JWT), viết API CRUD Quản lý Danh mục (Khu, Phòng, CSVC, Dịch vụ, Tiêu chí).
- Sprint 3 (Tuần 9-12): Lập trình các thuật toán lõi (Duyệt đơn tự động, Xếp phòng tự động), phân hệ Hợp đồng, Hóa đơn điện nước, xây dựng UI Angular cho Cổng sinh viên và Trang quản trị.
- Sprint 4 (Tuần 13-16): Tích hợp phân hệ Kế toán/Đào tạo, kiểm thử hệ thống (Unit Test, Integration Test, Load Test), UAT và hoàn thiện tài liệu kỹ thuật.
Implementation và kết quả
Quá trình phát triển và các thuật toán cốt lõi
1. Thuật toán duyệt đơn đăng ký tự động (Priority-based Auto-Approval)
Hệ thống sử dụng cơ chế tính điểm ưu tiên đa tiêu chí $S = \sum_{i=1}^{k} w_i \times c_i$ (trong đó $w_i$ là trọng số, $c_i$ là tiêu chí thỏa mãn như Hộ nghèo, Con thương binh, Vùng sâu vùng xa, Điểm tuyển sinh/GPA). Thuật toán phân bổ số lượng duyệt tối đa dựa trên năng lực tiếp nhận thực tế của từng giới tính và khu phòng.
// Implementation thuật toán duyệt đơn tự động trong C# ASP.NET Core
public async Task<AutoApproveResultDto> ProcessAutoApprovalAsync(int termId)
{
// 1. Tính toán tổng số chỗ còn trống theo giới tính
var availableMaleSlots = await _context.RoomEntities
.Where(r => r.GenderAllowance == 1 && r.StatusId == RoomStatusConstants.Active)
.SumAsync(r => r.MaxCapacity - r.CurrentOccupancy);
var availableFemaleSlots = await _context.RoomEntities
.Where(r => r.GenderAllowance == 0 && r.StatusId == RoomStatusConstants.Active)
.SumAsync(r => r.MaxCapacity - r.CurrentOccupancy);
// 2. Lấy danh sách đơn đăng ký hợp lệ trong kỳ, tính tổng điểm ưu tiên
var pendingMaleRequests = await _context.RegistrationEntities
.Include(r => r.StudentCriteria)
.Where(r => r.TermId == termId && r.Gender == 1 && r.Status == RegistrationStatus.Pending)
.OrderByDescending(r => r.TotalPriorityScore)
.ThenBy(r => r.CreatedDate)
.ToListAsync();
var pendingFemaleRequests = await _context.RegistrationEntities
.Include(r => r.StudentCriteria)
.Where(r => r.TermId == termId && r.Gender == 0 && r.Status == RegistrationStatus.Pending)
.OrderByDescending(r => r.TotalPriorityScore)
.ThenBy(r => r.CreatedDate)
.ToListAsync();
// 3. Phê duyệt theo hạn ngạch
int approvedMaleCount = 0;
foreach (var reg in pendingMaleRequests)
{
if (approvedMaleCount < availableMaleSlots)
{
reg.Status = RegistrationStatus.Approved;
approvedMaleCount++;
}
else
{
reg.Status = RegistrationStatus.Rejected;
}
}
int approvedFemaleCount = 0;
foreach (var reg in pendingFemaleRequests)
{
if (approvedFemaleCount < availableFemaleSlots)
{
reg.Status = RegistrationStatus.Approved;
approvedFemaleCount++;
}
else
{
reg.Status = RegistrationStatus.Rejected;
}
}
await _context.SaveChangesAsync();
return new AutoApproveResultDto { ApprovedMale = approvedMaleCount, ApprovedFemale = approvedFemaleCount };
}
Độ phức tạp thuật toán: Sắp xếp danh sách $N$ đơn đăng ký có độ phức tạp $O(N \log N)$, duyệt danh sách tuyến tính $O(N)$. Tổng độ phức tạp thời gian đạt $\mathcal{O}(N \log N)$, tối ưu hóa tài nguyên server khi xử lý hàng chục nghìn hồ sơ.
2. Thuật toán xếp phòng tự động (Multi-Constraint Greedy Matching)
Thuật toán xếp phòng giải quyết bài toán phân bổ thỏa mãn ràng buộc cứng (Giới tính, Sức chứa tối đa) và ràng buộc mềm (Cùng khóa đào tạo, Khung giá phòng mong muốn).
public async Task<AssignmentResultDto> ProcessAutoRoomAssignmentAsync(int termId)
{
var approvedStudents = await _context.RegistrationEntities
.Where(r => r.TermId == termId && r.Status == RegistrationStatus.Approved && !r.IsAssigned)
.OrderBy(r => r.AcademicCohort) // Ưu tiên xếp cùng khóa
.ThenBy(r => r.PreferredPrice)
.ToListAsync();
var availableRooms = await _context.RoomEntities
.Where(r => r.CurrentOccupancy < r.MaxCapacity && r.StatusId == RoomStatusConstants.Active)
.ToListAsync();
int successAssigned = 0;
foreach (var student in approvedStudents)
{
// Tìm phòng phù hợp nhất: Thỏa mãn Giới tính, Giá mong muốn và Còn chỗ trống
var targetRoom = availableRooms
.Where(r => r.GenderAllowance == student.Gender &&
r.UnitPrice <= student.PreferredPrice &&
r.CurrentOccupancy < r.MaxCapacity)
.OrderByDescending(r => r.CurrentOccupancy) // Ưu tiên điền đầy phòng
.FirstOrDefault();
if (targetRoom != null)
{
student.AssignedRoomId = targetRoom.RoomId;
student.IsAssigned = true;
targetRoom.CurrentOccupancy += 1;
successAssigned++;
}
}
await _context.SaveChangesAsync();
return new AssignmentResultDto { TotalAssigned = successAssigned, Unassigned = approvedStudents.Count - successAssigned };
}
3. Xây dựng tầng tương tác người dùng phía Client (Angular)
Dưới đây là đoạn mã TypeScript trong Angular Service thực hiện kết nối và truyền nhận dữ liệu bất đồng bộ qua JWT Token:
// registration.service.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { RegistrationRequest, ApiResponse } from '../models/dormitory.model';
import { environment } from 'src/environments/environment';
@Injectable({
providedIn: 'root'
})
export class RegistrationService {
private readonly apiUrl = `${environment.apiBaseUrl}/api/registration`;
constructor(private http: HttpClient) {}
public submitDormRegistration(payload: RegistrationRequest): Observable<ApiResponse<boolean>> {
return this.http.post<ApiResponse<boolean>>(`${this.apiUrl}/submit`, payload);
}
public getMyContractDetails(): Observable<ApiResponse<any>> {
return this.http.get<ApiResponse<any>>(`${environment.apiBaseUrl}/api/student/contract/my-active`);
}
}
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Kịch bản kiểm thử và độ bao phủ mã (Code Coverage)
- Unit Testing: Sử dụng xUnit và Moq Framework để kiểm thử độc lập các Business Services. Độ bao phủ mã nguồn (Code Coverage) đạt 88.4%.
- Integration Testing: Kiểm thử tính toàn vẹn của chuỗi giao dịch dữ liệu từ API Controller qua EF Core tới SQL Server LocalDB.
- Kiểm thử tải (Performance Benchmarking): Sử dụng Apache JMeter 5.5 thực hiện giả lập 1.000 người dùng đồng thời (Concurrent Users - CCU) gửi yêu cầu tra cứu và đăng ký phòng.
| Kịch bản kiểm thử tải (Load Test Scenario) |
Số lượng Threads (CCU) |
Tỉ lệ lỗi (Error Rate) |
Throughput (RPS) |
Avg Response Time |
| Tra cứu danh sách phòng trống |
1.000 |
0.00% |
485 req/s |
142 ms |
| Nộp đơn đăng ký KTX |
500 |
0.02% |
210 req/s |
230 ms |
| Thực thi thuật toán duyệt đơn tự động (5.000 đơn) |
1 (Admin batch) |
0.00% |
- |
1.250 ms |
| Cập nhật chỉ số điện nước 200 phòng |
10 (Admins) |
0.00% |
95 req/s |
115 ms |
+-------------------------------------------------------------------------+
| BIỂU ĐỒ ĐÁNH GIÁ THỜI GIAN PHẢN HỒI (MS) |
+-------------------------------------------------------------------------+
| 142 ms [==================> ] Tra cứu |
| 230 ms [==============================> ] Nộp đơn |
| 115 ms [==============> ] Điện nước|
| 1250 ms [=================================================>] Batch |
+-------------------------------------------------------------------------+
Kết quả đạt được so với mục tiêu ban đầu
Hệ thống đã hoàn thiện 100% các phân hệ chức năng theo đề cương nghiên cứu:
- Tự động hóa hoàn toàn: Loại bỏ 100% văn bản giấy tờ trong khâu tiếp nhận hồ sơ đầu vào.
- Thời gian xử lý kỷ lục: Xét duyệt và xếp chỗ cho 2.500 sinh viên hoàn thành trong thời gian dưới 30 giây thay vì 5 ngày làm việc thủ công.
- Mức độ hài lòng của người dùng (UAT): Đạt điểm CSAT trung bình 94.2/100 qua khảo sát thử nghiệm trên 300 sinh viên và 15 cán bộ quản lý KTX tại HAU.
Đổi mới và đóng góp
Đổi mới công nghệ và kỹ thuật
- Thuật toán xếp phòng tối ưu đa biến: Thay thế hoàn toàn phương pháp lọc thủ công bằng giải thuật khớp tham lam có trọng số (Greedy Matching with Constraint Optimization), đảm bảo sinh viên cùng khoa, cùng khóa được ưu tiên ở cùng nhau, tăng tính gắn kết sinh hoạt.
- Cơ chế kiểm soát dữ liệu điện nước chống sai sót: Hệ thống tích hợp thuật toán kiểm tra tính hợp lệ dữ liệu ($E_{thang_nay} \ge E_{thang_truoc}$); tự động cảnh báo biến động bất thường nếu mức tiêu thụ tăng đột biến $>150%$ so với mức trung bình 3 tháng liền kề.
- Kiến trúc Modular SPA/RESTful hiện đại: Tách biệt độc lập tầng giao diện và dịch vụ lõi, giúp hệ thống dễ dàng mở rộng, bảo trì và tích hợp với các hệ thống khác trong hệ sinh thái số của nhà trường mà không làm gián đoạn vận hành.
Bảng so sánh với các giải pháp trên thị trường
| Tiêu chí |
Phần mềm quản lý truyền thống (Desktop/PHP cũ) |
Phân hệ KTX trong ERP thương mại lớn |
Hệ thống KTX HAU (Đề tài phát triển) |
| Kiến trúc công nghệ |
Monolithic, PHP 5.x / WinForms |
Phức tạp, đóng gói cồng kềnh |
ASP.NET Core 6 + Angular SPA hiện đại |
| Chi phí triển khai |
Thấp nhưng khó tùy biến |
Rất cao (Hàng trăm triệu VNĐ) |
Tối ưu, làm chủ hoàn toàn mã nguồn |
| Khả năng tự động xếp phòng |
Không có (Xếp tay từng phòng) |
Bán tự động (Chưa tối ưu ràng buộc) |
Hoàn toàn tự động theo điểm và khóa |
| Tốc độ phản hồi API |
Chậm ($>800\text{ ms}$) |
Trung bình ($300 - 500\text{ ms}$) |
Rất nhanh ($<200\text{ ms}$) |
| Mức độ tương thích nghiệp vụ |
Thấp |
Phải thay đổi quy trình trường |
Chuẩn hóa chính xác theo nghiệp vụ HAU |
+-------------------------------------------------------------------------+
| ĐO LƯỜNG HIỆU QUẢ CẢI TIẾN NGHIỆP VỤ |
+-------------------------------------------------------------------------+
| Thời gian duyệt đơn: [ 3-5 Ngày ] ======> [ 15 Giây ] (Giảm 99%) |
| Thời gian xếp 1000 SV: [ 5-7 Ngày ] ======> [ 30 Giây ] (Giảm 99%) |
| Tỷ lệ sai sót dữ liệu: [ 8 - 12% ] ======> [ 0% ] (Triệt để) |
| Chi phí in ấn văn phòng: [ 100% ] ======> [ 15% ] (Giảm 85%) |
+-------------------------------------------------------------------------+
Ứng dụng thực tế và triển khai
Kịch bản sử dụng trong thực tế (Real-world Use Cases)
- Kịch bản 1: Mùa tuyển sinh và đón tân sinh viên: Nhà trường mở cổng đăng ký KTX trong 2 tuần. Hàng nghìn tân sinh viên truy cập cổng thông tin, nhập mã số định danh, chọn nguyện vọng và đính kèm giấy tờ chứng minh ưu tiên. Cán bộ quản lý chỉ cần nhấn 1 nút để hệ thống tự động chạy batch duyệt đơn và xếp phòng.
- Kịch bản 2: Ghi nhận và quyết toán điện nước hàng tháng: Cán bộ quản trị cầm máy tính bảng/laptop đi kiểm tra các tầng, nhập trực tiếp chỉ số công tơ điện nước trên giao diện Web. Hệ thống tự động sinh hóa đơn phòng, chia đều định mức và gửi thông báo công nợ đến tài khoản của từng thành viên trong phòng.
- Kịch bản 3: Gia hạn hợp đồng cuối học kỳ: Sinh viên năm cũ nhận thông báo sắp hết hạn hợp đồng; thực hiện bấm "Gia hạn" chỉ với 2 bước xác nhận trực tuyến, dữ liệu tự động đồng bộ sang danh sách thu phí của phòng Kế toán.
Yêu cầu hệ thống và hướng dẫn triển khai (Deployment Guide)
1. Yêu cầu cấu hình máy chủ tối thiểu (System Requirements)
- Hệ điều hành: Ubuntu Server 20.04 LTS hoặc Windows Server 2019/2022 Datacenter.
- CPU: Tối thiểu 4 Cores (Khuyến nghị 8 Cores Intel Xeon / AMD EPYC).
- RAM: Tối thiểu 8 GB (Khuyến nghị 16 GB DDR4).
- Dung lượng lưu trữ: 100 GB SSD (NVMe khuyến nghị cho SQL Server).
- Môi trường chạy: .NET Core Runtime 6.0, Node.js runtime, Reverse Proxy Nginx hoặc IIS 10.0.
2. Quy trình triển khai từng bước (Step-by-step Deployment)
# Bước 1: Clone mã nguồn từ Repository
git clone https://github.com/hau-it/dormitory-management-system.git
cd dormitory-management-system
# Bước 2: Cấu hình Connection String trong appsettings.json
# File: Backend/API/appsettings.json
# "DefaultConnection": "Server=tcp:sqlserver,1433;Database=HauDormDb;User Id=sa;Password=YourStrongPassword!;"
# Bước 3: Build và Publish Backend ASP.NET Core
cd Backend/API
dotnet restore
dotnet ef database update
dotnet publish -c Release -o /var/www/dorm-api
# Bước 4: Build Frontend Angular
cd ../../Frontend
npm install
npm run build --configuration=production
cp -r dist/dormitory-portal/* /var/www/dorm-ui
# Bước 5: Khởi tạo Service Kestrel và cấu hình Nginx Reverse Proxy
sudo systemctl restart kestrel-dorm-api.service
sudo systemctl reload nginx
Phân tích chi phí - lợi ích (Cost-Benefit & ROI Analysis)
- Chi phí đầu tư ban đầu: Hoàn toàn tiết kiệm do sử dụng công nghệ mã nguồn mở (ASP.NET Core, Angular, Linux Hosting) và tận dụng hạ tầng máy chủ sẵn có của Trường Đại học Kiến Trúc Hà Nội.
- Lợi ích kinh tế thu được: Tiết kiệm khoảng 120 triệu VNĐ/năm chi phí in ấn giấy tờ, biểu mẫu và 300 giờ công lao động của cán bộ quản lý mỗi kỳ tuyển sinh.
- Thời gian hoàn vốn (ROI Timeline): Ước tính đạt điểm hòa vốn và sinh lời giá trị vận hành sau 1,2 năm đưa vào khai thác thực tế.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Chưa tích hợp cổng thanh toán trực tuyến tự động: Hiện tại hệ thống mới dừng lại ở việc đồng bộ danh sách đối soát từ ngân hàng/kế toán, chưa tích hợp Webhook thanh toán tức thời (như VNPay, MoMo, VietQR động) để tự động gạch nợ real-time.
- Chưa có ứng dụng di động độc lập: Người dùng sinh viên vẫn truy cập qua trình duyệt Web di động (Mobile Web) thay vì ứng dụng Native App (iOS/Android) có khả năng đẩy thông báo (Push Notification).
- Phụ thuộc vào dữ liệu nhập công tơ thủ công: Việc ghi nhận chỉ số điện nước vẫn cần cán bộ đi kiểm tra bằng mắt và nhập số liệu vào hệ thống.
Hướng phát triển và nghiên cứu tiếp theo
- Ứng dụng công nghệ IoT (Smart Metering): Tích hợp công tơ điện tử thông minh kết nối không dây qua giao thức Zigbee/LoRaWAN, tự động truyền chỉ số điện nước về Server theo thời gian thực (Real-time).
- Phát triển Native Mobile App: Sử dụng Flutter hoặc React Native để xây dựng ứng dụng di động cho sinh viên, hỗ trợ quét mã QR điểm danh, báo cáo sự cố cơ sở vật chất kèm hình ảnh thực tế.
- Ứng dụng học máy (Machine Learning) trong phân tích bạn cùng phòng: Áp dụng thuật toán gom cụm (K-Means Clustering) để phân tích thói quen sinh hoạt (giờ giấc ngủ, sở thích, tính cách) nhằm gợi ý xếp phòng tối ưu mức độ hòa hợp cho sinh viên.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI TRỰC TIẾP |
+-------------------------------------------------------------------------+
| [Sinh viên] --> Đăng ký 24/7, minh bạch biểu phí, tiết kiệm 100% |
| thời gian xếp hàng nộp đơn. |
| [Cán bộ Quản lý] --> Giảm 85% áp lực giấy tờ, tự động hóa duyệt phòng, |
| báo cáo tài chính chuẩn xác. |
| [Nhà trường] --> Chuẩn hóa dữ liệu số, đồng bộ Đào tạo & Kế toán, |
| tối ưu 100% công suất khai thác KTX. |
| [Lập trình viên] --> Tham khảo mẫu kiến trúc chuẩn ASP.NET Core & |
| Angular Clean Architecture thực chiến. |
+-------------------------------------------------------------------------+
- Sinh viên: Tiết kiệm thời gian, loại bỏ hoàn toàn cảnh chen lấn nộp hồ sơ, chủ động theo dõi mọi khoản phí và hợp đồng minh bạch trên thiết bị cá nhân.
- Cán bộ quản lý KTX: Giải phóng khỏi khối lượng công việc hành chính nặng nề, giảm thiểu rủi ro nhầm lẫn, dễ dàng truy xuất báo cáo doanh thu và tình trạng cơ sở vật chất.
- Nhà trường & Ban Giám hiệu: Hoàn thiện một mắt xích quan trọng trong hệ sinh thái "Đại học số", nâng cao hình ảnh chuyên nghiệp, tối ưu hóa nguồn lực tài sản công.
- Cộng đồng lập trình viên & Sinh viên CNTT: Cung cấp tài liệu tham khảo chất lượng cao về việc áp dụng ASP.NET Core Web API, Angular, thiết kế CSDL quan hệ và giải quyết bài toán tối ưu hóa ràng buộc trong thực tế.
Câu hỏi thường gặp (FAQ)
1. Yêu cầu kỹ thuật tối thiểu để triển khai và chạy hệ thống là gì?
Hệ thống yêu cầu máy chủ cài đặt .NET Core Runtime 6.0 trở lên, hệ quản trị CSDL Microsoft SQL Server 2016 trở lên, và Web Server hỗ trợ Reverse Proxy như Nginx hoặc IIS 10+. Đối với máy khách (Client), chỉ cần trình duyệt web hiện đại (Google Chrome, Firefox, Safari, Microsoft Edge) có hỗ trợ JavaScript/ES6.
2. Hệ thống có khả năng chịu tải và mở rộng (Scalability) như thế nào khi số lượng sinh viên tăng cao?
Hệ thống được thiết kế theo kiến trúc Stateless API với xác thực qua JWT Bearer Token, cho phép dễ dàng mở rộng theo chiều ngang (Horizontal Scaling) bằng cách bổ sung nhiều Node ứng dụng phía sau bộ cân bằng tải (Load Balancer như Nginx hoặc HAProxy). Tầng cơ sở dữ liệu có thể cấu hình Read-Scale Availability Groups trên SQL Server để tối ưu hóa truy vấn đọc.
3. Hệ thống tích hợp với phần mềm Quản lý Đào tạo và Kế toán hiện có bằng cách nào?
Hệ thống cung cấp các Web API mở chuẩn RESTful được bảo vệ bằng API Key/JWT Token. Phân hệ Kế toán có thể gọi API đồng bộ để cập nhật danh sách các sinh viên đã thanh toán thành công, trong khi hệ thống Đào tạo có thể cung cấp dữ liệu xác thực tình trạng còn học của sinh viên qua kết nối nội bộ.
4. Chi phí vận hành và bảo trì hàng năm của hệ thống ước tính là bao nhiêu?
Chi phí vận hành rất thấp vì hệ thống chạy trên nền tảng .NET 6 Core mã nguồn mở (có thể triển khai trên Linux OS để tiết kiệm phí bản quyền Windows Server). Chi phí chủ yếu bao gồm tiền duy trì tên miền, máy chủ nội bộ hoặc Cloud VPS (khoảng 3 - 6 triệu VNĐ/năm).
5. Nếu xảy ra mất điện hoặc gián đoạn mạng, dữ liệu chỉ số điện nước có bị mất không?
Toàn bộ dữ liệu được quản lý giao dịch thông qua cơ chế Transaction của SQL Server và EF Core. Nếu thao tác lưu dữ liệu bị ngắt quãng giữa chừng, hệ thống sẽ tự động Rollback (hoàn tác) về trạng thái an toàn trước đó, đảm bảo tính toàn vẹn (ACID) tuyệt đối của cơ sở dữ liệu.
Kết luận
Đề tài "Xây dựng hệ thống quản lý ký túc xá và cổng đăng ký ở ký túc xá cho sinh viên" do sinh viên Lê Duy Khánh (Lớp 18CN3, Trường Đại học Kiến Trúc Hà Nội) thực hiện dưới sự hướng dẫn của thầy Nguyễn Quốc Huy đã giải quyết trọn vẹn và triệt để bài toán số hóa công tác quản lý nội trú trong trường đại học.
Hệ thống không chỉ dừng lại ở mức độ nghiên cứu học thuật mà đã chứng minh được tính khả thi, hiệu năng cao và giá trị ứng dụng thực tiễn vượt trội thông qua việc ứng dụng các công nghệ tiên tiến: ASP.NET Core 6.0, Angular 14, SQL Server, RESTful API và JWT Authentication. Các thuật toán cốt lõi về xét duyệt tự động theo tiêu chí ưu tiên và xếp phòng theo ràng buộc đa biến đã góp phần cắt giảm hơn 90% thời gian xử lý thủ công, xóa bỏ hoàn toàn tình trạng quá tải hồ sơ và mang lại một môi trường quản trị đại học minh bạch, hiện đại. Đây là nền tảng vững chắc để tiếp tục mở rộng tích hợp IoT và Mobile App trong các giai đoạn phát triển tiếp theo của hệ sinh thái đại học số.