java 创建一个图书馆借阅系统,有以下几个要求 1.分为管理者系统和借阅者系统 2.管理者系统可以增加书籍,删除书籍,查看所有书籍 3.借阅者系统可以借阅书籍,查看所有书籍,搜索书籍 4.书籍由书名和作者名组成 5.拥有管理员账户管理系统和借阅者账户管理系统,可以选择登录与创建账户 要求运行程序可以达到以上要求
时间: 2024-03-16 17:46:13 浏览: 79
好的,这是一个比较大的项目,需要设计数据库和界面。这里提供一个简单的解决方案,使用 Java 和 MySQL 实现一个控制台版本的图书馆借阅系统。
1. 数据库设计
创建一个名为 library 的数据库,其中包含两个表:books 和 users。
books 表包含以下字段:
- id:自增长的书籍编号
- title:书名
- author:作者
- status:书籍状态,0 表示可借,1 表示已借出
users 表包含以下字段:
- id:自增长的用户编号
- username:用户名
- password:密码
- role:用户角色,0 表示管理员,1 表示借阅者
2. Java 代码实现
首先,需要创建一个 Book 类和一个 User 类,分别对应 books 表和 users 表中的记录。
```java
public class Book {
private int id;
private String title;
private String author;
private int status;
public Book(int id, String title, String author, int status) {
this.id = id;
this.title = title;
this.author = author;
this.status = status;
}
// getters and setters
}
public class User {
private int id;
private String username;
private String password;
private int role;
public User(int id, String username, String password, int role) {
this.id = id;
this.username = username;
this.password = password;
this.role = role;
}
// getters and setters
}
```
接下来,需要创建一个 Database 类,用来连接数据库,并提供一些基本的操作方法,比如查询所有书籍、添加书籍、删除书籍等等。
```java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class Database {
private Connection conn;
public Database(String url, String username, String password) {
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Book> getAllBooks() {
List<Book> books = new ArrayList<>();
String sql = "SELECT * FROM books";
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
String author = rs.getString("author");
int status = rs.getInt("status");
Book book = new Book(id, title, author, status);
books.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
return books;
}
public void addBook(Book book) {
String sql = "INSERT INTO books (title, author, status) VALUES (?, ?, ?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, book.getTitle());
pstmt.setString(2, book.getAuthor());
pstmt.setInt(3, book.getStatus());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void deleteBook(int id) {
String sql = "DELETE FROM books WHERE id = ?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 其他操作方法类似
}
```
最后,创建一个 Library 类,用来处理用户输入和输出,实现借阅者系统和管理者系统的功能。
```java
import java.util.List;
import java.util.Scanner;
public class Library {
private Database db;
private User currentUser;
public Library(Database db) {
this.db = db;
}
public void run() {
// 登录或创建账户
loginOrRegister();
// 根据用户角色显示不同的菜单
if (currentUser.getRole() == 0) {
showAdminMenu();
} else {
showUserMenu();
}
}
private void loginOrRegister() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请选择:1.登录 2.创建账户");
String choice = sc.nextLine();
if (choice.equals("1")) {
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
User user = db.getUserByUsernameAndPassword(username, password);
if (user != null) {
System.out.println("登录成功!");
currentUser = user;
break;
} else {
System.out.println("用户名或密码错误,请重试。");
}
} else if (choice.equals("2")) {
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
System.out.println("请选择角色:1.管理员 2.借阅者");
String role = sc.nextLine();
int roleId = Integer.parseInt(role) - 1;
User user = new User(0, username, password, roleId);
db.addUser(user);
System.out.println("账户创建成功,请登录。");
}
}
}
private void showAdminMenu() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请选择:1.查看所有书籍 2.添加书籍 3.删除书籍 4.退出");
String choice = sc.nextLine();
if (choice.equals("1")) {
List<Book> books = db.getAllBooks();
for (Book book : books) {
System.out.println(book.getId() + " " + book.getTitle() + " " + book.getAuthor() + " " + book.getStatus());
}
} else if (choice.equals("2")) {
System.out.println("请输入书名:");
String title = sc.nextLine();
System.out.println("请输入作者:");
String author = sc.nextLine();
Book book = new Book(0, title, author, 0);
db.addBook(book);
System.out.println("书籍添加成功!");
} else if (choice.equals("3")) {
System.out.println("请输入要删除的书籍编号:");
String id = sc.nextLine();
db.deleteBook(Integer.parseInt(id));
System.out.println("书籍删除成功!");
} else if (choice.equals("4")) {
System.out.println("再见!");
break;
}
}
}
private void showUserMenu() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请选择:1.查看所有书籍 2.搜索书籍 3.借阅书籍 4.退出");
String choice = sc.nextLine();
if (choice.equals("1")) {
List<Book> books = db.getAllBooks();
for (Book book : books) {
System.out.println(book.getId() + " " + book.getTitle() + " " + book.getAuthor() + " " + book.getStatus());
}
} else if (choice.equals("2")) {
System.out.println("请输入关键词:");
String keyword = sc.nextLine();
List<Book> books = db.getBooksByKeyword(keyword);
for (Book book : books) {
System.out.println(book.getId() + " " + book.getTitle() + " " + book.getAuthor() + " " + book.getStatus());
}
} else if (choice.equals("3")) {
System.out.println("请输入要借阅的书籍编号:");
String id = sc.nextLine();
if (db.borrowBook(Integer.parseInt(id), currentUser.getId())) {
System.out.println("借阅成功!");
} else {
System.out.println("借阅失败,请重试。");
}
} else if (choice.equals("4")) {
System.out.println("再见!");
break;
}
}
}
}
```
3. 运行程序
在 main 方法中,创建一个 Database 对象和一个 Library 对象,然后调用 Library 的 run() 方法即可。
```java
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "123456";
Database db = new Database(url, username, password);
Library lib = new Library(db);
lib.run();
}
```
以上是一个简单的图书馆借阅系统的实现,可以根据需要进行修改和扩展。
阅读全文