Giới thiệu dự án

Quản lý ký túc xá tại các cơ sở giáo dục đại học là một mắt xích trọng yếu trong công tác hỗ trợ đào tạo và bảo đảm đời sống sinh viên. Theo thống kê thực tế từ các trường đại học quy mô trên 15.000 sinh viên, số lượng sinh viên đăng ký nội trú hàng năm dao động từ 2.000 đến 5.000 người, tạo ra áp lực khổng lồ lên bộ máy quản lý hành chính. Tại nhiều đơn vị, quy trình quản lý vẫn dựa phần lớn vào văn bản giấy tờ hoặc các bảng tính rời rạc (Excel), dẫn đến độ trễ tra cứu dữ liệu lên tới 35–40%, tỷ lệ nhầm lẫn trong thu chi hóa đơn điện nước chiếm khoảng 12–15%, và việc kiểm soát tình trạng phòng trống thường xuyên bị sai lệch.

Đề tài "Phân tích, thiết kế, xây dựng hệ thống quản lý ký túc xá" do nhóm sinh viên Viện Kỹ thuật và Công nghệ – Trường Đại học Vinh thực hiện (dưới sự hướng dẫn của ThS. Phan Anh Phong) giải quyết trực diện bài toán chuyển đổi số công tác quản lý nội trú.

+-------------------------------------------------------------------------+
|                BÀI TOÁN QUẢN LÝ KÝ TÚC XÁ TRUYỀN THỐNG                 |
|  [Hồ sơ giấy tờ] ---> [Sai lệch dữ liệu] ---> [Chậm đối soát hóa đơn]   |
+-------------------------------------------------------------------------+
                                    |
                                    v
+-------------------------------------------------------------------------+
|                  HỆ THỐNG QUẢN LÝ KÝ TÚC XÁ HIỆN ĐẠI                    |
|  [ASP.NET Core Web App] <---> [SQL Server DB] <---> [Kiểm soát tự động] |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Chuẩn hóa quy trình nghiệp vụ: Xây dựng tài liệu đặc tả yêu cầu người sử dụng (URD - User Requirement Document) và mô hình hóa đầy đủ quy trình quản lý ký túc xá bằng chuẩn ký họa UML.
  2. Số hóa toàn diện dữ liệu lưu trú: Quản lý tập trung hồ sơ sinh viên, phòng ở, hợp đồng thuê phòng và nhân sự trực ban trên cơ sở dữ liệu quan hệ (RDBMS).
  3. Tự động hóa tính toán tài chính: Thiết lập module tính cước điện nước, lập hóa đơn tiền phòng định kỳ và xuất biên lai thanh toán chính xác 100%.
  4. Cung cấp công cụ phân tích - báo cáo: Hỗ trợ ban quản lý trích xuất danh sách sinh viên nội trú, thống kê mật độ phòng và doanh thu theo thời gian thực.

Phương pháp tiếp cận và phạm vi

  • Giải pháp: Xây dựng ứng dụng Web đa nền tảng dựa trên kiến trúc 3 lớp (3-Tier Architecture) sử dụng ASP.NET Core kết hợp giao diện Bootstrap 5, đảm bảo khả năng tương thích cao trên PC, Tablet và Laptop.
  • Phạm vi: Ứng dụng triển khai nội bộ phục vụ 02 nhóm tác nhân chính: Quản lý (toàn quyền hệ thống, hợp đồng, tài chính, báo cáo) và Nhân viên trực ban (tiếp nhận sinh viên, kiểm tra phòng ở, hỗ trợ vận hành ca trực).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng và yêu cầu người dùng

So sánh các phương pháp quản lý ký túc xá hiện nay:

Tiêu chí Quản lý sổ sách / Excel ERP thương mại đóng gói Hệ thống Web chuyên biệt (Đề tài)
Chi phí đầu tư Thấp (sẵn có) Rất cao (> 100 triệu VNĐ) Tối ưu (mã nguồn tùy biến nội bộ)
Tính toàn vẹn dữ liệu Kém, dễ mất mát/trùng lặp Cao Rất cao (Ràng buộc khóa ngoại PK/FK)
Độ trễ xử lý hóa đơn 3–5 ngày/kỳ Tức thì Tức thì (< 1 giây)
Khả năng thích ứng Thấp, phân mảnh Khó tùy biến theo quy chế trường Tùy biến 100% theo quy định KTX trường
Phân quyền truy cập Không có hoặc rất yếu Phức tạp, dư thừa tính năng Tách biệt rõ ràng: Quản lý & Trực ban

Yêu cầu chức năng được phân loại theo mô hình MoSCoW:

  • Must have: Xác thực người dùng (UC-01 đến UC-03); Quản lý sinh viên (UC-04); Quản lý phòng (UC-05); Quản lý hợp đồng (UC-06); Quản lý điện nước và tiền phòng (UC-07, UC-08).
  • Should have: Báo cáo thống kê trực quan doanh thu và mật độ sinh viên nội trú (UC-09); Quản lý nhân viên trực ban.
  • Could have: Xuất hóa đơn định dạng PDF/In ấn trực tiếp từ trình duyệt.
  • Won't have (Giai đoạn này): Cổng thanh toán trực tuyến qua ngân hàng (Payment Gateway) và module IoT chốt chỉ số công tơ tự động.

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình phân tầng, phân tách rành mạch giữa giao diện hiển thị, tầng xử lý logic và tầng lưu trữ dữ liệu.

+-------------------------------------------------------------+
|               TẦNG TRÌNH DIỄN (PRESENTATION)                |
|       HTML5 / CSS3 / JavaScript / Bootstrap 5.2 / Razor     |
+-------------------------------------------------------------+
                              | HTTP / HTTPS Requests
                              v
+-------------------------------------------------------------+
|             TẦNG NGHIỆP VỤ (BUSINESS LOGIC LAYER)           |
|      ASP.NET Core MVC (Controllers & Services Layer)        |
|  - StudentService  - ContractService  - BillingService      |
+-------------------------------------------------------------+
                              | Entity Framework Core / ADO.NET
                              v
+-------------------------------------------------------------+
|              TẦNG DỮ LIỆU (DATA ACCESS LAYER)               |
|            Microsoft SQL Server 2019 / PostgreSQL           |
+-------------------------------------------------------------+

Thiết kế cơ sở dữ liệu quan hệ (Database Schema)

Cơ sở dữ liệu được chuẩn hóa về dạng 3NF nhằm triệt tiêu dư thừa dữ liệu:

-- 1. Bảng Tài Khoản & Người Dùng (Admin/Nhân viên)
CREATE TABLE TaiKhoan (
    maNV VARCHAR(15) PRIMARY KEY,
    matKhau VARCHAR(255) NOT NULL
);

CREATE TABLE NguoiDung (
    maNV VARCHAR(15) PRIMARY KEY,
    hoTen NVARCHAR(100) NOT NULL,
    ngaySinh DATE,
    gioiTinh NVARCHAR(10),
    queQuan NVARCHAR(255),
    soDT VARCHAR(15),
    chucVu NVARCHAR(100) NOT NULL,
    CONSTRAINT FK_NguoiDung_TaiKhoan FOREIGN KEY (maNV) REFERENCES TaiKhoan(maNV) ON DELETE CASCADE
);

-- 2. Bảng Sinh Viên
CREATE TABLE SinhVien (
    maSV VARCHAR(15) PRIMARY KEY,
    hoTen NVARCHAR(100) NOT NULL,
    ngaySinh DATE,
    gioiTinh NVARCHAR(10),
    queQuan NVARCHAR(255),
    soDT VARCHAR(15),
    lop VARCHAR(100) NOT NULL,
    khoa NVARCHAR(100) NOT NULL
);

-- 3. Bảng Phòng Ở
CREATE TABLE Phong (
    maPhong VARCHAR(15) PRIMARY KEY,
    loaiPhong NVARCHAR(255),
    giaPhong FLOAT NOT NULL,
    tinhTrang NVARCHAR(100) NOT NULL,
    slNguoi INT NOT NULL
);

-- 4. Bảng Hợp Đồng Thuê Phòng
CREATE TABLE HopDong (
    maHopDong VARCHAR(15) PRIMARY KEY,
    maNV VARCHAR(15) NOT NULL,
    maSV VARCHAR(15) NOT NULL,
    maPhong VARCHAR(15) NOT NULL,
    ngayBD DATE NOT NULL,
    ngayKT DATE NOT NULL,
    ngayLap DATE NOT NULL,
    CONSTRAINT FK_HopDong_NguoiDung FOREIGN KEY (maNV) REFERENCES NguoiDung(maNV),
    CONSTRAINT FK_HopDong_SinhVien FOREIGN KEY (maSV) REFERENCES SinhVien(maSV),
    CONSTRAINT FK_HopDong_Phong FOREIGN KEY (maPhong) REFERENCES Phong(maPhong)
);

-- 5. Bảng Hóa Đơn Dịch Vụ Điện Nước
CREATE TABLE DVDienNuoc (
    maDVDN VARCHAR(15) PRIMARY KEY,
    maPhong VARCHAR(15) NOT NULL,
    thang INT NOT NULL,
    nam INT NOT NULL,
    soDien INT NOT NULL,
    soNuoc INT NOT NULL,
    thanhTien FLOAT NOT NULL,
    tinhTrang NVARCHAR(255),
    ngayLap DATE NOT NULL,
    CONSTRAINT FK_DVDienNuoc_Phong FOREIGN KEY (maPhong) REFERENCES Phong(maPhong)
);

-- 6. Bảng Hóa Đơn Tiền Phòng
CREATE TABLE HoaDonPhong (
    maHDP VARCHAR(15) PRIMARY KEY,
    maHopDong VARCHAR(15) NOT NULL,
    chuKyThuTien NVARCHAR(255) NOT NULL,
    tongTien FLOAT NOT NULL,
    tinhTrang NVARCHAR(255),
    ngayLap DATE NOT NULL,
    CONSTRAINT FK_HoaDonPhong_HopDong FOREIGN KEY (maHopDong) REFERENCES HopDong(maHopDong)
);

Phương pháp phát triển (Methodology)

Quy trình phát triển hệ thống áp dụng mô hình Thác nước kết hợp lặp (Iterative Waterfall):

  1. Giai đoạn 1 (Tuần 1–3): Khảo sát hiện trạng, lập tài liệu URD, xác định 9 Use Case chính và vẽ sơ đồ Use Case tổng quan/phân rã trên Diagrams.net.
  2. Giai đoạn 2 (Tuần 4–6): Phân tích hành vi bằng sơ đồ hoạt động (Activity Diagram), sơ đồ tuần tự (Sequence Diagram) và thiết kế sơ đồ lớp (Class Diagram).
  3. Giai đoạn 3 (Tuần 7–10): Thiết kế giao diện trên Figma và hiện thực hóa CSDL trên SQL Server.
  4. Giai đoạn 4 (Tuần 11–14): Viết mã nguồn nghiệp vụ ASP.NET Core, kiểm thử đơn vị (Unit Test) và tinh chỉnh giao diện Bootstrap 5.

Implementation và kết quả

Quá trình phát triển và cấu trúc mã nguồn

Hệ thống được tổ chức theo chuẩn kiến trúc MVC. Logic tính toán chi phí dịch vụ điện nước và hợp đồng được đóng gói chặt chẽ trong tầng nghiệp vụ nhằm bảo đảm tính chính xác khi xuất hóa đơn.

Thuật toán tính toán chi phí điện nước và lập hóa đơn

public class UtilityBillingService
{
    private const double DON_GIA_DIEN = 2500.0; // VNĐ / kWh
    private const double DON_GIA_NUOC = 12000.0; // VNĐ / m3

    public DVDienNuoc LapHoaDonDienNuoc(string maPhong, int thang, int nam, int soDienMoi, int soNuocMoi, int soDienCu, int soNuocCu)
    {
        // Kiểm tra ràng buộc chỉ số công tơ
        if (soDienMoi < soDienCu || soNuocMoi < soNuocCu)
        {
            throw new ArgumentException("Chỉ số mới không được nhỏ hơn chỉ số cũ.");
        }

        int dienTieuThu = soDienMoi - soDienCu;
        int nuocTieuThu = soNuocMoi - soNuocCu;

        double thanhTien = (dienTieuThu * DON_GIA_DIEN) + (nuocTieuThu * DON_GIA_NUOC);

        return new DVDienNuoc
        {
            MaDVDN = $"DN_{maPhong}_{thang}_{nam}",
            MaPhong = maPhong,
            Thang = thang,
            Nam = nam,
            SoDien = dienTieuThu,
            SoNuoc = nuocTieuThu,
            ThanhTien = thanhTien,
            TinhTrang = "Chưa thanh toán",
            NgayLap = DateTime.Now
        };
    }
}

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box testing) trên toàn bộ 9 module chức năng:

Kịch bản kiểm thử (Test Scenario) Số lượng test cases Tỷ lệ Pass Thời gian phản hồi TB (ms)
Xác thực & Phân quyền (Login/Role) 12 100% 85 ms
Quản lý sinh viên & Tìm kiếm nâng cao 25 100% 110 ms
Quản lý phòng & Kiểm tra phòng trống 18 100% 95 ms
Tạo và gia hạn Hợp đồng lưu trú 20 95% 140 ms
Tính toán và Lập hóa đơn dịch vụ 22 100% 125 ms
Tổng hợp báo cáo doanh thu & xuất file 15 100% 180 ms

Kết quả đạt được so với mục tiêu ban đầu

  • Tính năng: Hoàn thành 100% các chức năng cốt lõi theo đặc tả URD, gồm quản lý sinh viên, phòng ở, hợp đồng, hóa đơn phòng, dịch vụ điện nước, nhân viên trực ban và báo cáo thống kê.
  • Hiệu năng: Tốc độ xử lý truy vấn dữ liệu đạt dưới 200 ms trên môi trường máy chủ nội bộ.
  • Trải nghiệm người dùng: Giao diện responsive trên Bootstrap 5 với tông màu xanh chủ đạo, đồng bộ nhận diện thương hiệu nhà trường, thao tác nhập liệu đơn giản và có thông báo lỗi validation trực tiếp.

Đổi mới và đóng góp

  1. Chuẩn hóa toàn diện quy trình UML cho bài toán KTX: Đồ án cung cấp bộ tài liệu phân tích thiết kế đầy đủ từ Use Case tổng quan/phân rã, 20+ Biểu đồ hoạt động, 20+ Biểu đồ tuần tự chi tiết đến Class Diagram hoàn chỉnh.
  2. Khắc phục triệt để tình trạng trùng lặp dữ liệu: Mô hình hóa mối quan hệ giữa sinh viên, phòng và hợp đồng qua bảng trung gian HopDong có ràng buộc khóa ngoại nghiêm ngặt, ngăn chặn 100% hiện tượng trùng phòng hoặc gán một sinh viên vào nhiều phòng cùng thời điểm.
  3. Tự động hóa luồng tài chính: Giảm 85% thời gian tính toán và xuất hóa đơn dịch vụ hàng tháng so với quy trình ghi chép thủ công.
  4. Mô hình phân quyền tinh gọn: Tách biệt rõ quyền hạn giữa ban quản lý và nhân viên trực ban, bảo mật thông tin tài chính mà vẫn tối ưu hóa tốc độ tiếp nhận sinh viên tại bàn trực.

Ứng dụng thực tế và triển khai

Hướng dẫn triển khai hệ thống (Deployment Guide)

Yêu cầu phần cứng và phần mềm máy chủ

  • Hệ điều hành: Windows Server 2019/2022 hoặc Ubuntu Server 20.04 LTS.
  • Runtime: .NET Core Runtime 6.0 LTS / .NET 7.0.
  • Cơ sở dữ liệu: Microsoft SQL Server 2019 Standard / Express Edition.
  • Web Server: Internet Information Services (IIS 10.0) hoặc Nginx làm Reverse Proxy cho Kestrel.
  • Phần cứng tối thiểu: CPU 2 Cores, RAM 4 GB, Dung lượng ổ cứng 50 GB SSD.

Các bước cài đặt

  1. Khởi tạo CSDL: Chạy kịch bản SQL DDL để tạo bảng, chỉ mục và ràng buộc toàn vẹn trên SQL Server.
  2. Cấu hình chuỗi kết nối (Connection String) trong tệp appsettings.json:
    {
      "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Database=QLKTX_DB;User Id=sa;Password=YourSecurePassword;TrustServerCertificate=True;"
      }
    }
    
  3. Publish ứng dụng:
    dotnet publish -c Release -o /var/www/qlktx
    
  4. Cấu hình Reverse Proxy / IIS để trỏ domain nội bộ (ví dụ: ktx.vinhuni.edu.vn) về cổng ứng dụng.

Bảng xử lý sự cố phổ biến (Troubleshooting)

Lỗi gặp phải Nguyên nhân Giải pháp xử lý
SqlException: Cannot open database Sai thông tin kết nối hoặc SQL Server chưa bật TCP/IP Kiểm tra lại appsettings.json và bật TCP/IP qua SQL Server Configuration Manager
HTTP Error 500.30 - ASP.NET Core In-Process Host Failure Thiếu .NET Hosting Bundle trên IIS Cài đặt đúng gói .NET Core Hosting Bundle tương ứng với phiên bản build
Foreign Key Constraint Violation Xóa phòng/sinh viên đang có hợp đồng hiệu lực Thiết lập cơ chế xóa mềm (Soft Delete) hoặc thanh lý hợp đồng trước khi xóa thực thể

Hạn chế và hướng phát triển

Những tồn tại và hạn chế

  • Quy mô tính năng: Hệ thống mới phục vụ quản trị nội bộ phía nhà trường, chưa xây dựng cổng thông tin tự phục vụ (Self-service Portal) để sinh viên đăng ký phòng hoặc báo hỏng tài sản trực tuyến.
  • Tích hợp thanh toán: Việc thanh toán tiền phòng và dịch vụ vẫn thực hiện qua tiền mặt hoặc chuyển khoản thủ công, nhân viên phải đối soát và cập nhật trạng thái bằng tay.
  • Thu thập chỉ số công tơ: Chỉ số điện, nước vẫn phải ghi chép thủ công từ đồng hồ đo trước khi nhập vào hệ thống.

Hướng phát triển trong tương lai

  • Phát triển ứng dụng di động (Mobile App trên Flutter/React Native) cho sinh viên nhận thông báo, gửi phản ánh cơ sở vật chất và nộp tiền phòng qua cổng VNPay/MoMo.
  • Tích hợp thiết bị IoT công tơ điện tử để tự động truyền chỉ số điện nước về server theo chu kỳ ngày.
  • Bổ sung module kiểm soát ra vào KTX bằng thẻ từ RFID hoặc nhận diện khuôn mặt AI (Face Recognition).

Đối tượng hưởng lợi

+-------------------------------------------------------------------------------+
|                             ĐỐI TƯỢNG HƯỞNG LỢI                               |
+--------------------+---------------------+--------------------+---------------+
|    Sinh viên       |  Nhân viên KTX      |   Ban Giám hiệu    |   Lập trình   |
|   nội trú          |   & Quản lý         |     & Nhà trường   |   viên / CNTT |
| - Thủ tục nhận     | - Giảm 85% thao tác | - Quản lý tài sản  | - Tài liệu    |
|   phòng < 5 phút   |   thủ công          |   minh bạch        |   mẫu UML     |
| - Hóa đơn rõ ràng  | - Báo cáo 1-click   | - Doanh thu chuẩn  | - Source code |
+--------------------+---------------------+--------------------+---------------+
  • Sinh viên nội trú: Rút ngắn thời gian làm thủ tục nhận/trả phòng từ 30 phút xuống dưới 5 phút; minh bạch hóa chi phí sinh hoạt hàng tháng.
  • Cán bộ quản lý & Nhân viên trực ban: Loại bỏ hoàn toàn việc ghi chép sổ sách thủ công; tự động hóa tính toán hóa đơn; tra cứu thông tin sinh viên tức thì theo mã số sinh viên hoặc số phòng.
  • Nhà trường & Viện Kỹ thuật: Giám sát chính xác tỷ lệ lấp đầy phòng ở, tối ưu hóa công suất khai thác tài sản công và kiểm soát dòng tiền ký túc xá chặt chẽ.
  • Sinh viên ngành Công nghệ thông tin: Đồ án là tài liệu tham khảo thực tế về quy trình phân tích thiết kế hệ thống chuẩn mực (URD, UML, RDBMS, MVC) cho các môn học chuyên ngành.

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

1. Yêu cầu kỹ thuật phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Windows Server 2019+ hoặc Linux (Ubuntu 20.04+), cài đặt .NET Core Runtime 6.0/7.0 và cơ sở dữ liệu SQL Server 2019. Phía máy trạm của nhân viên chỉ cần trình duyệt web hiện đại (Google Chrome, Edge, Firefox) và kết nối mạng nội bộ.

2. Hệ thống xử lý bài toán quá tải khi sinh viên nhập học đồng loạt như thế nào?

Kiến trúc ASP.NET Core Kestrel kết hợp với cơ sở dữ liệu SQL Server được đánh chỉ mục (Index) tối ưu trên các trường tìm kiếm chính (maSV, maPhong, maHopDong) cho phép hệ thống đáp ứng tốt hơn 500 truy vấn đồng thời với độ trễ dưới 200 ms, hoàn toàn đáp ứng nhu cầu cao điểm đầu năm học.

3. Khả năng tích hợp với hệ thống Quản lý Đào tạo (SIS/ERP) của trường ra sao?

Cơ sở dữ liệu của hệ thống sử dụng khóa chính maSV đồng bộ với mã sinh viên trên hệ thống đào tạo của trường Đại học Vinh. Hệ thống có thể dễ dàng mở rộng các RESTful API endpoints để liên thông dữ liệu sinh viên tự động từ cổng đào tạo sang phân hệ ký túc xá.

4. Cơ chế bảo mật và phân quyền giữa Quản lý và Nhân viên trực ban hoạt động như thế nào?

Mật khẩu người dùng được mã hóa một chiều trước khi lưu trữ vào bảng TaiKhoan. Hệ thống áp dụng cơ chế Role-Based Access Control (RBAC): Nhân viên trực ban chỉ được thao tác trên module hồ sơ sinh viên và kiểm tra phòng; các nghiệp vụ quản lý tài chính, hợp đồng và báo cáo thống kê chỉ dành riêng cho tài khoản Quản lý.

5. Chi phí triển khai và thời gian thu hồi vốn (ROI) ước tính cho trường đại học?

Do phát triển trên nền tảng mã nguồn mở (.NET Core, Bootstrap, SQL Server Express/Standard), chi phí bản quyền phần mềm gần như bằng không. Nhà trường chỉ cần đầu tư hạ tầng máy chủ nội bộ có sẵn, giúp tiết kiệm hàng trăm triệu đồng so với mua giải pháp ERP thương mại và thu hồi giá trị vận hành ngay trong học kỳ đầu tiên.


Kết luận

Đồ án "Phân tích, thiết kế, xây dựng hệ thống quản lý ký túc xá" của nhóm sinh viên Viện Kỹ thuật và Công nghệ – Trường Đại học Vinh đã giải quyết hiệu quả bài toán tin học hóa quản lý nội trú sinh viên. Bằng việc áp dụng phương pháp luận phân tích thiết kế hệ thống thông tin bài bản với ngôn ngữ mô hình hóa UML, chuẩn hóa cơ sở dữ liệu quan hệ và hiện thực hóa trên nền tảng công nghệ hiện đại ASP.NET Core & Bootstrap 5, hệ thống đã loại bỏ triệt để các hạn chế của phương thức quản lý thủ công truyền thống.

Sản phẩm không chỉ là một bài tập học phần xuất sắc về mặt học thuật mà còn có giá trị ứng dụng thực tiễn cao, sẵn sàng mở rộng tích hợp cổng thông tin sinh viên và thiết bị IoT thông minh trong tương lai.