C课程设计图书管理系统Word文档格式.docx
《C课程设计图书管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C课程设计图书管理系统Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
voidinsert();
voiddel();
voidorder();
voidshow();
4主函数
2。
4。
1包含项目
信息录入函数,信息查询函数,信息修改函数,添加信息函数,删除信息函数,排序函数
voidmain()
intn;
menu();
//显示菜单函数
scanf(”%d"
,&
n);
//输入选择功能编号
while(n)
{
switch(n)
{
case1:
in();
//录入函数
break;
case2:
search();
//查询函数
case3:
modify();
//修改函数
case4:
insert();
//插入函数
break;
case5:
del();
//删除函数
case6:
order();
//排序函数
}
getch();
menu();
//执行完成后继续显示菜单界面
scanf(”%d”,&
}
}
2.5功能菜单
程序代码:
voidmenu()
system(”cls”);
//清屏
printf(”\n\n\n\n”);
printf("
\t|==============================================|\n”);
\t|图书管理系统|\n"
);
printf(”\t|==============================================|\n"
printf(”\t|\t0。
退出|\n”);
printf(”\t|\t1。
录入图书信息|\n”);
printf(”\t|\t2。
查询图书信息|\n"
);
printf(”\t|\t3。
修改图书信息|\n"
printf(”\t|\t4。
插入新记录|\n”);
printf(”\t|\t5。
删除记录|\n"
printf(”\t|\t6。
书籍排序|\n”);
printf(”\t|==============================================|\n”);
printf(”\n请选择(0—6):
”);
}
2.6录入图书信
2.6。
1功能叙述
*在功能界面中输入1,即可以进入图书信息录入状态,如果没有数据,则图书的编号,书名,作者,出版社,并提示用户是否输入.输入y,则开始录入信息;
输入n,则显示“OK"
,再按任意键返回到主菜单界面。
**如果输入y,屏幕显示图书的编号,书名,作者,出版社,输入完成以后,系统提示“保存成功!
是否继续?
"
.
***如果输入y,系统继续提示相应信息,再输入一条记录.
2。
6.2程序代码
voidin()
{
inti,m=0;
//m是记录的条数
charch[2];
FILE*fp;
if((fp=fopen("
Bookinf。
dat”,”ab+”))==NULL)
printf("
无法打开文件!
\n”);
return;
while(!
feof(fp))//检测是否到了文件结尾
if(fread(&book[m],sizeof(structBookinf),1,fp)==1)
m++;
//统计当前记录条数,读取成功则m自加1,继续往后读取
if(m==0)
没有记录!
\n"
else
system(”cls"
show();
//show函数位置错误
(y/n):
”);
scanf("
%s”,ch);
//ch之所以定义成字符数组,是为了接收一个字符和回车符,以字符串方式存入//有所改动
while(strcmp(ch,”Y”)==0||strcmp(ch,”y”)==0)//判断是否要录入信息
{
编号:
scanf(”%d"
&book[m].num);
//输入商品编号
for(i=0;
i〈m;
i++)
if(book[i].num==book[m]。
num)//检验文件中是否已经存在所输入的编号
{
printf(”该记录已存在!
getch();
scanf(”%s”,ch);
}
printf(”书名:
scanf("
%s”,book[m].name);
//输入书名
作者:
scanf(”%s”,book[m]。
aut);
//输入作者
出版社:
scanf(”%s”,book[m].pub);
//输入出版社
printf(”价格:
scanf(”%f”,&
book[m]。
price);
//输入价格//%错打成&,格式输入错误%f写成%5。
2f
if(fwrite(&
book[m],sizeof(structBookinf),1,fp)!
=1)//将录入信息写入指定文件
printf("
不能保存!
getch();
return;
//后来添加的
else
printf(”《%s》保存成功!
\n”,book[m]。
name);
printf(”是否继续?
//询问是否继续
//接受回车
scanf(”%s"
ch);
//输入一次后,无法继续,原因:
格式输入
fclose(fp);
printf(”OK!
7显示信息(在程序中如果不声明要放在in()前面)
程序代码
voidshow()
FILE*fp;
inti,m=0;
if((fp=fopen(”Bookinf。
dat"
,”rb"
))==NULL)//由wb改成
printf(”无法显示文件!
feof(fp))
if(fread(&book[m],sizeof(structBookinf),1,fp)==1)
}
printf(”编号\t\t书名\t\t作者\t\t出版社\t\t价格\n”);
for(i=0;
i<
m;
%d\t\t%s\t\t%s\t\t%s\t\t%5.2f"
,book[i].num,book[i].name,book[i]。
aut,book[i]。
pub,book[i]。
printf(”\n"
8查询图书信息
2.8。
输入图书编号即可查询相应的图书信息。
如果存在该商品编号,则询问是否显示该条信息,需要显示,输入y即可显示。
8。
voidsearch()//价格不显示
intsnum;
//输入的编号
charch[2];
//错写成char[2]
printf(”文件打开失败!
return;
while(!
if(fread(&book[m],sizeof(structBookinf),1,fp)==1)
fclose(fp);
if(m==0)
{
printf(”没有记录"
}
printf(”请输入编号:
scanf(”%d”,&snum);
for(i=0;
m;
if(snum==book[i]。
num)
printf(”已经找到记录,是否显示?
(y/n)"
scanf("
%s"
,ch);
if(strcmp(ch,"
Y”)==0||strcmp(ch,”y"
)==0)
{
printf(”编号\t\t书名\t\t作者\t\t出版社\t\t价格\n”);
printf("
%d\t\t%s\t\t%s\t\t%s\t\t%5.2f”,book[i].num,book[i].name,book[i]。
aut,book[i]。
pub,book[i]。
break;
}
else
return;
if(i==m)
printf("
没有相应的记录!
9添加图书信息
2.9。
进入插入记录界面,程序提示“请输入要插入记录的位置"
输入序号后按Enter键进入添加记录界面,如果输入的记录已经存在,则系统提示“该编号已存在,按任意键继续!
”插入记录以后,可在录入记录模块显示所有数据
voidinsert()
FILE*fp;
inti,j,k,m=0,snum;
Bookinf.dat”,"
ab+”))==NULL)
if(fread(&
book[m],sizeof(structBookinf),1,fp)==1)
m++;
printf(”没有记录!
fclose(fp);
return;
printf(”请输入要插入记录的位置:
\n”);
%d"
snum);
//输入要插入的位置
if(snum==book[i]。
for(j=m—1;
j>
i;
j—-)
book[j+1]=book[j];
//从最后一条记录开始均向后移一位
请输入新信息:
编号:
scanf(”%d”,&book[i+1].num);
for(k=0;
k<
k++)
if(book[k]。
num==book[i+1]。
num&
&
k!
=i+1)
{
该编号已经存在,按任意键继续!
getch();
fclose(fp);
printf(”书名:
%s”,book[i+1]。
name);
printf(”作者:
scanf(”%s"
book[i+1]。
aut);
printf(”出版社:
%s”,book[i+1].pub);
价格:
scanf(”%f”,&book[i+1]。
if((fp=fopen("
dat”,”wb"
))==NULL)
printf(”文件打开失败!
return;
}
for(k=0;
k〈=m;
if(fwrite(&book[k],sizeof(structBookinf),1,fp)!
=1)//将修改后的记录写入磁盘文件
{
printf("
保存失败!
getch();
}
printf(”插入成功!
fclose(fp);
10修改图书信息
2.10.1功能叙述
进入修改记录功能模块后,程序提示用户输入要修改的图书编号,输入编号,如果存在该记录,系统显示“编号书名作者出版社"
用于修改记录,如果没有找到,则提示“没有找到!
10。
voidmodify()
inti,j,m=0,snum;
if((fp=fopen(”Bookinf.dat”,”ab+"
printf(”无法打开文件!
if(fread(&book[m],sizeof(structBookinf),1,fp)==1)
fclose(fp);
printf(”请输入要修改的记录信息的编号!
%d”,&snum);
if(snum==book[i]。
num)//检索记录中是否有要修改的信息
if(i〈m)
{
已经找到,是否修改?
(y/n)\n"
%s”,ch);
Y"
)==0||strcmp(ch,”y”)==0)
书名:
scanf("
%s”,book[i+1]。
printf(”作者:
scanf(”%s”,book[i+1].aut);
printf(”出版社:
scanf(”%s”,book[i+1].pub);
scanf(”%f"
&book[i+1].price);
printf(”保存成功!
else
printf(”没有找到!
return;
if((fp=fopen("
dat”,"
wb”))==NULL)
printf(”文件打开失败!
return;
}
for(j=0;
j<
j++)
if(fwrite(&book[j],sizeof(structBookinf),1,fp)!
=1)
保存失败!
fclose(fp);
2.11删除图书信息
2.11。
进入删除记录功能模块,程序提示输入要删除的图书编号,按Enter之后,如果查询到该书记录,,则提示“记录已找到,是否删除?
,如果用户输入“y"
则删除该记录,并弹出“删除成功!
”的提示信息,如果没找到要删除的图书信息,则提示“没有找到”信息
11。
voiddel()
intsnum,i,j,m=0;
charch[2];
,”ab+"
printf(”无法打开文件!
if(fread(&book[m],sizeof(structBookinf),1,fp)==1)
没有记录!
请输入要删除的记录信息的编号!
scanf(”%d”,&snum);
printf(”该记录已找到,是否删除?
(y/n)”);
scanf(”%s"
,ch);
if(strcmp(ch,”Y”)==0||strcmp(ch,"
y"
for(j=i;
j〈m;
book[j]=book[j+1];
m——;
printf(”删除成功!
Bookinf.dat”,”wb”))==NULL)
printf(”打开失败!
j〈m;
if(fwrite(&
book[j],sizeof(structBookinf),1,fp)!
getch();
fclose(fp);
12图书排序
2.12.1功能叙述
将图书按价格升或降进行排序,选择1,升序,选择2,降序
12。
voidorder()
structBookinftemp;
inti,j,m=0,n;
文件打开失败!
if(fread(&book[m],sizeof(structBookinf),1,fp)==1)
printf(”请选择排序方式(1。
价格升序,2.价格降序):
scanf(”%d”,&n);
case1:
for(i=0;
i〈m—2;
i++)//之前是m—1
for(j=i+1;
m—1;
if(book[i]。
price〉book[j].price)
{
temp=book[i];
book[i]=book[j];
book[j]=temp;
}
}break;
//忘记break了
m—2;
m-1;
if(book[i]。
price〈book[j].price)
temp=book[i];
book[i]=book[j];
book[j]=temp;
}break;
default:
printf(”输入有误!
编号\t\t书名\t\t作者\t\t出版社\t\t价格\n”);
printf(”%d\t\t%s\t\t%s\t\t%s\t\t%5。
2f”,book[i].num,book[i].name,book[i].aut,book[i]。
pub,book[i].price);
printf(”\n"
fclose(fp);
注:
所有程序代码都已经经过了调试并且成功