图书管理程序设计
设计结构体数组,结构中包含数据为:图书编号、图书名称、作者姓名,出版社名、出版日期。设计各个函数,分别实现以下功能:
(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;
}
这个程序使用结构体数组来存储图书信息,提供了三个函数来实现不同的功能。在主函数中,通过菜单选择来调用这些函数。你可以根据需要进行修改和扩展。 请注意,这只是一个示例程序,可能还需要根据具体需求进行进一步的修改和完善。例如,可以添加删除图书的功能、保存图书信息到文件等。