图书管理系统代码C语言.docx
- 文档编号:16742547
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:43
- 大小:26.10KB
图书管理系统代码C语言.docx
《图书管理系统代码C语言.docx》由会员分享,可在线阅读,更多相关《图书管理系统代码C语言.docx(43页珍藏版)》请在冰点文库上搜索。
图书管理系统代码C语言
图书管理系统代码(c语言)
#include〈stdio.h>
#include〈stdlib・h>
#include〈string・h>
structbook{
intnum;
charbname[50];
charwname[20];
charpress[50^;
charsort[50]:
inttime;
floatprice;
structbook*next;
};
structbook*creatbook();//创建链表structbook*addbook(struct
book*head);//添加图书intyanzheng(structbook*head,intm);//验证新添加的图书编码是否已存在voiddeletebook(structbook*head);//删除图书voidfprint(structbook*head):
//将链表写入文件structbook*load();//从文件中读取信息并建成链表voidprint_book(structbook*head):
//将链表信息输出voidchaxun(structbook*head);//查询图书信息voidnum_chaxun(structbook*head);//按图书编号查询图书voidwname_chaxun(structbook*head);//按作者名查询图书void
sort_chaxun(structbook*head);//按类另lj查询图书voidtime_chaxun(struct
book*head);//按出版时间查询图书voidbname_chaxun(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,cl=123456;
chara,d,b[10],bl[10]="201102520116";
structbook*head=NULL;
while(y){
system("cis");
printf("\n\n\n\n\n\n\n");
printf(z**********欢迎光临**********\n\n,z);
printf(,z**********************图书信息管理系统
printfC\n\n');
printfC™=_1—用户登录=_==\十);
printfC
二二二二二二二二二二二二0-退出系统二二二二二二二二二二二\『);
printff请输入您的选择「);
scanf(,z%d,z,&n);
printf("\n");
getchar();
switch(n){
case0:
y二0;
break;
case1:
printfC请输入您的用户名:
〃);
gets(b);
printfC\n");
printfC请输入您的密码:
“);
scanf("%d",&c);
printf("\n");
if(strcmp(b,bl)!
=0|c!
=cl){
printfC验证失败,请重新输入!
\n〃);
scanf&d);
getchar();
system("cls");
}
else{
printf("验证通过!
请按Enter键进入!
\n");
scanf("%c",&d);
getchar();
x二1;
while(x){
system("cis");
printfC\n");
printff*图书信息管理系统*\n〃);
printfC\n\rT);
printfC
printf(”
•I•'.I"■、』•-1"•I•'.I"■、』•-1"■、/•I•'.I"■、』•-1"■、/•I•'.I"■、』•-1"■、/•I•'.I"■、』•-1"■、/•I•'.I"\\1•
viwvawvVwvTwvVwvawvgWviwvawvVwvTwvVwvawvgWviwvawvVwvTwvVwvawvgWviwvawvVwvTwvVwvawvgWviwvawvVwvTwvVwvawvgWviwvawvVwvTwviw»Tw、『(、『]
•、.•\\1•viwviwvawvTwviwviwviwviwvTWviwvawvawviwviwviwviwvTWviwvawvawviwviwviwviwvTWviwvawvawviwviwviwviwvTWviwvawvawviwviwviwviwvTWviwvawvawviw»Tw
printf(”
II
1-添加图书
2-删除图书
I\n\n");
printf("
II
3-图书列表
4-图书排序
I\n\rT);
printf(“
II
3-查询图书
6-修改图书
I\n\rT);
printf(“
II
7-录入数据
0-退岀系统
I\n\rT);
printf("
printf(”
•”f.・•工・•」・•—I"■、尸■、■•■、丿•工・•」・•—I"■、尸■、■•■、丿•工・•」・•—I"■、尸■、■•■、丿•工・•」・•—I"■、尸■、■•■、丿•工・•」・•—I"■、尸■、■•■、丿•工・•」・•—I"■、,\\1•
VBWVIWVIWVSWVBWVCWVIWVIWVIWVIWVBWVBWvYwVIWVIWVIWVIWVBWVBWvYwVIWVIWVIWVIWVBWVBWvYwVIWVIWVIWVIWVBWVBWvYwVIWVIWVIWVIWVBWVIW»Tw、『(、[]
•(_•・.l・■、』•工・•丄••」•••丄••丄••■l・■、』•工・•丄••」•••丄••丄••■1・■、』•工・•丄••」•••丄••丄••■1・■、』•工・•丄••」•••丄••丄••■1・■、』•工・•丄••」•••丄••丄•■、』•工・•丄••」.•\\1•
v^wviwvawvTwvawv^wviwvawvawvawv^wviwvawvawvawv^wviwvawvawvawv^wviwvawvawvawv^wviwvawviw^«w|I、了]
printfC请输入所选择的序号:
〃);scanf("%d",&choice);
getchar();system("cls");switch(choice)case0:
x=0;break;
case1:
head=load();
if(head=NULL){
printfC文件为空,请先录入数据!
\n〃);getchar();
break;
}
else{
head=addbook(head);
printf("添加成功!
\n");
printff是否将新信息保存到文件?
(y/n)\n〃);
scanf&a);
getchar();
switch(a){
case,n,:
break;
case'y‘:
fprint(head);
printf("保存成功!
\n");
getchar();
break;
}
break;
}
case2:
head=load();
if(head=NULL){
printfC文件为空,请先录入数据!
\n〃);
getchar();
break;
}
else{
deletebook(head);
getchar();
break;
}
break;
case3:
head=load();
辻(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
print_book(head);
getchar();
break;
}
case4:
head二load();
辻(head==NULL){
printf("文件为空,请先录入数据!
\『);
getchar();
break;
}
else{
paixu(head);
getchar();
}
break;
case5:
head二load();
辻(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
chaxun(head);
getchar();
}
break;
case6:
head=load();
辻(head二二NULL){
printfC文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
xiugai(head);
getchar();
break;
}
break;
case7:
printf(〃注意:
输入图书编码为0时结束!
\rT);
head=creatbook();
printfr是否将输入的信息保存到文件以覆盖文件中已存在的信
息?
(y/n)\n");
getchar();
scanf(“%c",&a);
getchar();
switch(a){
case'n:
break;
case'y‘:
fprint(head);
printf("保存成功!
\n");
getchar();
break;
}
break;
default:
printff您的输入有误,请重新输入!
\n〃);
getchar();
break;
}
}
}
break;
default:
printf("您的输入有误!
请重新输入!
\n〃);
getchar();
break;
}
}
}
//录入数据并形成链表
structbook*creatbook(){
structbook*head,*tail,*p;
intnum,time,n;
charbname[50],wname[20],press[50],sort[50];
floatprice;intsize=sizeof(structbook):
head二tail二NULL;
printfC请输入图书编号:
〃);scanf&num);
printff请输入图书名:
〃);
scanfbname);
getchar();
printff请输入作者名:
〃);
scanfwname);
getchar();
printfC请输入出版社:
“);
scanfpress);
getchar();
printfC请输入类别:
“);
scanf(〃%s:
sort);
getchar();
printfC请输入出版时间:
“);scanf&time);
getchar();
printf("请输入价格:
");
scanf("%f",&price);
getchar();
while(l){
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;
p->next二NULL;
if(head=NULL)
head二p;
else
tail-〉next二p;
tail=p;
do{
printff请输入图书编号:
〃);
scanf&num);
n=yanzheng(head,num);
辻(n=0)
break;
else
printff您输入的编号已存在,请重新输入!
\n〃);
}while
(1);
if(num==0)break;
elseprintfC请输入图书名:
〃);
scanfbname);
getchar();
printff请输入作者名:
〃);
scanfwname);
getchar();
printff请输入出版社:
“);
scanfpress);
getchar();
printfC请输入类别:
");
scanfsort);
getchar();
printfC请输入出版时间:
”);
scanf("%d",&time);
getchar();
printf("请输入价格:
”);
scanf("%f",&price);
getchar();
}
}
returnhead;
〃插入结点,并且插入后仍按一定顺序structbook*addbook(structbook*head)structbook*ptr,*pl,*p2,*p;
charbname[50],wname[20],press[50_,sort[50];
intsize=sizeof(structbook):
intnum,time,n=l:
floatprice;
do{
printff请输入图书编号:
“);
scanf&num);
n=yanzheng(head,num);
if(n=0)
break;
else
printf(〃您输入的编号已存在,请重新输入!
\n〃);
}while
(1);
printfC请输入图书名:
〃);
scanfbname);
getchar();
printfr请输入作者名:
〃);
scanfwname);
getchar();
printfC请输入出版社:
〃);
scanfpress);
getchar();
printfC请输入类别:
〃);
scanf(〃%s〃,sort);
getchar();
printfC请输入出版时间:
“);
scanf&time);
getchar();
printf("请输入价格:
”);
scanf("%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->num>p2->num)&&(p2-〉next!
=NULL)){
pl二p2;
p2二p2-〉next;
}
if(ptr->num<=p2->num){
if(head=p2)
head二ptr;
else{
pl->next=ptr;
p->next=p2;
}
}
else{
p2->next=ptr;
p->next二NULL;
}
returnhead;
}
//验证添加的图书编号是否已存在intyanzheng(structbook*head,intm)
{
structbook*p;
p=head;
while(p!
=NULL){
if(p-'nunFp)
break;
p=p->next;
}
辻(p二二NULL)
return0;
else
return1;
}
//将新链表写入文件中
voidfprint(structbook*head)
{
FILE*fp;
charch二'1’;
structbook*pl;
if((fp二fopen("fl.txt","w"))=NULL){
printf(,zFileopenerror!
\nz/):
exit(0);
}
fputc(ch,fp);
for(pl二head;pl;pl二pl->next){
fprintf(fp,,z%d%s%s%s%s%d%f\n,z,pl->num,pl->bname,pl->wname,pl-
>press,pl-〉sort
pl-〉time,pl-〉price);
}
fclose(fp);
}
//从文件中读取图书信息
structbook*load()
FILE*fp;
charch;
structbook*head,*tail,*pl:
head二tail二NULL;
if((fp二fopen("fl.txt","r"))=NULL){
printf(,zFileopenerror!
\nz/):
exit(O);
}
ch=fgetc(fp);
辻(ch='l'){
while(!
feof(fp)){
pl=(structbook*)malloc(sizeof(structbook)):
fscanf(fp,z,%d%s%s%s%s%d%f\n,&pl->num,pl->bname,pl->wname,pl->press,pl-〉sort,&pl-〉
time,&pl->price);
辻(head二二NULL)
head=pl;
else
tail->next=pl;
tail=pl;
tail-〉next二NULL;
fclose(fp);
returnhead;
}
else
returnNULL;
}
〃将整个链表的信息输出
voidprint_book(structbook*head){
structbook*ptr;
辻(head=NULL){
printf("\n没有信息!
\n");
return;
}
printfr图书信息列表如下\n);
printfC
============================+)
printfC编号图书名作者名出版社类别出版时间价格\n〃);
for(ptr=head;ptr;ptr=ptr->next)
printf(,z%d%s%s%s%s%d
%・2f\nz/,ptr->num,ptr->bname,ptr->wname,ptr-〉press,ptr-〉sort,ptr-
>time,ptr-〉price);
printfC
W);
//删除图书信息
voiddeletebook(structbook*head){
inta;
charb,ch二'1’;
structbook*pl,*p2;
FILE*fp;
printff请输入要删除的图书编号:
〃);
scanf&a);
pl=head;
if(pl->num~a&&pl->next==NULL){//对于文件中只有一组数据
printfC是否清空文件!
(y/n)\『);
getchar();
scanf&b);
getchar();
switch(b){
case'n:
break;
case'y‘:
if((fp二fopen("fl.txt","w"))=NULL){
printf(,zFileopenerror!
\nz,):
exit(O);
}
fclose(fp);
printfC文件已清空!
\rT);
}
}
else{
while(pl->num!
二a&&pl-〉next!
二NULL){
p2二pl;
pl=pl->next;
}
if(pl->next=NULL){
if(pl->num==a){
p2-〉next二NULL;
printfC是否确定从文件中彻底删除该图书?
(y/n)\n,z);
getchar();
scanf&b);
switch(b){
case'n:
break;
case'y‘:
fprint(head);
printf("删除成功!
\n");
getchar();
break;
}
}
else{
printf(〃没有找到要删除的数据!
\『);
getchar();
}
}
elseif(pl==head){
head=pl~>next:
printf("是否确定从文件中彻底删除该图书?
(y/n)\n");getchar();
scanf&b);
switch(b){
case'n:
break;
case'y‘:
fprint(head);
PrintfC删除成功!
\n〃);
getchar():
break;
}
}
else{
p2-〉next二pl->next;
printf("是否确定从文件中彻底删除该图书?
(y/n)\n");getchar();
scanf("%c",&b);
switch(b){case'n':
break;
case'y,:
fprint(head);
printf("删除成功!
\n");
getchar();
break;
}
}
}
}
〃图书查询
voidchaxun(structbook*head){
inta;
printf(”
============================\n)
printfC**1-按图书编号查询2-按图书名查询和<\『);
printf(,z**3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 代码 语言