图书管理系统C语言实现源代码.docx

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

图书管理系统C语言实现源代码.docx

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

图书管理系统C语言实现源代码.docx

图书管理系统C语言实现源代码

#include

#include

#include

#defineN15//图书编号位数

#defineM20//图书名字节数

#defineL20//作者名字节数

#defineK20//出版社字节数

#defineE10//书的类型字节数

#defineF15//图书时间字节数

structbook*chu_jian();//建立链表

structbook*load();//从文件中读取图书信息

voidbaocun(structbook*);//保存链表

structbook*shanchu(structbook*);//删除数据

voidnum_chaxun(structbook*);//根据图书的编号查询图书的信息,并输出数据

inttongji(structbook*);//统计图书的总数目

voidprintf_(structbook*);//输出连表中的图书信息

structbook*paixu(structbook*);//用选择法根据价格排序

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

structbook*charu(structbook*);//插入图书的信息

structbook{

charnum[N];

charname[M];

charautor[L];

chardizhi[K];

charleixing[E];

chartime[F];

floatprice;

structbook*next;

};

intmain(void)

{

intx=1,n,k;

structbook*head;

charch;

/*charmima[12];

printf("请输入密码\n");

for(i=1;i<=3;i++)

{

scanf("%s",mima);

if(strcmp(mima,"201046830904")==0)

{

x=1;

break;

}

else

printf("密码输入有误,请重新输入!

\n");

}*/

while(x)

{system("cls");

printf("*******************************************************************************\n");

printf("图书管理系统\n");

printf("0---退出系统1---录入数据\n");

printf("2---保存文件3---输出信息\n");

printf("4---根据编号查询信息5---插入数据\n");

printf("6---删除数据7---修改数据\n");

printf("8---统计图书数目9---根据价格排序\n");

printf("10--从文件读取数据\n");

printf("*******************************************************************************\n");

scanf("%d",&n);

getchar();

switch(n)

{

case0:

x=0;

break;

case1:

head=chu_jian();

break;

case2:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else

{

baocun(head);

break;

}

case3:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else

{

printf_(head);

break;

}

case4:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else{

num_chaxun(head);

getchar();

break;

}

case5:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else{

head=charu(head);

break;

}

case6:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else{

head=shanchu(head);

break;

}

case7:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else

{

xiugai(head);

getchar();

break;

}

case8:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else

{

k=tongji(head);

printf("总共有%3d本图书",k);

getchar();

break;

}

case9:

if(head==NULL||head->next==NULL)

{

printf("请先录入图书的数据!

");

getchar();

break;

}

else

{

head=paixu(head);

printf("是否显示排序结果Y/N");

ch=getchar();

getchar();

if(ch=='y'||ch=='Y')

{

printf("\n");

printf_(head);

}

break;

}

case10:

head=load();

if(head==NULL||head->next==NULL){

printf("请先录入图书的数据!

");

getchar();

break;

}

else

break;

default:

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

\n");

getchar();

break;

}

}

return0;

}

//建立链表,并输入数据

structbook*chu_jian()

{

structbook*head,*tail,*p;

charnum[N],name[M],autor[L],dizhi[K],leixing[E],time[F];

floatprice;

head=tail=NULL;

printf("当输入价格为0时则结束\n");

printf("输入编号书名作者出版社类型时间价格\n");

scanf("%s%s%s%s%s%s%f",num,name,autor,dizhi,leixing,time,&price);

while(price!

=0)

{

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

strcpy(p->num,num);

strcpy(p->name,name);

strcpy(p->autor,autor);

strcpy(p->dizhi,dizhi);

strcpy(p->leixing,leixing);

strcpy(p->time,time);

p->price=price;

p->next=NULL;

if(head==NULL)

head=p;

else

tail->next=p;

tail=p;

scanf("%s%s%s%s%s%s%f",num,name,autor,dizhi,leixing,time,&price);

}

getchar();

returnhead;

}

//保存链表至文件

voidbaocun(structbook*head)

{

structbook*ptr;

FILE*fp;

if((fp=fopen("图书管理系统.txt","w"))==NULL)

{

printf("文件图书管理系统.txt打开失败!

");

exit(0);

}

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

fprintf(fp,"%10s%10s%10s%10s%10s%10s%20f\n",ptr->num,ptr->name,ptr->autor,ptr->dizhi,ptr->leixing,ptr->time,ptr->price);

fclose(fp);

printf("文件成功保存到图书管理系统.txt中\n");

getchar();

}

//输出图书的信息

voidprintf_(structbook*head)

{

structbook*p;

p=head;

if(head!

=NULL)

{

do

{

printf("编号:

");

puts(p->num);

printf("书名:

");

puts(p->name);

printf("作者:

");

puts(p->autor);

printf("出版社:

");

puts(p->dizhi);

printf("类型:

");

puts(p->leixing);

printf("时间:

");

puts(p->time);

printf("价格:

");

printf("%f",p->price);

printf("\n");

p=p->next;

}while(p!

=NULL);

}

getchar();

}

//根据图书的编号查询图书的信息,并输出数据

voidnum_chaxun(structbook*head)

{

chara[N];

structbook*p;

printf("输入要查询的图书的编号:

");

gets(a);

p=head;

while(p!

=NULL){

if(strcmp(p->num,a)==0)

break;

p=p->next;

}

if(p==NULL)

printf("没有找到编号为%s的图书!

\n",a);

else{

printf("%10s%10s%10s%10s%10s%10s%20f\n",p->num,p->name,p->autor,p->dizhi,p->leixing,p->time,p->price);

}

}

//删除数据

structbook*shanchu(structbook*head)

{

chara[N];

structbook*p1,*p2,*p3;

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

");

gets(a);

p1=head;

p2=p1;

while(p2!

=NULL&&(strcmp(p2->num,a)!

=0))

{

p3=p2;

p2=p2->next;

}

if(p2==NULL)

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

\n");

elseif(p2==head){

head=p2->next;

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

}

else{

p3->next=p2->next;

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

}

getchar();

returnhead;

}

//统计图书的总数目

inttongji(structbook*head)

{

intx=0;

structbook*p;

for(p=head;p!

=NULL;p=p->next)

x++;

returnx;

}

//根据价格排序

structbook*paixu(structbook*head)

{

structbook*p1,*p2,*p3,*p4,*p5,*p6,*p7;

intx=1;

for(p1=head;p1->next!

=NULL;p4=p1,p1=p1->next)

{

p3=p1;

for(p2=p1->next,p5=p7=p2;p2!

=NULL;p7=p2,p2=p2->next)

{

if(p3->price>p2->price)

{

p3=p2;

p5=p7;

}

}

if(p3!

=p1)

{

if(x&&p1==head)

{

p6=p1->next;

p1->next=p3->next;

p3->next=p6;

p5->next=p1;

head=p3;

p1=p3;

x=0;

}

else

{

p6=p1->next;

p1->next=p3->next;

p3->next=p6;

p4->next=p3;

p5->next=p1;

p1=p3;

}

}

}

printf("排序成功!

\n");

returnhead;

}

//从文件中读入图书信息

structbook*load()

{

FILE*fp;

structbook*p1,*tail,*head;

head=tail=NULL;

if((fp=fopen("图书管理系统.txt","r"))==NULL)

{

printf("文件图书管理系统.txt打开失败!

");

exit(0);

}

while(!

feof(fp))

{

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

fscanf(fp,"%10s%10s%10s%10s%10s%10s%20f\n",&p1->num,&p1->name,&p1->autor,&p1->dizhi,&p1->leixing,&p1->time,&p1->price);

if(head==NULL)

head=p1;

else

tail->next=p1;

tail=p1;

}

tail->next=NULL;

fclose(fp);

returnhead;

}

//修改图书信息

voidxiugai(structbook*head)

{

chara[N];

structbook*p;

floatprice;

charnum[N],name[M],autor[L],dizhi[K],leixing[E],time[F];

intk;

printf("输入要修改的图书的编号");

gets(a);

p=head;

while(p!

=NULL)

{

if(strcmp(p->num,a)==0)

break;

p=p->next;

}

if(p==NULL)

{

printf("没有要找的图书信息\n");

getchar();

}

else

{

printf("***********************************************************\n");

printf("0--放弃修改1--修改编号\n");

printf("2--修改书名3--修改作者\n");

printf("4--修改出版社5--修改类型\n");

printf("6--修改出版时间7--修改价格\n");

printf("8--修改全部\n");

printf("***********************************************************\n");

scanf("%d",&k);

getchar();

switch(k)

{

case0:

break;

case1:

printf("请输入新的编号:

");

gets(p->num);

printf("修改成功!

");

getchar();

break;

case2:

printf("请输入新的书名:

");

gets(p->name);

printf("修改成功!

");

getchar();

break;

case3:

printf("请输入新的作者:

");

gets(p->autor);

printf("修改成功!

");

getchar();

break;

case4:

printf("请输入新的出版社:

");

gets(p->dizhi);

printf("修改成功!

");

getchar();

break;

case5:

printf("请输入新的类型:

");

gets(p->leixing);

printf("修改成功!

");

getchar();

break;

case6:

printf("请输入新的出版时间:

");

gets(p->time);

printf("修改成功!

");

getchar();

break;

case7:

printf("请输入新的价格:

");

scanf("%f",&price);

p->price=price;

printf("修改成功!

");

getchar();

break;

case8:

printf("请输入编号书名作者出版社类型出版时间价格\n");

scanf("%s%s%s%s%s%s%f",num,name,autor,dizhi,leixing,time,&price);

strcpy(p->num,num);

strcpy(p->name,name);

strcpy(p->autor,autor);

strcpy(p->dizhi,dizhi);

strcpy(p->leixing,leixing);

strcpy(p->time,time);

p->price=price;

printf("修改成功!

");

getchar();

break;

default:

printf("您的输入有误!

");

getchar();

break;

}

}

}

//插入图书的信息

structbook*charu(structbook*head)

{

structbook*p1,*p2,*p3;

floatprice;

charnum[N],name[M],autor[L],dizhi[K],leixing[E],time[F];

printf("请输入编号书名作者出版社类型出版时间价格\n");

scanf("%s%s%s%s%s%s%f",num,name,autor,dizhi,leixing,time,&price);

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

strcpy(p1->num,num);

strcpy(p1->name,name);

strcpy(p1->autor,autor);

strcpy(p1->dizhi,dizhi);

strcpy(p1->leixing,leixing);

strcpy(p1->time,time);

p1->price=price;

p3=head;

while((strcmp(p1->num,p3->num)>0)&&(p3->next!

=NULL)){

p2=p3;

p3=p3->next;

}

if(strcmp(p1->num,p3->num)<=0){

if(head==p3)

head=p1;

else

p2->next=p1;

p1->next=p3;

}

else{

p3->next=p1;

p1-

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

当前位置:首页 > 自然科学

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

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