Ứng dụng này cung cấp một loạt các tính năngtừ việc thêm, xóa, tìm kiếm sách đến quản lý mượn và trả sách, cung cấpmột phương tiện tiện lợi và hiệu quả cho việc quản lý thư viện trong th
Trang 1TRƯỜ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
Trang 2HÀ NỘI, THÁNG 2/2023
Trang 3MỤ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 ………
Trang 4MỞ ĐẦ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.
Trang 5NỘ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
Trang 62.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
Trang 7Gỉ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
Trang 8Giaỉ 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 :
Trang 9Giaỉ 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
Trang 10xó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
Trang 11 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
Trang 12sá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
Trang 132.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
Trang 14Giaỉ 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
Trang 15Giaỉ 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<Book>
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
Trang 16để 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 :
Trang 173.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
Trang 18dụ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
Trang 19LỜ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 !