c语言最全的图书管理系统程序.docx
《c语言最全的图书管理系统程序.docx》由会员分享,可在线阅读,更多相关《c语言最全的图书管理系统程序.docx(14页珍藏版)》请在冰豆网上搜索。
![c语言最全的图书管理系统程序.docx](https://file1.bdocx.com/fileroot1/2023-1/5/1742c085-50e8-4204-b7e6-884527c467b6/1742c085-50e8-4204-b7e6-884527c467b61.gif)
c语言最全的图书管理系统程序
题目名称:
图书管理系统
算法分析:
1用结构体标出信息系统的成员:
图书书号,书名,作者姓名,出版社,价格
2利用c语言的文件知识将系统的信息存放在c盘下的“projectchoose.txt”的文件夹下
3定义各个子函数
(1)定义输入信息函数,将图书信息按一定格式用scanf函数输入(统计M本的信息);
(2)定义输出函数,每3个表一页直到最后一个;
(3)定义信息查询函数。
a,定义按书号查询函数,如果输入的数字等于图书编号则输出要查询的信息;b,定义按姓名查询函数,如果输入的姓名字符串等于其中一个作者姓名字符串则输出信息;c,定义按出版社名称查找函数,如果输入的字符串等于其中出版社名称,则输出该信息;e,定义查找总函数,输入一个数选择查找方式,1-4分别对应调用abc四个函数。
(4)定义删除信息函数。
输入的数字作为要删除的图书编号,输出要删除的图书信息后选择是否删除,删除后将第g+1个的信息赋给第g个,输出删除后的信息表。
(5)定义信息修改函数。
输入的数字等于要修改的图书编号,输出要修改的图书信息后选择是否修改,用switch,case语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出图书信息。
(6)定义信息统计函数。
输入一个字符串作为出版社,比较M本书的出版社字符串是否等于输入的字符串,统计相等的个数n输出。
(7)定义图书编号排序函数。
用冒泡排序法将M本的书的图书编号按从大到小的顺序排列后输出。
4定义主函数。
调用读取文件函数,输入数字1-5分别对应调用
修改图书信息函数,删除图书信息函数,查找图书信息函数,统计图书信息函数,图书排行信息函数,0表示退出系统。
最后调用保存文件函数。
结束程序。
流程设计:
代码设计:
#include
#include
#include
#defineM2
#definePAGE3
/*图书结构体类型*/
typedefstruct
{intnum;/*图书号*/
charname[20];/*书名*/
charzuozhe[20];/*作者姓名*/
charchubanshe[20];/*出版社*/
intprice;/*价格*/
}BOOKS;
intread_file(BOOKSbooks[])
{FILE*fp;
inti=0;
if((fp=fopen("projectchoose.txt","rt"))==NULL)
{printf("\n\n*****库存文件不存在!
请创建");
return0;
}
while(feof(fp)!
=1)
{fread(&books[i],sizeof(BOOKS),1,fp);
if(books[i].num==0)
break;
else
i++;
}
fclose(fp);
returni;
}
voidsave_file(BOOKSbooks[],intsum)
{FILE*fp;
inti;
if((fp=fopen("projectchoose.txt","wb"))==NULL)
{printf("读文件错误!
\n");
return;
}
for(i=0;iif(fwrite(&books[i],sizeof(BOOKS),1,fp)!
=1)
printf("写文件错误!
\n");
fclose(fp);
}
/*输入模块*/
intinput(BOOKSbooks[])
{inti=0;
printf("\n\n录入图书信息(最多%d种)\n",M);
printf("----------------------------------------------------\n");
do
{printf("\n第%d本图书",i+1);
printf("\n图书编号:
");
scanf("%d",&books[i].num);if(books[i].num==0)break;
printf("\n图书名称:
");
scanf("%s",books[i].name);
printf("\n作者:
");
scanf("%s",books[i].zuozhe);
printf("\n出版社:
");
scanf("%s",&books[i].chubanshe);
printf("\n图书价格:
");
scanf("%d",&books[i].price);
i++;
}while(iprintf("\n--%d种图书信息输入完毕!
--\n",i);
printf("\n按任意键返回主菜单!
");
getchar();
returni;
}
/*输出模块*/
voidoutput(BOOKSbooks[])
{inti=0,j=0,page=1;
printf("\n\n--图书信息表--第%d页\n\n",page);
printf("图书编号----图书名称-----作者-----出版社-----图书价格\n");
printf("-------------------------------------------------------\n");
do
{if(books[i].num!
=0)
{j++;
if(j%PAGE!
=0)
{printf("%4d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("------------------------------------------------------\n");
}
else
{printf("按任意键继续!
");
getchar();
printf("\n\n--图书信息表--第%d页\n\n",++page);
printf("图书编号--图书名称--作者--出版社--图书价格\n");
printf("------------------------------------------\n");
printf("%4d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("---------------------------------------------\n");
}
}
i++;
}while(books[i].num!
=0);
printf("按任意键返回主菜单!
");
getchar();
}
/*给定编号,作者,出版社查找信息模块*/
voidfind_by_num(BOOKSbooks[],intsum)
{inti,find_num;
printf("\n请输入要查找的图书编号:
");
scanf("%d",&find_num);
for(i=0;iif(books[i].num==find_num)
{
printf("这是您所查找到的图书:
\n");
printf("图书编号----图书名称----作者----出版社---图书价格\n");
printf("------------------------------------------\n");
printf("%4d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("---------------------------------------------\n");
break;
}
else
{
printf("\n未找到要查找的图书信息,按任意键返回!
");
getchar();
}
}
voidfind_by_zuozhe(BOOKSbooks[],intsum)
{
inti;
charfind_zuozhe[20];
printf("\n请输入要查找的作者姓名:
");
scanf("%s",find_zuozhe);
for(i=0;iif(strcmp(books[i].zuozhe,find_zuozhe)==0)
{printf("这是您所查找到属于该作者的图书:
");
printf("图书编号--图书名称--作者--出版社--图书价格\n");
printf("------------------------------------------\n");
printf("%8d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("---------------------------------------------\n");
}
else
{printf("\n未找到要查找的图书信息,按任意键返回!
");
}
}
voidfind_by_chubanshe(BOOKSbooks[],intsum)
{
inti;
charfind_chubanshe[20];
printf("\n请输入要查找的出版社名称:
");
scanf("%s",find_chubanshe);
for(i=0;iif(strcmp(books[i].chubanshe,find_chubanshe)==0)
{printf("这是您所查找到属于该出版社的图书:
");
printf("图书编号--图书名称--作者--出版社--图书价格\n");
printf("------------------------------------------\n");
printf("%8d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("---------------------------------------------\n");
}
else
{printf("\n未找到要查找的图书信息,按任意键返回!
");
getchar();
}
}
voidfind(BOOKSbooks[],intsum)
{intchoice;
printf("\n您要按照哪种方式查找?
\n");
printf("\n1.按图书编号查找\n");
printf("\n2.按图书作者查找\n");
printf("\n3.按出版社查找\n");
printf("\n0.退出\n");
printf("\n请选择(0-3):
\n");
scanf("%d",&choice);
switch(choice)
{case1:
find_by_num(books,sum);break;
case2:
find_by_zuozhe(books,sum);break;
case3:
find_by_chubanshe(books,sum);break;
case0:
break;
}
}
/*删除信息模块*/
voiddel(BOOKSbooks[])
{inti,sum;
intdel_num;
printf("\n请输入要删除的图书编号:
");
scanf("%d",&del_num);
for(i=0;iif(books[i].num==del_num)
{
printf("这是您所要删除图书信息:
\n");
printf("图书编号----图书名称----作者----出版社----图书价格\n");
printf("----------------------------------------------------\n");
printf("%8d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("-----------------------------------------------------\n");
printf("您确认要删除吗?
");
printf("按任意键继续!
");
getchar();
printf("已成功删除图书信息!
");
}
}
/*信息修改模块*/
voidmodify(BOOKSbooks[],intsum)
{inti=0,choice,modify_num,flag;
do
{
printf("请输入要修改的图书编号:
");
scanf("%d",&modify_num);
for(i=0;iif(books[i].num==modify_num)
{printf("\n\n--图书信息--\n\n");
printf("图书编号----图书名称----作者----出版社----图书价格\n");
printf("------------------------------------------\n");
printf("%8d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("---------------------------------------------\n");
printf("\n您要修改哪一项?
\n");
printf("\n1.图书名称\n");
printf("\n2.作者\n");
printf("\n3.出版社\n");
printf("\n4.图书价格\n");
printf("\n请选择(1-4):
\n");
scanf("%d",&choice);
switch(choice)
{case1:
printf("\n请输入修改后的图书名称:
");
scanf("%s",books[i].name);break;
case2:
printf("\n请输入修改后的作者姓名:
");
scanf("%s",books[i].zuozhe);break;
case3:
printf("\n请输入修改后的出版社名称:
");
scanf("%s",books[i].chubanshe);break;
case4:
printf("\n请输入修改后的图书价格:
");
scanf("%d",&books[i].price);break;
}
printf("\n\n--图书信息--\n\n");
printf("图书编号----图书名称----作者----出版社----图书价格\n");
printf("--------------------------------------------\n");
printf("%8d%10s%10s%10s%8d\n",books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
printf("---------------------------------------------\n");
break;
}
else
{printf("\n该书不存在!
");
getchar();
}
printf("\n修改成功!
\n");
printf("您要继续修改吗?
(Y/N)");
if(choice=='Y'||choice=='y')
{flag=1;
printf("\n继续!
\n");
}
elseflag=0;
}while(flag==1);
printf("\n按任意键返回主菜单!
");
getchar();
}
/*图书信息统计模块*/
voidcount(BOOKSbooks[],intsum)/*统计某个出版社的图书数*/
{inti;
charcount_chubanshe[20];
intn=0;
printf("请输入一个出版社名称:
\n");
scanf("%s",count_chubanshe);
for(i=0;i{
if(strcmp(books[i].chubanshe,count_chubanshe)==0)
n++;
break;
}
printf("统计出属于该出版社一共有%d本书\n",n);
}
/*排序模块*/
voidsort(BOOKSbooks[],intsum)/*按图书编号排序模块*/
{BOOKSt;
inti,j;
printf("\n--图书信息--\n");
printf("\n排名图书编号图书名称作者出版社图书价格\n");
for(i=1;ifor(j=i+1;jif(books[j].num>books[i].num)
{t=books[j];
books[j]=books[i];
books[i]=t;
}
for(i=0;i{printf("%2d%8d%12s%12s%12s%6d\n",i+1,books[i].num,books[i].name,
books[i].zuozhe,books[i].chubanshe,books[i].price);
}
}
voidmain()
{BOOKSbooks[M];
intchoice,sum;
sum=read_file(books);
if(sum==0)
{printf("请录入基本图书信息!
*******\n");
sum=input(books);
}
do
{
printf("\n\n\n*******图书馆理系统*******\n\n");
printf("1.修改图书信息\n\n");
printf("2.删除图书信息\n\n");
printf("3.查找图书信息\n\n");
printf("4.统计图书信息\n\n");
printf("5.图书排行信息\n\n");
printf("0.退出系统\n\n");
printf("请选择\n\n");
scanf("%d",&choice);
switch(choice)
{case1:
modify(books,sum);break;
case2:
del(books);break;
case3:
find(books,sum);break;
case4:
count(books,sum);break;
case5:
sort(books,sum);break;
case0:
break;
}
}while(choice!
=0);
save_file(books,sum);
}
运行结果:
友情提示:
范文可能无法思考和涵盖全面,供参考!
最好找专业人士起草或审核后使用,感谢您的下载!