设计一个图书信息管理系统,使用Java面向对象技术,main主函数,异常处理机制,使用JDBC连接MySQL数据库
时间: 2024-02-25 09:04:06 浏览: 73
基于Java和MySQL语言实现图书管理系统
5星 · 资源好评率100%
好的,这是一个比较大的项目,我会尽可能详细地给您讲解。首先,我们需要明确这个图书信息管理系统的功能需求,主要包括以下几点:
1. 添加图书信息
2. 删除图书信息
3. 修改图书信息
4. 查询图书信息
5. 显示全部图书信息
在面向对象编程中,我们需要先设计出类的结构,再进行编码实现。这里我们可以设计出以下几个类:
1. Book:表示图书类,包含图书的各种信息(例如:书名、作者、价格、出版社等)以及相应的getter和setter方法。
2. BookManager:表示图书管理类,负责实现各种操作(添加、删除、修改、查询、显示)以及与数据库的交互。
3. DBUtil:表示数据库工具类,负责与MySQL数据库建立连接、关闭连接以及执行SQL语句等操作。
接下来,我们可以开始编写代码了。首先,我们在Book类中定义相应的属性和方法:
```java
public class Book {
private int id;
private String name;
private String author;
private float price;
private String publisher;
// 省略getter和setter方法
}
```
然后,在BookManager类中实现各种操作:
```java
public class BookManager {
// 添加图书信息
public void addBook(Book book) {
// TODO: 实现添加图书信息的操作
}
// 删除图书信息
public void deleteBook(int id) {
// TODO: 实现删除图书信息的操作
}
// 修改图书信息
public void updateBook(Book book) {
// TODO: 实现修改图书信息的操作
}
// 查询图书信息
public Book getBook(int id) {
// TODO: 实现查询图书信息的操作
return null;
}
// 显示全部图书信息
public List<Book> getAllBooks() {
// TODO: 实现显示全部图书信息的操作
return null;
}
}
```
接下来,我们需要实现DBUtil类,建立与MySQL数据库的连接,执行SQL语句等操作。这里我们使用JDBC连接MySQL数据库,需要先导入MySQL JDBC驱动包。
```java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DBUtil {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/bookstore";
private static final String USER = "root";
private static final String PASSWORD = "123456";
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
public static void closeConnection(Connection conn, PreparedStatement pstmt, ResultSet rs) {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static int executeUpdate(String sql, Object... params) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
int result = 0;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i + 1, params[i]);
}
result = pstmt.executeUpdate();
} finally {
closeConnection(conn, pstmt, null);
}
return result;
}
public static List<Book> executeQuery(String sql, Object... params) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Book> books = new ArrayList<>();
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i + 1, params[i]);
}
rs = pstmt.executeQuery();
while (rs.next()) {
Book book = new Book();
book.setId(rs.getInt("id"));
book.setName(rs.getString("name"));
book.setAuthor(rs.getString("author"));
book.setPrice(rs.getFloat("price"));
book.setPublisher(rs.getString("publisher"));
books.add(book);
}
} finally {
closeConnection(conn, pstmt, rs);
}
return books;
}
}
```
值得注意的是,在DBUtil类中,我们使用了异常处理机制。如果在执行SQL语句的过程中发生了异常,我们需要及时关闭连接,避免造成资源浪费。
最后,在main函数中,我们可以测试我们的代码是否正确:
```java
public static void main(String[] args) {
// 添加图书信息
Book book1 = new Book();
book1.setName("Java编程思想");
book1.setAuthor("Bruce Eckel");
book1.setPrice(99.9f);
book1.setPublisher("机械工业出版社");
BookManager bm = new BookManager();
bm.addBook(book1);
// 查询图书信息
Book book2 = bm.getBook(1);
System.out.println(book2.getName() + " " + book2.getAuthor() + " " + book2.getPrice() + " " + book2.getPublisher());
// 显示全部图书信息
List<Book> books = bm.getAllBooks();
for (Book book : books) {
System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice() + " " + book.getPublisher());
}
// 修改图书信息
book2.setPrice(88.8f);
bm.updateBook(book2);
// 删除图书信息
bm.deleteBook(1);
}
```
这样,一个基本的图书信息管理系统就完成了。当然,这只是一个简单的示例,实际上还有很多细节需要处理,例如:输入校验、日志记录等等。但是,通过这个示例,我们可以学习到Java面向对象编程、异常处理机制以及JDBC连接MySQL数据库的相关知识。
阅读全文