書籍管理プログラミング
設計構造配列。この構造に含まれるデータは、書籍番号、書籍名、著者名、出版社名、出版日です。以下の機能を実現するように各機能を設計します。
(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;
}
このプログラムは、構造体配列を使用して書籍情報を格納し、さまざまな機能を実装するための 3 つの関数を提供します。main 関数では、これらの関数はメニュー選択を通じて呼び出されます。必要に応じて変更および拡張できます。これは単なるサンプル プログラムであり、特定のニーズに基づいてさらに変更や改善が必要になる場合があることに注意してください。たとえば、書籍を削除したり、書籍情報をファイルに保存したりする機能を追加できます。