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

时间: 2023-10-20 16:41:59 浏览: 33
好的,以下是一个简单的C语言图书借阅管理系统的程序代码示例,您可以根据自己的需求进行修改和完善: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> //定义图书结构体 typedef struct Book { char id[10]; //图书编号 char name[50]; //图书名称 char author[50]; //图书作者 int amount; //图书数量 int borrowed; //借出数量 } Book; //定义会员结构体 typedef struct Member { char id[10]; //会员编号 char name[50]; //会员名称 int borrowedNum; //已借数量 } Member; //定义全局变量 Book books[100]; //图书数组 Member members[100]; //会员数组 int bookNum = 0; //图书数量 int memberNum = 0; //会员数量 //函数声明 void addBook(); void queryBook(); void deleteBook(); void borrowBook(); void returnBook(); void addMember(); void queryMember(); void deleteMember(); void queryBorrowed(); int main() { int choice; do { //显示菜单 printf("\n\nWelcome to the library management system!\n"); printf("1. Add book\n"); printf("2. Query book\n"); printf("3. Delete book\n"); printf("4. Borrow book\n"); printf("5. Return book\n"); printf("6. Add member\n"); printf("7. Query member\n"); printf("8. Delete member\n"); printf("9. Query borrowed books\n"); printf("0. Exit\n"); printf("Please enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: addBook(); break; case 2: queryBook(); break; case 3: deleteBook(); break; case 4: borrowBook(); break; case 5: returnBook(); break; case 6: addMember(); break; case 7: queryMember(); break; case 8: deleteMember(); break; case 9: queryBorrowed(); break; case 0: printf("Goodbye!\n"); break; default: printf("Invalid choice!\n"); break; } } while (choice != 0); return 0; } //添加图书 void addBook() { if (bookNum >= 100) { printf("The library is full!\n"); return; } printf("Please enter the book id: "); scanf("%s", books[bookNum].id); printf("Please enter the book name: "); scanf("%s", books[bookNum].name); printf("Please enter the author: "); scanf("%s", books[bookNum].author); printf("Please enter the amount: "); scanf("%d", &books[bookNum].amount); books[bookNum].borrowed = 0; bookNum++; printf("Add book successfully!\n"); } //查询图书 void queryBook() { char id[10]; printf("Please enter the book id: "); scanf("%s", id); for (int i = 0; i < bookNum; i++) { if (strcmp(books[i].id, id) == 0) { printf("id: %s name: %s author: %s amount: %d borrowed: %d\n", books[i].id, books[i].name, books[i].author, books[i].amount, books[i].borrowed); return; } } printf("Book not found!\n"); } //删除图书 void deleteBook() { char id[10]; printf("Please enter the book id: "); scanf("%s", id); for (int i = 0; i < bookNum; i++) { if (strcmp(books[i].id, id) == 0) { for (int j = i; j < bookNum - 1; j++) { books[j] = books[j + 1]; } bookNum--; printf("Delete book successfully!\n"); return; } } printf("Book not found!\n"); } //借书 void borrowBook() { char bookId[10]; char memberId[10]; printf("Please enter the book id: "); scanf("%s", bookId); printf("Please enter the member id: "); scanf("%s", memberId); //查找图书 int bookIndex = -1; for (int i = 0; i < bookNum; i++) { if (strcmp(books[i].id, bookId) == 0) { bookIndex = i; break; } } if (bookIndex == -1) { printf("Book not found!\n"); return; } //查找会员 int memberIndex = -1; for (int i = 0; i < memberNum; i++) { if (strcmp(members[i].id, memberId) == 0) { memberIndex = i; break; } } if (memberIndex == -1) { printf("Member not found!\n"); return; } //判断图书数量是否足够 if (books[bookIndex].amount - books[bookIndex].borrowed <= 0) { printf("The book has been borrowed out!\n"); return; } //借书 books[bookIndex].borrowed++; members[memberIndex].borrowedNum++; printf("Borrow book successfully!\n"); } //还书 void returnBook() { char bookId[10]; char memberId[10]; printf("Please enter the book id: "); scanf("%s", bookId); printf("Please enter the member id: "); scanf("%s", memberId); //查找图书 int bookIndex = -1; for (int i = 0; i < bookNum; i++) { if (strcmp(books[i].id, bookId) == 0) { bookIndex = i; break; } } if (bookIndex == -1) { printf("Book not found!\n"); return; } //查找会员 int memberIndex = -1; for (int i = 0; i < memberNum; i++) { if (strcmp(members[i].id, memberId) == 0) { memberIndex = i; break; } } if (memberIndex == -1) { printf("Member not found!\n"); return; } //还书 if (books[bookIndex].borrowed <= 0 || members[memberIndex].borrowedNum <= 0) { printf("No books borrowed!\n"); return; } books[bookIndex].borrowed--; members[memberIndex].borrowedNum--; printf("Return book successfully!\n"); } //添加会员 void addMember() { if (memberNum >= 100) { printf("The library is full!\n"); return; } printf("Please enter the member id: "); scanf("%s", members[memberNum].id); printf("Please enter the member name: "); scanf("%s", members[memberNum].name); members[memberNum].borrowedNum = 0; memberNum++; printf("Add member successfully!\n"); } //查询会员 void queryMember() { char id[10]; printf("Please enter the member id: "); scanf("%s", id); for (int i = 0; i < memberNum; i++) { if (strcmp(members[i].id, id) == 0) { printf("id: %s name: %s borrowedNum: %d\n", members[i].id, members[i].name, members[i].borrowedNum); return; } } printf("Member not found!\n"); } //删除会员 void deleteMember() { char id[10]; printf("Please enter the member id: "); scanf("%s", id); for (int i = 0; i < memberNum; i++) { if (strcmp(members[i].id, id) == 0) { for (int j = i; j < memberNum - 1; j++) { members[j] = members[j + 1]; } memberNum--; printf("Delete member successfully!\n"); return; } } printf("Member not found!\n"); } //查询已借阅图书 void queryBorrowed() { char memberId[10]; printf("Please enter the member id: "); scanf("%s", memberId); int memberIndex = -1; for (int i = 0; i < memberNum; i++) { if (strcmp(members[i].id, memberId) == 0) { memberIndex = i; break; } } if (memberIndex == -1) { printf("Member not found!\n"); return; } printf("Borrowed books of member %s:\n", memberId); for (int i = 0; i < bookNum; i++) { if (strcmp(books[i].id, memberId) == 0) { printf("id: %s name: %s author: %s amount: %d borrowed: %d\n", books[i].id, books[i].name, books[i].author, books[i].amount, books[i].borrowed); } } } ``` 注意:以上代码仅为示例,可能存在一些不足之处,如有需要,请根据自己的需求进行修改和完善。

最新推荐

recommend-type

基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip

基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip
recommend-type

基于python实现树莓派和传感器的植物生长环境评估信息系统

【作品名称】:基于python实现树莓派和传感器的植物生长环境评估信息系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于python实现树莓派和传感器的植物生长环境评估信息系统
recommend-type

优质资源,Yearning Mysql SQL审核平台

Yearning Mysql SQL审核平台(使用go语言)
recommend-type

c语言课程设计-职工资源管理系统.rar

void displayMenu() { printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("+ 职工资源管理系统 +\n"); printf("+ +\n"); printf("+ 1. 录入职工信息 +\n"); printf("+ 2. 显示全部职工信息 +\n"); printf("+ 3. 根据工号查询
recommend-type

华为OD机试D卷 - 来自异国的客人 - 免费看解析和代码.html

私信博主免费获取真题解析以及代码
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的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。