永发信息网

小型图书馆管理系统c语言源代码

答案:2  悬赏:10  手机版
解决时间 2021-02-26 20:47
要求:(1) 存入图书信息:书名、书号、出版社、出版时间、借阅人,如果未借出,借阅人为NULL,借阅日期(长整型)
(2) 完成借书功能,修改借书信息。
(3)假设借书时间为30天,输出所有超期的借阅人和图书。
(4)删除图书,其余图书数据前移;
最佳答案
这都不会,一年时间白学了吗?用数组或者结构体 定义书本信息, 2,3,4写个独立函数 算法 主函数调用。
全部回答
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> typedef int bool; typedef struct bookinfo { char number[15]; char name[30]; float price; char auther[20]; bool isexit; char lendername[20]; char lendersex[2]; char lendernum[15]; }bookinfo; void menu() { printf("\n\n\n\n\n\n\n"); printf("\t\t\t图书管理系统\n"); printf("\t\t\t1:新进图书基本信息的输入\n"); printf("\t\t\t2:显示全部记录\n"); printf("\t\t\t3:根据图书名称查询图书基本信息\n"); printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n"); printf("\t\t\t5:按照图书名称从小大到排序\n"); printf("\t\t\t6:统计某价格以上的图书数量\n"); printf("\t\t\t7:列出所有未借出去的图书信息\n"); printf("\t\t\t8:退出\n"); } void choice_1_input_new() { char choice; file *p; bookinfo newbook; system("cls"); while(1) { printf("输入图书编号:"); gets(newbook.number); printf("输入图书名称:"); gets(newbook.name); printf("输入图书单价:"); scanf("%f",&newbook.price); while(getchar()!=&apos;\n&apos;); printf("输入图书的作者:"); gets(newbook.auther); printf("输入借书人姓名:"); gets(newbook.lendername); printf("输入借书人性别:"); gets(newbook.lendersex); printf("输入借书人学号:"); gets(newbook.lendernum); printf("是否保存该条书目?(y/n)\n"); if(choice==&apos;y&apos;||choice==&apos;y&apos;) { newbook.isexit=1; p=fopen("c:\\bookinfo.data","ab"); fwrite(&newbook,sizeof(bookinfo),1,p); fclose(p); printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n"); } else { printf("\n本条书目未保存!\n"); } printf("\n是否继续添加书目?(y/n)\n"); while(choice!=&apos;y&apos;&&choice!=&apos;y&apos;&&choice!=&apos;n&apos;&&choice!=&apos;n&apos;) if(choice==&apos;y&apos;||choice==&apos;y&apos;) continue; else break; } } void choice_2_display_all() { file *p; int n; bookinfo bookinfo[100]; int booknumber=0; system("cls"); p=fopen("c:\\bookinfo.data","rb"); while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(bookinfo),1,p); booknumber++; } fclose(p); booknumber--; if(booknumber==0) { printf("没有任何图书信息!\n\n"); } else { n=0; printf(" 图书信息如下\n"); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); while(n<booknumber) { printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isexit,bookinfo[n].lendername, bookinfo[n].lendersex,bookinfo[n].lendernum); n++; } } printf("\n\n按任意键回到主菜单!\n"); } void choice_3_search_according_name() { char search[20]=""; int n; file *p; char choice; bookinfo bookinfo[100]; int booknumber=0; system("cls"); p=fopen("c:\\bookinfo.data","rb"); while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(bookinfo),1,p); booknumber++; } booknumber--; fclose(p); while(1) { printf("输入要查询的书本名称:"); gets(search); if(booknumber==0) { printf("书库中没有任何信息!\n\n"); printf("按任意键回到主菜单!\n\n"); getch(); break; } else { for(n=0;n<booknumber;n++) if(strcmp(bookinfo[n].name,search)==0) { printf("该书的详细信息如下:\n"); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isexit,bookinfo[n].lendername, bookinfo[n].lendersex,bookinfo[n].lendernum); break; } if(n>=booknumber) printf("没有查找该书的任何信息!\n"); printf("\n\n是否继续查询?(y/n)\n"); choice=getch(); while(choice!=&apos;y&apos;&&choice!=&apos;y&apos;&&choice!=&apos;n&apos;&&choice!=&apos;n&apos;) choice=getch(); if(choice==&apos;y&apos;||choice==&apos;y&apos;) continue; else break; } } } void choice_4_delete_according_name() { char search[20]=""; int n,i; file *p; char choice; bookinfo bookinfo[100]; int booknumber; system("cls"); while(1) { printf("输入要删除的书本名称:"); gets(search); p=fopen("c:\\bookinfo.data","rb"); booknumber=0; while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(bookinfo),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("书库中没有任何信息!\n\n"); printf("按任意键回到主菜单!\n\n"); getch(); break; } else { for(n=0;n<booknumber;n++) if(strcmp(bookinfo[n].name,search)==0) { break; } if(n>=booknumber) printf("没有查找该书的任何信息!\n"); else { printf("是否确认需要删除该条书目?(y/n)"); choice=getch(); while(choice!=&apos;y&apos;&&choice!=&apos;y&apos;&&choice!=&apos;n&apos;&&choice!=&apos;n&apos;) choice=getch(); if(choice==&apos;y&apos;||choice==&apos;y&apos;) { for(i=n;i<booknumber-1;i++) bookinfo[i]=bookinfo[i+1]; booknumber--; p=fopen("c:\\bookinfo.data","wb"); for(n=0;n<booknumber;n++) fwrite(&bookinfo[n],sizeof(bookinfo),1,p); fclose(p); printf("删除成功!\n"); } else printf("\n\n该条书目没有被删除!"); } printf("\n\n是否继续进行删除操作?(y/n)\n"); choice=getch(); while(choice!=&apos;y&apos;&&choice!=&apos;y&apos;&&choice!=&apos;n&apos;&&choice!=&apos;n&apos;) choice=getch(); if(choice==&apos;y&apos;||choice==&apos;y&apos;) continue; else break; } } } void choice_5_sort_according_name() { file *p; int m,n; bookinfo temp; bookinfo bookinfo[100]; int booknumber; p=fopen("c:\\bookinfo.data","rb"); booknumber=0; system("cls"); while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(bookinfo),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("没有任何图书信息!\n\n"); } else { for(m=0;m<booknumber-1;m++) for(n=m+1;n<booknumber;n++) if(strcmp(bookinfo[m].name,bookinfo[n].name)>0) { temp=bookinfo[m]; bookinfo[m]=bookinfo[n]; bookinfo[n]=temp; } p=fopen("c:\\bookinfo.data","wb"); for(m=0;m<booknumber;m++) fwrite(&bookinfo[m],sizeof(bookinfo),1,p); fclose(p); printf("\n\n完成排序!\n\n"); } printf("按任意键回到主菜单!\n"); getch(); } void choice_6_display_high_price() { float price; file *p; int n; int count=0; bookinfo bookinfo[100]; int booknumber; system("cls"); printf("请输入价格:"); scanf("%f",&price); p=fopen("c:\\bookinfo.data","rb"); booknumber=0; while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(bookinfo),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("没有任何图书信息!\n\n"); } else { for(n=0;n<booknumber;n++) { if(bookinfo[n].price>=price) count++; } if(count==0) printf("书库中没有比%.1f&#36;价格高的图书!",price); else { printf(" 价格高于%.1f&#36;的图书信息如下\n",price); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); for(n=0;n<booknumber;n++) { if(bookinfo[n].price>=price) printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isexit,bookinfo[n].lendername, bookinfo[n].lendersex,bookinfo[n].lendernum); } } } printf("\n\n按任意键回到主菜单!\n"); getch(); } void choice_7_display_according_exitflag() { file *p; int n; int count=0; bookinfo bookinfo[100]; int booknumber; system("cls"); booknumber=0; p=fopen("c:\\bookinfo.data","rb"); while(!feof(p)) { fread(&bookinfo[booknumber],sizeof(bookinfo),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("书库中没有任何书目存在!\n"); } else { for(n=0;n<booknumber;n++) if(bookinfo[n].isexit==1) count++; if(count==0) printf("书库中的书籍全部借出!\n"); else { printf("书库中未被借出的图书信息如下:\n\n"); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); for(n=0;n<booknumber;n++) if(bookinfo[n].isexit==1) { printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo[n].number,bookinfo[n].name,bookinfo[n].price, bookinfo[n].auther,bookinfo[n].isexit,bookinfo[n].lendername, bookinfo[n].lendersex,bookinfo[n].lendernum); } } } printf("\n按任意键返回主菜单!\n"); getch(); } void main() { char choice; clock_t tm; file *p; if((p=fopen("c:\\bookinfo.data","rb"))==null) { p=fopen("c:\\bookinfo.data","wb"); fclose(p); } while(1) { system("cls"); menu(); choice=getch(); switch(choice) { case &apos;1&apos;:choice_1_input_new();break; case &apos;2&apos;:choice_2_display_all();break; case &apos;3&apos;:choice_3_search_according_name();break; case &apos;4&apos;:choice_4_delete_according_name();break; case &apos;5&apos;:choice_5_sort_according_name();break; case &apos;6&apos;:choice_6_display_high_price();break; case &apos;7&apos;:choice_7_display_according_exitflag();break; case &apos;8&apos;:printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n");getch();return; default: printf("\n\n\t\t\t请输入菜单中的数字!(1~8)"); tm=clock(); while(clock()<tm+1800); break; } } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么的诚叫什么诚
职业装研究室大武汉旗舰店这个地址在什么地方
他不敢回家,因为他没卖掉一根火柴,也没挣到一
AC220V转DC220要些什么电子元件,
寒桥快递综合服务中心怎么去啊,有知道地址的
【死亡选择题】...驾照今天在做模拟题的时候
名爵3机械钥匙和遥控钥匙都开不了门
wowZAM卡BUG不会被封号吧? 听说今天拿熊的已
集美育鑫美的专卖店在什么地方啊,我要过去处
这些是哪个国家的硬币要详细点说明
短文开头说詹天佑是我国杰出的爱国工程师。结
安徽向日葵建筑装饰设计有限公司我想知道这个
龙湾区到苍南灵溪青少年宫怎么走
一加6t手机怎么样,能和华为mate 10比吗?
洛阳轴承(金色橄榄城西南)在哪里啊,我有事要
推荐资讯
《危险废物焚烧污染控制标准》适用于除易爆和
补写出下列名篇名句中的空缺部分。(6分)(1
金华老年大学门诊部这个地址在什么地方,我要
我想考中南大学,能源与科学学院,供热供燃气
长期来看,微信会演变成什么样子?
飞机的哪个部位相对安全?
苹果手机误删邮箱怎么办
高级战争如何关闭战斗画面
日本的12点等于中国几点?
【国家国防动员委员会】根据国家国防动员委员
天灾来临3.5法师怎么无限触发神罚之灵?
我突然一下就登录不进去了,微信只要一登录就
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?