图书管理程序设计设计结构体数组,结构中包含数据为:图书编号、图书名称、作者姓名,出版社名、出版日期。设计各个函数

发布时间:2024年01月06日

图书管理程序设计
设计结构体数组,结构中包含数据为:图书编号、图书名称、作者姓名,出版社名、出版日期。设计各个函数,分别实现以下功能:
(1)完成图书信息的输入并将录入的图书按书名的字母顺序排序 (2)显示所有图书的信息 (3)输入作者姓名,显示该作者编写的图书记录。 设计菜单,通过选择菜单调用以上各函数

下面是一个示例的C语言程序,实现了图书管理程序的设计要求:

#include <stdio.h>
#include <string.h>
 #define MAX_BOOKS 100
 struct Book {
? ? int bookId;
? ? char bookName[100];
? ? char authorName[100];
? ? char publisher[100];
? ? char publicationDate[100];
};
 struct Book library[MAX_BOOKS];
int numBooks = 0;
 void addBook() {
? ? struct Book newBook;
? ???printf("请输入图书编号:");
? ? scanf("%d", &newBook.bookId);
? ? printf("请输入图书名称:");
? ? scanf("%s", newBook.bookName);
? ? printf("请输入作者姓名:");
? ? scanf("%s", newBook.authorName);
? ? printf("请输入出版社名:");
? ? scanf("%s", newBook.publisher);
? ? printf("请输入出版日期:");
? ? scanf("%s", newBook.publicationDate);
? ???// 将新书插入到正确的位置,按照书名的字母顺序排序
? ? int i = numBooks - 1;
? ? while (i >= 0 && strcmp(newBook.bookName, library[i].bookName) < 0) {
? ?? ???library[i + 1] = library[i];
? ?? ???i--;
? ? }
? ? library[i + 1] = newBook;
? ???numBooks++;
? ???printf("图书添加成功!\n");
}
 void displayAllBooks() {
? ? if (numBooks == 0) {
? ?? ???printf("图书馆中没有任何图书。\n");
? ?? ???return;
? ? }
? ???printf("所有图书的信息如下:\n");
? ? for (int i = 0; i < numBooks; i++) {
? ?? ???printf("图书编号:%d\n", library[i].bookId);
? ?? ???printf("图书名称:%s\n", library[i].bookName);
? ?? ???printf("作者姓名:%s\n", library[i].authorName);
? ?? ???printf("出版社名:%s\n", library[i].publisher);
? ?? ???printf("出版日期:%s\n", library[i].publicationDate);
? ?? ???printf("------------\n");
? ? }
}
 void displayBooksByAuthor() {
? ? char authorName[100];
? ? printf("请输入作者姓名:");
? ? scanf("%s", authorName);
? ???printf("作者 %s 编写的图书记录如下:\n", authorName);
? ? int found = 0;
? ? for (int i = 0; i < numBooks; i++) {
? ?? ???if (strcmp(authorName, library[i].authorName) == 0) {
? ?? ?? ?? ?printf("图书编号:%d\n", library[i].bookId);
? ?? ?? ?? ?printf("图书名称:%s\n", library[i].bookName);
? ?? ?? ?? ?printf("出版社名:%s\n", library[i].publisher);
? ?? ?? ?? ?printf("出版日期:%s\n", library[i].publicationDate);
? ?? ?? ?? ?printf("------------\n");
? ?? ?? ?? ?found = 1;
? ?? ???}
? ? }
? ???if (!found) {
? ?? ???printf("没有找到该作者编写的图书记录。\n");
? ? }
}
 int main() {
? ? int choice;
? ???do {
? ?? ???printf("图书管理系统菜单\n");
? ?? ???printf("1. 录入图书并按书名排序\n");
? ?? ???printf("2. 显示所有图书的信息\n");
? ?? ???printf("3. 根据作者姓名显示图书记录\n");
? ?? ???printf("0. 退出系统\n");
? ?? ???printf("请输入您的选择:");
? ?? ???scanf("%d", &choice);
? ?? ?? ?switch (choice) {
? ?? ?? ?? ?case 1:
? ?? ?? ?? ?? ? addBook();
? ?? ?? ?? ?? ? break;
? ?? ?? ?? ?case 2:
? ?? ?? ?? ?? ? displayAllBooks();
? ?? ?? ?? ?? ? break;
? ?? ?? ?? ?case 3:
? ?? ?? ?? ?? ? displayBooksByAuthor();
? ?? ?? ?? ?? ? break;
? ?? ?? ?? ?case 0:
? ?? ?? ?? ?? ? printf("感谢使用图书管理系统,再见!\n");
? ?? ?? ?? ?? ? break;
? ?? ?? ?? ?default:
? ?? ?? ?? ?? ? printf("无效的选择,请重新输入。\n");
? ?? ???}
? ?? ?? ?printf("\n");
? ? } while (choice != 0);
? ???return 0;
}

这个程序使用结构体数组来存储图书信息,提供了三个函数来实现不同的功能。在主函数中,通过菜单选择来调用这些函数。你可以根据需要进行修改和扩展。 请注意,这只是一个示例程序,可能还需要根据具体需求进行进一步的修改和完善。例如,可以添加删除图书的功能、保存图书信息到文件等。

文章来源:https://blog.csdn.net/airen3339/article/details/135423940
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。