版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structbook{
intnum;
charbnamel50J;
charwname[20];
charpress[50];
charsort[50];
inttime;
floatprice;
structbook*next;
);
structbook*creatbook();〃创立链表
structbook*addbook(struc1book*head);〃添加图书
intyanzheng(structbook*head,intm);〃验证新添加日勺图书编码与否已存在
voiddeletebook(structbook*head);〃删除图书
voidfprint(structbook*head);〃将链表写入文献
stnictbook*load();〃从文献中读取信息并建成链表
voidprint_book(structbook*head);〃将链表信息输出
voidchaxun(stnictbook*head);〃查询图书信息
voidnum_chaxun(structbook*head);〃按图书编号杳询图书
voidwnamcchaxun(structbook*hcad);〃按作者名查询图书
voidsort_chaxun(structbook*head);〃按类别查询图书
voidtimechaxun(stnictbook+hcad);〃按出版时间查询图书
voidbnamechaxun(structbook*head);〃按图书名查询图书
voidxiugai(structbook*head);〃修改图书信息
voidpaixu(structbook*head);〃对图书进行排序
voidnum_paixu(structbook*head);〃按图书编号排序
voidtime_paixu(structbook*head);//按国书出版时间排序
voidprice_paixu(structbook*head);〃按图书价格排序
voidbname_paixu(structbook*head);〃按图书名排序
voidwname_paixu(structbook*head);〃按作者名排序
intmain()
(
intchoice,n,x,y=l,c,c1=1234;
chara,d,b[10],bl[l0]="yjk";
structbook*head=NULL;
while(y){
system("cls");
printfIn\n\n\n\n\n\n\nH);
printfC1**********欢迎光顾**********\n\n");
printff**********************图书信息管理系统
printff\n\n");
printf(n========1-顾客登录一===\n");
printf(H======0.退出系统======3"):
printfC1请输入您的选择门;
scanfC'%d",&n);
printf(H\n");
getchar();
switch(n){
case0:
y=o;
break;
case1:
printfC,请输入您的顾客名:”);
gets(b);
printfW);
printf(H请输入您的密码O;
scana"%d",&c);
printfln\n");
if(strcmp(b,bl)!=0||c!=c1){
printf(u验证失败,请重新输入!W);
scanf("%c”,&d);
getchar();
system("cls");
)
else{
printf("验证通过!请按Enter键进入!\n”);
scanfT%c”,&d);
gctchar();
x=I;
while(x){
case0:
x=0;break;
case1:
head=load();
if(head=NULL){
printf("文献为空,请先录入数据八n");
getchar();
break;
}
else{
head=addbook(head);
printf("添加成功!\n”);
与否将新信息保存到文献?(y/n)\n)
scanfC,%c",&a);
getchar();
switch(a){
case'n':
break;
casey:
fprint(hcad);
printf("保存成功!\n");
getchar();
break;
break;
case2:
head=load();
if(head=NULL){
printf("文献为空,请先录入数据!W”);
getchar();
break;
}
else{
deletebook(head);
getchar();
break;
}
break;
case3:
head=load();
iflhead=NULL){
printf("文献为空,请先录入数据!、n");
getchar();
break;
}
clse{
printbook(head);
getchar();
break;
}
case4:
head=load();
if(head==NULL){
prinlf("文献为空,请先录入数据所)
getchar();
break;
)
else{
paixu(head);
getchar();
)
break;
case5:
head=load();
if(head=NULL){
printf("文献为空靖先录入数据
getchar();
break;
}
else(
chaxun(hcad);
getchar();
}
break;
case6:
head=load();
if(head=NULL){
printf("文献为空,请先录入数据!\n”);
getchar();
break;
}
else(
xiugai(head);
getchar();
break;
}
break;
case7:
prinlf("注意:输入图书编码为0时结束!\n”);
head=creatbook();
与否将输入日勺信息保存到文献以覆盖文献中已存在的信
息?(y/n)\n");
getchar();
scanfi(,,%c",&a);
gelchar();
switch(a){
case'n*:
break;
case'y':
fprint(head);
printff保存成功!\n");
getchar();
break;
}
break;
default:
printff您的输入有误,请重新输入!\n");
getchar();
break;
}
}
)
break;
default:
printf("您口勺输入有误!请重新输入!\n)
gctchar();
break;
〃录入数据并形成链表
structbook*creatbook()
(
structbook*head,*tail,*p;
intnum,time,n;
charbnamel50],wname[20J,pressl50],sort[50];
floatprice;
intsize=sizeofXstructbook);
head=tail=NULL;
printfC请输入图书编号:");
scanff%d”,&num);
primf("请输入图书名:”);
scanf("%s",bname);
getchar();
printf("请输入作者名:");
scan(V%s",wname);
getchar();
primf("请输入出版社
scanf(H%s",press);
getchar();
printf("请输入类别:"):
scanf^,,%s',,sort);
getchar();
print。(”请输入出版时间:");
scanf(H%d",&timc);
getchar();
printf("请输入价格
scanf(H%f,,&price);
getchar();
while(l){
p=(structbook*)malloc(size);
p->num=num;
strcpy(p->bnaine,bnaine);
strcpy(p->wname(wname);
strcpy(p->press,press);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p->next=NULL;
if(head=NULL)
head=p;
else
tail->next=p:
tail=p;
do{
printf("请输入图书编号:");
scanf("%d",&nuni);
n=yanzhcng(hcad,num);
if(n==0)
break;
else
printf("您输入日勺编号已存在,请重新输入!\n");
}while(l);
if|num==O)
break;
else
printf("请输入图书名:");
scanf(H%s,,,bname);
getchar();
printf("请输入作者名:");
scanR"%s",wname);
getchar();
printf("请输入出版社:");
scanR"%s”,press);
getchar();
printff请输入类别:");
scanf(H%s",sort);
getchar();
printf("请输入出版时间
scanf(n%d",&time);
getchar();
printf("请输入价格:");
scanfT%「',&price);
gctchar();
returnhead;
〃插入结点,并且插入后仍按一定顺序
structbook*addbook(structbook*head)
{
structbook*ptr,*pl,*p2,*p;
charbname[50],wname[20],press[50],sort[50];
intsizc=sizcof(structbook);
intnum,time,n=l;
floatprice;
do{
printff请输入图书编号门;
scanf("%d",&num);
n=yanzhcng(head,num);
if(n==0)
break;
else
printf("您输入的编号已存在,请重新输入!\n");
}while(l);
printff请输入图书名
scanf(,,%s,,,bname);
getchar();
printf("请输入作者名
scanf(M%sH,wname);
getchar();
printf("请输入出版社门;
scanf("%s",press);
getcharO;
printf("请输入类别:"):
scanf(n%s,,,sort);
getchar();
printR”请输入出版时间
scanf(H%d",&time);
getchar();
printf("请输入价格:"):
scan^H%f',&price);
getchar();
p=(structbook*)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->press,press);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p2=head;
ptr=p;
while((ptr->nuni>p2->num)&&(p2->next!=NULL)){
pl=p2;
p2=p2->next;
}
if(ptr->num<=p2->num){
iRhead==p2)
head=ptr;
else{
p1->next=ptr;
p->next=p2;
)
}
else(
p2->next=ptr;
p->next=NULL;
}
returnhead;
}
〃验证添加口勺图书编号与否已存在
intyanzheng(structbook*head,intm)
|
structbook*p;
p=hcad;
while(p!=NULL){
ifi(p->num=m)
break;
p=p->next;
}
iRp=NULL)
return0;
else
return1;
)
〃将新链表写入文献中
voidfprint(structbook*head)
{
FILE*fp;
charch=T;
structbook*pl;
if<(fp-fbpen("fl.txt,,,,,w,'))—NULL)(
printf(,'Fileopenerror!\n");
exit(O);
)
fputc(ch,fp);
fbr(p1-head;pl;pl-pl->next){
fprintf(fp,"%d%s%s%s%s%d
%f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);
fclose(fp);
〃从文献中读取图书信息
structbook*load()
{
FILE*fp;
charch;
structbook*head,*tail,*pl;
head=tail=NULL;
ia(fp=fbpen("f1.txt","rH))==NULL){
printff'Fileopenerror!\n");
exit(O);
)
ch=fgetc(fp);
if(ch==T){
while(!feof(fp)){
pl-(structbook*)malloc(sizeof(stiuctbook)),
fscanf(fp,,,%d%s%s%s%s%d%f\n",&pl->num,pI->bnaine,p1->\vname,p1->press,pI->sort,&p1->
time,&pl->price);
iRhead—NULL)
head-pl;
else
tail->next=pl;
tail=pl;
tail->next=NULL;
fclose(fp);
returnhead;
}
else
returnNULL;
}
〃将整个链表H勺信息输出
voidprintbook(structbook*head)
(
structbook*ptr;
iRhead=NULL){
printf(H\n没有信息!\n");
return;
)
printf(H图书信息列表如下\n”);
printf(H
==========================\n,');
printfC1编号图书名作者名出版社类别版时间价格
\n");
fbr(ptr=hcad;ptr;ptr=ptr->next)
prints"%d%s%s%s%s
%d%.2f\n,,,ptr->num,ptr->bname,ptr->wnamc,ptr->press,ptr->sort,ptr->time,ptr->price);
printR”
==========================\n'»);
〃删除图书信息
voiddeletebook(structbook*head)
|
inta;
charb,ch=T;
structbook*pl,*p2;
FILE*fp;
printfC请输入要删除的图书编号
scanfT%d”,&a);
pl=head;
iflpI->num==a&&p1->next=NULL){〃对于文献中只有一组数据
printf("与否清空文献!(y/n)\n");
getchar();
scanf(,,%c,,,&b);
getchar();
switch(b){
case'n':
break;
casey:
iR(fp=fbpenC'fi.txt',,,,w"))=NULL){
printf("Fileopenerror!\nH);
exit(O);
}
fclose(fp);
printf("文献己清空!\n”);
else(
while(p1->num!=a&&pl->next!=NULL){
p2=pl;
pl=pl->next;
}
iRp1->next=NULL){
if(pl->num=a){
p2->next=NULL;
printf("与否拟定从文献中彻底删除该图书?(y/n)\n)
getchar();
scanf(H%cH,&b);
switch(b){
case'n':
break;
casey:
fprint(head);
prinlff删除成功!\n”);
gctchar();
break;
else{
prints”没有找到要删除的I数据!\叫;
getchar();
}
)
elseiftpl==head){
head=pl->next;
printf("与否拟定从文献中彻底删除该图书?(y/n)\n");
getchar();
scanfXH%c",&b);
switch(b){
case'n':
break;
case'y':
fprint(head);
printr删除成功!\n”);
getchar();
break;
clse{
p2->next=pl->next;
printf("与否拟定从文献中彻底删除该图书?(y/n)\n");
getchar();
scanff%c”,&b);
switch(b){
case'n*:
break;
casey:
fprint(head);
printff删除成功!\n”);
getchar();
break;
}
}
〃图书查询
voidchaxun(structbook*head)
|
inia;
printf(H
printf(u**1-按图书编号查询2.按图书名查询**\n");
printf(u**3•按图书类别查询4-按作者名查询**\n");
printfT**5-按出版时间查询()-退出查询**\n");
printf(H
printf("请输入所选择li勺编号
scanf1"%d'\&a);
getchar();
switch(a){
case0:
break;
case1:
numchaxun(head);
break;
case2:
bnamechaxun(head);
break;
case3:
sortchaxun(head);
break;
case4:
wnamcchaxun(hcad);
break;
case5:
timechaxun(head);
break;
default:
printf("您的J输入有误!\n”);
break;
}
}
〃按编号查询图书信息
voidnumchaxun(stnictbook*head)
(
inta;
structbook*p;
printf("请选择您要查闻日勺图书编号:");
scanRH%d",&a);
getchar();
p=head;
while(p!=NULL){
ifi(p->nuin=a)
break;
p=p->next;
)
if(p=NULL){
printr没有找到该编号的图书!\n");
else(
printff'你所查询的图书信息如下\n”);
printfC'
=\nM);
printtV1**编号图书名作者名出版社类别出版时间
价格
printH'1*♦%d%s%s%s%s%d
%.2f**\n',,p->num,p->bname,p->vvname,p->press,p->sort,p->time,p->price);
printf(H
=\n");
)
)
〃按图书名查询图书信息
voidbnaine_chaxun(structbook*head)
|
chara[50];
intflag=0;
structbook*p;
printf("请选择您要查泡H勺图书名
gets(a);
p=hcad;
while(p!=NULL){
if(strcinp(p->bname,a)==O){
nag=l;
break;
p=p->next;
if(flag==O){
printf("没有找到该图书名的J图书!\n");
)
else(
printfC,你所查询的图书信息如下\n”);
printf(u
=\n");
printfC***编号图书名作者名出版社类别出版时间价格
**\n");
while(p!=NULL){
if(strcmp(p->bnaine,a)==O){
printR"**%d%s%s%s%s
%d%.2f**\n,',p->num,p->bname,p->\vname,p->press,p->sort,p->time,p->price);
)
p=p->next;
)
printH'1
、n”);
〃按作者名查询图书信息
voidwname_chaxun(structbook*head)
{
chara(5OJ;
intflag=0;
structbook*p;
printf("请选择您要查询口勺图书作者名:");
gets(a);
p=head;
while(p!=NULL){
if(strcmp(p->wname,a)=O){
flag=l;
break;
}
p=p->next;
}
if(flag=O){
printf("没有找到该图书名日勺图书!\n“);
}
clsc{
printfC,你所查询口勺图书信息如下5)
printfC
==\n");
printfC**编号图书名作者名出版社类别出版时间价格
while(p!=NULL){
if|strcmp(p->wname,a)=O){
printff'**%d%s%s%s%s
%d%.2f**\n,',p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
flag=l;
}
p=p->next;
}
printf(H
=\nM);
}
}
〃按图书类别查询图书信息
voidsort_chaxun(structbook*head)
|
chara[50];
intflag=O;
structbook*p;
printf("请选择您要查泡日勺图书类别
gets(a);
p=head;
while(p!=NULL){
if(strcmp(p->sort,a)==0){
flag=l;
break;
}
p=p->next;
}
if{flag==O){
printf("没有找到该图书名的图书!\n”);
)
else(
printfC,你所查询的图书信息如下\n”);
printfC,
=\n");
printfC1**编号图书名作者名出版社类别出版时间价格
while(p!=NULL){
if(strcmp(p->sort,a)==0){
printff**%d%s%s%s%s
%d%.2f**\nu,p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);
flag=l;
p=p->next;
printfC,
=\n");
)
)
〃按图书出版时间查询图书信息
voidtime_chaxun(structbook*head)
(
inta,flag=0;
structbook*p;
printf("请选择您要查询W、J图书出版时间
scanf(H%d",&a);
getchar();
p=head;
while(p!=NULL){
if(p->time=a){
flag=l;
break;
}
p=p->ncxt;
if(flag=0){
printfC没有找到该图书名的图书!\n");
else(
printf(H你所查询的图书信息如下\n");
printfC,
=\n");
printfC***编号图书名作者名出版社类别出版时间价格
**\nH);
while(p!=NULL){
if(p->time=a){
printff'**%d%s%s%s%s
%d%.2f**\n,,,p->num,p->bname,p->\vname,p->press,p->sort,p->time,p->price);
flag=i;
}
p=p->next;
}
printf(H
〃修改图书信息
voidxiugai(structbook*hcad)
inta,b;
charc;
structbook*p;
print/请输入要修改的图书编号
scanf1"%d'\&a);
p=head;
while(p!=NULL){
if(p->num=a)
break;
p=p->next;
}
if(p=NULL){
printfC没有找到该编号的图书!");
getchar();
}
else{
printf(H
=\n");
printf(H**1-编号2-图书名3-作
者名*叭n)
printf("**4-出版社5-类别6-出
版时间
prinlff'**7-价格8-修改所有0-放
弃修改
printfC'
.----------——y-----------------=\n“);
printf("请选择你要修改U勺信息编号:");
scanff%d”,&b);
getchar();
switch(b){
case1:
printf(”请输入新编号
scanfT%d”,&p・>num);
printf("修改成功!");
getchar();
break;
case2:
printf("请输入新图书名:)
gets(p->bname);
printf("修改成功成)
break;
case3:
printf(”请输入新作者名:");
gets(p->wname);
printf("修改成功!\n”);
break;
case4:
printf(”请输入新出版社
gcts(p->prcss);
printff修改成功!\n)
break;
case5:
printf("请输入新类别:");
gets(p->sort);
prinlf("修改成功!\n)
break;
case6:
printf(”请输入新出版时间
scanfC%d”,&p・>time);
printf("修改成功!\n)
getchar();
break;
case7:
printf("请输入新价格:");
scanfT%r’,&p->price);
printf("修改成功!\n”);
getchar();
break;
case8:
printf("请输入新图书编号:
scanR"%d",&p->num);
printf("请输入新图书名:");
scann"%s",p->bname);
gctchar();
printf(”请输入新作者名:");
scanfV%s",p->wname);
getchar();
printf("请输入新出版社:");
scanf(H%s",p->press);
getchar();
printf(”请输入新类别:");
scanR"%s",p->sort);
getchar();
printf(”请输入新出版时间
scanf(H%(i",&p->time);
getchar();
printf("请输入新价格:");
scanfT%「',&p->price);
getchar();
printf("修改成功成)
getchar();
break;
case0:
break;
default:
printf("您的输入有误!\n");
break;
printf("与否将修改后日勺信息保存到文献中?(y/n)\n)
scanf("%cH,&c);
getchar();
switch(c){
case'n':
break;
casey:
fprint(head);
prinlf("保存成功!\n)
getchar();
break;
〃图书排序
voidpaixu(structbook*head)
|
inia;
printf(H
----------------------------
printf(H**1-按图书编号排序2.按出版时间排序
**\n");
printf(H**3.按图书价格排序4.按图书名排序
printf(H**5■按作者名排序0•取消排序操作
**\nH);
prints”
============================\n»'|.
printf("请输入您选择的编号:");
scanf(M%d",&a);
getchar();
switch(a){
case0:
break;
case1:
num_paixu(head);
break;
case2:
time_paixu(head);
break;
case3:
price_paixu(head'i;
break;
case4:
bname_paixu(head);
break;
case5:
wnamc_paixu(hcad);
break;
default:
prints您的输入有误!\n”);
break;
〃按图书编号排序
voidnum_paixu(structbook*head)
{
stiuctbook*a[1000],*p,*p1,*temp;
inti,k,index,n=0;
charb;
pl=head;
fbr(p=head;p;p=p->next)
n++;
for(i=0;i<n;i++){
a[i]-pl;
pl=pl->next;
}
for(k=0;k<n-l;k++){
index=k;
fbr(i-k+l;i<n;i++)(
if^a[i]->num<a[index]->nuin)
index=i;
}
temp=a[index];
a[index]=a[k];
a[k]=temp;
printf("排序成功!\n”);
printf("与否显示排序成果?(y/n)\n");
scanf("%s",&b);
getcharO;
switch(b){
case'n*:
break;
casey:
printf(H
\")•
printfC***编号图书名作者名出版社类别出版时间
价格**\nM);
for(i=0;i<n;i++){
prints"**%d%s%s%s%s
%d%.2f
**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
)
printf(H
============================\n');
break;
default:
prinlf("您的输入有误!\n)
break;
〃按出版时间排序
voidtime_paixu(structbook*head)
{
structbook*a[1000],*p,*p1,*temp;
inti,k,index,n=0;
charb;
pl=head;
fbr(p=head;p;p=p->next)
n++;
fbr(i=O;i<n;i++){
a[i]=pl;
pl=pl->next;
)
fbr(k=O;k<n-l;k++){
index=k;
fbr(i=k+l;i<n;i++){
if(a[i]->time<a[index]->time)
index=i;
)
temp=a[index];
a[index]=a[k];
a[k]=temp;
printf("排序成功!\n”);
printf("与否显示排序成果?(y/n)\n");
scanf("%s",&b);
getchar();
switch(b){
case'n':
break;
casey:
printf(H
=============================\n");
printfC***编号图书名作者名出版社类别出版时间
价格**\n");
for(i=0;i<n;i++){
prints"**%d%s%s%s%s
%d%.2f
**\n",a[i]->num,a[i]->bnarre,a[i]->wnanie,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
}
printf(H
===========================\n');
break;
default:
prints您的输入有误!\n");
break;
〃按图书价格排序
voidprice_paixu(structbook*head)
(
structbook*a[l()OO],*p,*pl,*temp;
inti,k,index,n=0;
charb;
pl=head;
fbr(p=head;p;p=p->next)
n++;
fbr(i=O;i<n;i++){
a[i]=pl;
pl=pl->next;
)
fbr(k=O;k<n-l;k++){
index=k;
fbr(i=k+l;i<n;i++){
if(a[i]->price<a[index]->price)
index=i;
)
temp=a[index];
a[indcx]=a[k];
a[k]=temp;
)
print。("排序成功!\n");
printf("与否显示排序成果?(y/n)\n)
scanf("%s",&b);
getchar();
switch(b){
case'n':
break;
casey:
printf(H
============================\n»);
printfC***编号图书名作者名出版社类别出版时间
价格**\nH);
for(i=0;i<n;i++){
prints"**%d%s%s%s%s
%d%.2f
**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);
)
printf(H
----------------------------------------------------------------------------------
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物标志物在药物临床试验中的转化前沿进展
- 生物打印个性化皮肤模型在烧伤修复教学中的应用
- 深度解析(2026)《GBT 20674.1-2020塑料管材和管件 聚乙烯系统熔接设备 第1部分:热熔对接》(2026年)深度解析
- 考试题解析质量管理体系考试难点解析
- 公关策划师面试题目与解析
- 深度解析(2026)《GBT 19495.2-2004转基因产品检测 实验室技术要求》
- 深度解析(2026)《GBT 19445-2004贵金属及其合金产品的包装、标志、运输、贮存》
- 泰康保险品牌总监面试题集
- 数据运营面试题集含答案
- 玫瑰痤疮患者的心理支持方案
- 2025年植物标本采集合同协议
- 2025天津市第二批次工会社会工作者招聘41人考试笔试参考题库及答案解析
- 婴幼儿游戏指导课件 第7章第2节:婴幼儿社会性游戏的组织与实施
- 江西省人民防空工程标识标牌设置及制作规范图册(2021版)
- NB-T+10588-2021风力发电场集控中心运行管理规程
- 整理收纳师课件
- 护工的沟通技巧
- 浮选药剂及其作用原理资料课件
- 国开电大软件工程形考作业3参考答案
- 皮部经筋推拿技术操作方法及常见疾病的皮部经筋推拿技术
- 冠脉痉挛诊疗进展
评论
0/150
提交评论