1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề 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

94 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Hoàng Đại Lâm, Hoàng Manh Dũng, Phạm Ngọc Bảo
Trường học Trường Đại Học Công Nghệ Đông Á
Chuyên ngành Công Nghệ Thông Tin
Thể loại bài tập lớn
Năm xuất bản 2024
Thành phố Bắc Ninh
Định dạng
Số trang 94
Dung lượng 248,41 KB

Nội dung

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 1

BỘ 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 2

BỘ 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 3

LỜ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 4

CHƯƠ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 5

cầ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 6

Sự 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 7

CHƯƠ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 10

Mô 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 12

Tí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 14

Cơ 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 15

tenSinhVien 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 16

id 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 17

CREATE 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 18

CREATE 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 19

6 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 20

Cấ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 21

1 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 22

Xem 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 23

Sắ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 24

Xem 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 25

Thao 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 26

2 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 27

public 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 28

danhSachPhong.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 29

sá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 31

jLabel1 = 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 32

jLabel1.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 35

layout.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 37

while (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());

Ngày đăng: 29/11/2024, 20:54

w