mysql查询张三当前借阅的图书信息,图书信息只需要显示借阅人编号,借阅人名称,图书名称和借阅时间。
时间: 2023-12-12 18:04:48 浏览: 236
SELECT Borrower.BorrowerID, Borrower.Name, Book.Name, Borrow.BorrowTime
FROM Borrow
INNER JOIN Book ON Borrow.BookID = Book.BookID
INNER JOIN Borrower ON Borrow.BorrowerID = Borrower.BorrowerID
WHERE Borrower.Name = '张三' AND Borrow.ReturnTime IS NULL;
相关问题
用MySQL做一个图书管理系统 项目功能需求:” 图书管理系统有三类角色:普通用户、图书管理员和系统管理员。这三类角色的需求如下。" (1)普通用户:查看个人信息、修改个人信息、查询图书、借阅图书。。(2)图书管理员:图书借阅查询、借阅图书登记、还书登记。*数据库设计: 图书管理系统是围绕用户和图书进行操作的系统,需要建立图书管理系统数据库 books,建立用户表user、图书表book、图书分类表book classify图书借阅表book borrow图书还书表book return。
好的,以下是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的图书管理系统的数据库设计和实现。可以根据实际需求进行适当调整和扩展。
c语言开发一个简单的图书信息管理系统。实现用户借阅信息查询;按照用户名查询用户借阅图书信息(某一用户借 容 阅图书的记录显示)(*)。
好的,下面是一个简单的图书信息管理系统的代码示例:
```c
#include <stdio.h>
#include <string.h>
// 定义图书结构体
struct Book {
int id; // 图书编号
char title[50]; // 图书名称
char author[20]; // 图书作者
int borrowed; // 是否被借出,1表示已借出,0表示未借出
char borrower[20]; // 借阅人姓名
};
// 定义图书数组,用于存储图书信息
struct Book books[10] = {
{1, "C程序设计", "谭浩强", 0, ""},
{2, "Java编程思想", "Bruce Eckel", 1, "张三"},
{3, "Python编程从入门到实践", "Eric Matthes", 0, ""},
{4, "算法导论", "Thomas H. Cormen", 0, ""},
{5, "深入浅出MySQL", "张晨曦", 1, "李四"}
};
// 显示菜单
void showMenu() {
printf("1. 查询所有图书信息\n");
printf("2. 借阅图书\n");
printf("3. 归还图书\n");
printf("4. 按照用户名查询用户借阅图书信息\n");
printf("0. 退出系统\n");
printf("请输入您的选择:");
}
// 查询所有图书信息
void showBooks() {
printf("图书编号\t图书名称\t图书作者\t是否借出\t借阅人姓名\n");
for (int i = 0; i < 5; i++) {
printf("%d\t\t%s\t\t%s\t\t%s\t\t%s\n", books[i].id, books[i].title, books[i].author, books[i].borrowed == 1 ? "是" : "否", books[i].borrower);
}
}
// 借阅图书
void borrowBook() {
int id;
printf("请输入要借阅的图书编号:");
scanf("%d", &id);
for (int i = 0; i < 5; i++) {
if (books[i].id == id) {
if (books[i].borrowed == 1) {
printf("该图书已借出,请选择其他图书。\n");
} else {
printf("借阅成功,请输入您的姓名:");
scanf("%s", books[i].borrower);
books[i].borrowed = 1;
}
return;
}
}
printf("未找到编号为%d的图书。\n", id);
}
// 归还图书
void returnBook() {
int id;
printf("请输入要归还的图书编号:");
scanf("%d", &id);
for (int i = 0; i < 5; i++) {
if (books[i].id == id) {
if (books[i].borrowed == 0) {
printf("该图书未被借出,无需归还。\n");
} else {
printf("归还成功,欢迎下次借阅。\n");
books[i].borrowed = 0;
strcpy(books[i].borrower, "");
}
return;
}
}
printf("未找到编号为%d的图书。\n", id);
}
// 按照用户名查询用户借阅图书信息
void searchByBorrower() {
char name[20];
printf("请输入用户名:");
scanf("%s", name);
printf("图书编号\t图书名称\t图书作者\t是否借出\t借阅人姓名\n");
for (int i = 0; i < 5; i++) {
if (strcmp(books[i].borrower, name) == 0) {
printf("%d\t\t%s\t\t%s\t\t%s\t\t%s\n", books[i].id, books[i].title, books[i].author, books[i].borrowed == 1 ? "是" : "否", books[i].borrower);
}
}
}
int main() {
int choice;
while (1) {
showMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
showBooks();
break;
case 2:
borrowBook();
break;
case 3:
returnBook();
break;
case 4:
searchByBorrower();
break;
case 0:
printf("谢谢使用,再见!\n");
return 0;
default:
printf("无效的选择,请重新输入。\n");
break;
}
}
}
```
这个程序中,我们定义了一个图书结构体,包含图书编号、图书名称、图书作者、是否被借出以及借阅人姓名等信息。我们使用一个图书数组来存储图书信息,然后实现了查询所有图书信息、借阅图书、归还图书以及按照用户名查询用户借阅图书信息等功能。
阅读全文