Giới thiệu Đề tài “Quản lý ký túc xá” nhằm phát triển một hệ thống quản lý ký túc xá hiệu quả, giúp các cơ quan, tổ chức dễ dàng kiểm soát thông tin về sinh viên, phòng ở và các tiện ngh
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI 14: Xây dựng chương trình mã hóa và giải mã cho app
chat bằng hệ mã hóa đối xứng elgamal
Bắc ninh, năm 2024
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI 14: Xây dựng chương trình mã hóa và giải mã cho app
chat bằng hệ mã hóa đối xứng elgamal
STT Sinh viên thực hiện Mã sinh viên Điểm bằng số Điểm bằng chữ
1 Hoàng Đại Lâm 20220872
Trang 3LỜI MỞ ĐẦU
Lập trình hướng đối tượng (OOP - Object-Oriented Programming) là một trong những phương pháp lập trình phổ biến và mạnh mẽ nhất hiện nay Được phát triển từ cuối nhữngnăm 1960, OOP đã trở thành nền tảng của nhiều ngôn ngữ lập trình hiện đại như Java, C++, Python, và C# Khác với các phương pháp lập trình truyền thống dựa trên thủ tục, OOPtập trung vào việc xây dựng các mô hình phần mềm thông qua các đối tượng, giúp việc quản lý và bảo trì mã nguồn trở nên dễ dàng và hiệu quả hơn
Tư tưởng chính của OOP là coi mọi thứ trong phần mềm là các đối tượng – những thực thể có trạng thái (thuộc tính) và hành vi (phương thức) Đối tượng có thể là bất kỳ thứ gì trong thế giới thực, từ những khái niệm trừu tượng như tài khoản ngân hàng, đến những đối tượng cụ thể như sinh viên hoặc nhân viên Mỗi đối tượng sẽ tương tác với nhau thông qua các phương thức để thực hiện các chức năng nhất định
Lập trình hướng đối tượng mang lại nhiều lợi ích lớn trong quá trình phát triển phần mềm.Đầu tiên, nó khuyến khích tính tái sử dụng mã nguồn thông qua khái niệm kế thừa
(inheritance), cho phép một lớp con (subclass) thừa hưởng các thuộc tính và phương thức của lớp cha (superclass) Thứ hai, OOP giúp tăng tính trừu tượng (abstraction), giúp lập trình viên có thể tập trung vào logic cốt lõi mà không phải quan tâm quá nhiều đến các chitiết phức tạp Cuối cùng, OOP thúc đẩy tính đóng gói (encapsulation) và che giấu thông tin, nhờ đó, mỗi đối tượng có thể tự quản lý trạng thái của mình và hạn chế sự truy cập không mong muốn từ bên ngoài
Trang 4CHƯƠNG 1: TỔNG QUAN HỆ THỐNG
1 Giới thiệu
Đề tài “Quản lý ký túc xá” nhằm phát triển một hệ thống quản lý ký túc xá hiệu quả, giúp các cơ quan, tổ chức dễ dàng kiểm soát thông tin về sinh viên, phòng ở và các tiện nghi liên quan Hiện nay, nhu cầu về chỗ ở cho sinh viên ngày càng tăng, khiến việc quản lý thủ công trở nên khó khăn, tốn thời gian và dễ gây ra sai sót Một hệ thống quản lý thông tin tự động sẽ giúp các trường đại học, cao đẳng hay các khu ký túc xá tư nhân có thể dễ dàng cập nhật, lưu trữ thông tin và theo dõi tình trạng ký túc xá một cách chính xác và nhanh chóng
Hệ thống quản lý ký túc xá sẽ cung cấp các chức năng chính như quản lý danh sách sinh viên, quản lý phòng ở, và theo dõi các dịch vụ tiện ích trong khu vực Bằng cách sử dụng
hệ thống này, người quản lý có thể giảm bớt gánh nặng công việc hàng ngày, tăng hiệu quả quản lý, đồng thời giúp sinh viên và người dùng có trải nghiệm tốt hơn trong quá trình sử dụng dịch vụ của ký túc xá
Trong bối cảnh chuyển đổi số hiện nay, việc áp dụng công nghệ vào quản lý ký túc xá là một bước đi cần thiết và cấp bách Đề tài này không chỉ giúp nâng cao hiệu quả quản lý
mà còn giúp tạo ra sự minh bạch và công khai trong các hoạt động liên quan đến sinh viên
và dịch vụ ký túc xá
2 Kế hoạch thực hiện
Kế hoạch phát triển hệ thống quản lý ký túc xá sẽ được triển khai qua các giai đoạn chính,nhằm đảm bảo tính hợp lý và hoàn thiện của hệ thống Giai đoạn đầu tiên là thu thập yêu
Trang 5cầu từ phía người dùng và các bên liên quan, như sinh viên và quản lý ký túc xá Thông qua quá trình này, các chức năng cơ bản và cần thiết của hệ thống sẽ được xác định rõ ràng, đảm bảo rằng hệ thống sẽ đáp ứng tốt nhu cầu thực tế của người sử dụng.
Sau khi đã thu thập đầy đủ thông tin, bước tiếp theo là thiết kế kiến trúc hệ thống và giao diện người dùng Việc này giúp xác định cách thức hoạt động của hệ thống, cũng như làmsao để người dùng có thể dễ dàng tiếp cận và sử dụng các chức năng của hệ thống Tiếp đến là giai đoạn phát triển hệ thống, trong đó các chức năng như quản lý sinh viên, quản
lý phòng ở, và theo dõi dịch vụ tiện ích sẽ được hiện thực hóa
Giai đoạn cuối cùng là kiểm thử và triển khai hệ thống Trong quá trình này, hệ thống sẽ được kiểm tra để đảm bảo tính ổn định và hiệu quả Sau đó, hệ thống sẽ được triển khai cho các bên liên quan sử dụng Mọi sự cố hoặc yêu cầu thay đổi sau khi triển khai sẽ đượcghi nhận và xử lý để đảm bảo hệ thống luôn hoạt động tốt và đáp ứng nhu cầu
3 Công nghệ sử dụng
Trong quá trình phát triển hệ thống quản lý ký túc xá, hai công nghệ chính được sử dụng
là NetBeans và SQL NetBeans là một môi trường phát triển tích hợp (IDE) nổi tiếng với nhiều tính năng mạnh mẽ, hỗ trợ lập trình viên viết mã, kiểm thử và triển khai ứng dụng một cách hiệu quả Đây là công cụ lý tưởng cho việc phát triển các ứng dụng Java, nhờ khả năng hỗ trợ đa ngôn ngữ và đa nền tảng, đồng thời cung cấp các công cụ mạnh mẽ để xây dựng giao diện người dùng, quản lý dự án và kiểm soát mã nguồn
SQL, viết tắt của Structured Query Language, là ngôn ngữ truy vấn dữ liệu được sử dụng
để quản lý và thao tác cơ sở dữ liệu quan hệ Trong đề tài này, SQL sẽ được sử dụng để thiết kế và quản lý cơ sở dữ liệu của hệ thống quản lý ký túc xá Cơ sở dữ liệu SQL sẽ lưutrữ thông tin chi tiết về sinh viên, phòng ở, và các tiện ích khác, cho phép người quản lý
Trang 6Sự kết hợp giữa NetBeans và SQL không chỉ giúp phát triển một hệ thống quản lý mạnh
mẽ và hiệu quả, mà còn tạo điều kiện thuận lợi cho việc mở rộng và bảo trì hệ thống trongtương lai Với khả năng tùy chỉnh và linh hoạt, hai công nghệ này đảm bảo rằng hệ thống quản lý ký túc xá có thể dễ dàng thích ứng với các yêu cầu thay đổi trong thực tế
Kết thúc chương 1, chúng ta có cái nhìn rõ ràng hơn về cách mà một hệ thống quản lý ký túc xá hiện đại có thể góp phần vào việc cải thiện hiệu quả quản lý và mang lại lợi ích thiết thực cho người dùng Những chương tiếp theo sẽ đi sâu vào các chi tiết kỹ thuật và
cụ thể hơn, như thiết kế cơ sở dữ liệu, xây dựng giao diện người dùng và các phương pháp đảm bảo tính bảo mật cho hệ thống
Trang 7CHƯƠNG 2 MÔ HÌNH HỆ HỆ THỐNG
1 Mô hình chức năng
2 Thiết kế mô hình lớp
Lớp Quản lý sinh viên
Lớp Quản lý sinh viên chịu trách nhiệm quản lý và xử lý thông tin liên quan đến sinh viên, chẳng hạn như thông tin cá nhân, danh sách sinh viên và cập nhật thông tin sinh viên Lớp này cần các phương thức để thêm, xóa, sửa và tìm kiếm sinh viên.
- Thuộc tính:
Trang 8- Phương thức:
- `themSinhVien()`: Thêm sinh viên mới vào danh sách.
- `xoaSinhVien()`: Xóa sinh viên khỏi danh sách.
- `capNhatSinhVien()`: Cập nhật thông tin sinh viên.
- `timKiemSinhVien()`: Tìm kiếm sinh viên dựa trên mã số hoặc tên.
- Tính đóng gói: Thông tin sinh viên như mã số, tên, ngày sinh, địa chỉ sẽ được đóng gói trong lớp này để bảo mật, và chỉ có thể truy cập thông qua các phương thức.
- Kế thừa: Nếu cần, lớp quản lý sinh viên có thể kế thừa từ một lớp cha như
"Người" để dùng chung các thuộc tính về thông tin cá nhân.
Lớp Quản lý phòng
Lớp Quản lý phòng chịu trách nhiệm quản lý thông tin về các phòng trong ký túc
xá, bao gồm số phòng, số lượng sinh viên tối đa và tình trạng phòng (đã đầy, còn trống).
- Thuộc tính:
- Danh sách phòng: Danh sách chứa thông tin về tất cả các phòng.
- Phương thức:
- `themPhong()`: Thêm một phòng mới vào danh sách.
- `xoaPhong()`: Xóa một phòng khỏi danh sách.
Trang 9- `capNhatPhong()`: Cập nhật thông tin phòng, như số lượng sinh viên hiện tại.
- `timKiemPhong()`: Tìm kiếm phòng dựa trên số phòng hoặc tình trạng.
- Tính đa hình: Lớp này có thể được mở rộng để quản lý nhiều loại phòng khác nhau như phòng đơn, phòng đôi, với các phương thức được ghi đè.
Lớp Quản lý tiền phòng
Lớp Quản lý tiền phòng chịu trách nhiệm tính toán và quản lý các khoản thu liên quan đến tiền thuê phòng của sinh viên Lớp này cần các phương thức để ghi nhận các khoản đã thu, còn thiếu và nhắc nhở sinh viên đóng tiền.
- Thuộc tính:
- Danh sách thanh toán: Danh sách chứa thông tin về các khoản tiền mà sinh viên cần trả.
- Phương thức:
- `tinhTienPhong()`: Tính toán số tiền phòng dựa trên số ngày ở.
- `ghiNhanThanhToan()`: Cập nhật trạng thái thanh toán của sinh viên.
- `thongBaoNo()`: Gửi thông báo cho những sinh viên chưa thanh toán.
- Tính kế thừa: Có thể kế thừa từ lớp "Quản lý tài chính" nếu hệ thống có thêm các chức năng tài chính khác, giúp chia sẻ các phương thức chung như tính toán và quản lý thu chi.
Mô hình kiến trúc hệ thống các lớp trong phát triển phần mềm
Trang 10Mô hình kiến trúc hệ thống các lớp thường được sử dụng trong phát triển phần mềm hướng đối tượng, giúp tổ chức mã nguồn một cách hiệu quả, rõ ràng và dễ bảo trì Các lớp trong hệ thống có thể được chia thành nhiều tầng (layers) hoặc thành phần (components) tùy theo yêu cầu và kiến trúc của dự án Một trong các
mô hình phổ biến là mô hình 3 lớp (3-tier architecture) hoặc mô hình nhiều lớp (multi-tier architecture).
1 Các tầng chính trong mô hình kiến trúc lớp
Mô hình kiến trúc các lớp thường được tổ chức theo nhiều tầng (layers), với mỗi tầng có trách nhiệm riêng biệt Dưới đây là một số tầng phổ biến:
Tầng trình diễn (Presentation Layer):
- Tầng này còn được gọi là tầng giao diện người dùng (UI Layer).
- Nó chịu trách nhiệm về việc hiển thị thông tin cho người dùng và xử lý tương tác
từ người dùng Giao diện có thể là web, desktop, hoặc ứng dụng di động.
- Các thành phần trong tầng này có thể bao gồm các View, Form, Controller trong kiến trúc MVC (Model-View-Controller).
Tầng nghiệp vụ (Business Logic Layer - BLL):
Trang 11- Tầng này còn được gọi là tầng dịch vụ (Service Layer).
- Nó chịu trách nhiệm xử lý các logic nghiệp vụ của ứng dụng, bao gồm các quy tắc, thuật toán, và xử lý luồng công việc.
- Các lớp như `PhongLG`, `SinhVienLG` trong ví dụ của bạn nằm ở tầng này Các lớp này sẽ tương tác với tầng dữ liệu để lấy thông tin cần thiết, xử lý nghiệp vụ và gửi dữ liệu lại cho tầng trình diễn.
Tầng dữ liệu (Data Access Layer - DAL):
- Tầng này chịu trách nhiệm tương tác với cơ sở dữ liệu hoặc các nguồn lưu trữ dữ liệu khác (ví dụ: file, API, v.v.).
- Nó chứa các lớp và phương thức để thực hiện các thao tác CRUD (Create, Read, Update, Delete) trên cơ sở dữ liệu.
- Các lớp repository như `IPhong`, `ISinhVien` sẽ được sử dụng để truy vấn và thao tác với dữ liệu.
2 Lợi ích của mô hình kiến trúc lớp
Tính mô-đun hóa: Hệ thống được chia thành nhiều tầng, mỗi tầng có trách nhiệm riêng biệt Điều này giúp cho hệ thống dễ bảo trì, nâng cấp và mở rộng.
Tái sử dụng: Các lớp có thể được tái sử dụng ở nhiều nơi khác nhau Ví dụ, tầng dữ
Trang 12Tính độc lập: Mỗi tầng có thể hoạt động độc lập với tầng khác Nếu có thay đổi ở tầng giao diện, nó không ảnh hưởng đến tầng nghiệp vụ hoặc tầng dữ liệu.
Dễ bảo trì: Khi hệ thống được chia thành các tầng, việc bảo trì sẽ dễ dàng hơn Các thay đổi sẽ được cô lập trong tầng tương ứng mà không ảnh hưởng đến toàn bộ hệ thống.
3 Mô hình Repository và Dependency Injection
Mô hình repository (repository pattern) và cơ chế Dependency Injection (DI)
thường được sử dụng cùng với mô hình nhiều lớp để đảm bảo tính linh hoạt và dễ bảo trì của hệ thống:
Mô hình Repository:
- Mỗi đối tượng của hệ thống thường có một lớp repository riêng để thao tác với
cơ sở dữ liệu Ví dụ, `PhongLG` có `IPhong`, `SinhVienLG` có `ISinhVien` Các lớp này cung cấp một lớp trừu tượng (abstraction) giữa tầng nghiệp vụ và tầng dữ liệu.
- Nó giúp ẩn đi các chi tiết về cách thức truy xuất dữ liệu và cho phép dễ dàng thay đổi cách truy vấn hoặc nguồn dữ liệu mà không ảnh hưởng đến các tầng khác.
Dependency Injection (DI):
Trang 13- DI là một kỹ thuật để giảm sự phụ thuộc cứng (hard dependencies) giữa các lớp, bằng cách cung cấp (inject) các đối tượng phụ thuộc từ bên ngoài thông qua
constructor hoặc setter.
- Ví dụ, trong `PhongLG`, thay vì khởi tạo trực tiếp `IPhong`, nó được truyền vào
từ bên ngoài (qua constructor), giúp dễ dàng thay thế khi cần (ví dụ: dùng `Mock` trong kiểm thử).
`SinhVienLG`: Chứa logic xử lý liên quan đến sinh viên như thêm sinh viên, cập nhật, xóa, và tìm kiếm sinh viên.
Trang 14Cơ sở dữ liệu này được thiết kế để quản lý thông tin về ký túc xá, sinh viên, phòng
ở, dịch vụ và tiền phòng Dưới đây là các thành phần chính của cơ sở dữ liệu và cách chúng hoạt động với nhau:
1 Cơ sở dữ liệu: QL_KyTucXa
Cơ sở dữ liệu này chứa thông tin về các sinh viên, phòng ký túc xá, các dịch vụ mà sinh viên có thể sử dụng, và các giao dịch tiền phòng.
2 Bảng Sinh viên (sinhvien)
- Mục đích: Lưu trữ thông tin cá nhân của các sinh viên đang cư trú trong ký túc xá.
- Các cột:
- `id`: Mã định danh duy nhất của mỗi sinh viên (khóa chính).
- `tenSinhVien`: Tên của sinh viên.
- `diaChi`: Địa chỉ của sinh viên.
- `soDienThoai`: Số điện thoại liên hệ của sinh viên.
sql
CREATE TABLE sinhvien (
id VARCHAR(50) PRIMARY KEY,
Trang 15tenSinhVien VARCHAR(100) NOT NULL,
- `id`: Mã định danh duy nhất cho mỗi phòng (khóa chính).
- `idPhong`: Mã phòng (có thể đại diện cho số phòng hoặc tên phòng).
- `idSinhVien`: Mã sinh viên đang ở phòng đó (khóa ngoại tham chiếu đến bảng
`sinhvien`).
- `ngayVao`: Ngày sinh viên bắt đầu ở trong phòng.
- `ngayRa`: Ngày sinh viên rời phòng (có thể để trống nếu sinh viên vẫn đang ở).
sql
CREATE TABLE phong (
Trang 16id VARCHAR(50) PRIMARY KEY,
idPhong VARCHAR(50) NOT NULL,
idSinhVien VARCHAR(50) NOT NULL,
ngayVao DATE NOT NULL,
- `tenDichVu`: Tên dịch vụ (ví dụ: dọn phòng, giặt đồ, điện, nước uống, v.v.).
- `giaTien`: Giá tiền của dịch vụ.
sql
Trang 17CREATE TABLE dichvu (
id VARCHAR(50) PRIMARY KEY,
tenDichVu VARCHAR(100) NOT NULL,
giaTien INT NOT NULL
- `id`: Mã giao dịch thanh toán (khóa chính).
- `idPhong`: Mã phòng (khóa ngoại tham chiếu đến bảng `phong`).
- `idSinhVien`: Mã sinh viên (khóa ngoại tham chiếu đến bảng `sinhvien`).
- `idDichVu`: Mã dịch vụ mà sinh viên sử dụng (khóa ngoại tham chiếu đến bảng
`dichvu`).
- `giaTien`: Số tiền phải thanh toán.
- `ngayThanhToan`: Ngày sinh viên thanh toán.
Trang 18CREATE TABLE tienphong (
id VARCHAR(50) PRIMARY KEY,
idPhong VARCHAR(50) NOT NULL,
idSinhVien VARCHAR(50) NOT NULL,
idDichVu VARCHAR(50) NOT NULL,
giaTien INT NOT NULL,
ngayThanhToan DATE NOT NULL,
FOREIGN KEY (idPhong) REFERENCES phong(id), FOREIGN KEY (idSinhVien) REFERENCES sinhvien(id), FOREIGN KEY (idDichVu) REFERENCES dichvu(id) );
Trang 196 Thêm dữ liệu mẫu vào các bảng
Các câu lệnh `INSERT INTO` được sử dụng để thêm dữ liệu mẫu vào các bảng
`sinhvien`, `phong`, `dichvu` và `tienphong`.
Ví dụ, thêm sinh viên vào bảng `sinhvien`:
sql
INSERT INTO sinhvien (id, tenSinhVien, diaChi, soDienThoai)
VALUES
('SV001', 'Nguyen Van A', '123 Le Loi, TP.HCM', '0909123456'),
('SV002', 'Tran Thi B', '456 Nguyen Hue, Ha Noi', '0912345678'),
Thêm các dịch vụ vào bảng `dichvu`:
sql
INSERT INTO dichvu (id, tenDichVu, giaTien)
VALUES
Trang 20Cấu trúc cơ sở dữ liệu này phù hợp cho các hệ thống quản lý ký túc xá hoặc các môi trường quản lý sinh viên nội trú tương tự.
4 giao diện
Các thao tác trên giao diện người dùng (UI - User Interface) thường liên quan đến việc tương tác giữa người dùng và hệ thống thông qua các hành động trực tiếp trên ứng dụng Dưới đây là các thao tác phổ biến trên giao diện người dùng trong một
hệ thống quản lý (ví dụ như hệ thống quản lý ký túc xá mà bạn đã thiết kế trong cơ
sở dữ liệu):
Trang 211 Thao tác nhập liệu (Input)
Người dùng nhập thông tin vào các biểu mẫu (form) thông qua các trường dữ liệu (input fields) Một số thao tác nhập liệu phổ biến bao gồm:
Nhập văn bản: Nhập tên sinh viên, địa chỉ, số điện thoại.
Chọn ngày: Chọn ngày vào phòng hoặc ngày thanh toán từ lịch (datepicker).
Nhập số liệu: Nhập số tiền cần thanh toán, hoặc mã phòng.
Chọn từ danh sách thả xuống (dropdown): Chọn phòng, dịch vụ từ danh sách có sẵn.
2 Thao tác duyệt (Browsing)
Người dùng duyệt qua các danh sách hoặc bảng dữ liệu để tìm kiếm thông tin Các
Trang 22Xem danh sách sinh viên: Hiển thị danh sách sinh viên với các cột như tên, địa chỉ, phòng hiện tại, số điện thoại.
Phân trang (pagination): Duyệt qua các trang khi danh sách có quá nhiều sinh viên hoặc phòng.
Tìm kiếm: Người dùng có thể nhập tên hoặc mã sinh viên để tìm kiếm nhanh thông tin sinh viên cụ thể
3 Thao tác chỉnh sửa (Edit)
Người dùng có thể chỉnh sửa thông tin đã được lưu trữ:
Chỉnh sửa thông tin sinh viên: Người dùng nhấn nút "Chỉnh sửa" cạnh một sinh viên, sửa đổi các thông tin như số điện thoại, địa chỉ, rồi lưu lại thay đổi.
Chỉnh sửa thông tin phòng: Thay đổi mã phòng hoặc ngày ra của sinh viên.
4 Thao tác xóa (Delete)
Người dùng có thể xóa các bản ghi không cần thiết từ hệ thống:
Xóa sinh viên: Người dùng chọn sinh viên cần xóa, nhấn nút "Xóa" và xác nhận việc xóa.
Xóa phòng: Người dùng xóa một phòng nếu phòng đó không còn sinh viên nào ở.
5 Thao tác sắp xếp (Sort)
Người dùng có thể sắp xếp các danh sách theo thứ tự tăng dần hoặc giảm dần dựa trên một cột dữ liệu cụ thể, ví dụ:
Trang 23Sắp xếp sinh viên: Sắp xếp danh sách sinh viên theo tên, theo mã sinh viên, hoặc theo số điện thoại.
Sắp xếp phòng: Sắp xếp phòng theo mã phòng hoặc theo ngày vào của sinh viên.
Lưu (Save/Submit): Sau khi nhập hoặc chỉnh sửa dữ liệu, người dùng nhấn nút
"Lưu" để gửi thông tin mới lên hệ thống.
Xác nhận thanh toán: Người dùng nhấn nút "Xác nhận" để ghi nhận thanh toán cho sinh viên sau khi kiểm tra các thông tin về phòng và dịch vụ.
8 Thao tác xem chi tiết (View Details)
Người dùng có thể xem chi tiết thông tin của một bản ghi cụ thể, ví dụ:
Xem chi tiết sinh viên: Xem toàn bộ thông tin cá nhân, phòng đang ở, và lịch sử thanh toán của một sinh viên.
Trang 24Xem chi tiết phòng: Xem thông tin chi tiết về phòng, bao gồm các sinh viên đã và đang ở phòng đó, các dịch vụ liên quan.
9 Thao tác điều hướng (Navigation)
Người dùng có thể điều hướng giữa các trang hoặc các mục khác nhau trong hệ thống:
Chuyển giữa các trang: Điều hướng giữa trang quản lý sinh viên, trang quản lý phòng, trang thanh toán tiền phòng.
Quay lại trang trước: Người dùng có thể quay lại trang danh sách sau khi xem hoặc chỉnh sửa một mục cụ thể.
10 Thao tác in và xuất dữ liệu (Print/Export)
In danh sách: Người dùng có thể in danh sách sinh viên, phòng hoặc các khoản thanh toán.
Xuất dữ liệu: Xuất dữ liệu ra các định dạng như Excel hoặc PDF để lưu trữ hoặc báo cáo.
Ví dụ
Xuất báo cáo tiền phòng: Người dùng có thể chọn xuất dữ liệu về các khoản tiền phòng đã thu trong tháng qua thành file Excel để tiện cho việc báo cáo
Kết luận:
Trang 25Thao tác trên giao diện người dùng là rất đa dạng và phụ thuộc vào mục đích của
hệ thống Việc xây dựng một giao diện dễ sử dụng, trực quan sẽ giúp người dùng tương tác hiệu quả hơn với hệ thống và cải thiện trải nghiệm tổng thể.
5 Các tiện ích
Dưới đây là danh sách các tiện ích mà lớp `PhongLG` cung cấp trong hệ thống quản lý ký túc xá:
LGPhong
1 Thêm mới phòng (Add new Phong)
- Mục đích: Thêm một phòng mới vào hệ thống.
- Phương thức: `themPhong(Phong phong)`
Trang 262 Cập nhật thông tin phòng (Update Phong)
- Mục đích: Chỉnh sửa thông tin của một phòng đã tồn tại.
- Phương thức: `suaPhong(Phong phong)`
3 Xóa phòng (Delete Phong)
- Mục đích: Xóa một phòng khỏi hệ thống dựa trên mã phòng.
- Phương thức: `xoaPhong(String id)`
- Mô tả:
- Hàm này nhận mã `id` của phòng cần xóa và sử dụng phương thức `xoaPhong()`
để xóa phòng khỏi cơ sở dữ liệu.
- Trả về: `boolean` (thành công hoặc thất bại).
Trang 27public boolean xoaPhong(String id) {
return phongRepo.xoaPhong(id);
}
4 Tìm kiếm phòng theo ID (Search Phong by ID)
- Mục đích: Tìm kiếm thông tin phòng dựa trên mã phòng.
- Phương thức: `timKiemPhong(String id)`
- Mô tả:
- Hàm này tìm phòng dựa trên mã `id` bằng cách sử dụng phương thức
`timKiemPhong()` của `IPhong`.
- Nếu tìm thấy phòng, đối tượng `Phong` sẽ được thêm vào danh sách và trả về.
- Trả về: Danh sách các phòng có kết quả khớp.
java
public List<Phong> timKiemPhong(String id) {
List<Phong> danhSachPhong = new ArrayList<>();
Phong phong = phongRepo.timKiemPhong(id);
if (phong != null) {
Trang 28danhSachPhong.add(phong);
}
return danhSachPhong;
}
5 Lấy danh sách tất cả các phòng (Get all Phong)
- Mục đích: Lấy toàn bộ thông tin các phòng trong hệ thống.
Trang 29sách tất cả các phòng Các phương thức này giúp hệ thống tương tác với cơ sở dữ liệu thông qua đối tượng `IPhong`.
1 Thêm sinh viên mới (Add new SinhVien)
Mục đích: Cho phép thêm một sinh viên mới vào hệ thống quản lý ký túc xá.
Mô tả: Hệ thống nhận thông tin sinh viên mới và lưu trữ thông tin đó vào cơ sở dữ
liệu Việc thêm sinh viên có thể bao gồm các thông tin như tên, địa chỉ, và số điện thoại của sinh viên
2 Cập nhật thông tin sinh viên (Update SinhVien)
Mục đích: Cập nhật các thông tin đã tồn tại của sinh viên, chẳng hạn như thay đổi
địa chỉ, số điện thoại hoặc các chi tiết cá nhân khác
Mô tả: Phương thức này cho phép sửa đổi dữ liệu sinh viên trong hệ thống nếu có
sự thay đổi thông tin
3 Xóa sinh viên (Delete SinhVien)
Mục đích: Xóa sinh viên khỏi hệ thống khi sinh viên không còn ở ký túc xá hoặc
khi không cần lưu trữ thông tin sinh viên đó nữa
Mô tả: Phương thức này xóa thông tin sinh viên từ cơ sở dữ liệu dựa trên mã sinh
viên (ID) cung cấp
4 Tìm kiếm sinh viên theo ID (Search SinhVien by ID)
Mục đích: Tìm kiếm thông tin chi tiết của sinh viên dựa trên mã sinh viên.
Mô tả: Người dùng có thể tìm kiếm thông tin sinh viên dựa vào mã ID, và hệ
thống sẽ trả về thông tin sinh viên nếu có kết quả phù hợp
Trang 30 Mục đích: Lấy toàn bộ danh sách sinh viên hiện có trong hệ thống để quản lý.
Mô tả: Phương thức này trả về danh sách toàn bộ sinh viên đang có trong cơ sở dữ
liệu để tiện cho việc quản lý, kiểm tra và hiển thị
Trang 31jLabel1 = new javax.swing.JLabel();
jButton3 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("Segoe UI", 1, 36)); // NOI18N
jLabel1.setText("QUẢN LÝ SINH VIÊN");
Trang 32jLabel1.setToolTipText("VIÊN");
jButton3.setText("Quản lý tiền phòng");
jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt);
}
});
Trang 35layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) addGroup(layout.createSequentialGroup()
addGap(27, 27, 27)
addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
123, Short.MAX_VALUE)
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
Trang 37while (rs.next()) {
result.append("ID: ").append(rs.getString("id"))
append(", Mã Phòng: ").append(rs.getString("idPhong"))
append(", Mã Sinh Viên: ").append(rs.getString("idSinhVien"))
append(", Ngày Vào: ").append(rs.getDate("ngayVao"))
append(", Ngày Ra: ").append(rs.getDate("ngayRa"))
Trang 38// Truy vấn danh sách sinh viên
String query = "SELECT * FROM SinhVien";
ResultSet rs = stmt.executeQuery(query);
// Hiển thị thông tin sinh viên
StringBuilder result = new StringBuilder();
while (rs.next()) {
result.append("ID: ").append(rs.getString("id"))
append(", Tên: ").append(rs.getString("tenSinhVien"))
append(", Địa Chỉ: ").append(rs.getString("diaChi"))
Trang 40
// Truy vấn danh sách tiền phòng
String query = "SELECT * FROM TienPhong";
ResultSet rs = stmt.executeQuery(query);
// Hiển thị thông tin tiền phòng
StringBuilder result = new StringBuilder();
while (rs.next()) {
result.append("ID: ").append(rs.getString("id"))
append(", Tên Phòng: ").append(rs.getString("tenPhong")) append(", Sinh Viên: ").append(rs.getString("sinhVien")) append(", Dịch Vụ: ").append(rs.getInt("dichVu"))
append(", Giá Tiền: ").append(rs.getString("giaTien")) append("\n");
}
JOptionPane.showMessageDialog(this, result.toString());