Xây dựng một ứng dụng quản lý thư viện | Báo cáo bài tập lớn Lập trình hướng đối tượng | Trường Đại học Phenikaa
Phương thức addBook được sử dụng để thêm một cuốn sách mới vào danh sách sách hiện tại. Trước hết, nó tạo một bản sao của danh sách sách hiện có để thêm sách mới mà không làm thay đổi danh sách gốc. Sau đó, nó thu thập thông tin về cuốn sách mới từ các trường nhập trên giao diện người dùng, chẳng hạn như ID, loại sách, tiêu đề, tác giả, tình trạng và số lượng. Sau khi thu thập thông tin, phương thức kiểm tra xem các trường thông tin có được điền đầy đủ và hợp lệ không. Nếu bất kỳ trường nào bị bỏ trống hoặc các giá trị số âm cho số lượng hoặc giá tiền, phương thức sẽ hiển thị một cảnh báo lỗi. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đón xem.
Môn: Lập trình hướng đối tượng (Phenikaa)
Trường: Đại học Phenika
Thông tin:
Tác giả:
Preview text:
TRƯỜNG ĐẠI HỌC PHENIKAA
Khoa Công Nghệ Thông Tin ⸎⸎⸎⸎⸎
BÀI TẬP LỚN KẾT THÚC HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề bài: “Xây dựng một ứng dụng quản lý thư viện”
Họ và tên: Dương Thị Thu Hiền Mã sinh viên: 22014071
Lớp: Lập trình hướng đối tượng N01.TH2
Giảng viên hướng dẫn : Trần Đình Tân HÀ NỘI, THÁNG 2/2023 MỤC LỤC
MỞ ĐẦU ……………………………………………………………………………….
NỘI DUNG……………………………………………………………………………...
I.GIỚI THIỆU CHUNG ………………………………………………………… .
1.1 MỤC TIÊU…………………………………………………………………...
1.2 CHỨC NĂNG CƠ BẢN………………………………………………………
1.3 GIAO DIỆN NGƯỜI DÙNG…………………………………………………
1.4 LƯU TRỮ DỮ LIỆU………………………………………………………… II. PHÂN TÍCH THIẾT KẾ
2.1 SƠ ĐỒ THỰC THỂ LIÊN KẾT……………………………………………..
2.2 QUÁ TRÌNH THỰC HIỆN………………………………………………….
2.3 GỈAI THÍCH, THỐNG KÊ CHỨC NĂNG…………………………………
2.3.1 LOGIN……………………………………………………………………..
2.3.2 THÊM SÁCH……………………………………………………………...
2.3.3 XÓA SÁCH ………………………………………………………………
2.3.4 CẬP NHẬT SÁCH………………………………………………………..
2.3.5 TÌM KIẾM ………………………………………………………………..
2.3.6 LOAD DỮ LIỆU………………………………………………………….
2.3.7 SHOW THÔNG BÁO ……………………………………………………
2.3.8 ĐỔI TAB………………………………………………………………….
2.3.9 TẠO FILE………………………………………………………………...
2.3.10 ĐỌC FILE……………………………………………………………….
2.3.11 LOG OUT ………………………………………………………………. III.GIAO DIỆN SỬ DỤNG
3.1. MÀN HÌNH ĐĂNG NHẬP………………………………………………...
3.2 MÀN HÌNH QUẢN LÝ SÁCH……………………………………………..
3.3 MÀN HÌNH QUẢN LÝ ĐỌC GIẢ …………………………………………
IV. TỔNG KẾT …………………………………………………………………….. MỞ ĐẦU
Trong thời đại số hóa ngày nay, việc quản lý thông tin và tài liệu trong
các thư viện đang trở nên ngày càng quan trọng. Sự gia tăng về số lượng
tài liệu, cùng với sự phát triển không ngừng của công nghệ, đã tạo ra
nhu cầu cấp thiết cho các ứng dụng quản lý thư viện hiện đại và tiện
ích.Bài báo cáo này nhằm giới thiệu về một ứng dụng quản lý thư viện,
một công cụ đa năng được thiết kế để hỗ trợ quản lý và tổ chức tài liệu
trong một môi trường thư viện. Ứng dụng này cung cấp một loạt các tính
năng từ việc thêm, xóa, tìm kiếm sách đến quản lý mượn và trả sách,
cung cấp một phương tiện tiện lợi và hiệu quả cho việc quản lý thư viện
trong thời đại số hóa.Trong lời mở đầu này, chúng tôi sẽ trình bày về ý
nghĩa và mục tiêu của việc phát triển ứng dụng quản lý thư viện, cùng
với những tính năng và lợi ích mà ứng dụng này mang lại cho người dùng. NỘI DUNG
CHƯƠNG I:GIỚI THIỆU CHUNG 1.1 : Mục tiêu
• Xây dựng một ứng dụng quản lý thư viện hiệu quả và dễ sử dụng.
• Hỗ trợ thủ thư quản lý thông tin sách, độc giả và quá trình mượn/trả sách. 1.2 : Chức năng cơ bản:
• Quản lý thông tin sách: Thêm sách, sửa thông tin sách, xóa sách, tìm kiếm sách.
• Quản lý thông tin độc giả: Thêm độc giả, sửa thông tin độc giả, xóa độc giả, tìm kiếm độc giả.
• Quản lý quá trình mượn/trả sách: Mượn sách, trả sách.
1.3 :Giao diện người dùng:
• Thiết kế giao diện cho các chức năng trên.
• Tạo menu chính với các tùy chọn quản lý sách, độc giả và mượn/trả sách. 1.4 :Lưu trữ dữ liệu :
• Sử dụng file nhị phân để lưu thông tin sách và độc giả.
• Khi người dùng thêm, sửa đổi hoặc xóa thông tin, cập nhật dữ liệu trong file nhị phân.
CHƯƠNG 2 :PHÂN TÍCH THIẾT KẾ
2.1 . Sơ đồ thực thể liên kết
2.2 Qúa trình thực hiện:
• Xác định yêu cầu và mục tiêu: Bước đầu tiên là hiểu rõ yêu cầu và mục tiêu của ứng dụng
• Thiết kế: Sau khi hiểu rõ yêu cầu, lập trình viên sẽ bắt đầu thiết kế cấu trúc
và giao diện của ứng dụng. Đây là giai đoạn quan trọng để xác định cách tổ
chức mã nguồn, quản lý dữ liệu và cung cấp trải nghiệm người dùng tốt nhất.
• Phát triển: Trong quá trình này, lập trình viên sẽ bắt đầu viết mã nguồn dựa
trên thiết kế đã được xác định trước đó. Công việc này bao gồm việc lập
trình, kiểm thử và sửa lỗi để đảm bảo rằng ứng dụng hoạt động một cách
đúng đắn và hiệu quả.
• Kiểm thử và Debugging: Sau khi phát triển, ứng dụng cần được kiểm thử để
xác định và sửa các lỗi hoặc vấn đề có thể phát sinh. Quá trình kiểm thử này
thường bao gồm kiểm tra tính năng, hiệu suất và bảo mật của ứng dụng.
2.3 Giaỉ thích thống kê chức năng 2.3.1: Login Gỉai thích :
• Phương thức login là một phần của quy trình xác thực trong ứng dụng đăng
nhập. Khi người dùng nhập tên người dùng và mật khẩu vào các trường
tương ứng trên giao diện, phương thức này được gọi để kiểm tra xem thông
tin đăng nhập có chính xác không.
• Nếu tên người dùng và mật khẩu khớp với giá trị "thu hiền" và "123456" đã
được xác định trước, phương thức sẽ tải trang mainPage.fxml để chuyển đến
giao diện chính của ứng dụng. Điều này thường xảy ra trong trường hợp đăng nhập thành công.
• Tuy nhiên, nếu thông tin đăng nhập không chính xác, phương thức sẽ hiển
thị một hộp thoại cảnh báo thông báo lỗi. Thông điệp trong hộp thoại này
thông báo với người dùng rằng thông tin đăng nhập không hợp lệ và yêu cầu
họ nhập lại thông tin đăng nhập chính xác. 2.3.2 Thêm sách Giaỉ thích :
• Phương thức addBook được sử dụng để thêm một cuốn sách mới vào danh
sách sách hiện tại. Trước hết, nó tạo một bản sao của danh sách sách hiện có
để thêm sách mới mà không làm thay đổi danh sách gốc. Sau đó, nó thu thập
thông tin về cuốn sách mới từ các trường nhập trên giao diện người dùng,
chẳng hạn như ID, loại sách, tiêu đề, tác giả, tình trạng và số lượng.
• Sau khi thu thập thông tin, phương thức kiểm tra xem các trường thông tin
có được điền đầy đủ và hợp lệ không. Nếu bất kỳ trường nào bị bỏ trống
hoặc các giá trị số âm cho số lượng hoặc giá tiền, phương thức sẽ hiển thị một cảnh báo lỗi.
• Nếu mọi thông tin nhập vào đều hợp lệ, một đối tượng Book mới sẽ được
tạo và thêm vào danh sách sách. Nếu tiêu đề của cuốn sách mới không tồn
tại trong danh sách các tiêu đề sách đã lưu trữ, tiêu đề sẽ được thêm vào
danh sách và cập nhật lên giao diện người dùng. Sau đó, danh sách sách sẽ
được cập nhật với sách mới và dữ liệu sẽ được lưu trữ.
• Cuối cùng, các trường nhập sẽ được xóa và một thông báo thành công sẽ
được hiển thị. Điều này đảm bảo rằng người dùng được thông báo khi sách
mới đã được thêm thành công vào hệ thống. 2.3.3 Xóa sách : Giaỉ thích :
• Phương thức deleteBook được sử dụng để xóa một cuốn sách từ danh sách
sách hiện tại. Đầu tiên, nó tạo một bản sao của danh sách sách hiện có để
thực hiện các thao tác xóa mà không làm thay đổi danh sách gốc.
• Nếu danh sách sách trống, phương thức sẽ hiển thị một cảnh báo lỗi thông
báo rằng không có sách nào có thể xóa.
• Nếu danh sách sách không trống, phương thức sẽ tạo một danh sách các tiêu
đề sách và tạo một hộp thoại lựa chọn cho người dùng chọn cuốn sách muốn
xóa từ danh sách đã có.
• Khi người dùng chọn một cuốn sách từ danh sách, phương thức sẽ kiểm tra
xem cuốn sách đó có tồn tại trong danh sách sách không. Nếu có, nó sẽ xác
định vị trí của cuốn sách trong danh sách và xóa nó. Sau đó, danh sách sách
sẽ được cập nhật và dữ liệu sẽ được lưu trữ.
• Cuối cùng, một thông báo sẽ được hiển thị để thông báo cho người dùng biết
rằng cuốn sách đã được xóa thành công hoặc không tìm thấy cuốn sách trong thư viện. 2.3.4 Cập nhật sách Giaỉ thích :
• Phương thức updateBook được sử dụng để cập nhật thông tin của một cuốn
sách trong danh sách sách hiện tại. Đầu tiên, nó tạo một bản sao của danh
sách sách hiện có để thực hiện các thao tác cập nhật mà không làm thay đổi danh sách gốc.
• Sau đó, nó lấy ra đối tượng Book mà người dùng đã chọn từ bảng sách. Nếu
không có cuốn sách nào được chọn, phương thức sẽ hiển thị một cảnh báo
lỗi yêu cầu người dùng chọn một cuốn sách.
• Nếu một cuốn sách được chọn, phương thức sẽ thu thập thông tin mới từ các
trường nhập liệu trên giao diện người dùng, bao gồm ID, tác giả, loại sách,
tình trạng, tiêu đề, số lượng và giá tiền.
• Sau đó, nó tạo ra một đối tượng Book mới với thông tin đã được cập nhật.
Nếu tiêu đề mới của cuốn sách không tồn tại trong danh sách các tiêu đề
sách, phương thức sẽ cập nhật danh sách các tiêu đề sách và lưu trữ chúng.
• Cuối cùng, nó sẽ cập nhật đối tượng sách trong danh sách sách và lưu trữ dữ
liệu. Một cảnh báo thành công sẽ được hiển thị để thông báo cho người dùng
biết rằng cuốn sách đã được cập nhật thành công. 2.3.5 Tìm kiếm Giaỉ thích :
• Phương thức search được sử dụng để tìm kiếm sách trong danh sách hiện tại
dựa trên các từ khóa nhập vào thanh tìm kiếm.
• Đầu tiên, nó tạo một FilteredList với danh sách sách hiện có và một điều
kiện mặc định để hiển thị tất cả các sách.
• Sau đó, nó theo dõi sự thay đổi trong nội dung của thanh tìm kiếm bằng cách
sử dụng phương thức textProperty().addListener(). Mỗi khi nội dung của
thanh tìm kiếm thay đổi, phương thức này được gọi và nó cập nhật điều kiện
lọc dựa trên từ khóa tìm kiếm mới. Điều kiện lọc này so sánh từng trường
thông tin của cuốn sách với từ khóa tìm kiếm và trả về true nếu bất kỳ
trường nào chứa từ khóa tìm kiếm.
• Sau đó, một SortedList được tạo để sắp xếp lại danh sách sách dựa trên thứ
tự hiển thị của bảng sách (Book_tableVIew). Điều này đảm bảo rằng danh
sách sách được hiển thị theo thứ tự đúng khi tìm kiếm được thực hiện.
• Cuối cùng, danh sách sách được cập nhật để chỉ hiển thị các cuốn sách đã
được lọc và sắp xếp dựa trên kết quả tìm kiếm. 2.3.6 Load dữ liệu Giaỉ thích :
• Phương thức loadDataBook được sử dụng để nạp dữ liệu từ danh sách sách
(listBooks) vào bảng hiển thị sách (Book_tableVIew).
• Đầu tiên, nó thiết lập cách mà mỗi cột trong bảng sẽ lấy dữ liệu từ các
trường của đối tượng Book. Cụ thể, nó thiết lập các CellValueFactory của
từng cột để lấy dữ liệu từ các trường bookID, bookTitle, bookType,
bookStatus, bookAuthor, bookNumber, và bookPrice của đối tượng Book.
• Sau đó, nó thiết lập danh sách dữ liệu của bảng (Book_tableVIew) bằng
cách gọi phương thức setItems và truyền vào danh sách sách đã được chuẩn
bị trước đó (listBooks).
• Khi phương thức này được gọi, bảng sẽ hiển thị dữ liệu của các cuốn sách từ
danh sách sách đã được nạp vào. 2.3.7 Show thông báo Giaỉ thích :
• Phương thức showAlert được sử dụng để hiển thị một cửa sổ thông báo cho
người dùng với nội dung và kiểu cảnh báo được chỉ định.
• Đầu tiên, nó tạo một đối tượng Alert với loại cảnh báo được chỉ định (như
ERROR, INFORMATION, vv.), sau đó đặt nội dung của cảnh báo thành
thông điệp được truyền vào phương thức.
• Tiếp theo, nó đặt tiêu đề của cửa sổ thông báo thành "Thông báo" và xóa tiêu
đề của cảnh báo để tránh sự lặp lại của thông báo.
• Cuối cùng, nó gọi phương thức showAndWait() để hiển thị cửa sổ thông báo
và đợi cho đến khi người dùng đóng nó đi. 2.3.8 Đổi tab • Giaỉ thích:
Phương thức switchPane được sử dụng để chuyển đổi giữa hai giao diện
(inputPane và board hoặc inputPane1 và board1) khi người dùng nhấp chuột
vào các nút tương ứng (btnBook hoặc btnReader).
• Trong sự kiện nhấp chuột của btnBook, inputPane và board sẽ được hiển thị
lên (setVisible(true)) trong khi inputPane1 và board1 sẽ được ẩn đi
(setVisible(false)). Ngoài ra, nút btnBook sẽ được làm nổi bật bằng cách
thay đổi màu nền (setStyle("-fx-background-color: #0398fc")), còn nút
btnReader sẽ không thay đổi màu nền.
• Trong sự kiện nhấp chuột của btnReader, inputPane1 và board1 sẽ được hiển
thị lên (setVisible(true)) trong khi inputPane và board sẽ được ẩn đi
(setVisible(false)). Tương tự, nút btnReader sẽ được làm nổi bật bằng cách
thay đổi màu nền (setStyle("-fx-background-color: #0398fc")), còn nút
btnBook sẽ không thay đổi màu nền. 2.3.9 Tạo file Giaỉ thích :
• Phương thức createFile được sử dụng để tạo một tệp mới tại đường dẫn đã
được chỉ định (this.pathFile). Nếu tệp đã tồn tại, phương thức sẽ in ra thông
báo "file already exits". Nếu tệp chưa tồn tại, phương thức sẽ tạo một tệp
mới và in ra thông báo "file create successfully".
• Tương tự, phương thức createReaderFile cũng được sử dụng để tạo một tệp
mới tại đường dẫn đã được chỉ định (this.readerFile). Nó hoạt động tương tự
như createFile, nếu tệp đã tồn tại thì in ra thông báo "file already exits", còn
nếu chưa tồn tại thì tạo một tệp mới và in ra thông báo "file create successfully". 2.3.10 Đọc file Giaỉ thích :
• Phương thức readData được sử dụng để đọc dữ liệu từ tệp đã được chỉ định
(this.pathFile) và trả về một danh sách các đối tượng Book.
• Đầu tiên, nó tạo một ArrayList mới để lưu trữ dữ liệu đọc được.
• Sau đó, nó sử dụng một ObjectInputStream để đọc dữ liệu từ tệp. Dữ liệu
được đọc và ép kiểu về một ArrayList.
• Nếu quá trình đọc dữ liệu không gặp vấn đề, nó sẽ trả về danh sách data, nếu
có lỗi xảy ra, nó sẽ in ra thông báo lỗi.
• Tương tự, phương thức readReaderFile cũng được sử dụng để đọc dữ liệu từ
tệp đã được chỉ định (this.readerFile) và trả về một danh sách các đối tượng
Reader. Phương thức này hoạt động tương tự như readData, chỉ khác về kiểu
đối tượng đọc và tên tệp. 2.3.11 Log out Giaỉ thích :
• Phương thức logout được sử dụng để đăng xuất người dùng khỏi ứng dụng.
Khi người dùng nhấp vào nút đăng xuất, một hộp thoại xác nhận sẽ xuất hiện
để yêu cầu người dùng xác nhận việc đăng xuất.
• Hộp thoại xác nhận (Alert) sẽ được tạo với tiêu đề "Log out" và nội dung
"Are you sure to log out?". Tiêu đề của hộp thoại sẽ được thiết lập thành null.
• Sau đó, hộp thoại xác nhận sẽ được hiển thị và chờ đợi người dùng xác nhận
bằng cách sử dụng phương thức showAndWait(). Nếu người dùng chọn
"OK", thì kết quả sẽ là ButtonType.OK.
• Nếu kết quả là ButtonType.OK, tức là người dùng đã xác nhận đăng xuất, thì
ứng dụng sẽ chuyển đến giao diện đăng nhập (login.fxml) bằng cách tải nó
thông qua FXMLLoader. Sau đó, cửa sổ hiện tại sẽ được đóng lại và giao
diện đăng nhập mới sẽ được hiển thị.
• Điều này đảm bảo rằng người dùng sẽ được xác nhận trước khi đăng xuất khỏi ứng dụng.
CHƯƠNG 3: GIAO DIỆN SỬ DỤNG 3.1 Màn hình đăng nhập:
3.2 Màn hình quản lý sách :
3.3 Màn hình quản lý đọc giả : CHƯƠNG 4 : TỔNG KẾT
Dự án Quản lý Thư viện đã mở ra một cánh cửa mới đầy tiềm năng trong việc tổ
chức và quản lý tài liệu trong các cơ sở học thuật và cộng đồng. Bằng cách kết hợp
sự linh hoạt của công nghệ với sự sáng tạo trong thiết kế, tôi đã tạo ra một ứng
dụng đáng tin cậy và dễ sử dụng, mang lại lợi ích to lớn cho cả người quản lý và
người sử dụng.Với những tính năng quan trọng như quản lý sách, quản lý độc giả,
tìm kiếm nhanh chóng và thuận tiện, cũng như các chức năng mượn sách, trả sách
và thanh toán, dự án đã tạo ra một nền tảng đa dạng và toàn diện cho việc quản lý
thông tin trong thư viện.Tính năng tạo báo cáo doanh thu cũng giúp cải thiện quá
trình quản lý tài chính và đánh giá hiệu suất hoạt động của thư viện, đồng thời
cung cấp cái nhìn tổng quan về hoạt động của thư viện.Trong quá trình thực hiện
dự án, tôi không chỉ học được những kỹ năng kỹ thuật cần thiết để phát triển một
ứng dụng đầy đủ tính năng và quá trình học hỏi liên tục trong quá trình phát triển phần mềm.
Với sứ mệnh tạo ra một môi trường quản lý tài liệu hiệu quả và tiện lợi, tôi tin rằng
dự án này sẽ góp phần nâng cao chất lượng dịch vụ thư viện và tạo ra một trải
nghiệm tuyệt vời cho cả người quản lý và người sử dụng. LỜI CẢM ƠN
Lời cuối cùng , xin trân trọng cảm ơn thầy Trần Đình Tân đã tận tình chỉ dạy và
hướng dẫn em trong quá trình học tập cũng như trong quá trình hoàn thành bài tiểu
luận .Do giới hạn kiến thức và khả năng lý luận của bản thân còn nhiều thiếu sót
và hạn chế, kính mong sự hướng dẫn và đóng góp của Thầy , Cô để bài tiểu luận
của em có thể hoàn thiện hơn . em xin chân thành cảm ơn !