图书馆信息管理系统C设计Word格式文档下载.docx
- 文档编号:6704998
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:17
- 大小:18.88KB
图书馆信息管理系统C设计Word格式文档下载.docx
《图书馆信息管理系统C设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书馆信息管理系统C设计Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
源程序如下:
#include<
stdio.h>
#defineN3
intok=N;
string.h>
structsystem//定义结构体
{
longnum;
charname[20];
charwriter[10];
charsort[10];
charpublisher[20];
longtime;
floatprice;
};
voidload(structsysteminform[],FILE*fp)//定义一个输入函数,完成信息录入的功能
{
if((fp=fopen("
system.text"
"
w"
))==NULL)
printf("
文件打开错误"
);
printf("
登录号书名作者名分类号出版单位出版时间价格\n"
fprintf(fp,"
for(inti=0;
i<
N;
i++)
{
scanf("
%ld%s%s%s%s%ld%f"
&
inform[i].num,inform[i].name,inform[i].writer,inform[i].sort,inform[i].publisher,&
inform[i].time,&
inform[i].price);
%-6ld%-8s%-8s%-8s%-8s%-6ld%-8f\n"
inform[i].num,inform[i].name,inform[i].writer,inform[i].sort,inform[i].publisher,inform[i].time,inform[i].price);
//在文件fp中存入N本书的信息
}
fclose(fp);
}
voidlook(structsysteminform[])//定义一个输出函数,完成信息浏览的功能
登录号书名作者名分类号出版单位出版时间价格\n"
%ld%s%s%s%s%ld%f\n"
voidsearch1(structsysteminform[])//定义一个查询函数,完成对书名查询的功能
inti;
intn;
//n表示书名为p的书的总本数
charp[20];
//p代表要查询的书名
请输入要查询的书名:
"
scanf("
%s"
p);
for(i=0;
if(strcmp(inform[i].name,p)==0)//判断两字符串是否相等
{
printf("
n++;
}
if(n==0)
输入的书不存在\n"
voidsearch2(structsysteminform[])//定义一个查询函数,完成对作者名查询的功能
intm=0;
//m表示作者名为q的书的总本数
charq[10];
//q代表要查询作者名
请输入要查询的作者名:
q);
if(strcmp(inform[i].writer,q)==0)//判断两个字符串是否相等
{
m++;
if(m==0)
输入的作者名不存在\n"
voidorder1(structsysteminform[],FILE*fp)//定义第一个排序函数,完成对出版时间从高到低的排序功能
a"
inti,j;
structsystemtemp;
N-1;
for(j=N-1;
j>
i;
j--)
if(inform[j-1].time<
=inform[j].time)
{
temp=inform[j-1];
inform[j-1]=inform[j];
inform[j]=temp;
}
按出版时间从高到低排序的结果为:
\n"
for(i=0;
fprintf(fp,"
fclose(fp);
voidorder2(structsysteminform[],FILE*fp)//定义第二个排序函数,完成对价格降序排序的功能
if(inform[j-1].price<
inform[j].price)
temp=inform[j-1];
按价格降序排序的结果为:
for(i=0;
fprintf(fp,"
fclose(fp);
voidcancle(structsysteminform[],FILE*fp)//定义一个删除函数,完成对图书信息按书名删除的功能
{if((fp=fopen("
inti,j=0;
charp[20];
//p代表要删除的书名
请输入需要删除的书名:
if(strcmp(inform[i].name,p)==0)
{for(j=i;
j<
j++)
inform[j]=inform[j+1];
ok--;
删除成功!
结果为:
}
voidmodify(structsysteminform[],FILE*fp)//定义一个修改函数,完成图书价格修改的功能
charm[20];
floats;
请输入要修改价格的书名:
m);
//m表示要修改价格的书名
if(strcmp(inform[i].name,m)==0)//判断两字符串是否相等
{printf("
价格应修改为:
%f"
s);
inform[i].price=s;
修改成功,结果为:
voidmain()
intpushbutton;
structsysteminform[N];
FILE*fp;
fp=fopen("
wb+"
do{
**********MENU***********\n"
0输入图书信息\n"
1浏览图书信息\n"
2按书名查询\n"
3按作者名查询\n"
4按图书出版时间从高到低排序\n"
5按图书价格降序排序\n"
6按书名删除信息\n"
7修改图书价格\n"
8退出\n"
请输入0~8按钮选择操作项:
%d"
pushbutton);
switch(pushbutton)
case0:
load(inform,fp);
break;
case1:
look(inform);
case2:
search1(inform);
case3:
search2(inform);
case4:
order1(inform,fp);
case5:
order2(inform,fp);
case6:
cancle(inform,fp);
case7:
modify(inform,fp);
case8:
printf("
退出\n"
default:
\n非法操作!
while(pushbutton!
=8);
三:
程序主要代码分析
(1)数据结构
选用静态数组实现对图书信息的管理。
结构体如下:
(2)main()主函数
程序采用模块化设计,主函数为程序的入口,各模块独立,可分块调试,各模块由主函数控制调用。
主函数的控制功能通过循环执行一个开关语句来实现。
该开关语句的条件值为调用主菜单函数pushbutton得到的返回值,根据该值,调用相应的各功能函数。
voidmain()
(3)录入信息的功能模块
voidload(structsysteminform[],FILE*fp)//定义一个输入函数,完成信息录入的功能
此模块完成信息的输入功能,用的是一个输入函数。
(4)浏览信息的功能模块(见源程序),采用的是一个输出函数。
(5)信息查询功能模块
voidsearch1(structsysteminform[])//定义一个查询函数,完成对书名查询的功能
此模块通过输入书名完成对书信息的查询,输入书名判断所输入的书名是否与保存在文件中的书名相同,若同则显示出来,若不同则提示“输入的书不存在”。
(6)信息排序模块功能(主要部分)
inti,j;
此模块采用的是冒泡排序法。
(7)信息删除功能(见源程序)输入想删除的图书的书名,判断是否有,有的话则删掉,用其他图书的信息覆盖要删掉图书的信息。
(8)信息修改模块(主要部分)
inti;
此模块是先找出要修改的书名,然后把输入的新的信息赋给原来的信息,以此来完成该功能的实现。
四:
程序调试中出现的问题及其解决方法
问题一:
程序中有些地方符号写落了
解决方法:
按照提示补上去
问题二:
{}此类符号放错地方,引起逻辑错误
按逻辑重新安放
问题三:
删除信息时最后应该是N-1,而不是N
将N改为N-1
问题四:
数组名char后面忘带[]
补上[]
五:
收获体会
回顾起此次课程设计,我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,几天时间里,可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 信息管理 系统 设计