C语言实现图书馆管理系统

打印 上一主题 下一主题

主题 858|帖子 858|积分 2574

该程序使用布局体`Book`来表现图书,其中包罗书名、作者、出版商、出版年份和可用性信息。`bookList`数组存储所有图书,`numBooks`变量存储当前图书数目。
  程序实现了以下功能:
  - 添加书籍:向数组中添加一本书籍,输入书名、作者、出版商和出版年份;
  - 搜索书籍:根据书名查找图书,并显示该书的详细信息;
  - 显示所有书籍:显示所有图书的列表,包括书名、作者、出版商、出版年份和可用性信息;
  - 借书:根据书名查找图书,并将其标记为不可用;
  - 还书:根据书名查找图书,并将其标记为可用。
  当添加的书籍凌驾数组巨细时,程序将提示图书馆已满。当搜索到的书籍不存在或已经借出时,程序将相应提示。
  该程序使用循环菜单,用户可以重复实行上述操纵,直到选择退出。
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX_BOOKS 100
  5. typedef struct Book {
  6.     char title[50];
  7.     char author[50];
  8.     char publisher[50];
  9.     int year;
  10.     int available;
  11. } Book;
  12. Book bookList[MAX_BOOKS];
  13. int numBooks = 0;
  14. void displayMenu() {
  15.     printf("Library Management System\n");
  16.     printf("=========================\n");
  17.     printf("1. Add a book\n");
  18.     printf("2. Search for a book\n");
  19.     printf("3. Display all books\n");
  20.     printf("4. Borrow a book\n");
  21.     printf("5. Return a book\n");
  22.     printf("6. Exit\n");
  23.     printf("Enter your choice: ");
  24. }
  25. void addBook() {
  26.     if (numBooks >= MAX_BOOKS) {
  27.         printf("Library is full.\n");
  28.         return;
  29.     }
  30.     printf("Enter book title: ");
  31.     scanf("%s", bookList[numBooks].title);
  32.     printf("Enter book author: ");
  33.     scanf("%s", bookList[numBooks].author);
  34.     printf("Enter book publisher: ");
  35.     scanf("%s", bookList[numBooks].publisher);
  36.     printf("Enter book publication year: ");
  37.     scanf("%d", &bookList[numBooks].year);
  38.     bookList[numBooks].available = 1;
  39.     numBooks++;
  40.     printf("Book added successfully.\n");
  41. }
  42. void searchBook() {
  43.     char title[50];
  44.     printf("Enter book title: ");
  45.     scanf("%s", title);
  46.     for (int i = 0; i < numBooks; i++) {
  47.         if (strcmp(title, bookList[i].title) == 0) {
  48.             printf("Title: %s\n", bookList[i].title);
  49.             printf("Author: %s\n", bookList[i].author);
  50.             printf("Publisher: %s\n", bookList[i].publisher);
  51.             printf("Publication Year: %d\n", bookList[i].year);
  52.             printf("Availability: %s\n", bookList[i].available ? "Yes" : "No");
  53.             return;
  54.         }
  55.     }
  56.     printf("Book not found.\n");
  57. }
  58. void displayBooks() {
  59.     printf("Title\tAuthor\tPublisher\tPublication Year\tAvailability\n");
  60.     for (int i = 0; i < numBooks; i++) {
  61.         printf("%s\t%s\t%s\t%d\t%s\n", bookList[i].title, bookList[i].author, bookList[i].publisher, bookList[i].year, bookList[i].available ? "Yes" : "No");
  62.     }
  63. }
  64. void borrowBook() {
  65.     char title[50];
  66.     printf("Enter book title: ");
  67.     scanf("%s", title);
  68.     for (int i = 0; i < numBooks; i++) {
  69.         if (strcmp(title, bookList[i].title) == 0) {
  70.             if (bookList[i].available) {
  71.                 bookList[i].available = 0;
  72.                 printf("Book borrowed successfully.\n");
  73.             } else {
  74.                 printf("Book not available.\n");
  75.             }
  76.             return;
  77.         }
  78.     }
  79.     printf("Book not found.\n");
  80. }
  81. void returnBook() {
  82.     char title[50];
  83.     printf("Enter book title: ");
  84.     scanf("%s", title);
  85.     for (int i = 0; i < numBooks; i++) {
  86.         if (strcmp(title, bookList[i].title) == 0) {
  87.             if (!bookList[i].available) {
  88.                 bookList[i].available = 1;
  89.                 printf("Book returned successfully.\n");
  90.             } else {
  91.                 printf("Book already available.\n");
  92.             }
  93.             return;
  94.         }
  95.     }
  96.     printf("Book not found.\n");
  97. }
  98. int main() {
  99.     int choice;
  100.    
  101.     do {
  102.         displayMenu();
  103.         scanf("%d", &choice);
  104.         switch (choice) {
  105.             case 1:
  106.                 addBook();
  107.                 break;
  108.             case 2:
  109.                 searchBook();
  110.                 break;
  111.             case 3:
  112.                 displayBooks();
  113.                 break;
  114.             case 4:
  115.                 borrowBook();
  116.                 break;
  117.             case 5:
  118.                 returnBook();
  119.                 break;
  120.             case 6:
  121.                 printf("Goodbye.\n");
  122.                 break;
  123.             default:
  124.                 printf("Invalid choice.\n");
  125.                 break;
  126.             }
  127.         } while (choice != 6);
  128.     return 0;
  129. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表