用MySQL做一个图书管理系统 项目功能需求:” 图书管理系统有三类角色:普通用户、图书管理员和系统管理员。这三类角色的需求如下。" (1)普通用户:查看个人信息、修改个人信息、查询图书、借阅图书。。(2)图书管理员:图书借阅查询、借阅图书登记、还书登记。*数据库设计: 图书管理系统是围绕用户和图书进行操作的系统,需要建立图书管理系统数据库 books,建立用户表user、图书表book、图书分类表book classify图书借阅表book borrow图书还书表book return。
时间: 2023-12-04 07:06:22 浏览: 88
好的,以下是MySQL数据库的设计和实现:
1. 创建数据库
首先需要创建一个数据库,命名为books。
```
CREATE DATABASE books;
```
2. 创建用户表
用户表包含用户的基本信息,如用户名、密码、真实姓名、联系方式等。
```
CREATE TABLE user (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL UNIQUE,
password VARCHAR(20) NOT NULL,
realname VARCHAR(20) NOT NULL,
email VARCHAR(50),
phone VARCHAR(20),
role ENUM('普通用户','图书管理员','系统管理员') NOT NULL DEFAULT '普通用户'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
3. 创建图书分类表
图书分类表用来分类存储图书,包括分类编号、分类名称等字段。
```
CREATE TABLE book_classify (
classify_id INT PRIMARY KEY AUTO_INCREMENT,
classify_name VARCHAR(50) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
4. 创建图书表
图书表包含图书的基本信息,如图书编号、书名、作者、出版社、出版日期、价格、分类编号等。
```
CREATE TABLE book (
book_id INT PRIMARY KEY AUTO_INCREMENT,
book_name VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
press VARCHAR(50) NOT NULL,
publish_date DATE NOT NULL,
price FLOAT NOT NULL,
classify_id INT NOT NULL,
FOREIGN KEY (classify_id) REFERENCES book_classify (classify_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
5. 创建图书借阅表
图书借阅表用来记录用户借阅图书的信息,包括借书编号、用户ID、图书ID、借书日期、预计归还日期等。
```
CREATE TABLE book_borrow (
borrow_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
book_id INT NOT NULL,
borrow_date DATE NOT NULL,
expected_return_date DATE NOT NULL,
FOREIGN KEY (user_id) REFERENCES user (user_id),
FOREIGN KEY (book_id) REFERENCES book (book_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
6. 创建图书还书表
图书还书表用来记录用户还书的信息,包括还书编号、用户ID、图书ID、还书日期等。
```
CREATE TABLE book_return (
return_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
book_id INT NOT NULL,
return_date DATE NOT NULL,
FOREIGN KEY (user_id) REFERENCES user (user_id),
FOREIGN KEY (book_id) REFERENCES book (book_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
7. 添加测试数据
为了方便测试,可以在每个表中插入一些测试数据。
```
INSERT INTO user (username, password, realname, email, phone, role) VALUES
('user1', '123456', '张三', 'user1@test.com', '13812345678', '普通用户'),
('user2', '123456', '李四', 'user2@test.com', '13912345678', '普通用户'),
('admin1', '123456', '管理员1', 'admin1@test.com', '13612345678', '图书管理员'),
('admin2', '123456', '管理员2', 'admin2@test.com', '13712345678', '图书管理员'),
('root', '123456', '超级管理员', 'root@test.com', '13512345678', '系统管理员');
INSERT INTO book_classify (classify_name) VALUES
('计算机科学'),
('文学'),
('经济学'),
('历史');
INSERT INTO book (book_name, author, press, publish_date, price, classify_id) VALUES
('Python基础教程', 'Magnus Lie Hetland', '人民邮电出版社', '2016-07-01', 59.9, 1),
('Python编程快速上手', 'Mark Lutz', '中国电力出版社', '2018-03-01', 69.9, 1),
('红楼梦', '曹雪芹', '人民文学出版社', '2018-01-01', 39.9, 2),
('西游记', '吴承恩', '人民文学出版社', '2019-04-01', 49.9, 2),
('经济学原理', '曼昆', '机械工业出版社', '2017-07-01', 99.9, 3),
('中国近代史', '吕思清', '人民出版社', '2016-12-01', 29.9, 4);
INSERT INTO book_borrow (user_id, book_id, borrow_date, expected_return_date) VALUES
(1, 1, '2021-01-01', '2021-01-15'),
(1, 2, '2021-02-01', '2021-02-15'),
(2, 3, '2021-03-01', '2021-03-15'),
(2, 4, '2021-04-01', '2021-04-15');
INSERT INTO book_return (user_id, book_id, return_date) VALUES
(1, 1, '2021-01-14'),
(1, 2, '2021-02-14'),
(2, 3, '2021-03-14'),
(2, 4, '2021-04-14');
```
以上就是基于MySQL的图书管理系统的数据库设计和实现。可以根据实际需求进行适当调整和扩展。
阅读全文