圖書管理系統是圖書館或書店中用于管理圖書信息、借閱記錄、用戶信息等的重要工具。通過Java和SQL Server的結合,我們可以構建一個簡易的圖書管理系統,實現圖書的增刪改查、借閱歸還等功能。本文將詳細介紹如何使用Java和SQL Server來構建這樣一個系統。
在開始開發之前,我們需要明確系統的基本需求:
在開始開發之前,我們需要準備好開發環境:
首先,我們需要設計數據庫表結構。假設我們的系統需要以下三張表:
| 字段名 | 數據類型 | 描述 |
|---|---|---|
| BookID | INT | 圖書ID(主鍵) |
| Title | VARCHAR(100) | 圖書標題 |
| Author | VARCHAR(100) | 作者 |
| Publisher | VARCHAR(100) | 出版社 |
| PublishDate | DATE | 出版日期 |
| ISBN | VARCHAR(20) | ISBN號 |
| Status | VARCHAR(10) | 圖書狀態 |
| 字段名 | 數據類型 | 描述 |
|---|---|---|
| UserID | INT | 用戶ID(主鍵) |
| Name | VARCHAR(100) | 用戶姓名 |
| VARCHAR(100) | 用戶郵箱 | |
| Phone | VARCHAR(20) | 用戶電話 |
| 字段名 | 數據類型 | 描述 |
|---|---|---|
| RecordID | INT | 記錄ID(主鍵) |
| UserID | INT | 用戶ID |
| BookID | INT | 圖書ID |
| BorrowDate | DATE | 借閱日期 |
| ReturnDate | DATE | 歸還日期 |
首先,我們需要編寫一個類來管理數據庫連接。這個類將負責加載JDBC驅動、建立數據庫連接以及關閉連接。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=LibraryDB";
private static final String USER = "sa";
private static final String PASSWORD = "your_password";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
public static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} 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 BookManager {
public void addBook(Book book) throws SQLException {
String sql = "INSERT INTO Books (Title, Author, Publisher, PublishDate, ISBN, Status) VALUES (?, ?, ?, ?, ?, ?)";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setString(1, book.getTitle());
statement.setString(2, book.getAuthor());
statement.setString(3, book.getPublisher());
statement.setDate(4, new java.sql.Date(book.getPublishDate().getTime()));
statement.setString(5, book.getIsbn());
statement.setString(6, book.getStatus());
statement.executeUpdate();
}
}
public void deleteBook(int bookId) throws SQLException {
String sql = "DELETE FROM Books WHERE BookID = ?";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, bookId);
statement.executeUpdate();
}
}
public void updateBook(Book book) throws SQLException {
String sql = "UPDATE Books SET Title = ?, Author = ?, Publisher = ?, PublishDate = ?, ISBN = ?, Status = ? WHERE BookID = ?";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setString(1, book.getTitle());
statement.setString(2, book.getAuthor());
statement.setString(3, book.getPublisher());
statement.setDate(4, new java.sql.Date(book.getPublishDate().getTime()));
statement.setString(5, book.getIsbn());
statement.setString(6, book.getStatus());
statement.setInt(7, book.getBookId());
statement.executeUpdate();
}
}
public List<Book> getAllBooks() throws SQLException {
List<Book> books = new ArrayList<>();
String sql = "SELECT * FROM Books";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
Book book = new Book();
book.setBookId(resultSet.getInt("BookID"));
book.setTitle(resultSet.getString("Title"));
book.setAuthor(resultSet.getString("Author"));
book.setPublisher(resultSet.getString("Publisher"));
book.setPublishDate(resultSet.getDate("PublishDate"));
book.setIsbn(resultSet.getString("ISBN"));
book.setStatus(resultSet.getString("Status"));
books.add(book);
}
}
return books;
}
}
類似地,我們可以編寫一個類來實現用戶的管理功能。
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 UserManager {
public void addUser(User user) throws SQLException {
String sql = "INSERT INTO Users (Name, Email, Phone) VALUES (?, ?, ?)";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setString(1, user.getName());
statement.setString(2, user.getEmail());
statement.setString(3, user.getPhone());
statement.executeUpdate();
}
}
public void deleteUser(int userId) throws SQLException {
String sql = "DELETE FROM Users WHERE UserID = ?";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, userId);
statement.executeUpdate();
}
}
public void updateUser(User user) throws SQLException {
String sql = "UPDATE Users SET Name = ?, Email = ?, Phone = ? WHERE UserID = ?";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setString(1, user.getName());
statement.setString(2, user.getEmail());
statement.setString(3, user.getPhone());
statement.setInt(4, user.getUserId());
statement.executeUpdate();
}
}
public List<User> getAllUsers() throws SQLException {
List<User> users = new ArrayList<>();
String sql = "SELECT * FROM Users";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
User user = new User();
user.setUserId(resultSet.getInt("UserID"));
user.setName(resultSet.getString("Name"));
user.setEmail(resultSet.getString("Email"));
user.setPhone(resultSet.getString("Phone"));
users.add(user);
}
}
return users;
}
}
最后,我們編寫一個類來實現借閱記錄的管理功能。
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 BorrowManager {
public void borrowBook(int userId, int bookId) throws SQLException {
String sql = "INSERT INTO BorrowRecords (UserID, BookID, BorrowDate) VALUES (?, ?, ?)";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, userId);
statement.setInt(2, bookId);
statement.setDate(3, new java.sql.Date(System.currentTimeMillis()));
statement.executeUpdate();
}
}
public void returnBook(int recordId) throws SQLException {
String sql = "UPDATE BorrowRecords SET ReturnDate = ? WHERE RecordID = ?";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setDate(1, new java.sql.Date(System.currentTimeMillis()));
statement.setInt(2, recordId);
statement.executeUpdate();
}
}
public List<BorrowRecord> getAllBorrowRecords() throws SQLException {
List<BorrowRecord> records = new ArrayList<>();
String sql = "SELECT * FROM BorrowRecords";
try (Connection connection = DatabaseConnection.getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
BorrowRecord record = new BorrowRecord();
record.setRecordId(resultSet.getInt("RecordID"));
record.setUserId(resultSet.getInt("UserID"));
record.setBookId(resultSet.getInt("BookID"));
record.setBorrowDate(resultSet.getDate("BorrowDate"));
record.setReturnDate(resultSet.getDate("ReturnDate"));
records.add(record);
}
}
return records;
}
}
在完成上述功能后,我們可以編寫一個簡單的測試類來驗證系統的功能是否正常。
public class LibrarySystemTest {
public static void main(String[] args) {
try {
// 測試圖書管理功能
BookManager bookManager = new BookManager();
Book book = new Book();
book.setTitle("Java Programming");
book.setAuthor("John Doe");
book.setPublisher("Tech Press");
book.setPublishDate(new java.util.Date());
book.setIsbn("1234567890");
book.setStatus("Available");
bookManager.addBook(book);
// 測試用戶管理功能
UserManager userManager = new UserManager();
User user = new User();
user.setName("Alice");
user.setEmail("alice@example.com");
user.setPhone("1234567890");
userManager.addUser(user);
// 測試借閱管理功能
BorrowManager borrowManager = new BorrowManager();
borrowManager.borrowBook(1, 1);
// 查詢并打印所有圖書、用戶和借閱記錄
System.out.println("All Books:");
bookManager.getAllBooks().forEach(System.out::println);
System.out.println("All Users:");
userManager.getAllUsers().forEach(System.out::println);
System.out.println("All Borrow Records:");
borrowManager.getAllBorrowRecords().forEach(System.out::println);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
通過本文的介紹,我們學習了如何使用Java和SQL Server構建一個簡易的圖書管理系統。該系統實現了圖書、用戶和借閱記錄的管理功能,并通過JDBC與SQL Server數據庫進行交互。雖然這個系統還比較簡單,但它為后續的功能擴展和優化提供了基礎。希望本文能對你理解和開發類似的系統有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。