Đây là 1 trở ngại rất lớn cho những người làm công việc này, khi việc rà soát lại 1 vài thông tin trong hàng nghìn trang giấy là quá khó khăn & dễ gây ra sai sót trong quá trình làm việc
Trang 1TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN
֎
BÁO CÁO ĐỒ ÁN MÔN HỌC
NGHIÊN CỨU & XÂY DỰNG PHẦN MỀM QUẢN LÝ THƯ VIỆN
Nhóm 10 - Lớp 21CN3
Giảng viên hướng dẫn: ThS.Trần Trung
Đào Văn DuyNguyễn Văn KiênNguyễn Hoàng Thái
Trang 2MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 2
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 3
1.1.Tên đề tài 3
1.2.Lý do chọn đề tài 3
1.3.Khách thể & đối tượng nghiên cứu 3
1.4.Giới hạn & phạm vi nghiên cứu 4
1.5.Phương pháp nghiên cứu 4
1.6.Các giai đoạn thực hiện 4
CHƯƠNG 2: PHÂN TÍCH ĐỀ TÀI 4
2.1 Yêu cầu về chức năng 4
2.1.1 Yêu cầu chức năng 4
2.1.2 Yêu cầu phi chức năng 5
3.2.1 Cài đặt và sử dụng các thư viện 10
3.2.2 Xây dựng module chức năng 13
3.2.3 Giao diện chương trình 26
KẾT LUẬN 27
Trang 3LỜI NÓI ĐẦU
Trong thế kỷ 21 hiện nay, công nghệ thông tin đã phát triển vượt bậc Gần như mọi hoạt động, mọi công việc của con người trong đời sống hiện đại đều có sự can thiệp, hỗ trợ đến từ các công nghệ.
Trong đó, công tác quản lý là 1 trong những loại hình công việc cần sự hỗ trợ từ cáccông nghệ nhiều nhất, khi toàn bộ thông tin, dữ liệu của tất cả những gì liên quan tới công việc của họ trước đây đều được lưu lại trên giấy Đây là 1 trở ngại rất lớn cho những người làm công việc này, khi việc rà soát lại 1 vài thông tin trong hàng nghìn trang giấy là quá khó khăn & dễ gây ra sai sót trong quá trình làm việc.Từ ý tưởng áp dụng công nghệ thông tin vào việc quản lý, giảm thiểu gánh nặng & rủi ro mà cách lưu trữ cũ mang lại, nhóm 10 đã quyết định lựa chọn đề tài “Nghiên cứu & xây dựng phần mềm quản lý thư viện”, nhằm tạo ra 1 phần mềm quản lý thư viện phù hợp cho các thư viện của các trường đại học, hoặc các thư viện tư nhân có quy mô nhỏ có thể dễ dàng sử dụng trong công việc
Do thời gian & mức độ hiểu biết của các thành viên trong nhóm có hạn nên sẽ khó tránh khỏi những thiếu sót trong nội dung báo cáo & phần mềm, rất mong các thầy cô & các bạn có thể đưa ra những nhận xét, góp ý để nhóm có thể đưa những điều chỉnh phù hợp & hoàn thiện dự án hơn.
Trang 4CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 1.1.Tên đề tài
- Nghiên cứu & xây dựng phần mềm quản lý thư viện.
1.2.
Lý do chọn đề tàia) Tiềm năng kinh doanh lớn
- Ngày nay, việc sử dụng các công nghệ hiện đại nhằm giải quyết bài toán vềquản lý thông tin, quản lý nhân sự đã không còn là 1 điều gì đó quá xa lạ trong cuộc sống Song, không phải đơn vị kinh doanh nào cũng có khả năng tự phát triển ra 1 phần mềm để hỗ trợ họ trong vấn đề quản lý vốn đã tương đối phức tạp này.
- Do đó, nhóm 10 đã lựa chọn đề tài Nghiên cứu & xây dựng phần mềm quản lý thư viện, nhằm thiết kế ra 1 phần mềm có thể đáp ứng được nhu cầu quản lý cho các thư viện, và cũng có thể dựa vào đó để cải tiến, chỉnh sửa, hướng tới việc áp dụng vào công tác quản lý trong nhiều những lĩnh vực khác.
b) Tính linh hoạt, tiện lợi & dễ tiếp cận
- Nhu cầu tìm hiểu & đọc sách, truyện của cộng đồng đang có xu hướng đi lên trong 1 vài năm trở lại đây 1 phần mềm quản lý thư viện có thể giúp người dùng dễ dàng tìm kiếm bộ sách/truyện mà mình yêu thích, qua đó giúp thông tin về thư viện được đem tới cho mọi người dễ dàng hơn, khi giờ đây họ có thể tiếp cận nguồn thông tin từ thư viện ở mọi nơi, thay vì bắt buộc phải tới thư viện.
c) Để quản lý & cập nhật thông tin
- 1 phần mềm quản lý sẽ cung cấp khả năng kiểm soát toàn bộ thông tin, dữ liệu thuộc quyền sở hữu của thư viện, cùng với đó là khả năng cập nhật dữ liệu (thêm,xóa,sửa) dựa theo tình hình thực tế của thư viện.
1.3 Khách thể & đối tượng nghiên cứu.
- Đối tượng nghiên cứu : Xây dựng 1 phần mềm quản lý thư viện cơ bản- Các công cụ để xây dựng phần mềm :
+ Sử dụng ngôn ngữ lập trình Java,ngôn ngữ truy vấn SQL+ Sử dụng phần mềm NetBeans, MySQL.
Trang 51.4 Giới hạn & phạm vi nghiên cứu
- Phạm vi xoay quanh các thư viện nhỏ, thư viện của các trường học, có đầy đủ các chức năng cần có của 1 phần mềm quản lý thư viện nhưng vẫn đảm bảo tính đơn giản, tiện lợi để người dùng có thể dễ dàng sử dụng.
1.5 Phương pháp nghiên cứu
- Tham khảo các thiết kế, các phần mềm, trang web quản lý khác như website thuvienhanoi.org.vn của Thư viện Hà Nội, các phần mềm Google Play Sách, Wattpad,….
- Tìm & đọc thêm 1 số mẫu bài tập lớn liên quan tới đề tài.
- Thu thập thông tin, nguồn dữ liệu từ các web,app có sẵn, dựa vào công cụ hỗ trợ đểxây dựng chương trình mới.
1.6 Các giai đoạn thực hiện
- Giai đoạn 1 : Tìm hiểu về để tài, thu thập các dữ liệu cần thiết (nhu cầu sử dụng, cách thức vận hành của các web,app quản lý thư viện khác) Tìm hiểu các công cụ & ngôn ngữ lập trình cần thiết để thực hiện đề tài.
- Giai đoạn 2 : Nghiên cứu : Nắm rõ về vai trò, chức năng của các công cụ & ngôn ngữ lập trình Tìm hiểu về cách thức xây dựng phần mềm
- Giai đoạn 3 : Xây dựng phần mềm : Từ các thông tin đã tìm hiểu & nguồn dữ liệu đã thu thập được, tiến hành xây dựng phần mềm dựa theo các công cụ & ngôn ngữ lập trình đã được lựa chọn.
- Giai đoạn 4 : Kiểm thử : Chạy demo, kiểm thử toàn bộ các chức năng để xem xét,đánh giá sản phẩm, tìm & sửa lỗi để hoàn thiện hệ thống.
- Giai đoạn 5 : Kết luận : Tổng kết, viết báo cáo, rút ra kết luận chung cho đề tài.
CHƯƠNG 2: PHÂN TÍCH ĐỀ TÀI2.1 Yêu cầu về chức năng
2.1.1 Yêu cầu chức năng
- Quản lý Thông tin Sách:+ Thêm, sửa, xóa thông tin về sách.+ Danh mục sách và thể loại.+ Quản lý số lượng sách trong kho.
+ Ghi chú về tình trạng sách (đã mượn, đang có sẵn, mất, hỏng, v.v.).- Quản lý Thông tin Người Đọc:
Trang 6+ Đăng ký người đọc mới.
+ Quản lý thông tin cá nhân của người đọc.+ Lịch sử mượn sách của người đọc.- Quản lý Mượn/Trả Sách:
+ Lập phiếu mượn sách và thông tin mượn trả.- Quản lý Tình Trạng Sách:
+ Cập nhật tình trạng của sách theo thời gian.
+ Thống kê số lượng sách có sẵn, đã mượn, đã trả, mất, hỏng, v.v.- Quản lý Người Dùng và Phân Quyền:
+ Quản lý thông tin người quản trị và nhân viên.
+ Phân quyền truy cập dựa trên vai trò (quản trị viên, nhân viên, người đọc).+ Ghi log để theo dõi hoạt động của người dùng.
- Giao Diện Người Dùng Thân Thiện:
+ Thiết kế giao diện dễ sử dụng cho cả người quản trị và người đọc.+ Tìm kiếm và lọc thông tin sách và người đọc một cách thuận tiện.- Hệ Thống Bảo Mật:
+ Bảo vệ thông tin cá nhân của người đọc.+ Giảm rủi ro mất mát thông tin sách và người đọc.
2.1.2 Yêu cầu phi chức năng
- Bảo mật:
+ Quản lý quyền truy cập: Đảm bảo rằng chỉ những người được ủy quyền
mới có thể truy cập vào các tính năng quan trọng của hệ thống.
+ Bảo mật dữ liệu: Bảo vệ thông tin cá nhân của người đọc, thông tin tài
khoản và dữ liệu quan trọng khác.
- Dễ bảo trì và nâng cấp:
+ Dễ mở rộng: Cho phép mở rộng hệ thống dễ dàng khi cần thiết.
+ Hệ thống cập nhật: Hỗ trợ quá trình cập nhật phần mềm mà không làm gián
đoạn dịch vụ.
- Trải nghiệm người dùng:
+ Giao diện người dùng thân thiện: Cung cấp giao diện người dùng dễ sử
dụng và thân thiện để tối ưu hóa trải nghiệm người dùng.
- Tuân thủ quy định và chuẩn mực:
+ Tuân thủ quy định pháp luật: Đảm bảo phần mềm tuân thủ các quy định và
quy phạm pháp luật liên quan đến quản lý thông tin và dữ liệu cá nhân.
- Hỗ trợ và Tài liệu:
Trang 7+ Hỗ trợ người dùng: Cung cấp hệ thống hỗ trợ hiệu quả và kênh liên lạc.+ Tài liệu hướng dẫn: Tạo tài liệu hướng dẫn chi tiết để hỗ trợ người quản trị
và người dùng cuối.
2.2 Actors và Use-case2.2.1 Actors
- Admin,Nhân viên quản lý, độc giả
2.2.2 Use-case
Hình 1 Use-case
Trang 8Các chức năng của hệ thống được thể hiện chi tiết qua các sơ đồ use case dưới đây:- Có 5 mô hình use case cụ thể cho các actor là: độc giả, admin, nhân viên- 5 Use-case cụ thể ở đây gồm có :
+ Nhân viên quản lý độc giả+ Nhân viên quản lý phiếu mượn trả+ Nhân viên quản lý sách+ Admin
Trang 9Hình 3 Use-case- Độc giả là khách hàng của hệ thống, là dạng tài khoản có quyền truy cập vào ít
Hình 4 Use-case quản lý độc giả
- Các nhân viên quản lý có quyền truy cập lớn hơn các độc giả & nhỏ hơn admin.- Nhân viên quản lý độc giả có thể quản lý thông tin của độc giả như :
+ Tìm thông tin của độc giả, thêm, sửa/xóa các thông tin của họ.
Trang 10+ Xem thông tin độc giả bao gồm: thông tin cá nhân và các sách đang mượn.+ Xóa độc giả khi độ giả muốn hủy tư cách thành viên
Hình 5 Use-case quản lý mượn – trả sách- Quản lý mượn trả của độc giả được cấp các quyền sau :
+ Tìm thông tin phiếu mượn (ngày mượn , phiếu mượn của độc giả)+ Cho phép độc giả đăng kí mượn sách.
+ Quản lý những sách mà độc giả đã trả/mượn.
Hình 6 Use-case Quản lý sách- Quản lý sách trong thư viện gồm các hạng mục :
+ Tìm kiếm tên,loại sách
+ Thêm, sửa, xóa thông tin của sách
+ Xem & thống kê số lượng các đầu sách của thư viện+ Quản lý công tác thêm, xóa, sửa các đầu sách.+ Phân loại sách
+ Kiểm tra mất mát,hư hỏng của sách trong thư viện.
Trang 11CHƯƠNG 3 : SẢN PHẨM NGHIÊN CỨU3.1 Tổng quan
3.2.1 Cài đặt và sử dụng các thư viện
3.2.1.1 Thư viện sử dụng cho chức năng author
3.2.1.2 Thư viện sử dụng cho chức năng book
Trang 123.2.1.3 Thư viện sử dụng cho chức năng genre
3.2.1.4 Thư viện sử dụng cho chức năng issue book
Trang 143.2.1.5 Thư viện sử dụng cho chức năng member
3.2.1.6 Thư viện sử dụng cho chức năng users
Trang 153.2.1.7 Hướng dẫn cài đặt
- Cài đặt jdk 21, Apache Netbeans IDE 20, MySQL 8.2 Configurator, MySQL Workbench 8.0 CE
- Tạo 1 database library
3.2.2 Xây dựng module chức năng
3.2.2.1 Xây dựng module chức năng thao tác với authorChức năng thêm tác giả
- Thực hiện thêm một tác giả mới vào cơ sở dữ liệu.
Trang 16- Sử dụng PreparedStatement để thực hiện truy vấn SQL INSERT.- Hiển thị thông báo thành công hoặc thất bại thông qua hộp thoại
Chức năng sửa tác giả
- Thực hiện cập nhật thông tin tác giả trong cơ sở dữ liệu dựa trên id.- Sử dụng PreparedStatement để thực hiện truy vấn SQL UPDATE.- Hiển thị thông báo thành công hoặc thất bại thông qua hộp thoại
Chức năng xóa tác giả
- Thực hiện xóa thông tin tác giả từ cơ sở dữ liệu dựa trên id.- Sử dụng PreparedStatement để thực hiện truy vấn SQL DELETE.- Hiển thị thông báo thành công hoặc thất bại thông qua hộp thoại
JoptionPane
Trang 173.2.2.2 Xây dựng module chức năng thao tác với bookChức năng thêm
public void addBook(int id, String isbn, String name, Integer author_id, Integergenre_id, Integer quantity, String publisher,double price, String date_received,String description, byte[] cover){
String insertQuery = "INSERT INTO books (id, isbn, name,author_id, genre_id, quantity, publisher, price, date_received, description, cover_image) VALUES (?,?,?,?,?,?,?,?,?,?,?)";
try {
PreparedStatement ps =
DB.getConnection().prepareStatement(insertQuery); ps.setInt(1, id);
ps.setString(2, isbn); ps.setString(3, name); ps.setInt(4, author_id); ps.setInt(5, genre_id); ps.setInt(6, quantity); ps.setString(7, publisher); ps.setDouble(8, price); ps.setString(9, date_received); ps.setString(10, description); ps.setBytes(11, cover); if(ps.executeUpdate() != 0){
JOptionPane.showMessageDialog(null, "Đã thêm sách mới","Thông báo", 1);
}else{
JOptionPane.showMessageDialog(null, "Sách mới chưa được thêm chưa được thêm","Thông báo", 2);
Trang 18}
} catch (SQLException ex) {
Logger.getLogger(Book.class.getName()).log(Level.SEVERE, null, ex); }
}
- Thực hiện thêm một cuốn sách mới vào cơ sở dữ liệu.
- Sử dụng PreparedStatement để thực hiện truy vấn SQL INSERT.
- Hiển thị thông báo thành công hoặc thất bại thông qua hộp thoại JOptionPane.
Chức năng sửa
public void editBook(int id, String name, Integer author_id, Integer genre_id, Integer quantity, String publisher,double price, String date_received, String description, byte[] cover){
String updateQuery ; PreparedStatement ps; try{
if(cover != null){
updateQuery = "UPDATE books SET name=?, author_id=?, genre_id=?, quantity=?, publisher=?, price=?, date_received=?, description=?, cover=? WHERE id=?";
ps= DB.getConnection().prepareStatement(updateQuery); ps.setString(1, name);
ps.setInt(2, author_id); ps.setInt(3, genre_id); ps.setInt(4, quantity); ps.setString(5, publisher); ps.setDouble(6, price);
Trang 19ps.setString(7, date_received); ps.setString(8, description); ps.setBytes(9, cover); ps.setInt(10,id); }
else{
updateQuery = "UPDATE books SET name=?, author_id=?,
genre_id=?, quantity=?, publisher=?, price=?, date_received=?, description=?WHERE id=?";
ps = DB.getConnection().prepareStatement(updateQuery); ps.setString(1, name);
ps.setInt(2, author_id); ps.setInt(3, genre_id); ps.setInt(4, quantity); ps.setString(5, publisher); ps.setDouble(6, price); ps.setString(7, date_received); ps.setString(8, description); ps.setInt(9,id);
Trang 20} catch (SQLException ex) {
Logger.getLogger(Book.class.getName()).log(Level.SEVERE, null, ex); }
Trang 21- Tìm kiếm một cuốn sách dựa trên id hoặc ISBN.- Trả về đối tượng Book nếu tìm thấy, ngược lại trả về null.
3.2.2.3 Xây dựng module chức năng thao tác với genreChức năng thêm
- Thêm một thể loại mới vào cơ sở dữ liệu với thông tin được cung cấp.- Sử dụng câu truy vấn INSERT để chèn dữ liệu mới vào bảng book_genres
Chức năng sửa
- Sửa thông tin của thể loại dựa trên ID.
- Sử dụng câu truy vấn UPDATE để cập nhật thông tin thể loại trong bảng book_genres.
Trang 22Chức năng xóa
- Xóa thể loại dựa trên ID.
- Sử dụng câu truy vấn DELETE để xóa thông tin thể loại khỏi bảng book_genres.
3.2.2.4 Xây dựng module chức năng thao tác với issue bookChức năng thêm
- Thêm một sách được mượn mới vào cơ sở dữ liệu.
- Sử dụng câu truy vấn INSERT để chèn thông tin sách được mượn vào bảng issue_book
Trang 23Chức năng xóa
- Xóa thông tin sách đã mượn dựa trên ID sách, ID thành viên và ngày mượn.- Sử dụng câu truy vấn DELETE để xóa thông tin sách đã mượn khỏi bảng
Chức năng kiểm tra sách có sẵn
- Kiểm tra xem một sách có sẵn để mượn hay không.
- So sánh số lượng sách đã mượn với số lượng sách có trong kho từ bảng books
Trang 243.2.2.5 Xây dựng module chức năng thao tác với memberChức năng thêm
- Thêm một thành viên mới vào cơ sở dữ liệu.
- Sử dụng câu truy vấn INSERT để chèn thông tin thành viên vào bảng members
Chức năng sửa
- Cập nhật thông tin của một thành viên dựa trên ID thành viên.
- Sử dụng câu truy vấn UPDATE để cập nhật thông tin thành viên trong bảng members.
Trang 25Chức năng xóa
- Xóa một thành viên dựa trên ID thành viên.
- Sử dụng câu truy vấn DELETE để xóa thông tin thành viên khỏi bảng members.
Chức năng tìm kiếm
- Kiểm tra xem một thành viên có tồn tại trong cơ sở dữ liệu hay không.- Sử dụng câu truy vấn SELECT để kiểm tra sự tồn tại của thành viên dựa trên
ID thành viên.
Trang 263.2.2.6 Xây dựng module chức năng thao tác với usersChức năng thêm
- Thêm một người dùng mới vào cơ sở dữ liệu.
- Sử dụng câu truy vấn INSERT để chèn thông tin người dùng vào bảng users_table.
Chức năng sửa
- Cập nhật thông tin của một người dùng dựa trên ID người dùng.
- Sử dụng câu truy vấn UPDATE để cập nhật thông tin người dùng trong bảng users_table.
Trang 27Chức năng xóa
- Xóa một người dùng dựa trên ID người dùng.
- Sử dụng câu truy vấn DELETE để xóa thông tin người dùng khỏi bảng users_table.
try{ if(rs.next()) {
user = new Users(rs.getInt("id"), rs.getString("firstName"), rs.getString("lastName"), rs.getString("username"), rs.getString("password"), rs.getString("user_type"));