c语言程序设计报告图书管理系统.docx
- 文档编号:17963815
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:19
- 大小:84.69KB
c语言程序设计报告图书管理系统.docx
《c语言程序设计报告图书管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计报告图书管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
c语言程序设计报告图书管理系统
中国地质大学
本科生课程论文封面
课程名称c语言课程设计
教师樊媛媛
本科生
本科生学
本科生专业
所在院系
类别:
日期:
课程设计评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总成绩:
评阅人签名:
注:
1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
1.课程论文题目
图书管理系统
2.程序设计思路
根据要求,图书管理系统以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保持记录以进行删除,查询,借书,还书,退出,添加等等操作;另外还有键盘式旋转菜单以实现功能选择模块。
3.功能模块图
系统功能模块图
4.数据结构设计
先写主函数main(),然后设计个功能选项,用switch选择,然后进入不同模块,进行不同选择,实现不同功能。
每个图书信息设置一个结构体,将输入信息存入文件,提供查询功能,还有删除功能以及借书还书功能。
每运行一功能后都返回主界面,方便再次选择,还有设置退出模块,方便退出。
5.算法设计
删除
先定义结构体数组structbooks,然后设置主界面,主界面出现6个功能选项,分别是输入sr()
、借书js()、还书hs()、删除sc()、退出tc()、查询cx().各模块设计如下:
输入模块sr(),先调用文件eup,对其进行读取,然后增加,再对其进行保存和调用。
其中结构体只输入tsmc图书名称,tsbh图书编号,dj单价,zz作者,然后自动生成,czzt存在状态,xm,学号xh,性别xb.
查询模块cx(),有选项图书编号和图书名称,然后选择,用if选择,然后用for循环查找,当输入名称与文件中的名称相同时,便显示此信息。
删除模块就是在查找功能的图书后,选择删除,将strcpy将s[i+1]的值赋给s[i]。
借出模块也是在查询的基础上,若s[i]的存在状态为已借出,则显示已借出,无法再借,若未借出,则将s[i]的存在状态czzt变为已借出,然后输入,学号,性别,最后显示出已借出。
还书模块就是在查询的基础上,若s[i]的存在状态为未借出,则无法归还,若借出,则将存在状态变为未借出,然后自动将,学号,性别变为初始值。
退出模块使flag=1,而在main就有boolflag且main中已令main=0.这样就实现了退出功能。
其中若输入超过选项值后,都会显示输入错误,请重新输入。
若字符错误,程序就直接出现错误了。
6.程序代码
#include
#include
#include
#include
#defineM100
structbooks
{
chartsmc[12];
inttsbh;
floatdj;
charzz[12];
charczzt[12];
charxm[12];
charxb[12];
intxh;
}s[M];
intN;
boolflag;
intmain()
{
intsele;
flag=0;
sele=1;
voidsr();
voidcx();
voidsc();
voidjs();
voidhs();
voidtc();
voidjsh();
//system("tsgl");
printf("\n\n");
printf("************************\n");
printf("1:
输入2:
查询3:
删除\n");
printf("4:
借书5:
还书0:
退出\n");
printf("************************\n");
while
(1)
{
printf("\n\n请输入功能序号:
");
scanf("%d",&sele);
if(sele>=0&&sele<=5)
{
switch(sele)
{
case1:
sr();break;
case2:
cx();break;
case3:
sc();break;
case4:
js();break;
case5:
hs();break;
case0:
jsh();break;
}
if(flag)
break;
printf("\n\n");
printf("************************\n");
printf("1:
输入2:
查询3:
删除\n");
printf("4:
借书5:
还书0:
退出\n");
printf("************************\n");
}
else
{
printf("输入错误请再次输入|\n\n");
printf("\n\n");
printf("************************\n");
printf("1:
输入2:
查询3:
删除\n");
printf("4:
借书5:
还书0:
退出\n");
printf("************************\n");
}
printf("\n\n让任意键继续\n");
}
//wr_file();
}
/******主函数***/
/*********输入*********/
voidsr()
{
intn,i;
N=0;
printf("可输入的书本数:
");
scanf("%d",&n);
N=n+N;
printf("请输入相关信息:
\n");
for(i=1;i<=n;i++)
{
printf("图书名称:
");
scanf("%s",s[N-n-1+i].tsmc);
printf("图书编号:
");
scanf("%d",&s[N-n-1+i].tsbh);
printf("单价:
");
scanf("%f",&s[N-n-1+i].dj);
printf("作者:
");
scanf("%s",&s[N-n-1+i].zz);
strcpy(s[N-n-1+i].czzt,"未借出");
strcpy(s[N-n-1+i].xm,"无");
}
}
/********查询**********/
voidcx()
{
inti,j[100]={-1},d,k,t=0;
charm[20];
printf("查询:
");
printf("1:
图书名称2:
图书编号");
printf("\n\n请输入查询选项:
");
scanf("%d",&k);
if(k==1)
{
printf("请输入图书名称:
");
scanf("%s",m);
for(i=0;i if(strcmp(m,s[i].tsmc)==0) { j[t]=i; t=t+1; } } elseif(k==2) { printf("请输入图书编号: "); scanf("%d",&d); for(i=0;i if(d==s[i].tsbh) { j[t]=i; t++; } } if(j[0]==-1&&t==0) printf("没有找到! \n"); if(j[0]! =-1&&t! =0) { printf("\t图书名称\t图书编号\t单价\t作者\t存在状态\t借书人\t性别\t学号\n"); for(i=0;i printf("\t%s\t%d\t%f\t%s\t%s\t%s\t%s\t%d", s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); } } /********删除模块*********/ voidsc() { inti,d,k,t=0; charms[20]; intja=-1; printf("查询: "); printf("1: 图书名称2: 图书编号"); printf("\n\n请输入查询选项: "); scanf("%d",&k); if(k==1) { printf("请输入图书名称: "); scanf("%s",ms); for(i=0;i if(strcmp(ms,s[i].tsmc)==0) { ja=i; break; } } elseif(k==2) { printf("请输入图书编号: "); scanf("%d",&d); for(i=0;i if(d==s[i].tsbh) { ja=i; break; } } printf("确定删除该图书吗? 1表示Yes,其他No"); intp; scanf("%d",&p); if(p==1) printf("Congratulations,删除成功||\n"); if(ja! =-1&&p) { N=N-1; for(i=ja;i { strcpy(s[i].tsmc,s[i+1].tsmc); s[i].tsbh=s[i+1].tsbh; s[i].dj=s[i+1].dj; strcpy(s[i].zz,s[i+1].zz); strcpy(s[i].czzt,s[i+1].czzt); strcpy(s[i].xm,s[i+1].xm); strcpy(s[i].xb,s[i+1].xb); s[i].xh=s[i+1].xh; } } elseif(ja==-1) printf("没有找到! \n"); } /**********借书模块***********/ voidjs() { inti,j[100]={-1},d,k,t=0; charm[20]; printf("查询: "); printf("1: 图书名称2: 图书编号"); printf("\n\n请输入查询选项: "); scanf("%d",&k); if(k==1) { printf("请输入图书名称: "); scanf("%s",&m); for(i=0;i if(strcmp(m,s[i].tsmc)==0) { j[t]=i; t=t+1; } } elseif(k==2) { printf("请输入图书编号: "); scanf("%d",&d); for(i=0;i if(d==s[i].tsbh) { j[t]=i; t++; } } if(j[0]==-1&&t==0) printf("没有找到! \n"); strcpy(s[j[i]].czzt,"已借出"); printf("此书已借出\n"); if(j[0]! =-1&&t! =0&&s[j[i]].czzt=="未借出") { printf("%s%d%f%s%s%s%s%d", s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); } printf("1: 确定借阅2: 退出\n"); scanf("%d",&k); switch(k) { case1: printf("请输入学号: \n"); scanf("%d",&s[j[i]].xh); printf("请输入: \n"); scanf("%s",&s[j[i]].xm); printf("请输入性别: \n"); scanf("%s",&s[j[i]].xb); strcpy(s[j[i]].czzt,"已借出"); printf("已借出,按任意键继续\n"); //getch(); case2: break; } } /*************还书模块***************/ voidhs() { inti,j[100]={-1},d,k,t=0; charm[20]; printf("查询: "); printf("1: 图书名称2: 图书编号"); printf("\n\n请输入查询选项: "); scanf("%d",&k); if(k==1) { printf("请输入图书名称: "); scanf("%s",&m); for(i=0;i if(strcmp(m,s[i].tsmc)==0) { j[t]=i; t++; break; } } elseif(k==2) { printf("请输入图书编号: "); scanf("%d",&d); for(i=0;i if(d==s[i].tsbh) { j[t]=i; t++; break; } } if(t==0) printf("没有找到! \n"); else { printf("%s%f%s%s%s%s%d\n", s[j[i]].tsmc,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); printf("1: 确定归还2: 退出\n"); intp; scanf("%d",&p); if(p==1) { strcpy(s[j[i]].czzt,"未借出"); strcpy(s[j[i]].xm,"无"); s[j[i]].xh=0; printf("已归还,按任意键继续\n"); } //getch(); } } /*************结束模块***************/ voidjsh() { flag=1; } 7.程序运行结果 各模块均能执行。 8.编程中遇到的困难及解决方法 做程序时,文件函数无法实现,于是找了同学跟我讲解,看书还有就是看例子等等,最终找出了个解决方案。 还有系统最初运行时有很多不尽人意的,比如我希望每次运行后都出现主界面,这样方便选择。 如果出现错误的话,要显示出错误原因,并给出提示,我解决了几个这样的问题,比如借书时如果已借出就要显示出“已借出,请重新选择”,如果没有,就显示无法找到,并显出主菜单,再次选择。 9.总结心得及良好建议 对于程序的设计,必须先理解c语言的一些知识,用起来才会得心应手,最好之前就想好大致用什么算法去实现需要的程序。 对于举一反三的容不是用来抄的,我们必须要先对其理解,这样才能写好一个程序。 程序中最复杂的感觉是调试,有时候自己有很多习惯性的错误真的很难找到,所有要形成好的习惯。 还有就是要养成好的思维,要多练习,不能眼高手低。 10.致
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告 图书 管理 系统