图书馆管理系统c语言Word文档下载推荐.docx
- 文档编号:5628317
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:29
- 大小:178.20KB
图书馆管理系统c语言Word文档下载推荐.docx
《图书馆管理系统c语言Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统c语言Word文档下载推荐.docx(29页珍藏版)》请在冰点文库上搜索。
if(n<
1||n>
9)
{t=1;
getchar();
}/*对选择的数字作判断*/
elset=0;
}
while(t==1);
/*实现选择功能*/
switch(n)
{case1:
enter();
break;
/*输入功能*/
case2:
add();
/*追加功能*/
case3:
browse();
/*浏览功能*/
case4:
search();
/*查找功能*/
case5:
modify();
/*修改功能*/
case6:
del();
/*删除功能*/
case7:
TSXX_out();
/*图书借出*/
case8:
TSXX_back();
/*归还功能*/
case9:
exit(0);
/*退出*/
}
/*以上完成了主函数计主菜单的构成*/
2输入模块
[数据结构]
根据题目中对数据结构的要求每一本图书包含的信息利用一个结构体来存放。
其中结构体需包含:
字符变量:
图书名称、作者、借书人姓名
实型变量:
图书编号、单价、学号
整型变量:
存在状态,、性别、库存
定义结构体如下
structTSXX
{chartsn[30];
/*图书名称*/
intbh[15];
/*图书编号*/
floatpri;
/*单价*/
charzzn[10];
/*作者*/
intzt;
/*存在状态*/
intkc/*库存*/
charjsn[10];
/*借书人姓名*/
intsex;
/*性别*/
intnum[15];
/*学号*/
}ts[N];
/*ts[N]中每个数组元素对应一本书的全部信息*/
/*以上完成了对于结构体的定义*/
[注意]
本程序ts[N]中的个数,采取宏定义的方式,可以随时在源程序宏定义中更改,本程序在此宏定义#defineN10000。
[流程图]
Y
voidenter()
{inti;
for(i=0;
i<
N;
i++)
{printf("
请输入图书信息\n\n"
input(i);
}/*调用输入函数*/
if(i!
=0)save();
/*/
printf_back();
/*一个任务结束时让用户选择是浏览还是返回*/
3。
追加模块
[需求分析]
该模块的功能是假如用户需要新加入新的图书信息,通过键盘输入将新信息逐条加在原来输入文件上但不能覆盖原有信息。
voidadd()
{inti,n,m,k;
FILE*fp
n=()load;
printf(〝可添加信息个数(0-%d):
[]\b\b〝,N-n-1);
scanf(〝%d〝,&
m);
k=m+n;
for(i>
n;
=k;
input(i);
if(fp=fopen(〝ts.txt〝,〝a〝)==NULL)
{printf(〝文件无法打开\n〝);
for(i>
i++)
fclose(fp);
4.查找模块
[需求分析]
该模块的功能是根据输入的图书名称查找相应的记录找到以后,可继续进行删除和修改功能
YN
N
Search()
{inti,k,n,t1=1,t2,t3,t4;
structTSXXt;
n=load();
{do
{k=-1;
printf(〝\n\n输入你所要查询的图书名称:
〝);
scanf(〝%s〝,t.tsn);
print_show()
i++;
)
if(strcmp(t.tsn,ts[i].tsn)==0)
{k=i;
printf_one();
if(k==-1)
printf(〝对不起,您所查找的图书不存在〝);
printf(〝继续吗?
\n\t1).继续查找2)不,返回请选择[]\b\b〝);
t1);
while(k==-1&
&
wi==1);
t4=0;
t3=0;
if(k!
=-1)
{printf(〝\n\n您的下一步操作?
\n\n1)查找下一个2}修改图书信息3)删除图书信息4)回到主菜单请选择[]\b\b〝);
scanf(〝%d〝,&
t2);
switch(t2)
{case2:
w3=modify_data(k,n);
{print(〝\n\n你确定吗?
\n\t1)确定删除2}不,返回请选择[]\b\b〝);
t4);
if(t4==1)
ts[k].num=0;
if(t3==1||t4==1)
{save(n);
printf(〝\n\n信息修改成功〝);
printf(〝\n\您的下一步操作?
\n\t1)查找下一个2)返回请选择[]\b\b〝);
scanf(〝%d〝,&
}
while(t3==1);
mneu();
5、修改模块
该模块用于显示所有图书信息,由于记录较多,故而采取分屏显示。
显示完所有纪录后,用户需输入图书编号进而查找图书信息
Y
N
voidmodify()/*修改模块*/
{sructTSXXt;
FILE*fp;
inti,n,k,t0=1,t1,t2=0;
/*让用户查看全部记录以便确认要修改的记录*/
printf_show();
/*调用数据结构显示函数*/
{if((i!
=0)&
(i%10==0))/*用于分屏显示*/
{printf(“\n\n请记录需要修改的图书编号。
任意键继续……”);
getch();
puts(“\n\n”);
printf_one(i);
/*调用显示一个记录的函数*/
{printf(“\n\n请输入您需要修改的图书编号。
NO.:
”);
scanf(“%f”,&
t.bh);
/*输入需要修改的图书编号*/
i++)/*查找要修改的记录*/
if(strcmp(t.bh,ts.bh)==0)
/*找到许需修改的记录*/
t=ts[i];
/*将ts[i]中原有需修改的记录备份给t,以便用户反悔时恢复*/
if(k==-1)printf(“\n\n信息不存在!
再试一次”);
}while(k==-1);
/*当k=-1时表示没找到*/
print_show();
printf_one(k);
t1=modify_data(k,n);
/*修改学生记录并且返回保存控制值t1,t1=1则表示用户已确认修改*/
if(t1==1)/*t1=1时则表示用户确定此次修改*/
{printf(“\n成功修改,是否继续修改?
\n\n\t1).是2)返回并保存\t[]\b\b);
scanf(“%d”,&
t0);
t2=1;
/*来控制保存,使w2=1是标记已有过的记录*/
eles
{to=0;
if(t2==1)
ts[k]=s;
}
/*到此处由于用户没有确认这次修改。
使t0=0,为了终止循环,ts[k]=s;
则把备份的s恢复给ts[k],这样使得在此之前修改过的成功保存而本次不修改*/
if(t0!
=1&
t2==1)
/*t0不等于1则表示正常返回,t2=1则表示在此之前有过修改,这时就保存用户已确认的修改并返回*/
save(n);
/*t2不等于1表示在此之前没有修改过,而又反悔这次修改,则不保存返回*/
}while(t0==1);
menu();
6.删除模块
[需求模块]
显示完所有纪录后,用户需输入图书编号进而查找图书信息,
、、、
Y
voiddel()/*删除模块*/
/*让用户查看全部记录以便确认要删除的记录*/
{printf(“\n\n请记录需要删除的图书编号。
{printf(“\n\n请输入您需要删除的图书编号。
/*输入需要删除的图书编号*/
i++)/*查找要删除的记录*/
/*找到许需删除的记录*/
/*将ts[i]中原有需删除的记录备份给t,以便用户反悔时恢复*/
/*调用数据结构显示函数*/
t1=del_data(k,n);
/*删除学生记录并且返回保存控制值t1,t1=1则表示用户已确认删除*/
if(t1==1)/*t1=1时则表示用户确定此次删除*/
{printf(“\n成功删除,是否继续删除?
/*来控制保存,使w2=1是标记已有过的记录*/
/*到此处由于用户没有确认这次删除。
则把备份的s恢复给ts[k],这样使得在此之前删除过的成功保存而本次不删除*/
/*t0不等于1则表示正常返回,t2=1则表示在此之前有过删除,这时就保存用户已确认的删除并返回*/
/*t2不等于1表示在此之前没有删除过,而又反悔这次删除,则不保存返回*/
7、借出模块
该模块功能应体现为
voidbook_out(void)
{intn,s,i,d;
if((n=search_TSXX())!
=-1&
ts[n].kc>
0)
{printf("
请输入学号:
"
s);
printf("
请输入可借天数:
d);
for(i=0;
10;
{
if(ts[n].num[i]==0)
ts[n].num[i]=s;
ts[n].days[i]=d;
break;
ts[n].kc--;
if(n!
ts[n].kc==0)printf("
此书已经全部借出.\n"
return_confirm();
/*上面是借书的函数,首先调用找书函数*/
8、归还模块
voidTSXX_back(void)
intn,s,i;
page_titie("
归还图书"
if((n=search_TSXX())!
ts[n].kc<
ts[n].totai)
借阅者图书证列表:
\n"
if(ts[n].num[i]!
=0)
[%d]-%d天\n"
ts[n].num[i],ts[n].days[i]);
请输入借书证序号:
{if(ts[n].num[i]==s)
{ts[n].num[i]=0;
ts[n].days[i]=0;
break;
ts[n].kc++;
ts[n].kc==ts[n].totai)
全部入藏.\n"
9.公共函数
1)保存函数save(intn)
[说明]
/*形参n控制保存的个数。
当ts[k].bh=0表示删除,不保存该记录。
*/
voidsave(intn)
{FILE*fp;
inti;
if((fp=fopen(“tsxx.txt”,“wb”))==NULL)
{printf(“\n不能打开文件\n”);
returnNULL;
if(ts[i].bh!
=0)
if(fwrite(&
ts[i],sizeof(structTSXX),1,fp)!
=1)
printf(“文件无法写\n”);
fclose(fp);
2)加载函数
[程序]
/*该函数用于加载所有记录,并且可以返回所有记录的个数。
voidload()
intI;
if((fp=fopen(“tsxx.txt”,“r”))==NULL)
{printf(“文件无法打开”);
!
feof(fp);
fread(&
ts[i],sizeof(structTSXX)),1,fp);
return(i-1);
3).输入函数
a.\*输入整个记录的输入函数*\
voidinput(inti)
{printf(“图书名称:
”);
scanf(“%s”,ts[i].tsn);
printf(“图书编号:
no_input1(i,i);
printf(“图书单价:
scanf(“%f”&
ts[i].pri);
printf(“作者:
scanf(“%s”,ts[i].zzn);
;
printf(“库存:
ts[i].kc)
state();
printf(“借书人姓名:
scanf(“%s”,ts[i].jsn);
printf(“性别(1代表男,2代表女):
ts[i].sex);
printf(“学号:
no_input2(i,i);
b./*号码输入函数no_input1()*/
voidno_input(inti,intn)
{inti,j,t1;
do
{t1=0;
scanf(“%d”,ts[i].bh);
for(j=0;
ts[i].bh[j]!
=’\0’;
j++;
if(ts[i].bh[j]<
’0’||ts[i].bh[j]>
’9’)
{puts(“输入错误!
只接受数字输入,请重新输入”);
t1=1;
if(t1!
for(k=0;
k<
k++)
if(k!
=i&
strcmp(ts[k].bh,ts[i].bh)==0)
{puts(“记录已存在,请重新输入”);
t1=1;
while(t1==1);
c./*号码输入函数no_input2()*/
voidno_input2(intt,intp)
{inti,j,k,t1,n;
ts[i].num);
for(j=0;
ts[i].num[j]!
='
\0'
j++)
if(ts[i].bh[j]<
'
0'
||ts[i].bh[j]>
9'
输入错误!
只接受数字输入,请重新输入"
if(t1!
strcmp(ts[k].num,ts[i].num)==0)
记录已存在,请重新输入"
t1=1;
while(t1==1);
4./*状态函数*/
voidstate(inti)
{if(ts[i].kc!
1"
elseprintf("
0"
/*显示一个记录函数*/
voidprintf_one(inti)
{
书名:
%s\n"
ts[i].tsn);
作者:
ts[i].zzn);
存数:
%dof"
ts[i].kc);
存在状态:
%d\n"
ts[i].zt);
/*修改整条记录的函数*/
modify_data(inti,intn)
{intc,t1;
{puts("
\nmodifyby=>
\n\n1).编号.2).图书名称3).单价4).作者5).状态6).库存.7).全部信息8).返回"
请选择?
:
[]\b\b"
c);
if(c>
7||c<
1)
\n输入错误,请重新选择"
getchar();
while(c>
8||c<
1);
{switch(c)
no_input1(i,n);
图书名称"
scanf("
%s"
case3:
单价"
%f"
作者"
状态"
ts[i].zt);
库存"
ts[i].kc);
case7:
};
2&
c<
7)
printf_one(i);
\n确定修改嘛?
\n\n\t1).确定2).不,重新修改3).返回并保存[]\b\b"
while(t1==2);
return(t1);
源代码:
#include<
stdio.h>
stdlib.h>
conio.h>
structBOOK
{intid,usr[10],total,store,days[10],zt;
charname[31],author[21];
}books[100];
voidpage_title(char*menu_item)
{printf("
************欢迎使用08WL型图书馆管理系统************\n\n-%s-\n\n"
menu_item);
voidreturn_confirm(void)
\n按任意键返回……\n"
voidstate(intn)
{if(books[n].total!
if(books[n].total==0)
intsearch_book(void)
intn,i;
请输入图书序号:
scanf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 语言
![提示](https://static.bingdoc.com/images/bang_tan.gif)