输出图书信息;输出图书总数:
number;
结束
其函数流程图如下:
否
是
2.查找每本图书功能
该函数名称为find_book。
这个函数也是这样,首先用system("cls")进行清屏处理;然后进行定义:
inti,fg=0,chars[20];然后输出:
输入图书编号和查找图书!
再利用for循环语句将输入的图书编号与该程序中的图书编号相等再输出该本图书的所有信息即图书的编号、书名、作者、出版社、类别、出版时间、价格。
这个程序的流程图与上一流程图差别不大,这里就不再写。
3.添加图书功能
该部分函数名称为:
add_book。
首先定义inti,count=0,choice3、structlistp和文件指针FILE*fp2,然后进行清屏处理。
然后输出:
添加图书!
接着依次输入图书的编号、书名、作者、出版社、类别、出版时间、价格。
然后显示是否显示添加后信息,如果选择是则会用switch函数和for循环进行依次输出,最后显示“谢谢您对图书添加!
”并且最后以一排星号结束,选择否则会显示“谢谢您对图书添加!
”并且最后以一排星号结束。
其函数流程图如下:
是
否
4.删除图书功能
该部分函数名称为:
delete_book。
先定义inti,fg=0,ch;chars[20];和文件指针FILE*fp3,然后利用system("cls")进行清屏处理。
然后输出:
删除图书,接着输出“请输入图书编号”,然后利用for循环语句将输入的图书编号与该程序中的图书编号相等,再将这个图书编号所在的图书删除并将信息录入文档。
接着显示“是否显示删除后的信息”,如果选择是则会用switch函数和for循环进行依次输出该图书的编号、书名、作者、出版社、类别、出版时间、价格。
最后以一排星号结束。
选择否也会显示一排星号结束。
该函数的流程图与查看全部图书的流程图类似,这里也不再写出。
5.修改图书功能
该函数名称为:
xiugai_book。
先定义inti,k;chars[20];和文件指针FILE*fp2,然后利用system("cls")进行清屏处理。
然后输入要修改图书的编号,将新图书的信息重新输入保存到文档中即可。
6.图书排序功能
该函数名称为:
paixu_book。
先定义inta;然后用system("cls")进行清屏处理!
然后会输出1-按图书编号排序2-按出版时间排序3-按图书价格排序,然后根据输入数据会进入不同的子函数。
当选择1时,其函数名称为:
num_paixu。
在这个函数中先对变量进行定义:
inti,k,index,b和structlisttemp。
然后清屏,用for函数进行对图书编号的大小比较,然后利用变量temp将不符合次序的进行交换。
然后显示“排序成功!
”和“是否显示排序结果?
1:
是;2:
否”,如果输入1则会依次输出排序后的图书,最后以一排星号结束。
该函数的流程图为:
是
否
当选择2时,其函数名称为:
time_paixu。
当选择3时,其函数名称为:
price_paixu。
该函数与选择1时基本类似,在这就不一一叙述了。
7.金额管理功能
该函数名称为:
cash_manage。
该函数就是将全局变量total输出。
3详细设计
1 主函数
根据程序要求,一个程序只能有一个主函数。
因此主函数是一个程序好坏的基础,也是一个程序在运行时外在的表现,因此对主函数设计我做了很多修改,一直修改到让我满意。
我把函数分为几个部分说吧!
1.写完函数库及建立一个结构数组:
#include
#include
#include
structlist{/*图书结构体*/
charnum[50];/*图书编号*/
charname[50];/*图书名称*/
charauthor[50];/*作者*/
charpress[50];/*图书出版社*/
charsort[50];/*图书类别*/
inttime;/*图书出版时间*/
doubleprice;/*图书价格*/
structlist*next;
};structlistd[40];
2.全局变量;
intnumber=0;
doubletotal;
3.所有的函数声明;
voidsearch_allbook(structlistd[]);/*查看全部图书*/
voidfind_book(structlistd[]);/*查找图书*/
voidadd_book(structlistd[]);/*添加图书*/
doubledelete_book(structlistd[]);/*删除图书*/
voidpaixu_book(structlistd[]);/*图书排序*/
voidnum_paixu(structlistd[]);/*按图书编号排序*/
voidtime_paixu(structlistd[]);/*按图书出版时间排序*/
voidprice_paixu(structlistd[]);/*按图书价格排序*/
voidxiugai_book(structlistd[]);/*图书丢失*/
doublecash_manage();
4.Main函数的头以及定义的变量和文本指针;
intmain()
{
intq=1,w,r,l,i=0;
charb[20],b1[20]="gpf";
charm[20],m1[20]="1";
FILE*fp;
5.登陆权限功能函数
while(q){
system("cls");
printf("\n\n\n\n");
printf("**********欢迎光临**********\n\n");
printf("*************图书管理系统**************\n\n");
printf("1.用户登录\n");
printf("0.退出登录\n");
printf("请输入您的选择:
");
scanf("%d",&w);
printf("\n");
getchar();
switch(w){
case0:
q=0;
break;
case1:
printf("请输入用户名:
");
scanf("%s",b);
printf("\n");
printf("请输入密码:
");
scanf("%s",m);
getchar();
printf("\n");
if(strcmp(b,b1)!
=0||strcmp(m,m1)!
=0){
printf("用户名或密码错误!
\n");
printf("请重新输入:
");
scanf("%c",&l);
getchar();
system("cls");
}
else{
printf("验证通过!
请按Enter键进入!
\n");
scanf("%c",&l);
}
6.文本的输出;
fp=fopen("f.txt","r");
if(fp==NULL)
{
printf("Fileopenthefile1!
\n");
exit(0);
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s%s%s%d%lf\n",
d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,&d[i].time,&d[i].price);
i++;
}
number=i;
fclose(fp);
7.图书管理系统的功能列表函数及main函数结尾;
do{
system("cls");
printf("\n\n\n\n");
printf("|**********************************************|\n");
printf("|*图书信息管理系统*|\n");
printf("|**********************************************|\n");
printf("1.查看全部图书5.修改图书\n");
printf("2.查找图书6.图书排序\n");
printf("3.添加图书7.金额管理\n");
printf("4.删除图书8.退出程序\n");
printf("\n\n");
printf("请输入所选择的序号:
");
scanf("%d",&r);
getchar();
switch(r){
case1:
search_allbook(d);
getchar();
break;
case2:
find_book(d);
getchar();
break;
case3:
add_book(d);
getchar();
break;
case4:
delete_book(d);
getchar();
break;
case5:
xiugai_book(d);
getchar();
break;
case6:
paixu_book(d);
getchar();
break;
case7:
cash_manage();
getchar();
break;
case8:
break;
}
}
while(r!
=8);
printf("谢谢使用!
\n");
}
}
return0;
}
2 查看全部图书函数
voidsearch_allbook(structlistd[])
{
inti;
system("cls");
printf("|**********************************|\n");
printf("|查看全部图书!
|\n");
printf("|**********************************|\n");
printf("图书的相关信息:
编号书名作者出版社类别出版时间价格\n");
for(i=0;i{
printf("%s%s%s%s%s%d%.2lf\n",/*将数据输出到屏幕中*/
d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);
}
printf("书本总数:
%d\n",number);
printf("********************************************************************************\n");
}
3 查找图书
voidfind_book(structlistd[])
{
system("cls");
inti,fg=0;
chars[20];
printf("输入图书编号:
\n");/*提示输入图书编号*/
scanf("%s",s);
printf("|***********************************|\n");
printf("|查找图书!
|\n");
printf("|***********************************|\n");
for(i=0;iif(strcmp(s,d[i].num)==0)
{
printf("该图书的相关信息:
编号书名作者出版社类别出版时间价格\n");
printf("%s%s%s%s%s%d%.2lf\n",
d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);
fg=1;
break;
}
if(fg==0)
{
printf("该图书编号不存在!
\n");
printf("是否要继续查找?
y:
是;n:
否\n");
getchar();
switch(getchar())
{
case'y':
find_book(d);/*调用函数本身继续查找*/
case'n':
break;
}
}
printf("********************************************************************************\n");
getchar();
}
4 添加图书函数;
voidadd_book(structlistd[])
{
inti,count=0,choice3;
structlistp;
FILE*fp2;
system("cls");
printf("|***********************************|\n");
printf("|添加图书!
|\n");
printf("|***********************************|\n");
printf("请输入图书编号:
");
scanf("%s",p.num);
printf("请输入图书名:
");
scanf("%s",p.name);
getchar();
printf("请输入作者名:
");
scanf("%s",p.author);
getchar();
printf("请输入出版社:
");
scanf("%s",p.press);
getchar();
printf("请输入类别:
");
scanf("%s",p.sort);
getchar();
printf("请输入出版时间:
");
scanf("%d",&p.time);
getchar();
printf("请输入价格:
");
scanf("%lf",&p.price);
printf("是否添加并显示添加后的信息?
1:
是;2:
否\n");
printf("请选择:
");
scanf("%d",&choice3);
switch(choice3)
{
case1:
{
for(i=0;iif(strcmp(p.num,d[i].num)>0)
count++;
for(i=number;i>count;i--)
d[i]=d[i-1];
d[i]=p;
number++;/*每添加一本图书,图书数目都会增加一个*/
fp2=fopen("f.txt","w");
if(fp2==NULL)
{
printf("Fileopenthefile2!
\n");
exit(0);
}
for(i=0;ifprintf(fp2,"%s%s%s%s%s%d%.2lf\n",
d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);
fclose(fp2);
printf("添加后的图书信息:
\n编号书名作者出版社类别出版时间价格\n");
for(i=0;iprintf("%s%s%s%s%s%d%.2lf\n",
d[i].num,d[i].name,d[i].author,d[i].press,d[i].sort,d[i].time,d[i].price);
printf("谢谢您对图书的添加!
\n");
break;
}
case2:
printf("谢谢您对图书的添加!
\n");
break;
}
printf("********************************************************************************\n");
getchar();
}
5 删除图书函数
doubledelete_book(structlistd[]){
inti,count=0,fg=0,ch;
chars[20];
FILE*fp3;
system("cls");
printf("|***********************************|\n");
printf("|删除图书|\n");
printf("|***********************************|\n");
printf("请输入图书编号:
");
scanf("%s",s);
for(i=0;iif(strcmp(s,d[i].num)==0)
{
printf("是否删除并显示删除