1)问题描述:
本系统可以用来进行简单的图书信息管理,具体管理操作包括t图书信息的录入、添加、显示、查找、删除、修改、排序和保存等功能。
2)功能描述:
(1)本系统采用结构体数组,每个数据的结构应当包括书名、书号、作者名、种类名、出版单位、出版时间、价格、图书册数、借阅。
(2)系统功能:
a. 图书入库:即添加新的图书信息记录。
b. 图书显示: 按图书编号顺序或按图书名称显示图书信息。
(可以扩充功能,如添加按图书种类显示、按作者名显示等。)
c. 图书查询:输入图书名称或图书编号则显示相关图书的信息
(可以扩充功能,如添加按图书种类查询、按作者名查询等。)
d. 图书修改:即修改已录入的图书信息记录。
e. 图书报废:即删除不需要的图书信记录息。
f. 图书信息保存: 当添加、修改、删除信息后,应该将其存入文件。
g.退出系统。
(3)系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
3)测试数据:
图书数目>=20
推荐回答
#include <stdio.h>#include <string.h>#define Total 20 typedef struct Time { int year; int month; int day;}Time; struct Book { int bookID; char bookName[20]; char authorName[20]; int groupID; char publishHouse[20]; Time publishTime; double price; int isVisible; //1-正常情况, 0-被删除} book[Total]; int count = 0; void inputInfo(){ printf("Please input the number of books:\n"); scanf("%d", &count); for (int i = 0; i < count; i ++) { printf("Book %d:\n", i + 1); printf("book ID:"); scanf("%d", &book[i].bookID); getchar(); printf("book name:"); scanf("%s", book[i].bookName); getchar(); printf("author name:"); scanf("%s", book[i].authorName); printf("group ID:"); scanf("%d", &book[i].groupID); getchar(); printf("publishing house:"); scanf("%s", book[i].publishHouse); printf("publishing time:"); scanf("%d.%d.%d", &book[i].publishTime.year, &book[i].publishTime.month, &book[i].publishTime.day); printf("book price:"); scanf("%lf", &book[i].price); book[i].isVisible = 1; } printf("Input Complete!\n");} void outputInfo(){ printf("BookID\tBookName\tAuthor\tGroupID\tPublishHouse\tTime\tprice\n"); for (int i = 0; i < count; i ++) { if (book[i].isVisible == 1) { printf("%d\t", book[i].bookID); printf("%s\t", book[i].bookName); printf("%s\t", book[i].authorName); printf("%d\t", book[i].groupID); printf("%s\t", book[i].publishHouse); printf("%d.%d.%d\t",book[i].publishTime.year, book[i].publishTime.month, book[i].publishTime.day); printf("%.2lf\t", book[i].price); printf("\n"); } }} void searchByBookName(){ char name[20]; printf("Please input the name of the book:"); scanf("%s", name); int i; for (i = 0; i < count; i ++) { if (strcmp(book[i].bookName, name) == 0 && book[i].isVisible == 1) { printf("-----------------------------------------------\n"); printf("-- You are viewing the book: %s\n", name); printf("-- Book ID: %d\n", book[i].bookID); printf("-- Author: %s\n", book[i].authorName); printf("-- Group ID: %d\n", book[i].groupID); printf("-- Publishing House: %s\n", book[i].publishHouse); printf("-- Publishing Time: %d.%d.%d\n",book[i].publishTime.year, book[i].publishTime.month, book[i].publishTime.day); printf("-- Book Price: %lf\n", book[i].price); printf("-----------------------------------------------\n"); return; } } if (i == count) printf("Not find the book you want.\n");} void searchByAuthorName(){ char name[20]; printf("Please input the author's name of the book:"); scanf("%s", name); int i; for (i = 0; i < count; i ++) { if (strcmp(book[i].authorName, name) == 0 && book[i].isVisible == 1) { printf("-----------------------------------------------\n"); printf("-- You are viewing the book: %s\n", name); printf("-- Book ID: %d\n", book[i].bookID); printf("-- Author: %s\n", book[i].authorName); printf("-- Group ID: %d\n", book[i].groupID); printf("-- Publishing House: %s\n", book[i].publishHouse); printf("-- Publishing Time: %d.%d.%d\n",book[i].publishTime.year, book[i].publishTime.month, book[i].publishTime.day); printf("-- Book Price: %lf\n", book[i].price); printf("-----------------------------------------------\n"); return; } } if (i == count) printf("Not find the book you want.\n");} void quertBook(){ int choice; printf("Do you want to search by book name or by author name? 0-book,1-author:"); scanf("%d", &choice); if (choice == 0) searchByBookName(); if (choice == 1) searchByAuthorName();} void deleteByBookName(){ char name[20]; printf("Please input the name of the book:"); scanf("%s", name); int i; for (i = 0; i < count; i ++) { if (strcmp(book[i].bookName, name) == 0 && book[i].isVisible == 1) { book[i].isVisible = 0; printf("Delete Complete!\n"); return; } } if (i == count) printf("The book doesn't exist.\n");} void deleteByBookID(){ int ID; printf("Please input the ID of the book:"); scanf("%d", &ID); int i; for (i = 0; i < count; i ++) { if (book[i].bookID == ID && book[i].isVisible == 1) { book[i].isVisible = 0; printf("Delete Complete!\n"); return; } } if (i == count) printf("The book doesn't exist.\n"); } void deleteBook(){ int choice; printf("Do you want to delete by book name or by book ID? 0-name,1-ID:"); scanf("%d", &choice); if (choice == 0) deleteByBookName(); if (choice == 1) deleteByBookID();} void modifyByBookName(){ char name[20]; printf("Please input the name of the book:"); scanf("%s", name); int i; for (i = 0; i < count; i ++) { if (strcmp(book[i].bookName, name) == 0 && book[i].isVisible == 1) { printf("You are modifying the book: %s", book[i].bookName); printf("Please reinput the entire info of the book:\n"); printf("Book %d:\n", i + 1); printf("book ID:"); scanf("%d", &book[i].bookID); getchar(); printf("book name:"); scanf("%s", book[i].bookName); getchar(); printf("author name:"); scanf("%s", book[i].authorName); printf("group ID:"); scanf("%d", &book[i].groupID); getchar(); printf("publishing house:"); scanf("%s", book[i].publishHouse); printf("publishing time:"); scanf("%d.%d.%d", &book[i].publishTime.year, &book[i].publishTime.month, &book[i].publishTime.day); printf("book price:"); scanf("%lf", &book[i].price); book[i].isVisible = 1; printf("Modification Complete!\n"); return; } } if (i == count) printf("The book doesn't exist.\n");} void modifyByBookID(){ int ID; printf("Please input the ID of the book:"); scanf("%d", &ID); int i; for (i = 0; i < count; i ++) { if (book[i].bookID == ID && book[i].isVisible == 1) { printf("You are modifying the book: %s", book[i].bookName); printf("Please reinput the entire info of the book:\n"); printf("Book %d:\n", i + 1); printf("book ID:"); scanf("%d", &book[i].bookID); getchar(); printf("book name:"); scanf("%s", book[i].bookName); getchar(); printf("author name:"); scanf("%s", book[i].authorName); printf("group ID:"); scanf("%d", &book[i].groupID); getchar(); printf("publishing house:"); scanf("%s", book[i].publishHouse); printf("publishing time:"); scanf("%d.%d.%d", &book[i].publishTime.year, &book[i].publishTime.month, &book[i].publishTime.day); printf("book price:"); scanf("%lf", &book[i].price); book[i].isVisible = 1; printf("Modification Complete!\n"); return; } } if (i == count) printf("The book doesn't exist.\n");} void modifyBook(){ int choice; printf("Do you want to modify by book name or by book ID? 0-name,1-ID:"); scanf("%d", &choice); if (choice == 0) modifyByBookName(); if (choice == 1) modifyByBookID();} void insertBook(){ printf("Please input the info of the book you want to insert\n"); printf("Book %d:\n", count + 1); printf("book ID:"); scanf("%d", &book[count].bookID); getchar(); printf("book name:"); scanf("%s", book[count].bookName); getchar(); printf("author name:"); scanf("%s", book[count].authorName); printf("group ID:"); scanf("%d", &book[count].groupID); getchar(); printf("publishing house:"); scanf("%s", book[count].publishHouse); printf("publishing time:"); scanf("%d.%d.%d", &book[count].publishTime.year, &book[count].publishTime.month, &book[count].publishTime.day); printf("book price:"); scanf("%lf", &book[count].price); book[count].isVisible = 1; count ++; printf("Insert Complete!\n");} void menu(){ printf("---------------------------------\n"); printf("-- 1 - input data --\n"); printf("-- 2 - output data --\n"); printf("-- 3 - search for a book --\n"); printf("-- 4 - delete a book --\n"); printf("-- 5 - modify info of a book --\n"); printf("-- 6 - insert data --\n"); printf("-- 0 - exit --\n"); printf("---------------------------------\n"); } int main() { int choice; menu(); scanf("%d", &choice); while (choice != 0){ switch (choice) { case 1: inputInfo(); break; case 2: outputInfo(); break; case 3: quertBook(); break; case 4: deleteBook(); break; case 5: modifyBook(); break; case 6: insertBook(); break; default: break; } menu(); scanf("%d", &choice); } return 0;}