用c语言写一个图书馆信息管理系统数据库
时间: 2024-01-05 11:03:03 浏览: 87
C语言写的图书馆管理系统
4星 · 用户满意度95%
好的,以下是一个简单的图书馆信息管理系统数据库的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最大书籍数量
typedef struct {
char title[100]; // 书名
char author[50]; // 作者
int year; // 出版年份
int id; // 书籍编号
} Book;
typedef struct {
Book books[MAX_BOOKS]; // 书籍数组
int count; // 当前书籍数量
} Library;
// 初始化图书馆
void init_library(Library *lib) {
lib->count = 0;
}
// 添加书籍
void add_book(Library *lib, Book book) {
if (lib->count < MAX_BOOKS) {
book.id = lib->count + 1;
lib->books[lib->count++] = book;
printf("书籍添加成功!\n");
} else {
printf("书籍数量已达上限,无法添加新书!\n");
}
}
// 删除书籍
void remove_book(Library *lib, int id) {
int i, index = -1;
for (i = 0; i < lib->count; i++) {
if (lib->books[i].id == id) {
index = i;
break;
}
}
if (index >= 0) {
for (i = index; i < lib->count - 1; i++) {
lib->books[i] = lib->books[i + 1];
}
lib->count--;
printf("书籍删除成功!\n");
} else {
printf("未找到对应编号的书籍!\n");
}
}
// 修改书籍信息
void modify_book(Library *lib, int id, Book book) {
int i, index = -1;
for (i = 0; i < lib->count; i++) {
if (lib->books[i].id == id) {
index = i;
break;
}
}
if (index >= 0) {
lib->books[index] = book;
printf("书籍信息修改成功!\n");
} else {
printf("未找到对应编号的书籍!\n");
}
}
// 查找书籍
void find_book(Library *lib, char *keyword) {
int i, count = 0;
printf("搜索结果:\n");
for (i = 0; i < lib->count; i++) {
if (strstr(lib->books[i].title, keyword) || strstr(lib->books[i].author, keyword)) {
printf("%d\t%s\t%s\t%d\n", lib->books[i].id, lib->books[i].title, lib->books[i].author, lib->books[i].year);
count++;
}
}
if (count == 0) {
printf("未找到符合条件的书籍!\n");
} else {
printf("共找到 %d 本书籍。\n", count);
}
}
// 显示所有书籍
void show_all_books(Library *lib) {
int i;
printf("所有书籍:\n");
for (i = 0; i < lib->count; i++) {
printf("%d\t%s\t%s\t%d\n", lib->books[i].id, lib->books[i].title, lib->books[i].author, lib->books[i].year);
}
printf("共 %d 本书籍。\n", lib->count);
}
// 主函数
int main() {
Library lib;
init_library(&lib);
int choice, id;
Book book;
char keyword[100];
while (1) {
printf("请选择操作:\n");
printf("1. 添加书籍\n");
printf("2. 删除书籍\n");
printf("3. 修改书籍信息\n");
printf("4. 查找书籍\n");
printf("5. 显示所有书籍\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入书名、作者、出版年份(空格隔开):\n");
scanf("%s %s %d", book.title, book.author, &book.year);
add_book(&lib, book);
break;
case 2:
printf("请输入需要删除的书籍编号:\n");
scanf("%d", &id);
remove_book(&lib, id);
break;
case 3:
printf("请输入需要修改的书籍编号、书名、作者、出版年份(空格隔开):\n");
scanf("%d %s %s %d", &id, book.title, book.author, &book.year);
modify_book(&lib, id, book);
break;
case 4:
printf("请输入搜索关键字:\n");
scanf("%s", keyword);
find_book(&lib, keyword);
break;
case 5:
show_all_books(&lib);
break;
case 0:
printf("程序已退出。\n");
exit(0);
default:
printf("无效选项,请重新选择。\n");
break;
}
}
return 0;
}
```
这个程序使用了结构体来表示书籍信息,同时利用结构体数组作为图书馆的存储结构。主函数中采用了一个无限循环的方式,用户可以通过输入数字选择不同的操作,包括添加书籍、删除书籍、修改书籍信息、查找书籍和显示所有书籍。每个操作对应一个函数,实现了对图书馆数据的增删改查。
阅读全文