c语言设计图书管理系统,其中包含图书管理员的查看已存图书,注册图书,修改图书,注销图书,用户的借阅图书,还书,图书详情展示,和退出功能的的代码
时间: 2023-08-18 10:10:35 浏览: 76
下面是一个简单的C语言设计图书管理系统的代码示例,包含了图书管理员和用户的各种操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最多存储100本书
typedef struct Book {
char title[50]; // 书名
char author[50]; // 作者
int year; // 出版年份
int id; // 图书id
int borrowed; // 借出状态,0表示未借出,1表示已借出
} Book;
Book books[MAX_BOOKS]; // 存储所有的图书
int bookCount = 0; // 当前存储的图书数量
// 添加一本新书
void addBook() {
if (bookCount >= MAX_BOOKS) {
printf("已达到最大存储量,无法添加新书。\n");
return;
}
Book newBook;
printf("请输入书名:");
scanf("%s", newBook.title);
printf("请输入作者名:");
scanf("%s", newBook.author);
printf("请输入出版年份:");
scanf("%d", &newBook.year);
newBook.id = bookCount + 1;
newBook.borrowed = 0;
books[bookCount++] = newBook;
printf("已成功添加新书!\n");
}
// 查看已存储的所有图书
void viewBooks() {
printf("当前已存储的图书有:\n");
printf("----------------------------------\n");
printf("| ID | 书名 | 作者 | 出版年份 | 状态 |\n");
printf("----------------------------------\n");
for (int i = 0; i < bookCount; i++) {
Book book = books[i];
printf("| %2d | %s | %s | %d | %s |\n",
book.id, book.title, book.author, book.year,
book.borrowed == 0 ? "未借出" : "已借出");
}
printf("----------------------------------\n");
}
// 修改一本已有的图书
void editBook() {
int id;
printf("请输入要修改的图书ID:");
scanf("%d", &id);
for (int i = 0; i < bookCount; i++) {
Book *book = &books[i];
if (book->id == id) {
printf("请输入新的书名:");
scanf("%s", book->title);
printf("请输入新的作者名:");
scanf("%s", book->author);
printf("请输入新的出版年份:");
scanf("%d", &book->year);
printf("已成功修改图书信息!\n");
return;
}
}
printf("未找到对应的图书,请检查输入的ID是否正确。\n");
}
// 注销一本已有的图书
void deleteBook() {
int id;
printf("请输入要注销的图书ID:");
scanf("%d", &id);
for (int i = 0; i < bookCount; i++) {
if (books[i].id == id) {
// 把该图书从数组中删除
for (int j = i; j < bookCount - 1; j++) {
books[j] = books[j + 1];
}
bookCount--;
printf("已成功注销图书!\n");
return;
}
}
printf("未找到对应的图书,请检查输入的ID是否正确。\n");
}
// 借阅一本图书
void borrowBook() {
int id;
printf("请输入要借阅的图书ID:");
scanf("%d", &id);
for (int i = 0; i < bookCount; i++) {
Book *book = &books[i];
if (book->id == id) {
if (book->borrowed == 0) {
book->borrowed = 1;
printf("已成功借阅图书!\n");
}
else {
printf("该图书已被借出,请选择其他图书。\n");
}
return;
}
}
printf("未找到对应的图书,请检查输入的ID是否正确。\n");
}
// 归还一本图书
void returnBook() {
int id;
printf("请输入要归还的图书ID:");
scanf("%d", &id);
for (int i = 0; i < bookCount; i++) {
Book *book = &books[i];
if (book->id == id) {
if (book->borrowed == 1) {
book->borrowed = 0;
printf("已成功归还图书!\n");
}
else {
printf("该图书未被借出,无法归还。\n");
}
return;
}
}
printf("未找到对应的图书,请检查输入的ID是否正确。\n");
}
// 显示一本图书的详细信息
void showBookDetails() {
int id;
printf("请输入要查看的图书ID:");
scanf("%d", &id);
for (int i = 0; i < bookCount; i++) {
Book book = books[i];
if (book.id == id) {
printf("书名:%s\n", book.title);
printf("作者:%s\n", book.author);
printf("出版年份:%d\n", book.year);
printf("状态:%s\n", book.borrowed == 0 ? "未借出" : "已借出");
return;
}
}
printf("未找到对应的图书,请检查输入的ID是否正确。\n");
}
// 主函数
int main() {
int role;
while (1) {
printf("请选择您的身份:\n");
printf("1. 图书管理员\n");
printf("2. 用户\n");
printf("3. 退出\n");
printf("请输入数字选择:");
scanf("%d", &role);
if (role == 1) {
int op;
printf("欢迎进入图书管理员界面!\n");
while (1) {
printf("请选择您要进行的操作:\n");
printf("1. 查看已存储图书\n");
printf("2. 添加新书\n");
printf("3. 修改图书\n");
printf("4. 注销图书\n");
printf("5. 退出\n");
printf("请输入数字选择:");
scanf("%d", &op);
switch (op) {
case 1:
viewBooks();
break;
case 2:
addBook();
break;
case 3:
editBook();
break;
case 4:
deleteBook();
break;
case 5:
goto end;
default:
printf("无效的选项,请重新选择。\n");
}
}
}
else if (role == 2) {
int op;
printf("欢迎进入用户界面!\n");
while (1) {
printf("请选择您要进行的操作:\n");
printf("1. 查看已存储图书\n");
printf("2. 借阅图书\n");
printf("3. 归还图书\n");
printf("4. 查看图书详情\n");
printf("5. 退出\n");
printf("请输入数字选择:");
scanf("%d", &op);
switch (op) {
case 1:
viewBooks();
break;
case 2:
borrowBook();
break;
case 3:
returnBook();
break;
case 4:
showBookDetails();
break;
case 5:
goto end;
default:
printf("无效的选项,请重新选择。\n");
}
}
}
else if (role == 3) {
break;
}
else {
printf("无效的选项,请重新选择。\n");
}
}
end:
printf("谢谢使用本系统!\n");
return 0;
}
```
上面的代码实现了以下功能:
- 图书管理员可以查看已存储的图书、添加新书、修改图书信息和注销图书。
- 用户可以查看已存储的图书、借阅图书、归还图书和查看图书详情。
- 程序会在用户选择退出时退出循环。