收藏 分销(赏)

图书管理系统数据结构.doc

上传人:w****g 文档编号:3844991 上传时间:2024-07-22 格式:DOC 页数:9 大小:28.50KB 下载积分:6 金币
下载 相关 举报
图书管理系统数据结构.doc_第1页
第1页 / 共9页
图书管理系统数据结构.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
struct book /*图书信息*/ { int num; /*书号*/ char name[10]; /*书名*/ char where[10]; /*所在书库*/ char author[15]; /*作者*/ char pub[20]; /*出版社*/ int count; /*数量*/ struct book *next; }; /*输出模块*/ void print(struct book *p0) { struct book *p; p=p0->next; printf("\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^"); printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); while(p!=NULL) { printf(PT); p=p->next; } getch(); } /*输入模块*/ struct book *creat() { struct book *head,*p1,*p2; int i=0; head=p2=(struct book *)malloc(N); head->next=NULL; printf("\n\n\t\t录入图书信息"); printf("\n\t---------------------------------------"); while(1) { p1=(struct book *)malloc(N); printf("\n 请输入图书编号(书号为0结束): "); scanf("%d",&p1->num); if(p1->num!=0) { printf("\n\n书名 所在书库 作者 出版社 图书数量\n"); scanf("%s%s%s%s%d",p1->name,p1->where,p1->author,p1->pub,&p1->count); p2->next=p1; p2=p1; i++; } else break; } p2->next=NULL; free(p1); printf("\n\t\t----------------------------------------"); printf("\n\t\t %d 种书录入完毕",i); getch(); return head; } /*查找模块*/ void find(struct book *p0) { char name[10]; int flag=1; struct book *p; p=p0->next; printf("请输入要查找的书名:\n"); scanf("%s",name); for(p=p0;p;p=p->next) if(strcmp(p->name,name)==0) { printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); printf(PT); flag=0; break; } if(flag) printf("\n 暂无此图书信息\n"); getch(); } /*删除模块*/ void del(struct book *p0) { char name[10]; int flag=1; struct book *p; p=p0; printf("请输入要删除的书名:\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->name,name)==0) { p0->next=p->next; /*后续节点连接到前驱节点之后*/ free(p); printf("\t该书资料已删除."); flag=0; break; } p0=p; p=p->next; } if(flag) printf("\n\t无此图书信息。"); getch(); } /*增加模块*/ void insert(struct book *p0) { struct book *p; p=(struct book *)malloc(N); while(1) { printf("\n 请输入要增加的图书编号(书号为0 退出): "); scanf("%d",&p->num); if(p->num!=0) { if(p0->next!=NULL&&p0->next->num==p->num) /*找到重号*/ { p=p->next; free(p); printf("\t该书已存在"); } else {printf("\n\n书名 所在书库 作者 出版社 图书数量\n"); scanf("%s%s%s%s%d",p->name,p->where,p->author,p->pub,&p->count); p->next=p0->next; p0->next=p; printf("\t已成功插入."); } } else break; } getch(); } /*修改模块*/ void modify(struct book *p0) { char name[10]; int flag=1; int choice; struct book *p; p=p0->next; printf("请输入要修改的书名:\n"); scanf("%s",name); while(p!=NULL&&flag==1) { if(strcmp(p->name,name)==0) { printf("\n\t请选择要修改的项:"); printf("\n\t 1.修改图书编号\n"); printf("\n\t 2.修改图书所在书库\n"); printf("\n\t 3.修改图书作者\n"); printf("\n\t 4.修改图书出版社\n"); printf("\n\t 5.修改图书库存量\n"); scanf("%d",&choice); switch(choice) { case 1: { printf("\n 请输入新的图书编号:"); scanf("%d",p->num); break; } case 2: { printf("\n 请输入新的图书书库:"); scanf("%s",p->where); break; } case 3: { printf("\n 请输入新的图书作者:"); scanf("%s",p->author); break; } case 4: {printf("\n 请输入新的图书出版社:"); scanf("%s",p->pub); break; } case 5: {printf("\n 请输入新的图书库存量:"); scanf("%d",p->count); break; } } printf("\n\t该项已成功修改。\n\t 新的图书信息:"); printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); printf(PT); flag=0; } p0=p; p=p0->next; } if(flag) printf("\n\t暂无此图书信息。"); getch(); } /*读文件*/ struct book *read_file() { int i=0; struct book *p,*p1,*head=NULL; FILE *fp; if((fp=fopen("library.txt","rb"))==NULL) {printf("\n\n\n\n\n \t********库文件不存在,请创建!**********"); getch(); return NULL; } head=(struct book *)malloc(N); p1=head; head->next=NULL; printf("\n 已有图书信息:"); printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n"); while(!feof(fp)) { p=(struct book *)malloc(N); /*开辟空间以存放的取得信息*/ while(fscanf(fp,"%d%s%s%s%s%d",&p->num,p->name,p->where,p->author,p->pub,&p->count)!=EOF) { printf(PT); i++; } p1->next=p; p1=p; } p1->next=NULL; fclose(fp); printf("\n 共种%d 图书信息",i); printf("\n\n\n 文件中的信息以正确读出。按任意键进入主菜单。"); getch(); return (head); } /*保存文件*/ void save(struct book *head) { FILE *fp; struct book *p; fp=fopen("library.txt","wb"); /*以只写方式打开二进制文件*/ if(fp==NULL) /*打开文件失败*/ { printf("\n=====>打开文件失败!\n"); getch(); return ; } else for(p=head->next;p!=NULL;p=p->next) fprintf(fp,"%d %s %s %s %s %d\n",p->num,p->name,p->where,p->author,p->pub,p->count); fclose(fp); printf("\n\t保存文件成功!\n"); } void main() { struct book *head=NULL; int choice=1; head=read_file(); if(head==NULL) { printf("\n\t\t**********"); getch(); head=creat(); } do { system("cls"); printf("\t\t----------Welcome---------\n"); printf("\n\n\t欢迎您,图书管理员.\n"); printf("\n\n\n\n\n"); printf("\n\t 请选择:"); printf("\n\t 1.查询图书信息\n"); printf("\n\t 2.修改图书信息\n"); printf("\n\t 3.增加图书信息\n"); printf("\n\t 4.删除图书信息\n"); printf("\n\t 5.显示所有图书信息\n"); printf("\n\t 0.退出系统\n"); scanf("%d",&choice); switch(choice) { case 1: find(head); break; case 2: modify(head); break; case 3: insert(head); break; case 4: del(head); break; case 5: print(head); break; case 0: system("cls"); printf("\n\n\n\n\n\t^^^^^^^^^^谢谢使用,再见^^^^^^^^^^!\n\n"); break; } }while(choice!=0); save(head); } THANKS !!! 致力为企业和个人提供合同协议,策划案计划书,学习课件等等 打造全网一站式需求 欢迎您的下载,资料仅供参考
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服