C语言图书标准管理系统代码_第1页
C语言图书标准管理系统代码_第2页
C语言图书标准管理系统代码_第3页
C语言图书标准管理系统代码_第4页
C语言图书标准管理系统代码_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

structbook(

intnum;

charbnanic[50];

charwname[20];

charpress[50];

charsort[50];

inttime;

floatprice;

structbook*nexl;

};

structbook*crcatbook();〃创建链表

structbook*addbook(strucibook*head);〃添加图书

intyanzheng(structbook*head,intm);〃验证新添加图书编码是否已存在

voiddeletehook(strncthook水head);〃删除图书

voidfprint(s(ructbook*head);〃将链表写入文件

structbook*load();〃从文件中读取信息并建成链表

voidprint_book(structbook*head);〃将链表信息输出

voidchaxun(structbook*head);〃查询图书信息

voidnum_chaxun(structbook*head);〃按图书编号查询图书

voidwname_chaxun(struc(book*head);〃按作者名查询图书

voidsort_chaxun(structbock*head);〃按类别查询图书

voidtime_chaxun(structbook*hcad);〃按出版时间查询图书

voidbname_chaxun(structbook*head);〃按图书名杳询图书

voidxiugai(structbook*head);〃修改图书信息

voidpaixu(structbook*head);〃对图书进行排序

voidnuni_paixu(structbook*head);〃按图书编号排序

voidtimc_paixu(structbook*head);〃按国书出版时间排序

voidprice_paixu(structbook*hcad);〃按图书价格排序

voidbname_paixu(s(ructbcok*head);〃按图书名排序

voidwname_paixu(structbook*head);〃按作者名排序

intniaiiiO

(

intchoice,n,x,y=1,c,c1=1234;

chara,d,b[10],bl[10]="yjkH;

structbook*hcad=NULL;

while(y){

systeni("cls");

printf("\n\n\n\n\n\n\n,');

printf("**********欢迎光临**********\n\n");

printf("****************米*****

printfC'W');

prin(f("1-用户登录:\n");

printf("。-退出系统:\n”):

printfC,请输入您选择:");

scanf("%d”,&n);

prin(f("\n");

getchar();

switch(n){

case0:

y=0;

break;

case1:

printf("请输入您用户名:”);

gets(b);

printfCXn");

printf("请输入您密码:");

printfCVn");

if(strcmp(b,bl)!=O||c!=cl){

printfC验证失败,请重新输入!\n");

scanf("%c",&d);

getchar();

systein("cls");

)

else{

printff验证经过!请按Enter键进入!\n");

scanf("%c",&d);

getchar();

x=l;

while(x){

systein("cls");

printfC----------------\n");

printf("*图书信息管理系统*");

printfC................\n\n");

printf("

printfC

printf("||1■添加图书2-删除图书

l|\n\n");

printf("II3-图书列表4-图书排序

l|\n\n");

piintf("II5.查询图书6-修改图书

printf("II7-录入数据。-退出系统

l|\n\n");

printfC

**********************************************\n

printf("

*********************************************:§:\n\n'');

printf("请输入所选择序号:");

scanf("%d",&choice);

getchart);

systemC'cls");

switch(choice)

case0:

x=0;break;

case1:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

else{

head=addbook(head);

printf("添加成功!\n");

printf("是否将新信息保留到文件?(y/n)\n”);

scanf("%c",&a);

getchar();

swiluh(a){

case'n':

break;

case'y":

fprint(hcad);

prinlf("保留成功!\n");

getchar();

break:

}

break;

)

case2:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n”);

getchar();

break;

)

else{

deletebook(head);

getchar();

break;

break;

case3:

head=load();

if(licad-NULL){

printf("文件为空,请先录入数据!、n");

getchar();

break;

}

else{

print_book(head);

getchar();

break;

)

case4:

head=load();

if(head==NULL){

prinlf("文件为空,请先录入数据!、n");

getchar();

break;

)

else{

paixu(head);

getchar();

)

break;

case5:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

)

else{

chaxun(head);

getchar();

)

break;

case6:

liead=)oad();

if(hcad==NULL){

prinif("文件为空,请先录入数据!\n”);

getchar();

break;

)

else{

xiugai(head);

getchar();

break;

)

break;

case7:

注意:输入图书编码为0时结束!\n”);

head=crea(book();

printf("是否将输入信息保留到文件以覆盖文件中已存在信

息?(y/n)\n”);

getchar();

scanf("%c",&a);

getcharO;

switch(a){

case'n';

break;

case'y':

fprint(head);

printf("保留成功!\n");

ge(char();

break;

)

break;

default:

prinlf("您输入有误,请重新输入!\n”);

getchar();

break;

break;

default:

printfC您输入有误!请重新输入!\n");

getchar();

break;

〃录入数据并形成链表

structbook*creatbook()

(

slruulbuok*hcad,*lail,*p;

intnum,time,n;

charbname[50],wname[20],press[50],sort[50];

floatprice;

intsizc=sizcof(structbook);

head=tail=NULL;

prinlV请输入图书编号:");

scanf("%d",&num);

printf("请输入图书名:");

scanf("%s",bnarne);

getchar();

printf("请输入作者名:");

scanf("%s",wname);

gelchar();

printf("请输入出版社:“);

scanf("%s".press);

getchar();

prinlfT请输入类别:"):

scanf("%s",sort);

getchar();

printf("请输入出版时间:");

scanf("%d",&time);

getcharO;

primfT请输入价格:"):

scanf("%f',&price);

gctchar();

while(l){

p=(structbook*)malloc(size);

p>>nuiii=nuin;

strcpy(p->bname,bname);

strcpy(p->wnaine,wname);

strcpy(p->press.press);

strcpy(p->sort,sort);

p->lirne=time;

p->price=price;

p->next=NULL;

if(hcad==NULL)

head=p;

else

tail->next=p:

tail=p;

do{

primf("请输入图书编号

scanf("%d",&num);

n=yanzheng(head,nurn);

if(n==0)

break;

else

prinif("您输入编号己存在,请重新输入八n”);

}while(l);

if(num==0)

break;

else

printf("请输入图书名:");

scanf("%s",bname);

gcicliarO;

printf("请输入作者名

scanf("%s",wname);

getchar();

printf("请输入出版社:“);

scanf("%s",press);

getchar();

printf("请输入类别:");

scanf("%s",sort);

getchar();

printf("请输入出版时间

scanf("%dM,Artime);

getchar();

prinlf("请输入价格

scanf("%f',&price);

getchar();

)

}

returnhead;

}

〃插入结点,而且插入后仍按一定次序

structbook*addbook(struclbook*hcad)

structbook*ptr,*pl,*p2,*p;

charbname[50],wname[20],press[501,sort[50];

intsize=sizeof(structbook);

intnum,time,n=l;

floatprice;

do{

printf("请输入图书编号:");

scanf("%d",&num);

n=yanzheng(head,num);

if(n==O)

break;

else

prinlf("您输入编号已存在,请重新输入!\n");

}while(l);

printf("请输入图书名:");

scanf("%s",bname);

getchar();

printf("请输入作者名

scanf("%s",wname);

getchar();

printf("请输入出版社

scanf("%s",press);

getchar();

primf("请输入类别

scanf("%s",sort);

gctchar();

primfT请输入出版时间:");

scanf("%d",&timc);

gctchar();

printf("请输入价格

scanf("%f',&price);

gciuhiirO;

p=(structbook*)inallcc(size);

p->num=num;

strcpy(p->bname,bnanie);

strcpy(p->wnamc,wnamc);

strcpy(p->press,press);

strcpy(p->sorl,sort);

p->time=time;

p->price=price;

p2=head;

Ptr=p;

while((ptr->niim>p2->mim)<^<^(p2->next!=NIJI.1.)){

pl=p2;

p2=p2->next;

)

if(ptr->num<=p2->num){

if(head==p2)

head=ptr;

else{

pl->next=ptr;

p->next=p2;

else{

p2->ncxt=ptr:

p->next=NULL;

}

returnhead;

}

〃验证添加图书编号是否已存在

in(yanzheng(structbook*head,intm)

(

structbook*p;

p=head;

while(p!=NULL){

if(p->num==m)

break;

p=p->next;

I

if(p==NUIJ.)

return0;

else

return1;

}

〃将新链表写入文件中

voidfprint(structbook水head)

(

FILE*fp;

charch-1';

structbook*pl;

if((fp=fopen("fl.txt",',w"))==NULL){

printf("Fileopenerror!\n");

cxit(O);

)

fputc(ch,fp);

lbr(p1=hcad;p1;pl-pl->ncxl){

fprintf(fp,"%d%s%s%s%s%d%f\n",pi->num,p1->bname,p1->wname,p1->press,p1->sort

,pl->time,pl->price);

)

fclose(fp);

I

〃从文件中读取图书信息

structbook*load()

{

FILE*fp;

charch;

structbook*head,*tail,*pl;

head=(ail=NULL;

if((fp=fopen("fl.txt","r,,))==NULL){

printf(nFileopenerror!\n");

exit(O);

}

ch=fgetc(fp);

if(ch==,l'){

while(!feof(fp)){

pl=(structbook*)mailoc(sizcof(structbook));

fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wnamc,p1->press,p1->sort,&p1->

timc,&pl->price);

if(head==NULL)

head二pl;

else

tail->next=pl;

tail=pl;

)

tail->ncxt=NULL;

fclose(fp);

returnhead;

}

else

returnNULL;

)

〃将整个链表信息输出

voidprint_book(structbook*head)

(

structbook*ptr;

if(head==NULL){

printf("\n没有信息!\n");

return;

I

printf("图书信息列表以下\n");

printf("

M");

printf("编号图书名作者名出版社类别出版时间价格

W);

for(ptr=hcad;ptr;ptr=ptr->next)

printf("%d%s%s%s%s%d

%.2f\ii",pli->iiuni,plr->biiaiiic,plr->wiiiuiie,plr->press,plr->surl,plr->liiiic,plr->pricc);

printf("

==========================================================Xn.);

)

〃删除图书信息

voiddele(ebook(structbook*head)

(

inta;

charb,ch-1

structbook*pl,*p2;

FILE*fp;

printf("请输入要删除珥书编号:");

scanf("%d",&a);

pl=head;

if(p1->num==a&&p1->next==NULL){/依于文件中只有一组数据

printf("是否清空文件!(y/n)\n");

getchar();

scanf("%cM,&b);

getchar();

switch(b){

case'n':

break;

casey:

if((fp=fopcn("fl.txt";'w,,))==NULL){

printf("Fileopenerror!\n");

exit(O);

)

fclosc(fp);

prinlf("文件己清空!\n");

)

}

clsc{

while(pl->num!=a&&pl->nex(!=NULL){

P2=pl;

pl=pl->ncxt;

)

if(pl->next==NULL){

if(pl->num==a){

p2->next=NULL;

prinlf("是否确定从文件中根本删除该图书?(y/n)\n“);

getchar();

scanf(H%cH,&b);

switch(b){

case'n':

break;

case'y':

fprint(head);

printf("删除成功!\n”);

getchar();

break;

clse{

prinif("没有找到要删除数据!\n");

getchar();

)

)

elseif(pl==head){

head=pl->next;

printf("是否确定从文件中根本删除该图书?(y/n)\n");

gctchar();

scanf(n%c",&b);

switch(h){

case'n':

break;

case'y':

fprint(head);

printf("删除成功!\n”);

gelchar();

break;

else{

p2->next=pl->next;

printf("是否确定从文件中根本删除该图书?(y/n)\n");

gctchar();

scanf("%c'\&b);

swilch(b){

case'n':

break;

case'y':

fprint(hcad);

prinlf("删除成功!\n”);

gelchar();

break;

)

)

I

)

〃图书杳询

voidchaxun(structbook*head)

(

inta;

printf("

==========================================================\n);

printf("水*1•按图书编号查询2-按图书名查询

printf("**3-按图书类别杳询4-按作者名查询

printf("**5-按出版时间查询0-退出查询

printf("

printf("请输入所选择编号:");

scanf("%d",&a);

getchar();

switch(a){

case0;

break;

case1:

num_chaxun(head);

break;

case2:

bname_chaxun(head);

break;

case3:

sort_chaxun(head);

break;

case4:

wname_chaxun(head);

break;

case5:

time_chaxun(head);

break;

default:

print■您输入有误!\n");

break;

}

〃按编号查询图书信息

voidnum_chaxun(slructbook*head)

inta;

structbook*p;

printff请选择您要查询图书编号:”);

sca!if("%d",&a);

getchar();

p=head;

while(p!=NULL){

if(p->num==a)

break;

p=p->next;

1

if(p==NULL){

printff没有找到该编号图书!\n");

}

else{

printf("你所查询图书信息以下\n");

printf("

===\n");

printfC'**编号图书名作者名出版社类别出版时间

价格*'");

printf("

**%d%s%s%s%s%d%.2f

**\n",p->num,p->bname.p->wname,p->press,p->sort,p->time,p->price);

printf(',

===\nn);

〃按图书名查询图书信息

voidbiianic_chaxuii(sliuclbook*hcacl)

(

chara[50];

intflag=0;

structbook*p;

printf("请选择您要杳询图书名:");

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->bnaine,a)==O){

flag=l;

break;

)

p=p->next;

)

if(flag==0){

printf("没有找到该图书名图书!\n“);

)

else{

printf("你所查询图书信息以下\n”);

printf("

==,");

printf("**编号图书名作者名出版社类别出版时间价格

while(p!=NULL){

if(strcmp(p->bname,a)==O){

**%d%s%s%s%s%d%.2f

**\n",p->num,p->bname.p->wnaine,p->press,p->sor(,p->(ime,p->price);

)

p=p->ncxt;

)

prinlf("

===\n");

I

)

〃按作者名查询图书信息

voidwname_chaxun(struc(book*head)

(

chara[50];

intflag=0;

structbook*p;

prindT请选择您要查询图书作者名

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->wnaine,a)==O){

flag=l;

break;

)

p=p->next;

1

if(flag--O){

printf("没有找到该图书名图书!\n");

)

clsc{

printfC你所查询图书信息以下\n”);

printf("

===\n");

printf("**编号图书名作者名出版社类别出版时间价格

while(p!=NIILL){

if(strcmp(p->wnaine,a)==0){

printfC

**%d%s%s%s%s%d%.2f

**\n'\p->num,p->bname,p->wname,p->press.p->son,p->time,p->price);

tlag=l;

I

p=p->next;

I

printf("

===\nu);

〃按图书类别行询图书信息

voidsort_chaxun(structbock*head)

(

chara[5OJ;

inifiag=0;

structbook*p;

primf("请选择您要查询图书类别

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->sort3)==0){

flag=l;

break;

)

p=p->next;

}

if(flag==O){

printf("没有找到该图书名图书!\n");

}

else{

printfC你所查询图书信息以下\n”);

printf("

===\nu);

printf("**编号图书名作者名出版社类别出版时间价格

while(p!=NULL){

if(strcmp(p->sort3)==0){

printf("

**%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->ncxt;

)

prinlf("

===\n");

I

)

〃按图书出版时间查询图书信息

voidtime_chaxun(structbook*head)

(

inta,flag=0;

structbook*p;

printf("请选择您要查询图书出版时间

scanf("%d",&a);

getchar();

p=head;

while(p!=NULL){

if(p->time==a){

flag=l;

break;

p=p->ncxt;

)

if(flag==O){

prinlf("没有找到该图书名图书!\n");

)

else{

printf("你所查询图书信息以下\n”);

printf("

===\n");

printf("**编号图书名作者名出版社类别出版时间价格

while(p!=NULL){

if(p->time==a){

printf("

**%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->nex(;

)

printf("

===\n");

〃修改图书信息

voidxiugai(structbook*hcad)

(

inta,b;

charc;

structbook*p;

printf("请输入要修改国书编号:”);

scanf("%d",&a);

p=hcad;

while(p!=NULL){

if(p->num==a)

break;

p=p->ncxt;

I

if(p==NULL){

printf("没有找到该编号图书!\n");

getchar();

}

else{

printf("

—\n");

prin(fC,**1-编号2-图书名3-作

者名

printf("**4■出版社5-类别6-出

版时间

printf(u**7-价格8-修改全部。-放

弃修改

printf("

An");

printf("请选择你要修改信息编号

scanf("%d",&b);

getchar();

swilch(b){

caseI:

primfC请输入新编号:“);

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

printf("修改成功!\n”);

getchar();

break;

case2:

printf("请输入新图书名:");

gets(p->bname);

printf("修改成功!\n”);

break;

case3:

prinlf(”请输入新作者名

gets(p->wna:ne);

printf("修改成功!\n”);

break;

case4:

printf(”请输入新出版社:“);

gets(p->press);

printf("修改成功!\n");

break;

case5:

prinlf(”请输入新类别

gets(p->sort);

printf("修改成功!\n”);

break;

case6:

prinlK"请输入新出版时间/);

scanf("%d",&p->time);

printfC修改成功!\n");

getchar();

break;

case7:

prinlf("请输入新价格:");

scanf("%f',&p->price);

printf("修改成功!\n");

getchar();

break;

case8:

printf(“请输入新图书编号

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

printf("请输入新图书名

scanf("%su,p->bname);

getchar();

prinlf("请输入新作者名

scanf("%s",p->wname);

getchar();

prinlff请输入新出版社

scanf("%s",p->press);

getchar();

printf(”请输入新类别

scanf("%s",p->sort);

gctchar();

primf("请输入新出版时间:”);

scanf("%d",&p->time);

gclcliarO;

printf("请输入新价格:");

scanf("%f',&p->price);

getchar();

printf("修改成功!\n”);

getchar();

break;

case0:

break;

default:

printf("您输入有误!\n");

break;

)

prin【f(”是否将修改后信息保留到文件中?(y/n)\n)

scanf(',%c".&c);

getchar();

switch(c){

case'n':

break;

case'y':

fprint(head);

prinlf("保留成功!\n");

getchar();

break;

〃图书排序

voidpaixu(structbook*head)

(

inta;

printf("

================================================================\n'i;

prinlf("**1-按图书编号排序2-按出版时间排序

**\nH);

printf("**3-按图书价格排序4-按图书名排序

printf("**5-按作者名排序0-取消排序操作

printf("

================================================================^.|;

printff请输入您选择编号:");

scanf("%d",&a);

getchar();

swi(ch(a){

case0:

break;

caseI:

num_paixu(head);

break;

case2:

time_paixu(hcad);

break;

case3:

price_paixu(headi;

brciik;

case4:

bname_paixu(head);

break;

case5:

wname_paixu(head);

break;

default:

printf("您输入有误!\n”);

break;

I

)

〃按图书编号排序

voidnum_paixu(structbook水head)

|

structbook*a[IOOO],*p,*pI,*temp;

inti,k,index.n=0;

charb;

pI=head;

fbr(p=head;p;p=p->nexl)

n++;

for(i=0;i<n;i++){

a[i]=pl;

pl=pl->ncxt;

I

for(k=0;k<n-1;k++){

index=k;

for(i=k+l;i<n;i++){

if(a[i]->num<a[index]->num)

index=i;

)

tcmp=alindcxj;

a[index]=a[k];

a[k]=temp;

1

printf("排序成功成)

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case'n':

break;

case'y':

printf("

================================================================\n"i;

printfC**编号图书名作者名出版社类别出版时间

价格**\n");

for(i=0;i<n;i++){

printf("

**%d%s%s%s%s%d%.2f

**\n'\a[il->num,a[i]->bname,a[il->wname,a[i]->press,a[i]->sort,a[il->time,a[i]->price);

printf("

================================================================^.|;

break;

default;

printf("您输入有误!\n”);

break;

)

I

〃按出版时间排序

voidlime_paixu(s(ruclbook*head)

(

structbook*a[1OOO],*p,*p1,*temp;

inti,k,index,n=O;

charb;

p1=head;

for(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;

for(i=k+l;i<n;i++){

if(a[i]->time<a[index]->lime)

index=i;

temp=a[index);

alindcxj=a[kj;

a[k]=temp;

1

prinllT排序成功!5");

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case'n':

break;

case'y':

printf("

===============================================================Xn.);

printf("**编号图书名作者名出版社类别出版时间

价格

for(i=0;i<n;i++){

prin(f("

**%d%s%s%s%s%d%.2f

**\n'\a[i]->num,a[i]->bnaire,a[i]->wname,a[i]->press,a[i]->son,a[i]->tiine,a[i]->piice);

)

printfC'

===============================================================Xn..);

break;

default:

primf("您输入有误!\n“);

break;

〃按图书价格排序

voidprice_paixu(struclbook*head)

(

slruulbuok*a[1000],*p,*pl,*lcuip;

inti,k,index,n=O;

charb;

pl=head;

fbr(p=hcad;p;p=p->ncxt)

n++;

fbr(i=O;i<n;i++){

a[i]=pl;

pl=pl->ncxt;

I

for(k=0;k<n-l;k++){

index二k;

for(i=k+l;i<n;i++){

if(a[i]->price<a[index]->price)

index=i;

)

temp=a[indexj;

a|indexl=a[k];

a[k]=temp;

I

printf("排序成功成,,);

printlT是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case'n':

break;

case'y':

prinifC

===============================================================\n);

printfC**编号图书名作者名出版社类别出版时间

价格**\n");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论