Bối cảnh và vấn đề nghiên cứu
Lý do chọn đề tài và bối cảnh thực tiễn
Tại Trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng, công tác quản lý và tiếp nhận sinh viên nội trú ký túc xá trước đây chủ yếu thực hiện theo hình thức nộp hồ sơ giấy trực tiếp tại văn phòng ban quản lý. Trong giai đoạn dịch bệnh Covid-19 bùng phát, nhà trường có áp dụng giải pháp tình thế là cho sinh viên điền thông tin qua biểu mẫu trực tuyến (form trực tuyến). Tuy nhiên, cả hai phương thức này đều bộc lộ nhiều điểm hạn chế trong khâu vận hành tác nghiệp:
- Quá trình xét duyệt hồ sơ, kiểm tra thông tin sinh viên làm thủ tục đòi hỏi nhiều thời gian, công sức và chi phí của sinh viên, ban quản lý ký túc xá lẫn nhà trường.
- Tình trạng thất lạc đơn từ, sai lệch dữ liệu cá nhân, sai sót trong quá trình tổng hợp số liệu thường xuyên xảy ra.
- Công tác lưu trữ hồ sơ thiếu an toàn, khó đảm bảo tính minh bạch, tính toàn vẹn và hiệu quả quản lý tổng thể đối với toàn bộ ký túc xá.
Từ nhu cầu thực tiễn về việc ứng dụng công nghệ thông tin nhằm tin học hóa quy trình quản lý hành chính trong môi trường giáo dục đại học, đề tài "Xây dựng hệ thống website quản lý ký túc xá trường đại học sư phạm kỹ thuật" được tác giả lựa chọn thực hiện nhằm số hóa toàn diện quy trình đăng ký, quản lý lưu trú và thu chi dịch vụ.
Mục tiêu và nhiệm vụ nghiên cứu
Văn bản đồ án xác định rõ ràng mục tiêu tổng quát và các nhiệm vụ kỹ thuật cụ thể:
Mục tiêu đề tài:
- Nắm vững và trình bày có hệ thống các kiến thức nền tảng về phát triển phần mềm bằng ngôn ngữ và khung làm việc Angular, Node.js, ExpressJS Framework, hệ quản trị cơ sở dữ liệu MongoDB và các công cụ hỗ trợ liên quan.
- Xây dựng và thử nghiệm thành công hệ thống website quản lý ký túc xá Trường Đại học Sư phạm Kỹ thuật. Hệ thống cung cấp giao diện cho sinh viên tra cứu thông tin, xem phòng trống, đăng ký tạm trú trực tuyến, theo dõi tiền điện nước; đồng thời hỗ trợ ban quản lý giám sát sinh viên, phân bổ phòng, quản lý cơ sở vật chất, lập hóa đơn và biên lai trên môi trường web.
Nhiệm vụ nghiên cứu (theo trình tự văn bản):
- Thu thập thông tin, form biểu mẫu quy định và khảo sát thực tế quy trình đăng ký tạm trú, tác nghiệp quản lý tại Ký túc xá Trường Đại học Sư phạm Kỹ thuật.
- Phân tích và thiết kế các yêu cầu chức năng của hệ thống.
- Phân tích và thiết kế cơ sở dữ liệu hệ thống.
- Xây dựng và lập trình hệ thống website.
- Kiểm thử các chức năng của website.
- Hoàn thành báo cáo tổng hợp đồ án tốt nghiệp.
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Quy trình đăng ký tạm trú, quy trình quản lý ký túc xá, cùng đối tượng người dùng gồm sinh viên và ban quản lý ký túc xá Trường Đại học Sư phạm Kỹ thuật.
- Phạm vi nghiên cứu: Không gian áp dụng tại Ký túc xá Trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng; thời gian hoàn thành và nộp đồ án tốt nghiệp là ngày 20 tháng 06 năm 2022.
Cơ sở lý thuyết và phương pháp
Đồ án tiếp cận bài toán xây dựng phần mềm thông qua việc khảo sát nghiệp vụ thực tế kết hợp áp dụng các công nghệ web hiện đại.
Khung công nghệ và nền tảng lý thuyết
Hệ thống được xây dựng dựa trên sự kết hợp của kiến trúc phần mềm hướng dịch vụ web với các công nghệ thành phần:
-
Hệ quản trị cơ sở dữ liệu MongoDB:
- Là cơ sở dữ liệu NoSQL hướng tài liệu (document-oriented database), lưu trữ dữ liệu dưới định dạng BSON (Binary JSON) với cấu trúc lược đồ linh hoạt (schema-less).
- Ưu điểm được ghi nhận trong đồ án: Không sử dụng bảng và khóa ngoại phức tạp (không dùng phép nối JOIN), cấu trúc đối tượng rõ ràng, hỗ trợ truy vấn động mạnh mẽ; hỗ trợ khả năng mở rộng quy mô theo chiều ngang (Horizontal Scalability) qua mô hình cụm (cluster); cơ chế tự động đánh chỉ mục trên trường
_id và lưu đệm (cache) bản ghi trên RAM giúp tăng tốc độ truy xuất, trong đó tốc độ ghi dữ liệu (insert) có thể nhanh hơn đáng kể so với MySQL trên tập dữ liệu lớn.
- Nhược điểm được tác giả chỉ ra: Dữ liệu lặp lại khóa (key) gây tốn dung lượng bộ nhớ; không có các ràng buộc quan hệ toàn vẹn chặt chẽ như RDBMS nên đòi hỏi kiểm soát logic ứng dụng cẩn trọng; cơ chế ghi dữ liệu từ bộ nhớ RAM xuống ổ đĩa vật lý định kỳ sau 60 giây tiềm ẩn nguy cơ mất mát dữ liệu nếu xảy ra sự cố đột ngột như mất nguồn điện.
-
Khung giao diện Angular:
- Framework mã nguồn mở do Google phát triển, chuyên dùng để xây dựng các ứng dụng đơn trang (Single Page Application - SPA) dựa trên ngôn ngữ TypeScript, HTML và CSS.
- Tác giả tổng hợp quá trình tiến hóa từ AngularJS (kiến trúc MVC, ra mắt năm 2010), Angular 2 (chuyển đổi sang kiến trúc component và directive, viết hoàn toàn bằng TypeScript), Angular 4 (tối ưu hóa kích thước gói mã nguồn giảm 60%), Angular 5 (tích hợp HttpClient, RxJS 5.5, biên dịch AOT), Angular 6 (bổ sung Angular Elements, RxJS 6), Angular 7 (bổ sung ScrollingModule, Drag and Drop), Angular 8 (cải tiến CLI, dynamic import) đến Angular 9 (sử dụng mặc định trình biên dịch Ivy và tương thích TypeScript 3).
-
Thư viện giao diện Bootstrap:
- Bộ công cụ mã nguồn mở hỗ trợ thiết kế giao diện thích ứng (Responsive Web Design) theo chuẩn ưu tiên thiết bị di động (Mobile First), tự động co giãn và tương thích trên nhiều kích cỡ màn hình khác nhau.
-
Nền tảng thực thi NodeJS và Framework Express:
- NodeJS là môi trường chạy mã nguồn JavaScript xây dựng trên nền tảng V8 JavaScript Engine của Google Chrome. NodeJS ứng dụng mô hình hướng sự kiện vào/ra không chặn (non-blocking I/O) và kiến trúc luồng đơn (single-threaded), tối ưu hóa việc xử lý đồng thời hàng chục ngàn kết nối mà không tiêu tốn quá nhiều tài nguyên RAM cho việc tạo tiến trình mới.
- Express là framework trung gian chạy trên nền NodeJS (chiếm tỷ lệ sử dụng cao trong cộng đồng phát triển), cung cấp cơ chế định tuyến linh hoạt theo URL HTTP, hỗ trợ cấu trúc MVC và tích hợp thuận lợi các plugin/API phục vụ backend.
Phương pháp nghiên cứu và nguồn dữ liệu
- Phương pháp thu thập dữ liệu: Khảo sát các mẫu đơn giấy, biên lai thu tiền, sổ bộ ghi chỉ số điện nước và quy chế quản lý ký túc xá đang được lưu hành tại văn phòng ban quản lý.
- Phương pháp mô hình hóa và phân tích: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng hệ thống sơ đồ ca sử dụng (Use Case Diagram), sơ đồ hoạt động (Activity Diagram), sơ đồ trạng thái (State Machine Diagram) và sơ đồ tuần tự (Sequence Diagram).
- Phương pháp thực nghiệm phát triển phần mềm: Lập trình theo mô hình phân tách độc lập giữa tầng giao diện người dùng (Frontend - Angular) và tầng xử lý nghiệp vụ, dịch vụ dữ liệu (Backend - NodeJS, ExpressJS, MongoDB).
Thiết kế và triển khai hệ thống
Phân tích yêu cầu và phân hệ ca sử dụng
Hệ thống phân định ranh giới chức năng rõ ràng giữa hai tác nhân (actors): Ban quản lý ký túc xá và Sinh viên.
| Tác nhân |
Nhóm ca sử dụng chức năng |
Mô tả tương tác |
| Ban quản lý ký túc xá |
Đăng nhập hệ thống |
Nhập Email và Mật khẩu, hệ thống xác thực thông tin tài khoản |
|
Quản lý nhân viên |
Thêm nhân viên mới, sửa đổi thông tin, xóa nhân viên khỏi hệ thống |
|
Quản lý sinh viên |
Thêm hồ sơ sinh viên, cập nhật thông tin cá nhân/học tập, xóa bản ghi sinh viên |
|
Quản lý phòng & khu |
Tạo khu, cập nhật phòng, quản lý số lượng chứa (mặc định 8) và tình trạng phòng |
|
Quản lý thiết bị |
Cập nhật danh mục trang thiết bị, số lượng và gán thiết bị theo từng phòng |
|
Quản lý hóa đơn & biên lai |
Lập hóa đơn chỉ số điện nước theo kỳ, tạo biên lai thu tiền học kỳ của sinh viên |
|
Quản lý thông báo |
Biên tập bài viết thông báo nội quy, thông tin KTX kèm hình ảnh đính kèm |
|
Duyệt tạm trú |
Xem danh sách hồ sơ sinh viên gửi lên mạng, thực hiện Duyệt hoặc Xóa đăng ký |
|
Thống kê số lượng sinh viên |
Xem thống kê số lượng sinh viên đang ở theo từng học kỳ |
| Sinh viên |
Tra cứu thông tin ký túc xá |
Xem quy định, nội quy, bảng giá đơn giá điện nước công khai |
|
Xem phòng trống |
Tra cứu tình trạng các phòng còn chỗ để đăng ký |
|
Đăng ký tạm trú |
Điền thông tin cá nhân, chọn phòng và gửi hồ sơ trực tuyến |
|
Tra cứu tiền điện nước |
Theo dõi chi số đầu kỳ, cuối kỳ và tổng số tiền điện nước của phòng đang lưu trú |
|
Xem thông báo |
Theo dõi các thông báo mới từ ban quản lý |
Thiết kế cấu trúc cơ sở dữ liệu
Hệ thống tổ chức dữ liệu thành 9 thực thể (collection/bảng) với cấu trúc chi tiết được thiết kế như sau:
| Tên bảng |
Trường dữ liệu (Fields) |
Kiểu dữ liệu |
Ràng buộc kỹ thuật |
| SinhVien |
SinhVienID, PhongID, HoTen, GioiTinh, NgaySinh, SDT, CMND, NoiCap, DanToc, TonGiao, MaSV, Lop, Khoa, Truong, DiaChi, HoTenNguoiThan, SDTNguoiThan, DiaChiNguoiThan, TrangThai |
String, Boolean, Date |
SinhVienID (Khóa chính), PhongID (Khóa ngoại), các trường thông tin nhân thân và thân nhân mang ràng buộc Not Null |
| NhanVien |
NhanVienID, HoTen, GioiTinh, NgaySinh, SDT, CMND, NoiCap, DanToc, TonGiao, DiaChi, ChucVu |
String, Boolean, Date |
NhanVienID (Khóa chính), ChucVu có giá trị mặc định là "Nhân viên" |
| Phong |
PhongID, KhuID, TenPhong, SoluongChua, SoLuongDangO, TinhTrang |
String, Number |
PhongID (Khóa chính), KhuID (Khóa ngoại), SoluongChua (Mặc định 8), SoLuongDangO (Mặc định 0), TinhTrang (Mặc định "Trống") |
| HoaDonDienNuoc |
HoaDonDienNuocID, NhanVienID, PhongID, HoTenNguoiNop, ChiSoDienDauKy, ChiSoDienCuoiKy, DonGiaDien, ChiSoNuocDauKy, ChiSoNuocCuoiKy, DonGiaNuoc, TongTien, Ngaylap |
String, Number, Date |
HoaDonDienNuocID (Khóa chính), NhanVienID và PhongID (Khóa ngoại), Ngaylap mặc định lấy ngày hiện tại qua hàm getDate() |
| BienLaiThuTien |
BienLaiThuTienID, NhanVienID, SinhVienID, Hocky, NamHoc, TongTien, NgayLap |
String, Number, Date |
BienLaiThuTienID (Khóa chính), Hocky (Nhận giá trị 1 hoặc 2), NamHoc (4 chữ số, Not Null), NgayLap mặc định getDate() |
| Khu |
KhuID, TenKhu, MoTa |
String |
KhuID (Khóa chính), TenKhu (Not Null), MoTa (Cho phép Null) |
| ThietBi |
ThietBiID, PhongID, TenThietBi, So luong, Mo ta |
String, Number |
ThietBiID (Khóa chính), PhongID (Khóa ngoại), So luong (Mặc định 1) |
| TaiKhoan |
TaiKhoanID, NhanVienID, Email, MatKhau |
String |
TaiKhoanID (Khóa chính), NhanVienID (Khóa ngoại), Email và MatKhau mang ràng buộc Not Null |
| ThongBao |
ThongBaoID, NhanVienID, TieuDe, NoiDung, Anh, NgayLap |
String, Date |
ThongBaoID (Khóa chính), NhanVienID (Khóa ngoại), TieuDe và NoiDung (Not Null), NgayLap mặc định getDate() |
Hiện thực hóa giao diện và quy trình tác nghiệp
Tác giả đã triển khai mã nguồn và xây dựng các giao diện web tương ứng:
- Phía giao diện công cộng cho sinh viên: Trang chủ giới thiệu chung, trang hiển thị danh sách bài đăng thông báo và xem chi tiết nội dung, form biểu mẫu nhập liệu đăng ký tạm trú, giao diện niêm yết bảng giá dịch vụ điện nước và trang tra cứu nội quy ký túc xá.
- Phía quản trị và nhân viên: Giao diện đăng nhập tài khoản bảo mật; khu vực làm việc của ban quản trị (Admin Dashboard); màn hình quản lý hồ sơ nhân viên, biểu mẫu tạo mới nhân viên và xem chi tiết nhân sự; màn hình duyệt đơn sinh viên trực tuyến kèm hộp thoại xác nhận (modal confirm).
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết
Nội dung chương 1 cung cấp khảo sát lý thuyết toàn diện về các nền tảng kỹ thuật phục vụ bài toán:
- Khái quát về hệ cơ sở dữ liệu MongoDB: phân tích mô hình tài liệu BSON, đối chiếu hiệu năng truy vấn, khả năng mở rộng cụm node (cluster) và hạn chế thiếu ràng buộc ACID truyền thống so với các hệ quản trị RDBMS như MySQL.
- Công nghệ Angular: tổng thuật lịch sử cải tiến framework qua 9 phiên bản chính từ Google; phân tích vai trò của kiến trúc component-driven, TypeScript và trình biên dịch Ivy đối với việc xây dựng SPA.
- Bootstrap và giải pháp Responsive: phương thức chuẩn hóa CSS/JS để đảm bảo tính khả dụng trên đa thiết bị màn hình.
- Nền tảng NodeJS và Express Framework: phân tích kiến trúc Non-blocking I/O, mô hình đơn luồng xử lý khối lượng lớn kết nối đồng thời và vai trò định tuyến của ExpressJS trong thiết kế ứng dụng web hướng API.
Chương 2: Phân tích thiết kế hệ thống
Chương 2 tập trung giải quyết khâu mô hình hóa quy trình tác nghiệp thành bài toán công nghệ:
- Đặc tả yêu cầu phần mềm cho hai nhóm đối tượng: sinh viên và cán bộ quản lý ký túc xá.
- Đặc tả chi tiết kịch bản tương tác (luồng đầu vào, các bước xử lý, kết quả đầu ra) của 18 ca sử dụng (Use case) cốt lõi: Đăng nhập, Quản lý nhân viên, Quản lý sinh viên, Quản lý phòng, Quản lý thiết bị, Quản lý thông báo, Quản lý tài khoản, Quản lý khu, Quản lý hóa đơn điện nước, Quản lý biên lai thu tiền, Đổi mật khẩu, Xem phòng, Xem thông báo, Xem tiền điện nước, Đăng ký tạm trú, Duyệt sinh viên đăng ký tạm trú, Thống kê số sinh viên đang ở.
- Xây dựng 13 sơ đồ biểu diễn động học và tương tác hệ thống: Sơ đồ ca sử dụng tổng quát; Sơ đồ hoạt động (Đăng nhập, Quản lý nhân viên, Quản lý thiết bị, Quản lý thông báo); Sơ đồ trạng thái (Đăng nhập, Nhân viên); Sơ đồ tuần tự (Đăng nhập, Quản lý nhân viên, Quản lý sinh viên).
- Thiết kế chi tiết lược đồ dữ liệu gồm 9 bảng thuộc tính và sơ đồ quan hệ liên kết dữ liệu giữa các thực thể.
Chương 3: Xây dựng chương trình
Chương 3 trình bày các kết quả thực nghiệm đạt được sau quá trình lập trình:
- Giới thiệu các công cụ phục vụ phát triển phần mềm và môi trường thực thi ứng dụng.
- Minh họa hệ thống các giao diện thành phẩm của trang web thông qua 13 hình chụp thực tế: Giao diện trang chủ (Hình 3.1), Giao diện thông báo (Hình 3.2), Chi tiết thông báo (Hình 3.3), Đăng ký tạm trú và form nhập liệu (Hình 3.4 & 3.5), Bảng giá điện nước (Hình 3.6), Nội quy ký túc xá (Hình 3.7), Trang đăng nhập (Hình 3.8), Trang quản trị Admin (Hình 3.9), Trang tổng hợp và giao diện quản lý, tạo mới, chi tiết nhân viên (Hình 3.10, 3.11, 3.12, 3.13).
Kết quả và đóng góp
Kết quả kỹ thuật đạt được
- Xây dựng hoàn chỉnh phần mềm website quản lý ký túc xá đáp ứng mục tiêu số hóa các quy trình tác nghiệp hành chính tại Trường Đại học Sư phạm Kỹ thuật.
- Thiết kế và triển khai đầy đủ hệ thống cơ sở dữ liệu gồm 9 bảng dữ liệu quan hệ với các quy định giá trị mặc định rõ ràng: mỗi phòng có sức chứa chuẩn 8 sinh viên, tình trạng mặc định khi tạo mới là "Trống", số lượng sinh viên ở ban đầu là 0; phân hệ quản lý tài chính hỗ trợ phân loại học kỳ (1 hoặc 2) và tính toán chi phí điện nước theo chỉ số đầu kỳ - cuối kỳ.
- Hoàn thiện luồng duyệt hồ sơ trực tuyến: sinh viên gửi đăng ký qua web, cán bộ quản trị tiếp nhận, tra cứu hồ sơ và thao tác duyệt hoặc loại bỏ trực tiếp trên giao diện thông qua các hộp thoại xác nhận.
Đóng góp thực tiễn của đề tài
- Chuyển đổi phương thức quản lý từ ghi chép sổ sách và thu hồ sơ giấy thủ công sang môi trường quản lý điện tử tập trung, giúp giảm thiểu đáng kể chi phí in ấn và thời gian làm thủ tục cho cả nhà trường và sinh viên.
- Khắc phục nguy cơ thất lạc giấy tờ và sai lệch thông tin trong công tác tiếp nhận sinh viên nội trú.
- Nâng cao tính công khai, minh bạch trong việc theo dõi hóa đơn dịch vụ điện nước, biên lai thu tiền lưu trú theo từng học kỳ và quản trị số lượng cơ sở vật chất, trang thiết bị trong từng phòng ở ký túc xá.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế được ghi nhận
Căn cứ trên các nội dung phân tích công nghệ được tác giả nêu trong văn bản:
- Cơ sở dữ liệu MongoDB hoạt động theo cơ chế lưu trữ đệm và ghi đồng bộ dữ liệu từ bộ nhớ RAM xuống ổ đĩa vật lý sau mỗi 60 giây, tạo ra nguy cơ thất thoát dữ liệu phát sinh trong các trường hợp hệ thống gặp sự cố mất điện đột ngột hoặc dừng tiến trình máy chủ bất khả kháng.
- Do bản chất cơ sở dữ liệu hướng tài liệu thiếu các ràng buộc khóa ngoại chặt chẽ và không hỗ trợ thao tác JOIN bảng tự nhiên như RDBMS, hệ thống có khả năng xuất hiện sự dư thừa dữ liệu (lặp lại khóa thuộc tính) và đòi hỏi tầng xử lý logic ứng dụng phải đảm bảo kiểm tra tính toàn vẹn dữ liệu một cách nghiêm ngặt.
- Báo cáo đồ án của tác giả còn một số lỗi định dạng văn bản (lỗi liên kết tiêu mục
Error! Bookmark not defined. trong phần mục lục).
Hướng phát triển tiếp theo
Theo định hướng được tác giả đề ra tại phần kết luận và hướng phát triển của báo cáo:
- Tiếp tục nghiên cứu hoàn thiện các tính năng mở rộng của phần mềm, bổ sung thêm các phân hệ tiện ích nhằm hỗ trợ tối đa cho sinh viên nội trú và đội ngũ cán bộ quản lý.
- Tối ưu hóa cấu trúc cơ sở dữ liệu và nâng cao năng lực bảo mật, khắc phục các thiếu sót trong khâu phân tích thiết kế để đưa hệ thống vào triển khai ứng dụng thực tế một cách ổn định, lâu dài.
Giá trị tham khảo
Báo cáo đồ án tốt nghiệp này mang lại những giá trị tham khảo cụ thể về mặt học thuật và thực tiễn:
- Đối tượng tham khảo: Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm đang thực hiện đồ án tốt nghiệp hoặc các dự án môn học liên quan đến xây dựng ứng dụng web quản lý cơ sở vật chất, quản trị nội trú trường học.
- Tài liệu tham khảo công nghệ: Cung cấp tài liệu tổng quan hữu ích về cách thức tổ chức ứng dụng Single Page Application bằng Angular kết hợp với dịch vụ backend Node.js, Express và cơ sở dữ liệu NoSQL MongoDB.
- Nội dung đáng tham khảo nhất:
- Quy trình phân tích 18 ca sử dụng chi tiết (mô tả rõ ràng luồng Input - Xử lý - Output) phản ánh đúng nghiệp vụ quản lý ký túc xá trong các trường đại học tại Việt Nam.
- Hệ thống thiết kế 9 bảng dữ liệu thuộc tính với đầy đủ ràng buộc kiểu dữ liệu, khóa chính, khóa ngoại và giá trị khởi tạo mặc định.
Câu hỏi thường gặp
1. Hệ thống hỗ trợ những đối tượng người dùng nào và các quyền hạn chính được phân chia ra sao?
Hệ thống phân định hai nhóm tác nhân chính:
- Ban quản lý ký túc xá: Thực hiện các chức năng đăng nhập, đổi mật khẩu, quản lý hồ sơ nhân viên, quản lý danh sách sinh viên, tạo và chỉnh sửa phòng, quản lý khu nhà, theo dõi trang thiết bị, lập và duyệt hóa đơn tiền điện nước, xuất biên lai thu tiền, đăng tải các bài viết thông báo, kiểm duyệt đơn đăng ký tạm trú của sinh viên và xem thống kê số lượng sinh viên đang ở theo học kỳ.
- Sinh viên: Được phép xem các thông tin giới thiệu chung, tra cứu danh sách phòng còn trống, điền thông tin đăng ký tạm trú trực tuyến, xem bảng giá và tra cứu số tiền điện nước của từng phòng theo định kỳ, đồng thời theo dõi các thông báo nội bộ từ nhà trường.
2. Cấu trúc bảng Phòng và quy định mặc định về sức chứa được thiết kế như thế nào?
Thực thể Phong được tổ chức gồm 6 trường thuộc tính: PhongID (Khóa chính kiểu chuỗi), KhuID (Khóa ngoại tham chiếu đến bảng Khu, bắt buộc Not Null), TenPhong (Tên phòng, Not Null), SoluongChua (Số lượng sinh viên có thể chứa, kiểu số, thiết lập mặc định là 8), SoLuongDangO (Số lượng sinh viên đang ở thực tế, kiểu số, giá trị mặc định là 0), và TinhTrang (Tình trạng phòng, kiểu chuỗi, giá trị mặc định khi tạo mới là "Trống").
3. Quy trình ca sử dụng "Duyệt sinh viên đăng ký tạm trú" được thực hiện theo các bước nào?
Quy trình duyệt hồ sơ được mô tả như sau:
- Đầu vào: Danh sách các sinh viên đã gửi hồ sơ đăng ký tạm trú trực tuyến.
- Xử lý: Cán bộ quản lý chọn sinh viên cần duyệt trong danh sách và nhấp nút "Duyệt". Hệ thống sẽ bật một hộp thoại xác nhận (modal confirm); nếu người quản lý chọn "OK", hồ sơ được duyệt và chuyển sang danh sách sinh viên đang ở chính thức (chọn "Hủy" để dừng tác vụ). Trong trường hợp từ chối, cán bộ nhấp "Xóa", xác nhận hộp thoại để loại bỏ hoàn toàn hồ sơ sinh viên khỏi danh sách đăng ký.
- Đầu ra: Danh sách sinh viên nội trú mới được cập nhật trên toàn hệ thống.
4. Nhược điểm kỹ thuật chính của cơ sở dữ liệu MongoDB được tác giả chỉ ra trong đồ án là gì?
Văn bản đồ án nêu rõ bốn nhược điểm của MongoDB:
- Cơ chế ghi dữ liệu từ RAM xuống đĩa cứng diễn ra sau mỗi 60 giây, dẫn đến rủi ro mất dữ liệu nếu xảy ra mất điện hoặc sập hệ thống.
- Cấu trúc lưu trữ dữ liệu dưới dạng khóa - giá trị (key-value) khiến các collection bị lặp lại tên trường (key), gây tiêu tốn dung lượng bộ nhớ.
- Không hỗ trợ các phép kết nối (JOIN) như hệ quản trị cơ sở dữ liệu quan hệ nên dễ dẫn đến hiện tượng dư thừa dữ liệu.
- Thiếu các ràng buộc toàn vẹn quan hệ chặt chẽ, do đó đòi hỏi lập trình viên phải kiểm soát dữ liệu hết sức cẩn trọng trong mã nguồn logic.
5. Hóa đơn điện nước trong hệ thống lưu trữ những thông tin nào để tính toán chi phí?
Thực thể HoaDonDienNuoc lưu trữ các trường dữ liệu gồm: HoaDonDienNuocID (Khóa chính), NhanVienID (Mã nhân viên lập, khóa ngoại), PhongID (Mã phòng tính tiền, khóa ngoại), HoTenNguoiNop (Họ tên người nộp tiền), ChiSoDienDauKy, ChiSoDienCuoiKy, DonGiaDien, ChiSoNuocDauKy, ChiSoNuocCuoiKy, DonGiaNuoc, TongTien (Tổng số tiền phải nộp sau tính toán) và Ngaylap (Ngày tạo hóa đơn, tự động gán giá trị thời gian thực thông qua hàm getDate()).
Kết luận
Đồ án tốt nghiệp "Xây dựng hệ thống website quản lý ký túc xá trường đại học sư phạm kỹ thuật" của sinh viên Đỗ Ngọc Quang Huy (ngành Công nghệ thông tin, Trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng) đã hoàn thành trọn vẹn mục tiêu tin học hóa quy trình quản lý lưu trú sinh viên. Tác giả đã tổng hợp có hệ thống cơ sở lý thuyết về các công nghệ Angular, Node.js, Express và MongoDB, đồng thời mô hình hóa chi tiết nghiệp vụ thông qua 18 ca sử dụng và 9 thực thể cơ sở dữ liệu. Kết quả nghiên cứu là một hệ thống website hoàn chỉnh về giao diện và chức năng, giải quyết hiệu quả các hạn chế của phương thức đăng ký giấy truyền thống và cung cấp tài liệu kỹ thuật có giá trị tham khảo rõ ràng cho các bài toán phát triển phần mềm quản lý tương tự.