用c语言写,图书借阅管理系统 主要分为两⼤功能: 1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2)会员管理(增加会员、查询会员、删除会员、借书信息);

时间: 2023-10-20 13:53:47 浏览: 30
以下是用C语言实现的图书借阅管理系统代码,包括图书管理和会员管理两大功能: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 #define MAX_MEMBERS 100 typedef struct { char title[50]; char author[50]; int copies; } Book; typedef struct { char name[50]; char email[50]; int books_borrowed[MAX_BOOKS]; int num_books_borrowed; } Member; Book books[MAX_BOOKS]; Member members[MAX_MEMBERS]; int num_books = 0; int num_members = 0; void add_book() { if (num_books == MAX_BOOKS) { printf("Error: book database is full\n"); return; } printf("Enter book title: "); scanf("%s", books[num_books].title); printf("Enter book author: "); scanf("%s", books[num_books].author); printf("Enter number of copies: "); scanf("%d", &books[num_books].copies); num_books++; printf("Book added successfully!\n"); } void search_book() { char title[50]; int i, found = 0; printf("Enter book title: "); scanf("%s", title); for (i = 0; i < num_books; i++) { if (strcmp(title, books[i].title) == 0) { printf("Title: %s\nAuthor: %s\nCopies: %d\n", books[i].title, books[i].author, books[i].copies); found = 1; break; } } if (!found) { printf("Book not found!\n"); } } void delete_book() { char title[50]; int i, found = 0; printf("Enter book title: "); scanf("%s", title); for (i = 0; i < num_books; i++) { if (strcmp(title, books[i].title) == 0) { books[i] = books[num_books - 1]; num_books--; found = 1; break; } } if (found) { printf("Book deleted successfully!\n"); } else { printf("Book not found!\n"); } } void borrow_book() { char title[50]; int i, j, found = 0, member_id; printf("Enter book title: "); scanf("%s", title); for (i = 0; i < num_books; i++) { if (strcmp(title, books[i].title) == 0) { if (books[i].copies == 0) { printf("All copies of this book are currently borrowed!\n"); return; } printf("Enter member ID: "); scanf("%d", &member_id); for (j = 0; j < num_members; j++) { if (member_id == j) { if (members[j].num_books_borrowed == MAX_BOOKS) { printf("Error: member has borrowed maximum number of books!\n"); return; } members[j].books_borrowed[members[j].num_books_borrowed] = i; members[j].num_books_borrowed++; books[i].copies--; printf("Book borrowed successfully!\n"); found = 1; break; } } if (!found) { printf("Member not found!\n"); } break; } } if (!found) { printf("Book not found!\n"); } } void return_book() { char title[50]; int i, j, found = 0, member_id; printf("Enter book title: "); scanf("%s", title); for (i = 0; i < num_books; i++) { if (strcmp(title, books[i].title) == 0) { printf("Enter member ID: "); scanf("%d", &member_id); for (j = 0; j < num_members; j++) { if (member_id == j) { int k, found_book = 0; for (k = 0; k < members[j].num_books_borrowed; k++) { if (members[j].books_borrowed[k] == i) { members[j].books_borrowed[k] = members[j].books_borrowed[members[j].num_books_borrowed - 1]; members[j].num_books_borrowed--; books[i].copies++; printf("Book returned successfully!\n"); found_book = 1; break; } } if (!found_book) { printf("Error: member has not borrowed this book!\n"); } found = 1; break; } } if (!found) { printf("Member not found!\n"); } break; } } if (!found) { printf("Book not found!\n"); } } void add_member() { if (num_members == MAX_MEMBERS) { printf("Error: member database is full\n"); return; } printf("Enter member name: "); scanf("%s", members[num_members].name); printf("Enter member email: "); scanf("%s", members[num_members].email); members[num_members].num_books_borrowed = 0; num_members++; printf("Member added successfully!\n"); } void search_member() { char name[50]; int i, found = 0; printf("Enter member name: "); scanf("%s", name); for (i = 0; i < num_members; i++) { if (strcmp(name, members[i].name) == 0) { printf("Name: %s\nEmail: %s\n", members[i].name, members[i].email); found = 1; break; } } if (!found) { printf("Member not found!\n"); } } void delete_member() { char name[50]; int i, found = 0; printf("Enter member name: "); scanf("%s", name); for (i = 0; i < num_members; i++) { if (strcmp(name, members[i].name) == 0) { members[i] = members[num_members - 1]; num_members--; found = 1; break; } } if (found) { printf("Member deleted successfully!\n"); } else { printf("Member not found!\n"); } } void borrow_info() { int i, j; printf("Enter member ID: "); scanf("%d", &i); printf("Name: %s\nEmail: %s\nBooks borrowed:\n", members[i].name, members[i].email); for (j = 0; j < members[i].num_books_borrowed; j++) { printf("%s\n", books[members[i].books_borrowed[j]].title); } } int main() { int choice; while (1) { printf("\n1. Add book\n2. Search book\n3. Delete book\n4. Borrow book\n5. Return book\n6. Add member\n7. Search member\n8. Delete member\n9. Borrowing info\n10. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: add_book(); break; case 2: search_book(); break; case 3: delete_book(); break; case 4: borrow_book(); break; case 5: return_book(); break; case 6: add_member(); break; case 7: search_member(); break; case 8: delete_member(); break; case 9: borrow_info(); break; case 10: exit(0); default: printf("Invalid choice!\n"); } } return 0; } ``` 在上面的代码中,我们使用了两个结构体Book和Member来分别存储图书和会员的信息。在各个功能函数中,我们使用了循环和条件语句来实现对图书和会员的增删查改等操作。我们使用了scanf函数来从用户输入中读取数据,使用printf函数来向用户输出信息。最后,我们使用了一个菜单循环来实现用户与程序的交互。

相关推荐

最新推荐

recommend-type

C语言图书管理系统简洁版

主要为大家详细介绍了C语言图书管理系统简洁版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

数据结构课程设计—图书借阅管理系统的设计与实现

本设计是用C语言来实现编程,用SQL SERVER 编写数据库。 设计要求:针对计算机系本科课程,...1) 图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2) 会员管理(增加会员、查询会员、删除会员、借书信息);
recommend-type

大一C语言课程设计图书信息管理系统.doc

大一C语言课程设计图书信息管理系统.doc
recommend-type

中南大学C语言课程设计图书管理系统

制作图书管理系统,使其能实现对图书进行编号管理,实现查阅、修改、增删、保存文件、打开文件、统计等功能。
recommend-type

c语言 图书管理系统课程设计说明书

c语言 图书管理系统课程设计说明书 目 录 一、系统功能 8 1、系统总功能 8 2、系统总框架 9 二、功能模块的描述 9 1.数据结构 9 2.main()主函数 10 3.menu()主菜单 14 4.login()口令函数 16 5.Create()创建图书...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。