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

上传人:b****5 文档编号:7667292 上传时间:2023-01-25 格式:DOCX 页数:6 大小:15.87KB
下载 相关 举报
图书管理系统数据结构.docx_第1页
第1页 / 共6页
图书管理系统数据结构.docx_第2页
第2页 / 共6页
图书管理系统数据结构.docx_第3页
第3页 / 共6页
图书管理系统数据结构.docx_第4页
第4页 / 共6页
图书管理系统数据结构.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

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

《图书管理系统数据结构.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据结构.docx(6页珍藏版)》请在冰豆网上搜索。

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

图书管理系统数据结构

structbook/*图书信息*/

{

intnum;/*书号*/

charname[10];/*书名*/

charwhere[10];/*所在书库*/

charauthor[15];/*作者*/

charpub[20];/*出版社*/

intcount;/*数量*/

structbook*next;

};

/*输出模块*/

voidprint(structbook*p0)

{

structbook*p;

p=p0->next;

printf("\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^");

printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");

while(p!

=NULL)

{

printf(PT);

p=p->next;

}

getch();

}

/*输入模块*/

structbook*creat()

{

structbook*head,*p1,*p2;

inti=0;

head=p2=(structbook*)malloc(N);

head->next=NULL;

printf("\n\n\t\t录入图书信息");

printf("\n\t---------------------------------------");

while

(1)

{p1=(structbook*)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();

returnhead;

}

/*查找模块*/

voidfind(structbook*p0)

{

charname[10];

intflag=1;

structbook*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();

}

/*删除模块*/

voiddel(structbook*p0)

{

charname[10];

intflag=1;

structbook*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();

}

/*增加模块*/

voidinsert(structbook*p0)

{

structbook*p;

p=(structbook*)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();

}

/*修改模块*/

voidmodify(structbook*p0)

{

charname[10];

intflag=1;

intchoice;

structbook*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\t1.修改图书编号\n");

printf("\n\t2.修改图书所在书库\n");

printf("\n\t3.修改图书作者\n");

printf("\n\t4.修改图书出版社\n");

printf("\n\t5.修改图书库存量\n");

scanf("%d",&choice);

switch(choice)

{

case1:

{printf("\n请输入新的图书编号:

");

scanf("%d",p->num);break;

}

case2:

{printf("\n请输入新的图书书库:

");

scanf("%s",p->where);break;

}

case3:

{printf("\n请输入新的图书作者:

");

scanf("%s",p->author);break;

}

case4:

{printf("\n请输入新的图书出版社:

");

scanf("%s",p->pub);break;

}

case5:

{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();

}

/*读文件*/

structbook*read_file()

{

inti=0;

structbook*p,*p1,*head=NULL;

FILE*fp;

if((fp=fopen("library.txt","rb"))==NULL)

{printf("\n\n\n\n\n\t********库文件不存在,请创建!

**********");

getch();

returnNULL;

}

head=(structbook*)malloc(N);

p1=head;

head->next=NULL;

printf("\n已有图书信息:

");

printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");

while(!

feof(fp))

{

p=(structbook*)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);

}

/*保存文件*/

voidsave(structbook*head)

{

FILE*fp;

structbook*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");

}

voidmain()

{

structbook*head=NULL;

intchoice=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\t1.查询图书信息\n");

printf("\n\t2.修改图书信息\n");

printf("\n\t3.增加图书信息\n");

printf("\n\t4.删除图书信息\n");

printf("\n\t5.显示所有图书信息\n");

printf("\n\t0.退出系统\n");

scanf("%d",&choice);

switch(choice)

{

case1:

find(head);break;

case2:

modify(head);break;

case3:

insert(head);break;

case4:

del(head);break;

case5:

print(head);break;

case0:

system("cls");

printf("\n\n\n\n\n\t^^^^^^^^^^谢谢使用,再见^^^^^^^^^^!

\n\n");

break;

}

}while(choice!

=0);

save(head);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1