书店通常使用个人电脑设置一个清单来管理书籍的存货情况,该清单记录每本书籍的书名,作者,出版社,在清单中的位置等信息。当顾客想要买某本书时,只要输入书籍的名称和作者,系统就会显示该书籍是否在清单中,如果书籍在清单中,系统会显示书籍的详细信息以及库存数量,如果不在清单中,也会显示相应的提示信息。如果顾客想买的书籍数量在库存的范围内,系统会计算总价格并显示出来,否则,会提示:所需数量不在库存范围内,现在该书籍的数量。
根据以上的分析,编程要求:
1.用结构体自行定义几本书籍,要求包括书籍名称,作者,出版社,出版日期,价格,在目录中的位置;并将书籍信息保存至文件。
2.使用链表实现书籍信息修改、删除操作,并将更新后的信息保存至文件;
3.当从键盘输入某本书的名称和作者姓名,如果能查询到则显示该书籍的所有信息,并提示“请输入所需数量”,如果所需数量在库存范围内,则显示总价,否则,显示“所需数量不在库存范围内”,接着继续提示顾客是否还想买其他书籍,如果输入“y”或“Y”表示继续输入下一本书的名称和作者姓名,进行下一轮查询;如果不能查询到该书籍,则显示“谢谢,再见!”,依次类推,不断循环。
4.最后要显示顾客想购买 的书籍的信息及总价。
书店存货清单用结构体链表文件
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2022-01-03 11:23关注
参考:
#include<stdio.h> //预处理 #include<string.h> #include<stdlib.h> #include<conio.h>//定义了通过控制台进行数据输入和数据输出的函数 //定义结构体 struct book { int id; char name[31]; //书名 char author[27]; //作者 char publish[31];//出版社 int store; //库存 int total; //总数 int user[10]; int days[10]; }books[100]; int count=0; //显示整体标题标题函数 void page_title(char *menu_item) { printf("\t\t使用图书馆管理系统\n\n-%s-\n\n",menu_item); } //等待返回函数 void return_confirm() { printf("\n请按任意键返回……\n"); getch(); } void book_add() { int i; int n; system("cls"); //清屏 page_title("注册新书"); for(i=count;i<12;i++) { printf("序号:"); scanf("%d",&books[count].id); printf("书名:"); scanf("%s",&books[count].name); printf("作者:"); scanf("%s",&books[count].author); printf("出版社:"); scanf("%s",&books[count].publish); printf("数量:"); scanf("%d",&books[count].total); books[i].store=books[count].total; printf("\n"); count++; printf("输入0退出,非零继续新增:"); scanf("%d",&n); if(n==0) break; } } book_show() { int i,flag=0; system("cls"); for(i=0;i<100;i++) { if(strlen(books[i].publish)!=0) { printf("编号:%d\t ",books[i].id); printf("书名:%s\t ",books[i].name); printf("作者:%s\t ",books[i].author); printf("出版社:%s\t ",books[i].publish); printf("库存:%d\t",books[i].store); printf("总数:%d\n\n",books[i].total); flag=1; } } if(flag==0) { printf("没有找到相关书籍\n"); } getch(); return i; } int book_search() { int n,i,flag=0; char nam[30]; system("cls"); printf("请输入书名:"); scanf("%s",&nam); for(i=0;i<100;i++) { if(strcmp(books[i].name,nam)==0) { printf("序号:%d\t ",books[i].id); printf("书名:%s\t ",books[i].name); printf("作者:%s\t ",books[i].author); printf("出版社:%s\t ",books[i].publish); printf("存数:%d\t",books[i].store); printf("总数:%d\n",books[i].total); n=i; flag=1; getch(); break; } } if(flag==0) { printf("\n没有找到相关书籍\n"); getch(); return -1; } return n; } book_edit() { int i,id_change; system("cls"); page_title("修改图书信息:"); printf("输入要修改的图书id:"); scanf("%d",&id_change); for(i=0;i<100;i++) { if(books[i].id==id_change) { printf("修改书名:"); scanf("%s",&books[i].name); printf("修改作者:"); scanf("%s",&books[i].author); printf("修改出版社:"); scanf("%s",&books[i].publish); printf("修改数量:"); scanf("%d",&books[i].total); printf("修改图书信息成功\n"); books[i].store=books[i].total; return i; } } printf("\n没有找到相关信息\n"); getch(); return -1; } int book_del() { int i,num,j; system("cls"); page_title("删除图书"); printf("输入所要删除的书的id:"); scanf("%d",&num); for(i=0;i<100;i++) { if(books[i].id==num) { for(j=i;j<100;j++) { books[j].id=books[j+1].id; strcpy(books[j].name,books[j+1].name); strcpy(books[j].publish,books[j+1].publish); printf("该书已经删除了!\n"); getch(); return i; } } } printf("未找到相关记录\n"); getch();//暂停程序运行,等待键盘IO输入 return -1; } //借书 book_out() { int n,s,i,d; system("cls"); page_title("借阅图书"); n=book_search(); if(n!=-1&&books[n].store>0) { //赋初值,全为零 for(i=0;i<10;i++) { books[n].user[i]=0; books[n].days[i]=0; } printf("借书证序号:"); scanf("%d",&s); printf("输入可借天数:"); scanf("%d",&d); books[n].user[0]=s; books[n].days[0]=d; books[n].store--; // 书上这有何意义 // for(i=0;i<10;i++) // { // if(books[n].user[i]==0) // { // books[n].user[i]=0; // books[n].days[i]=0; // break; // } // books[n].store--; // } } else if(n!=-1&&books[n].store==0) { printf("此书已经完全借完\n\n"); getch(); } else; return_confirm(); } //归还图书 void book_in() { int n,s,i; page_title("归还图书"); n=book_search(); printf("%d",n); if(n!=-1&&books[n].store<books[n].total) { printf("借阅图书证列表\n"); for(i=0;i<10;i++) { if(books[n].user!=0) { printf("[%d]--%d天\n",books[n].user[i],books[n].days[i]); } printf("输入借书证号:"); scanf("%d",&s); for(i=0;i<10;i++) { if(books[n].user[i]==s) { books[n].store++; } } } } if(n!=-1&&books[n].store==books[n].total) { printf("全部归还\n"); } else if(n!=-1&&books[n].store<books[n].total) { printf("归还成功\n"); } else ; return_confirm(); } main() { menu:page_title("操作选单"); printf("用数字选择操作\n\n"); printf("\t\t1注册新书\t\t2显示图书\n"); printf("\t\t3查询图书信息\t\t4修改图书信息\n"); printf("\t\t5删除图书\t\t6借阅图书\n"); printf("\t\t7归还图书\t\t8退出系统\n"); printf("请按数字键:\n"); switch(getchar()) { case'1': book_add();break; case'2': book_show();break; case'3': book_search();break; case'4': book_edit();break; case'5': book_del();break; case'6': book_out();break; case'7': book_in();break; case'8': exit(0); } fflush(stdin); goto menu;//goto跳转语句 }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
- ¥15 电脑蓝屏logfilessrtsrttrail问题
- ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
- ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
- ¥15 Java+vue部署版本反编译
- ¥100 对反编译和ai熟悉的开发者。
- ¥15 带序列特征的多输出预测模型
- ¥15 Python 如何安装 distutils模块
- ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
- ¥15 资源泄露软件闪退怎么解决?