程序课程设计图书管理系统#.docx
- 文档编号:3428066
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:20
- 大小:347.02KB
程序课程设计图书管理系统#.docx
《程序课程设计图书管理系统#.docx》由会员分享,可在线阅读,更多相关《程序课程设计图书管理系统#.docx(20页珍藏版)》请在冰豆网上搜索。
程序课程设计图书管理系统#
程序设计课程设计报告
图书管理系统
专业
计算机科学与技术
学生姓名
于露
班级
B计123
学号
1210704324
指导教师
张静林
完成日期
2018年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 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 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 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 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 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 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 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 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 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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 课程设计 图书 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)