图书管理系统是图书馆或书店中用于管理图书信息、借阅记录、用户信息等的重要工具。通过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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。