在現代圖書館管理系統中,圖書檢索系統是一個至關重要的組成部分。它允許用戶通過多種方式快速查找所需的圖書信息。本文將介紹如何使用Java語言實現一個簡單的圖書檢索系統。
在開始編寫代碼之前,首先需要明確系統的需求。一個基本的圖書檢索系統應具備以下功能:
為了存儲圖書信息,我們需要設計一個簡單的數據庫表。假設我們使用MySQL數據庫,表結構如下:
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author VARCHAR(255) NOT NULL,
isbn VARCHAR(13) NOT NULL,
publisher VARCHAR(255),
publish_date DATE,
price DECIMAL(10, 2)
);
在Java中,我們可以通過創建類來表示圖書信息。以下是一個簡單的Book
類:
public class Book {
private int id;
private String title;
private String author;
private String isbn;
private String publisher;
private Date publishDate;
private double price;
// 構造函數、getter和setter方法
public Book(int id, String title, String author, String isbn, String publisher, Date publishDate, double price) {
this.id = id;
this.title = title;
this.author = author;
this.isbn = isbn;
this.publisher = publisher;
this.publishDate = publishDate;
this.price = price;
}
// 省略getter和setter方法
}
為了與數據庫進行交互,我們需要使用JDBC(Java Database Connectivity)。以下是一個簡單的數據庫連接類:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String URL = "jdbc:mysql://localhost:3306/library";
private static final String USER = "root";
private static final String PASSWORD = "password";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
管理員可以通過以下代碼將新的圖書信息錄入數據庫:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BookDAO {
public void addBook(Book book) {
String sql = "INSERT INTO books (title, author, isbn, publisher, publish_date, price) VALUES (?, ?, ?, ?, ?, ?)";
try (Connection conn = DatabaseConnection.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, book.getTitle());
pstmt.setString(2, book.getAuthor());
pstmt.setString(3, book.getIsbn());
pstmt.setString(4, book.getPublisher());
pstmt.setDate(5, new java.sql.Date(book.getPublishDate().getTime()));
pstmt.setDouble(6, book.getPrice());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
用戶可以通過以下代碼查詢圖書信息:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BookDAO {
public List<Book> searchBooks(String keyword) {
List<Book> books = new ArrayList<>();
String sql = "SELECT * FROM books WHERE title LIKE ? OR author LIKE ? OR isbn LIKE ?";
try (Connection conn = DatabaseConnection.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "%" + keyword + "%");
pstmt.setString(2, "%" + keyword + "%");
pstmt.setString(3, "%" + keyword + "%");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Book book = new Book(
rs.getInt("id"),
rs.getString("title"),
rs.getString("author"),
rs.getString("isbn"),
rs.getString("publisher"),
rs.getDate("publish_date"),
rs.getDouble("price")
);
books.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
return books;
}
}
管理員可以通過以下代碼修改圖書信息:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BookDAO {
public void updateBook(Book book) {
String sql = "UPDATE books SET title = ?, author = ?, isbn = ?, publisher = ?, publish_date = ?, price = ? WHERE id = ?";
try (Connection conn = DatabaseConnection.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, book.getTitle());
pstmt.setString(2, book.getAuthor());
pstmt.setString(3, book.getIsbn());
pstmt.setString(4, book.getPublisher());
pstmt.setDate(5, new java.sql.Date(book.getPublishDate().getTime()));
pstmt.setDouble(6, book.getPrice());
pstmt.setInt(7, book.getId());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
管理員可以通過以下代碼刪除圖書信息:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BookDAO {
public void deleteBook(int id) {
String sql = "DELETE FROM books WHERE id = ?";
try (Connection conn = DatabaseConnection.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, id);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
系統可以通過以下代碼展示所有圖書信息:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BookDAO {
public List<Book> getAllBooks() {
List<Book> books = new ArrayList<>();
String sql = "SELECT * FROM books";
try (Connection conn = DatabaseConnection.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Book book = new Book(
rs.getInt("id"),
rs.getString("title"),
rs.getString("author"),
rs.getString("isbn"),
rs.getString("publisher"),
rs.getDate("publish_date"),
rs.getDouble("price")
);
books.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
return books;
}
}
通過以上步驟,我們實現了一個簡單的圖書檢索系統。該系統具備圖書信息的錄入、查詢、修改、刪除和展示功能。雖然這個系統相對簡單,但它為更復雜的圖書館管理系統奠定了基礎。在實際應用中,還可以進一步優化系統性能、增加用戶界面、實現權限管理等功能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。