c语言图书馆管理系统
时间: 2023-07-03 17:04:21 浏览: 41
图书馆管理系统是一个非常典型的管理信息系统,它主要用于图书管理员对图书馆藏书、读者、借阅、归还等工作进行管理,提高图书馆管理效率,方便读者借阅图书。在C语言中,我们可以通过数据结构和文件操作来实现一个图书馆管理系统。
以下是一个简单的图书馆管理系统的代码示例,实现了基本的增删改查功能。其中,使用了链表数据结构来存储图书信息。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义图书信息结构体
typedef struct Book {
char id[10]; //编号
char name[100]; //书名
char author[50]; //作者
char publisher[50]; //出版社
int count; //库存数量
struct Book *next; //指向下一本书的指针
} Book;
//全局变量,保存图书信息的头指针
Book *head = NULL;
//函数声明
void addBook();
void removeBook();
void searchBook();
void displayBookList();
void saveDataToFile();
void loadDataFromFile();
int main()
{
loadDataFromFile(); //从文件中加载数据
int choice;
while (1) {
printf("\n欢迎使用图书馆管理系统\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 查找图书\n");
printf("4. 显示图书列表\n");
printf("0. 退出系统\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
addBook();
break;
case 2:
removeBook();
break;
case 3:
searchBook();
break;
case 4:
displayBookList();
break;
case 0:
saveDataToFile(); //保存数据到文件
exit(0);
default:
printf("输入错误,请重新输入!\n");
}
}
return 0;
}
//添加图书
void addBook()
{
Book *p = (Book *)malloc(sizeof(Book));
printf("请输入图书编号:");
scanf("%s", p->id);
printf("请输入图书名称:");
scanf("%s", p->name);
printf("请输入作者名称:");
scanf("%s", p->author);
printf("请输入出版社名称:");
scanf("%s", p->publisher);
printf("请输入库存数量:");
scanf("%d", &p->count);
p->next = NULL;
if (head == NULL) {
head = p;
} else {
Book *q = head;
while (q->next != NULL) {
q = q->next;
}
q->next = p;
}
printf("添加成功!\n");
}
//删除图书
void removeBook()
{
char id[10];
printf("请输入要删除的图书编号:");
scanf("%s", id);
if (head == NULL) {
printf("图书馆里没有任何书籍!\n");
return;
}
Book *p = head;
Book *pre = head;
while (p != NULL && strcmp(p->id, id) != 0) {
pre = p;
p = p->next;
}
if (p == NULL) {
printf("图书馆里没有编号为%s的书籍!\n", id);
return;
}
if (p == head) {
head = p->next;
} else {
pre->next = p->next;
}
free(p);
printf("删除成功!\n");
}
//查找图书
void searchBook()
{
char id[10];
printf("请输入要查找的图书编号:");
scanf("%s", id);
if (head == NULL) {
printf("图书馆里没有任何书籍!\n");
return;
}
Book *p = head;
while (p != NULL && strcmp(p->id, id) != 0) {
p = p->next;
}
if (p == NULL) {
printf("图书馆里没有编号为%s的书籍!\n", id);
return;
}
printf("编号:%s\n书名:%s\n作者:%s\n出版社:%s\n库存数量:%d\n", p->id, p->name, p->author, p->publisher, p->count);
}
//显示图书列表
void displayBookList()
{
if (head == NULL) {
printf("图书馆里没有任何书籍!\n");
return;
}
printf("编号\t书名\t作者\t出版社\t库存数量\n");
Book *p = head;
while (p != NULL) {
printf("%s\t%s\t%s\t%s\t%d\n", p->id, p->name, p->author, p->publisher, p->count);
p = p->next;
}
}
//保存数据到文件
void saveDataToFile()
{
FILE *fp;
Book *p = head;
fp = fopen("book.dat", "wb");
while (p != NULL) {
fwrite(p, sizeof(Book), 1, fp);
p = p->next;
}
fclose(fp);
printf("数据保存成功!\n");
}
//从文件中加载数据
void loadDataFromFile()
{
FILE *fp;
Book *p;
fp = fopen("book.dat", "rb");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
while (!feof(fp)) {
p = (Book *)malloc(sizeof(Book));
if (fread(p, sizeof(Book), 1, fp) == 1) {
p->next = NULL;
if (head == NULL) {
head = p;
} else {
Book *q = head;
while (q->next != NULL) {
q = q->next;
}
q->next = p;
}
} else {
free(p);
}
}
fclose(fp);
}
```
注意,上述示例代码只是一个简单的图书馆管理系统的实现,还有很多功能可以继续完善和优化。
阅读全文