luc083.c¶
Problem Statement
Library menu-driven program (Add, Display, List by Author, List by Title, Count, List sorted).
Metadata¶
| Property | Detail |
|---|---|
| Author | Amit Dutta amitdutta4255@gmail.com |
| Date | 08 Feb 2026 |
| License | MIT License (See the LICENSE file for details) |
Actions¶
💡 You can print or save this file by opening Raw and using your browser.
Source Code¶
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct library
{
int acc_no;
char title[50];
char author[50];
float price;
int is_issued; // 1 = Yes, 0 = No
};
void add_book(struct library *lib, int *count);
void display_books(struct library *lib, int count);
void list_by_author(struct library *lib, int count);
void list_title_by_acc(struct library *lib, int count);
void sort_by_acc(struct library *lib, int count);
int main()
{
struct library books[100];
int count = 0;
int choice;
while (1)
{
printf("\n--- Library Menu ---\n");
printf("1. Add Book Info\n");
printf("2. Display Book Info\n");
printf("3. List books of given author\n");
printf("4. List title of specified accession number\n");
printf("5. List count of books\n");
printf("6. List books in order of accession number\n");
printf("7. Exit\n");
printf("Enter choice: ");
scanf("%d", &choice);
switch (choice)
{
case 1: add_book(books, &count); break;
case 2: display_books(books, count); break;
case 3: list_by_author(books, count); break;
case 4: list_title_by_acc(books, count); break;
case 5: printf("Total books in library: %d\n", count); break;
case 6: sort_by_acc(books, count); display_books(books, count); break;
case 7: exit(0);
default: printf("Invalid choice!\n");
}
}
return 0;
}
void add_book(struct library *lib, int *count)
{
printf("Enter Accession No, Title, Author, Price, Issued(1/0):\n");
scanf("%d", &lib[*count].acc_no);
scanf("%s", lib[*count].title); // Using %s for simplicity (no spaces)
scanf("%s", lib[*count].author);
scanf("%f", &lib[*count].price);
scanf("%d", &lib[*count].is_issued);
(*count)++;
}
void display_books(struct library *lib, int count)
{
int i;
for (i = 0; i < count; i++)
printf("%d: %s by %s ($%.2f) Issued: %d\n",
lib[i].acc_no, lib[i].title, lib[i].author, lib[i].price, lib[i].is_issued);
}
void list_by_author(struct library *lib, int count)
{
char author[50];
int i, found = 0;
printf("Enter author name: ");
scanf("%s", author);
for (i = 0; i < count; i++)
{
if (strcmp(lib[i].author, author) == 0)
{
printf("%s\n", lib[i].title);
found = 1;
}
}
if (!found) printf("No books found.\n");
}
void list_title_by_acc(struct library *lib, int count)
{
int acc, i;
printf("Enter Accession No: ");
scanf("%d", &acc);
for (i = 0; i < count; i++)
{
if (lib[i].acc_no == acc)
{
printf("Title: %s\n", lib[i].title);
return;
}
}
printf("Book not found.\n");
}
void sort_by_acc(struct library *lib, int count)
{
struct library temp;
int i, j;
for (i = 0; i < count - 1; i++)
{
for (j = 0; j < count - i - 1; j++)
{
if (lib[j].acc_no > lib[j + 1].acc_no)
{
temp = lib[j];
lib[j] = lib[j + 1];
lib[j + 1] = temp;
}
}
}
}