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