图书管理软件源码_第1页
图书管理软件源码_第2页
图书管理软件源码_第3页
图书管理软件源码_第4页
图书管理软件源码_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

#inckidc<stdio.h>

#include<stdlib.h>

#include<string.h>

structbook{

ininum;

charbname[50];

charwname[20];

charpress[50];

charson[50];

inttime;

floatprice;

structbook*next;

I;

structbook*creatbook();〃创立链表

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

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

voiddeletebook(structbook*head);〃删除图书

voidfprint(structbook*head);〃将链表写入文献

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

voidprint_book(structbook*hcad);〃将徒表信息输出

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

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

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

voidsorl_chaxun(struclbock*head);〃按类别查询图书

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

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

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

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

voidnum_paixu(structbook木head);〃按图书编号排序

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

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

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

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

intmain()

(

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

charaJ.bfl0],bl[10]="r';

structbook*head=NULL;

while(y){

system(,'cls,');

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

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

printfC—||-----------1|——图书信息管理系统-----1|----------II—\nH);

printfC-II-----------II——登陆界面------II----------||-\nu);

printfC------------------------------------------------------------------\nH);

printf("\n");

printfC============1-进入系统===========5"):

printfC'=========()_退出系统===========\n”):

printf(".................................................................\nu);

printfC,请输入选择门;

scanf("%d",&n);

printf("\n");

getchar();

switch(n){

case0:

y=o;

break;

case1:

printf("请输入您的I顾客名(输入1即可):”);

gcts(b);

printf("\n");

printfC,请输入您的密码(输入I即可):”):

scanf("%d",&c);

printf("\nn);

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

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

scanf("%c".&d);

getchar();

system("cls");

)

else{

printf("验证通过!请按Enier键进入八n");

scanf("%c",&d);

getchar();

x=l;

whilc(x){

systcniC'cls");

system("colorIF");

printf("•\n\n");

printfC--II--............||——图书信息管理系统

---------1|------------||-\n\n");

printfC-II---------------II------------操作界面--------II-------------Il-\n\n");

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

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

printfC--II------------系统菜单项选择项-------II--'.n");

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

printfC"-II1•添加图书删除图书-2

ll-\n\n");

printfC--II3.图书列表图书排序-4

ll-\n\n");

printfC-II5-查询图书修改图书-6

ll-\n\n");

printfC-II7-录入数据退出系统-0

ll-\n\n");

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

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

printf("请输入所选择的序号巧;

scanf("%d'\&choicc);

gctchan);

systcmf'cls");

switch(choice)

{

case0:

x=0;break;

case1:

head=load();

if(head==NULL){

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

gctchar();

break;

I

else(

head=addbook(head);

p「inlf("添加成功!\n");

printf("与否将新信息保留到文献?(y/n)\n)

scanf("%c".&a);

getchar();

switch(a){

case'n':

break;

case'y':

fprint(head);

prinlf("保留成功八n");

getchar();

break;

)

break;

)

case2:

head=load();

if(head==NULL){

p「inlf("文献为空,请先录入数据

getchar();

break;

clsc{

dclctcbook(hcad);

gctchar();

break;

)

break;

case3:

head=load();

if(head==NULL){

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

getchar();

break;

)

else{

print_book(head);

getchar();

break;

)

case4:

head=load();

if(hcad==NULL){

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

gctchar();

break;

)

else{

paixu(head);

getchar();

)

break;

case5:

hcad=load();

if(head==NULL){

priiHf("文献为空,请先录入数据先)

getchar();

break;

)

else{

chaxun(head);

getchar();

break;

ease6:

head=load();

if(head==NULL){

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

getchar();

break;

)

else{

xiugai(head);

gctchar();

break;

I

break;

case7:

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

head=creatbook();

p「intf(”与否将输入的信息保留到文献以覆盖文献中已存在U勺信

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

gctchar();

scanf("%c",&a);

gctchar();

switch(a){

case'O':

break;

case'y":

fprint(head);

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

getchar();

break;

)

break;

default:

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

getchar();

break;

)

break;

default:

printfC1输入有误,请重新输入!\n”);

getchar();

break;

)

)

)

〃录入数据并形成链表

structbook*crcatbook()

(

structbook*head,*tail,*p;

ininum,(ime,n;

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

floatprice;

intsize=sizeof(structbook);

head=tail=NULL;

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

scanf("%d",&num);

printf("请输入图书名

scanf("%s".bnamc);

getchar();

prinif("请输入作者名

scanf("%s",wname);

getchar();

printf("请输入出版社

scanf("%s",press);

getchar();

primf("请输入类别

scanf("%s",sort);

getchar();

printf("请输入出版时间

scanf("%d",&time);

getchar();

printf(”请输入价格:"):

scanf("%f',&price);

getchar();

while(l){

p=(structbook*)malloc(sizc);

p->num=num;

strcpy(p->bnamc,bnamc);

strcpy(p->wname,wname);

s(rcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->price=price;

p->next=NULL;

if(hcad==NULL)

head=p;

else

tail->next=p:

tail=p;

do{

printf("请输入图书编号巧;

scanf("%d",&num);

n=yanzheng(head.num);

if(n==O)

break;

else

printf("您输入的编号己存在,请重新输入!\n”);

}whilc(l);

if(num==O)

break;

else

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

scanf("%s'\bname);

getchar();

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

scanf("%s",wnamc);

getchar();

prinlf("请输入出版社

scanfC^s1',press);

getchar();

printf("请输入类别

scanf("%s",sort);

getchar();

printf("请输入出版时间

scanf("%d",&timc);

gctchar();

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

scanf("%r',&price);

getchar();

I

)

returnhead;

)

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

structbook*addbook(struc(book*head)

(

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

charbnamcl50J,wnaine[20],prcss[50],sortl50];

intsize=sizeof(structbook);

ininum,(ime,n=l;

floatprice;

do{

printf("请输入图书编号门;

scanf("%d",&num);

n=yanzheng(head.nuni);

if(n==O)

break;

else

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

}while(l);

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

scanf("%s",bnanie);

getchar();

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

scanf("%s",wname);

gctchar();

printf("请输入出版社

scanf("%s",press);

getchar();

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

scanf("%s",sort);

getchar();

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

scanf("%d",&tinie);

gctchar();

printf("请输入价格:)

scanf("%f,,&pricc);

getchar();

p=(scructbook*)mallcc(size);

p->num=num;

strcpy(p->bname,bnaiTie);

strcpy(p->wname,wnanie);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->pricc=pricc;

p2=head;

PE

while((ptr->num>p2->num)&&(p2->next!=NULL)){

Pl=p2;

p2=p2->nexl;

I

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

if(head==p2)

head=ptr;

clsc{

pl->ncxt=ptr;

p->next=p2;

)

}

else{

p2->next=ptr;

p->next=NULL;

1

returnhead;

)

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

intyanzheng(s(ructbook*head,intm)

{

structbook*p;

p=head;

while(p!=NULL){

if(p->num==m)

break;

p=p->ncxt;

if(p==NULL)

return0;

else

return1;

}

〃将新链表写入文献中

voidfprint(structbook*hcad)

{

FILE*fp;

charch=,r;

structbook*pl;

if((fp=fopen("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",pI->num,p1->bname,p1->wname,pi->press.pI->sorl

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

fclose(fp);

)

〃从文献中读取图书信息

structbook*load()

(

FILE*fp;

charch;

structbook*head,*tail,*pl;

hcad=tail=NULL;

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

printf("Fileopenerror!\n");

exit(O);

I

ch=fgetc(fp);

if(ch=='l'){

while(!feof(fp)){

pl=(structbook*)malloc(sizeof(structbook));

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

timc,&pl->pricc);

if(head==NULL)

head=pl;

else

tail->next=pl;

tail=pl;

)

tail->next=NULL;

fclose(fp);

returnhead;

)

else

returnNULL;

}

〃将整个链表的信息输出

voidprint_book(structbook*head)

structbook*ptr;

if(head==NULL){

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

return;

}

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

printf("

======\n'*);

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

间价格\n");

fbr(ptr=head;ptr;ptr=ptr->next)

printf("%3d%-12s%-8s%-14s%-2s%-4d%.21An';

ptr->nuin,pir->bname,ptr->wname,ptr->pres5,ptr->sor(,ptr->(irne,ptr->price);

printf("

======\n");

)

〃删除图书信息

voiddeletebook(structbook水head)

inta;

charb,ch-1';

structbook*pl,*p2;

FILE*fp;

primf("请输入要删除的图书编号

scanf("%d",&a);

pl=head;

if(pl->num==a&&pl->next==NULL){〃龙于文献中只有一组数据

printf("与否清空文献!(y/n)\n");

getchar();

scanf("%c",&b);

getchar();

switch(b){

case'n':

break;

case'y':

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

printf("Fileopenerror!\nu);

exit(O);

fclosc(fp);

printf("文献己清空!\n");

)

}

else{

while(pI->num!=a&&p1->next!=NULL){

P2=pl;

pl=pl->next;

)

if(p1->ncxt==NULL){

if(pl->num==a){

p2->next=NULL;

prinlf("与否确定从文献中彻底删除该图书?(y/n)\n”);

getchaH);

scanf("%c'\&b);

switch(b){

case'n':

break;

case'y*:

fprint(hcad);

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

getchar();

break;

)

)

else{

printf("没有找到要删除日勺数据!\n)

gctchar();

)

)

elseif(pl==head){

head=pl->next;

printf("与否确定从文献中彻底删除该图书?(y/n)\n)

getchar();

scanf("%c".&b);

switch(b){

case'n':

break;

case'y':

fprint(head);

primf("删除成功!W);

getchar();

break;

clsc{

p2->next=pl->next;

prinlf("与否潴定从文献中彻底删除该图书?(y/n)\n");

getchar();

scanf("%c",&b);

switch(b){

case'n':

break;

case'y':

fprint(head);

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

getchar();

break;

)

)

)

}

〃图书查询

voidchaxun(structbook*hcad)

(

inia;

printf("

==========================================================Vn.);

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

printf("**3-按图书类别查询4-按作者名查询**\n");

printf("**5-按出版时间查询0-退出查询**\n");

printf("

prints请输入所选择H勺编号巧;

scanf("%d".&a);

getchar();

switch(a){

case0:

break;

caseI:

num_chaxun(head);

break;

case2:

bnamc_chaxun(hcad);

break;

case3:

sort_chaxun(head);

break;

case4:

wnanie_chaxun(head);

break;

case5:

timc_chaxun(hcad);

break;

default:

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

break;

}

}

〃按编号查询图书信息

voidnuni_chaxun(structbook*head)

(

inta;

structbook*p;

printf("请选择您要查询日勺图书编号

scanf("%d",&a);

getchar();

p=head;

while(p!=NULL){

if(p->num==a)

break;

p=p->next;

if(p==NULL){

prinif("没有找到该编号的图书八n");

}

else{

printfC你所查询的图书信息如下\n");

printf("

======\n");

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

出版时间价格\n”);

printfC,%3d%-12s%-8s%-14s%-2s%-4d%.2f\n",

p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

printfC'

======\n");

I

}

〃按图书名查询图书信息

voidbnamc_chaxun(structbook*hcad)

chara[50];

iniflag=O;

structbook*p;

prinifT请选择您要查询的图书名:”);

gets(a);

p=head;

while(p!=NULL){

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

flag=l;

break;

)

p=p->next;

)

if(flag==O){

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

)

else{

printf("你所查询II勺图书信息如b\n");

printf("

======\n");

printf("编号图书名作者名巴版社类别出版

时间价格W);

while(p!=NULL){

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

printf("%3d%-12s%-8s%-14s%・2s%-4d%.2Ni”,

p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

)

p=p->next;

)

printf("

======\n");

)

〃按作者名查询图书信息

voidwnamc_chaxun(structbook*head)

chara[50];

iniflag=O;

structbook*p;

printf(”请选择您要查询H勺图书作者名为;

gets(a);

p=head;

while(p!=NULL){

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

flag=l;

break;

)

p=p->next;

I

if(flag==O){

printf("没有找到该图书名的图书八n");

clsc{

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

printf("

======\n");

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

出版时间价格\n");

while(p!=NULL){

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

printf("%3d%-12s%-8s%-14s%-2s%-4d

p->num,p->bnamc,p->wnamc,p->prcss,p->sort,p->tinic,p->pricc);

flag=l;

)

p=p->next;

I

printf("

An");

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

voidsort_chaxun(structbock*head)

{

chara[50];

intflag=O;

structbook*p;

printf("请选择您要查询II勺图书类别

gets(a);

p二head;

whilc(p!=NULL){

if(strcmp(p->sort4i)==()){

flag=l;

break;

I

p=p->next;

)

if(flag==O){

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

clsc{

printfC你所查询口勺图书信息如下\n”);

printf("

======\n");

printf("编号图书名作者名巴版社类别出版

时间价格\n");

while(p!=NULL){

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

printf("%3d%-12s%-8s%-14s%-2s%-4d%.21An';

p->num,p->bname,p->wname,p->press,p->sort,p->tinie,p->price);

flag=l;

)

p=p->next;

I

printfC

======\n");

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

voidlime_chaxun(struc(book*head)

(

intaJlag=0;

structbook*p;

printff请选择您要查询的图书出版时间

scanf("%d",&a);

getchar();

p=hcad;

while(p!=NULL){

if(p->time==a){

flag”

break;

)

p=p->next;

)

if(flag==O){

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

else{

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

prinlf("

======\n°);

printf("编号图书名作者名巴版社类别出版

时间价格\n");

while(p!=NULL){

if(p->timc==a){

printf("%3d%-12s%-8s%-14s%-2s%-4d%.21An';

p->num,p->bname,p->wname,p->press,p->sort,p->tinie,p->price);

flag=l;

)

p=p->next;

I

printf("

An");

〃修改图书信息

voidxiugai(structbook*head)

(

inta,b;

charc;

structbook*p;

primf("请输入要修改的图书编号为;

scanf("%d",&a);

p=hcad;

while(p!=NULL){

if(p->num==a)

break;

p=p->next;

I

if(p==NULL){

printf("没有找到该编号的图书号)

getchar();

clsc{

printf("

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

printf("**1-编号2-图书名3-作

者名**\n");

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

版时间**\n");

printf("**7-价格8-修改所有0-放

弃修改♦*\n*');

printf("

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

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

scanf("%d",&b);

getchar();

switch(b){

case1:

printf(“请输入新编号

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

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

gctchar();

break;

ease2:

prinlf("请输入新图书名

gets(p->bname);

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

break;

case3:

printf(”请输入新作者名

gets(p->wname);

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

break;

case4:

prinlf(”请输入新出版社

gets(p->press);

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

break;

case5:

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

gets(p->sort);

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

break;

ease6:

printf(”请输入新出版时间:,

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

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

getchar();

break;

case7:

printf("请输入新价格巧;

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

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

getchar();

break;

case8:

primf("请输入新图书编号

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

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

scanf(',%s,,,p->bname);

getchar();

printf("请输入新作者名

scanf(',%s",p->wnamc);

gctchar();

printf("请输入新出版社

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

getchar();

prinlf("请输入新类别:");

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

getchar();

printf("请输入新出版时间巧;

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

gctchar();

printf("请输入新价格

scanf("%f",<fcp->price);

getchar();

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

getchar();

break;

case0:

break;

default:

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

break;

)

prinlf("与否将修改后的J信息保留到文献中?(y/n)\n");

scanfT%c”,&c);

getcharO;

switch(c){

case'n':

break;

case'y':

fprint(hcad);

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

getchar();

break;

)

〃图书排序

voidpaixu(structbook*hcad)

inta;

printf("

===============================================================5);

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

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

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

printf("

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

printf("请输入您选择的编号门;

scanf("%d",&a);

gelchar();

switch(a){

case0:

break;

case1:

num_paixu(hcad);

break;

ease2:

time_paixu(head);

break;

case3:

price_paixu(head);

break;

case4:

bname_paixu(hcad);

break;

case5:

wname_paixu(head);

break;

default:

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

break;

)

1

〃按图书编号排序

voidnum_paixu(struclbook*head)

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

inii,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;

I

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

index=k;

fbr(i=k+l;i<n;i++)(

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

index=i;

)

temp=a[index];

a[index]=a[k];

a[k]=temp;

printf("排序成功!\n");

prinif("与否显示排序成果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case'n':

break;

case'y':

printfC'

======\n");

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

出版时间价格\n”);

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

printfC%3d%-12s%-8s%-14s%-2s%-4d%.2f^i,,,a|i]->n

um,a[i]

->bname,a[i]->wname,ali]->press,alij->sort,a[i]->time,a[i]->price);

printf("

======\n-);

break;

default:

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

break;

)

}

〃按出版时间排序

voidtimc_paixu(structbook*hcad)

(

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

inii,k,index,n=O;

charb;

pl=head;

for(p=head;p;p=p->next)

n++;

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

a[i]=pl;

pl=pl->ncxt;

fbr(k=O;k<n-l;k++){

index=k;

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

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

index二i;

)

temp训index];

a[index]=a[k];

a[k]=temp;

)

primf("排序成功!\n");

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

scanf("%s",&b);

getchar();

switch(b){

case'n':

break;

case'y':

printf("

======\n");

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

出版时间价格\n");

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

printf("%3d%-12s%-8s%-14s%-2s%-4d%.2f^,,,a|i]->n

um,a[i]

->bname,a[i]->wname,a[i]->press,a[il->sort,a[il->time,a[i]->price);

I

printf("

======\n");

break;

default:

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

break;

)

〃按图书价格排序

voidpricc_paixu(structbook*hcad)

{

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

inii,k,index,n=O;

charb;

pl=head;

for(p=head;p;p=p->next)

n++;

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

ali]=pl;

pl=pl->next;

)

fbr(k=O;k<n-l;k++){

index=k;

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

)

primf("排序成功!\n");

prinlf("与否显示排序成果?(y/n)\n");

温馨提示

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

评论

0/150

提交评论