定义一个结构体数据类型,用来描述我校图书馆中图书的基本
信息,信息包含:
统一-书号(不超过13字符)
书名(不超过30字符)
作者(不超过20字符)
出版社(不超过30字符)
出版日期(包括:年、月、日)
价格(精确到分)
假设10本图书的基本信息已经存放到一一个数组中,要求:根
据输入的书号查询该书,若查找到,输出该书的所有基本信
息,若未查到,给出提示信息。
(要求定义以下函数实现相应功能,并在主函数中调用他们)
如果有人能解答一下的话,就真的帮大忙了,谢谢
定义一个结构体数据类型,用来描述学校图书馆中图书的基本信息
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注写了一个管理系统,你可以测试一下!
#include <stdio.h> #include <assert.h> #include <string.h> #define MAX 10 typedef struct book { char ID[15]; char BookName[30]; char Writer[20]; char Publish[30]; char date[12]; float price; }BOOK; typedef struct Contact { BOOK data[MAX];//存放数据 int sz;//有效数据个数 }Contact; void menu() { printf("*********************************\n"); printf("****** 1.add 2.show ******\n"); printf("****** 3.search 0.exit ******\n"); printf("*********************************\n"); } //增加书籍 void AddBook(Contact* pc) { if (pc->sz == MAX) { printf("书籍已满\n"); return; } printf("输入书号>"); scanf("%s", pc->data[pc->sz].ID); printf("输入书名>"); scanf("%s", pc->data[pc->sz].BookName); printf("输入作者>"); scanf("%s", pc->data[pc->sz].Writer); printf("输入出版社>"); scanf("%s", pc->data[pc->sz].Publish); printf("输入出版日期>"); scanf("%s", pc->data[pc->sz].date); printf("输入价格>"); scanf("%f", &pc->data[pc->sz].price); pc->sz++; printf("增加书籍成功\n"); } int FindBook(Contact* pc) { assert(pc); char ID[15] = { 0 }; scanf("%s", ID); int i = 0; for (i = 0; i < pc->sz; i++) { if (strcmp(ID, pc->data[i].ID) == 0) { return i; } } return -1; } //查找到后需要打印 void SearchBook(Contact* pc) { assert(pc); printf("输入需要查找的书号>"); int i = FindBook(pc); if (i != -1) { printf("找到书籍如下:\n"); printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5s\t\n", "书号", "书名", "作者", "出版社", "出版日期","价格"); printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5.2f\t\n", pc->data[i].ID, pc->data[i].BookName, pc->data[i].Writer, pc->data[i].Publish, pc->data[i].date,pc->data[i].price); } else { printf("该书籍不存在\n"); } } void ShowBook(Contact* pc) { assert(pc); if (pc->sz == 0) { printf("书架为空\n"); return; } printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5s\t\n", "书号", "书名", "作者", "出版社", "出版日期", "价格"); int i = 0; for (i = 0; i < pc->sz; i++) { printf("%-15s\t%-30s\t%-20s\t%-30s\t%-10s\t%-5.2f\t\n", pc->data[i].ID, pc->data[i].BookName, pc->data[i].Writer, pc->data[i].Publish, pc->data[i].date, pc->data[i].price); } } int main() { int input; Contact con = { 0 }; do { menu(); scanf("%d", &input); switch (input) { case 1: AddBook(&con); break; case 2: ShowBook(&con); break; case 3: SearchBook(&con); break; case 0: printf("退出系统\n"); break; default: printf("输入错误\n"); break; } } while (input); return 0; }效果如图
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用