C语言图书系统代码.docx

上传人:b****1 文档编号:23098556 上传时间:2023-04-30 格式:DOCX 页数:45 大小:20.65KB
下载 相关 举报
C语言图书系统代码.docx_第1页
第1页 / 共45页
C语言图书系统代码.docx_第2页
第2页 / 共45页
C语言图书系统代码.docx_第3页
第3页 / 共45页
C语言图书系统代码.docx_第4页
第4页 / 共45页
C语言图书系统代码.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

C语言图书系统代码.docx

《C语言图书系统代码.docx》由会员分享,可在线阅读,更多相关《C语言图书系统代码.docx(45页珍藏版)》请在冰豆网上搜索。

C语言图书系统代码.docx

C语言图书系统代码

#include

#include

#include

structbook{

intnum。

charbname[50]。

charwname[20]。

charpress[50]。

charsort[50]。

inttime。

floatprice。

structbook*next。

}。

structbook*creatbook(>。

//创建链表

structbook*addbook(structbook*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>。

//按作者名查询图书

voidsort_chaxun(structbook*head>。

//按类别查询图书

voidtime_chaxun(structbook*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=1,c,c1=1234。

chara,d,b[10],b1[10]="yjk"。

structbook*head=NULL。

while(y>{

system("cls">。

printf("\n\n\n\n\n\n\n">。

printf("**********欢迎光临**********\n\n">。

printf("**********************图书信息管理系统************************\n\n\n">。

printf("\n\n">。

printf("============1-用户登录===========\n">。

printf("============0-退出系统===========\n">。

printf("请输入您的选择:

">。

scanf("%d",&n>。

printf("\n">。

getchar(>。

switch(n>{

case0:

y=0。

break。

case1:

printf("请输入您的用户名:

">。

gets(b>。

printf("\n">。

printf("请输入您的密码:

">。

scanf("%d",&c>。

printf("\n">。

if(strcmp(b,b1>!

=0||c!

=c1>{

printf("验证失败,请重新输入!

\n">。

scanf("%c",&d>。

getchar(>。

system("cls">。

}

else{

printf("验证通过!

请按Enter键进入!

\n">。

scanf("%c",&d>。

getchar(>。

x=1。

while(x>{

system("cls">。

printf("------------------\n">。

printf("*图书信息管理系统*\n">。

printf("------------------\n\n">。

printf("**********************************************\n\n">。

printf("**********************************************\n\n">。

printf("||1-添加图书2-删除图书||\n\n">。

printf("||3-图书列表4-图书排序||\n\n">。

printf("||5-查询图书6-修改图书||\n\n">。

printf("||7-录入数据0-退出系统||\n\n">。

printf("**********************************************\n\n">。

printf("**********************************************\n\n">。

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

">。

scanf("%d",&choice>。

getchar(>。

system("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(>。

switch(a>{

case'n':

break。

case'y':

fprint(head>。

printf("保存成功!

\n">。

getchar(>。

break。

}

break。

}

case2:

head=load(>。

if(head==NULL>{

printf("文件为空,请先录入数据!

\n">。

getchar(>。

break。

}

else{

deletebook(head>。

getchar(>。

break。

}

break。

case3:

head=load(>。

if(head==NULL>{

printf("文件为空,请先录入数据!

\n">。

getchar(>。

break。

}

else{

print_book(head>。

getchar(>。

break。

}

case4:

head=load(>。

if(head==NULL>{

printf("文件为空,请先录入数据!

\n">。

getchar(>。

break。

}

else{

paixu(head>。

getchar(>。

}

break。

case5:

head=load(>。

if(head==NULL>{

printf("文件为空,请先录入数据!

\n">。

getchar(>。

break。

}

else{

chaxun(head>。

getchar(>。

}

break。

case6:

head=load(>。

if(head==NULL>{

printf("文件为空,请先录入数据!

\n">。

getchar(>。

break。

}

else{

xiugai(head>。

getchar(>。

break。

}

break。

case7:

printf("注意:

输入图书编码为0时结束!

\n">。

head=creatbook(>。

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

(y/n>\n">。

getchar(>。

scanf("%c",&a>。

getchar(>。

switch(a>{

case'n':

break。

case'y':

fprint(head>。

printf("保存成功!

\n">。

getchar(>。

break。

}

break。

default:

printf("您的输入有误,请重新输入!

\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。

printf("请输入图书编号:

">。

scanf("%d",&num>。

printf("请输入图书名:

">。

scanf("%s",bname>。

getchar(>。

printf("请输入作者名:

">。

scanf("%s",wname>。

getchar(>。

printf("请输入出版社:

">。

scanf("%s",press>。

getchar(>。

printf("请输入类别:

">。

scanf("%s",sort>。

getchar(>。

printf("请输入出版时间:

">。

scanf("%d",&time>。

getchar(>。

printf("请输入价格:

">。

scanf("%f",&price>。

getchar(>。

while(1>{

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{

printf("请输入图书编号:

">。

scanf("%d",&num>。

n=yanzheng(head,num>。

if(n==0>

break。

else

printf("您输入的编号已存在,请重新输入!

\n">。

}while(1>。

if(num==0>

break。

else

{

printf("请输入图书名:

">。

scanf("%s",bname>。

getchar(>。

printf("请输入作者名:

">。

scanf("%s",wname>。

getchar(>。

printf("请输入出版社:

">。

scanf("%s",press>。

getchar(>。

printf("请输入类别:

">。

scanf("%s",sort>。

getchar(>。

printf("请输入出版时间:

">。

scanf("%d",&time>。

getchar(>。

printf("请输入价格:

">。

scanf("%f",&price>。

getchar(>。

}

}

returnhead。

}

//插入结点,并且插入后仍按一定顺序

structbook*addbook(structbook*head>

{

structbook*ptr,*p1,*p2,*p。

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

intsize=sizeof(structbook>。

intnum,time,n=1。

floatprice。

do{

printf("请输入图书编号:

">。

scanf("%d",&num>。

n=yanzheng(head,num>。

if(n==0>

break。

else

printf("您输入的编号已存在,请重新输入!

\n">。

}while(1>。

printf("请输入图书名:

">。

scanf("%s",bname>。

getchar(>。

printf("请输入作者名:

">。

scanf("%s",wname>。

getchar(>。

printf("请输入出版社:

">。

scanf("%s",press>。

getchar(>。

printf("请输入类别:

">。

scanf("%s",sort>。

getchar(>。

printf("请输入出版时间:

">。

scanf("%d",&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>>{

p1=p2。

p2=p2->next。

}

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

if(head==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=head。

while(p!

=NULL>{

if(p->num==m>

break。

p=p->next。

}

if(p==NULL>

return0。

else

return1。

}

//将新链表写入文件中

voidfprint(structbook*head>

{

FILE*fp。

charch='1'。

structbook*p1。

if((fp=fopen("f1.txt","w">>==NULL>{

printf("Fileopenerror!

\n">。

exit(0>。

}

fputc(ch,fp>。

for(p1=head。

p1。

p1=p1->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,*p1。

head=tail=NULL。

if((fp=fopen("f1.txt","r">>==NULL>{

printf("Fileopenerror!

\n">。

exit(0>。

}

ch=fgetc(fp>。

if(ch=='1'>{

while(!

feof(fp>>{

p1=(structbook*>malloc(sizeof(structbook>>。

fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->price>。

if(head==NULL>

head=p1。

else

tail->next=p1。

tail=p1。

}

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("编号图书名作者名出版社类别出版时间价格\n">。

for(ptr=head。

ptr。

ptr=ptr->next>

printf("%d%s%s%s%s%d%.2f\n",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price>。

printf("==========================================================\n">。

}

//删除图书信息

voiddeletebook(structbook*head>

{

inta。

charb,ch='1'。

structbook*p1,*p2。

FILE*fp。

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

">。

scanf("%d",&a>。

p1=head。

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

printf("是否清空文件!

(y/n>\n">。

getchar(>。

scanf("%c",&b>。

getchar(>。

switch(b>{

case'n':

break。

case'y':

if((fp=fopen("f1.txt","w">>==NULL>{

printf("Fileopenerror!

\n">。

exit(0>。

}

fclose(fp>。

printf("文件已清空!

\n">。

}

}

else{

while(p1->num!

=a&&p1->next!

=NULL>{

p2=p1。

p1=p1->next。

}

if(p1->next==NULL>{

if(p1->num==a>{

p2->next=NULL。

printf("是否确定从文件中彻底删除该图书?

(y/n>\n">。

getchar(>。

scanf("%c",&b>。

switch(b>{

case'n':

break。

case'y':

fprint(head>。

printf("删除成功!

\n">。

getchar(>。

break。

}

}

else{

printf("没有找到要删除的数据!

\n">。

getchar(>。

}

}

elseif(p1==head>{

head=p1->next。

printf("是否确定从文件中彻底删除该图书?

(y/n>\n">。

getchar(>。

scanf("%c",&b>。

switch(b>{

case'n':

break。

case'y':

fprint(head>。

printf("删除成功!

\n">。

getchar(>。

break。

}

}

else{

p2->next=p1->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>

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

当前位置:首页 > PPT模板 > 中国风

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

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