程序课程设计图书管理系统.docx
- 文档编号:13120632
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:23
- 大小:304.86KB
程序课程设计图书管理系统.docx
《程序课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《程序课程设计图书管理系统.docx(23页珍藏版)》请在冰点文库上搜索。
程序课程设计图书管理系统
程序设计课程设计报告
图书管理系统
专业
计算机科学与技术
学生姓名
于露
班级
B计123
学号
指导教师
张静林
完成日期
2013年6月
1.课程设计的目的
1.加强对《c语言程序设计》课程知识的理解,掌握c语言应用程序的开发方法和步骤
2.进一步掌握和利用c语言进行程序设计的能力
3.进一步理解和运用结构化程序设计的思想和方法
4.初步掌握开发一个小型实用系统的基本方法
5.学会调试一个较长程序的基本方法
6.学会利用流程图或N-S图表示算法
7.掌握书写程序设计开发文档的能力(书写课程设计报告)
2.课程设计任务
3.课程设计课题
课题1:
图书管理系统
总体程序框图
系统的总体流程图
程序
#include
#include
#include
structlist{
charnum[20];/*图书编号*/
charname[40];/*书名*/
charauthor[40];/*作者*/
charpublish[40];/*出版社*/
doubleprice;/*价格*/
};
structlistb[40];
intw=0;/*定义一个全局变量,用来记录bookinfo.txt文件中的数据个数*/
voidsearch_allinformation(structlistb[]);/*查看全部图书信息*/
voidcheck_bookinformation(structlistb[]);/*查找图书信息*/
voidadd_bookinformation(structlistb[]);/*添加图书信息*/
voiddelete_bookinformation(structlistb[]);/*删除图书信息*/
voidborrow_book(structlistb[]);/*借阅图书*/
intmain()
{
inti=0;
intchoice1;
FILE*fp;
printf("********************************\n");
printf("*欢迎进入图书馆信息管理系统*\n");
printf("********************************\n");
fp=fopen("e:
\\BookInfo.txt","r");
if(fp==NULL)
{printf("Cannotopenthefile!
\n");
exit(0);
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s%s%lf",/*调用函数将文件中的数据读入结构变量中*/
b[i].num,b[i].name,b[i].author,b[i].publish,&b[i].price);
i++;
}
w=i-1;
fclose(fp);
do{
printf("################################################################################");
printf("功能选项:
\n");
printf("1:
查看全部图书信息\n");
printf("2:
查找图书信息\n");
printf("3:
添加图书信息\n");
printf("4:
删除图书信息\n");
printf("5:
借阅图书\n");
printf("0:
退出系统\n");
printf("################################################################################");
printf("请选择操作:
");
scanf("%d",&choice1);
switch(choice1)
{
case1:
search_allinformation(b);
break;
case2:
check_bookinformation(b);
break;
case3:
add_bookinformation(b);
break;
case4:
delete_bookinformation(b);
break;
case5:
borrow_book(b);
break;
case0:
break;
}
}while(choice1!
=0);
printf("谢谢使用!
\n");
return0;
}
/*查看全部图书信息*/
voidsearch_allinformation(structlistb[])
{
inti;
printf("####################################\n");
printf("#查看全部图书信息!
#\n");
printf("####################################\n");
printf("图书的相关信息:
编号书名作者出版社价格\n");
for(i=0;i { printf("%s%s%s%s%.2f\n",/*将数据输出到屏幕中*/ b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); } printf("%d",w); printf("################################################################################\n"); } /*查找图书信息*/ voidcheck_bookinformation(structlistb[]) { inti,flag=0; chars[20]; printf("输入编号: \n");/*提示输入图书编号*/ scanf("%s",s); printf("#####################################\n"); printf("#查找图书信息! #\n"); printf("#####################################\n"); for(i=0;i if(strcmp(s,b[i].num)==0) { printf("该图书的相关信息: 编号书名作者出版社价格\n"); printf("%s%s%s%s%.2f\n", b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); flag=1; break; } if(flag==0) { printf("该图书编号不存在! \n"); printf("是否要继续查找? y: 是;n: 否\n"); getchar(); switch(getchar()) { case'y': check_bookinformation(b);/*调用函数本身继续查找*/ case'n': break; } } printf("################################################################################\n"); } /*添加图书信息*/ voidadd_bookinformation(structlistb[]) { inti,count=0,choice3; structlistp; FILE*fp2; printf("#####################################\n"); printf("#添加图书信息! #\n"); printf("#####################################\n"); printf("请输入该图书的相关信息: \n"); printf("编号书名作者出版社价格\n"); scanf("%s%s%s%s%lf", p.num,p.name,p.author,p.publish,&p.price); printf("添加成功! \n"); printf("是否显示添加后的信息? 1: 是;2: 否\n"); printf("请选择: "); scanf("%d",&choice3); switch(choice3) { case1: { for(i=0;i if(strcmp(p.num,b[i].num)>0) count++; for(i=w;i>count;i--) b[i]=b[i-1]; b[i]=p; w++;/*每添加一本图书,图书数目都会增加一个*/ fp2=fopen("e: \\BookInfo.txt","w"); if(fp2==NULL) { printf("Cannotopenthefile! \n"); exit(0); } for(i=0;i fprintf(fp2,"%s%s%s%s%.2f\n", b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); fclose(fp2); for(i=0;i printf("%s%s%s%s%.2f\n", b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); } case2: break; } printf("################################################################################\n"); } /*删除图书信息*/ voiddelete_bookinformation(structlistb[]) { inti,flag=0,choice4; chars[20]; printf("#####################################\n"); printf("#删除图书信息#\n"); printf("#####################################\n"); printf("请输入图书编号: "); scanf("%s",s); for(i=0;i if(strcmp(s,b[i].num)==0) { printf("删除成功! \n"); printf("是否显示删除后的信息? 1: 是;2: 否\n"); printf("请选择: "); scanf("%d",&choice4); switch(choice4) { case1: { printf("删除后的图书信息: 编号书名作者出版社价格\n"); for(i=0;i { if(strcmp(s,b[i].num)! =0) printf("%s%s%s%s%.2f\n", b[i].num,b[i].name,b[i].author,b[i].publish,b[i].price); } case2: break; } } flag=1; break; } if(flag==0) printf("该图书编号不存在! \n"); printf("################################################################################\n"); } /*借阅图书*/ voidborrow_book(structlistb[]) { inti=0,n=0,flag=0,x=0; intm;/*定义一个变量用来记录sendinfo.txt文件中的数据个数*/ structlistq; structstudent{ charname[20]; charnumber[40]; }; structstudentstu[50]; FILE*fp; FILE*fp4; printf("#####################################\n"); printf("#借阅图书#\n"); printf("#####################################\n"); A: printf("输入图书编号: "); scanf("%s",q.num); fp=fopen("e: \\BookInfo.txt","a"); if(fp==NULL) {printf("Cannotopenthefile! \n"); exit(0); } for(i=0;i { if(strcmp(q.num,b[i].num)==0) flag=1; } if(flag==0) { printf("该图书编号不存在,请重新输入! \n"); borrow_book(b); } fclose(fp); if(flag==1) { fp4=fopen("e: \\SentInfo.txt","r"); if(fp4==NULL) { printf("Cannotopenthefile! \n"); exit(0); } while(! feof(fp4)) { fscanf(fp4,"%s%s",/*调用函数将文件中的数据读入结构变量中*/ stu[i].number,stu[i].name); i++; } n=i-1; fclose(fp4); fp=fopen("e: \\SentInfo.txt","a"); if(fp==NULL) { printf("Cannotopenthefile! \n"); exit(0); } for(i=0;i if(strcmp(q.num,stu[i].number)==0) { printf("该图书已借出! "); printf("是否继续续借? yorn\n"); getchar(); if(getchar()=='y') gotoA; elsex=1; } } if(x==0)/*若该图书未借出,则执行以下操作*/ printf("请输入学号: "); scanf("%d",&m); if((fp=fopen("e: \\SendInfo.txt","a"))==NULL) { printf("Fileopenerror! \n"); exit(0); } fprintf(fp,"%s%d",q.num,m); fclose(fp); printf("借阅成功! \n"); printf("################################################################################\n"); } 功能模块的调试及测试 主菜单运行界面 图4.1主菜单运行界面图 查询所有图书信息模块运行界面 按1操作查询所有图书信息, (1)打开源程序,编译程序,单击Compile按钮,出现错误,如图: (2)错误均指向55行,经检查发现调用函数时调用的是整个结构体,而非某一个,所以应该为search_allinformation(b). (3)改正后重新运行,即的如下所示的界面如下: 图4.2查询所有图书信息模块界面 查找某一本图书信息模块运行界面 按2选择按书名查询某一本图书信息, 若图书编号存在则界面如下: 图4.3按编号查询图书信息界面 若图书编号不存在, (1)输入y,没有进行继续查找的操作 (2)调试程序,可查出输入的y对程序无影响,由于输入的是一个字符,而”\0”本身也是一个字符,则可将scanf(“%s”,&a)改为getchar()即可。 该后则界面如下 图4.4图书编号查询图书界面 添加图书信息模块运行界面 按3选择,输入编号,界面如下: 图4.5按图书编号添加图书界面 删除图书信息模块运行界面 按4选择,输入编号, 如果编号不存在,界面如下: 图4.6按图书编号删除图书界面 如果编号存在,界面如下: 图4.7按图书编号删除图书界面 借阅图书模块信息运行界面 按5选择,输入编号, 出现如下界面: 图4.8借阅图书界面(有错误) 调试后找出错误为文件SendInfo.txt扩展名是隐藏的,应将文件名改为SendInfo,得到如下正确界面: 图4.9借阅图书界面 如果编号不存在,界面如下: 图4.10借阅图书界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 课程设计 图书 管理 系统