图书信息查询软件.docx
《图书信息查询软件.docx》由会员分享,可在线阅读,更多相关《图书信息查询软件.docx(15页珍藏版)》请在冰豆网上搜索。
![图书信息查询软件.docx](https://file1.bdocx.com/fileroot1/2023-4/24/9d05fcb1-87ab-4920-9d01-1ba25cb52ef9/9d05fcb1-87ab-4920-9d01-1ba25cb52ef91.gif)
图书信息查询软件
沈阳航空航天大学
课程设计报告
课程设计名称:
C语言课程设计
课程设计题目:
图书信息查询软件
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
目录
第1章概要设计1
1.1题目的内容与要求1
1.2总体结构1
第2章详细设计2
2.1主模块2
2.2总体图书信息模块3
2.3图书名查询模块4
2.4出版社查询模块5
2.5作者名查询模块6
第3章调试分析7
第4章使用说明8
4.1总体查询模块图8
4.2图书名查询模块图8
4.3出版社查询模块图8
4.4作者名查询模块图9
参考文献10
附录(程序清单)11
第1章概要设计
1.1题目的内容与要求
设计一个简单的图书管理程序,可实现对图书馆的图书信息查询。
具体内容包括:
1、建立图书信息表,包括:
图书名、出版社、作者、ISBN以及简介等信息;
2、作者最多记录3个其他的人以“XX等”表示;。
3、可以按图书名、出版社、作者进行查询
1.2总体结构
本程序主要分为四个模块(功能模块图见图1.1):
主模块,总体查询模块,图书名查询模块,出版社查询模块,作者名查询模块。
总体查询模块:
输入文本文件名,显示整个图书信息。
图书名查询模块:
以图书名的方式查询图书信息。
出版社查询模式:
以出版社的方式进行查询图书信息。
作者名查询模块:
输入作者名称来进行相关图书的信息查询。
图1.1功能模块图
第2章详细设计
2.1主模块
控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。
图2.1主模块流程图
2.2总体图书信息模块
通过此模块,我们可以了解全部图书信息,包括:
图书名,作者,出版社,ISBN等。
具体流程如图2.2所示:
图2.2总体图书信息模块流程图
2.3图书名查询模块
执行此模块时,要输入所要查找图书的图书名,当与图书库中的图书匹配成功后,便将此图的相关信息输出来。
具体如图2.3所示:
图2.3图书名查询模块流程图
2.4出版社查询模块
执行此模块时,要输入所要查找图书的出版社名,当与图书库中的图书的出版社名匹配成功后,便将此图的相关信息输出来。
具体如图2.4所示:
图2.4出版社查询模块流程图
2.5作者名查询模块
执行此模块时,要输入所要查找图书的作者名,当与图书库中的图书作者名匹配成功后,便将此图的相关信息输出来。
具体如图2.5所示:
图2.5作者名查询模块流程图
第3章调试分析
1.调试时发现文件不能打开,原来打开的方式弄错了。
开始我是以写的方式进行的,发现错误后改用了以读写的方式打开文件,这回才真的OK。
2.程序中有些错误时由于马虎造成的,比如有的忘记加‘;’。
3.结构体数组开始时不怎么会用,请教同学后又看看书,总算理解了,改正时程序中的错误。
第4章使用说明
4.1总体查询模块图
进行程序调试时,输入功能选项1,可以查询整个图书信息。
如图4.1所示:
图4.1查询模块
4.2图书名查询模块图
输入功能选项2,按图书名进行查询信息。
如图4.2所示:
图4.2图书名查询模块
4.3出版社查询模块图
输入功能选项3,按出版社进行查询信息。
如图4.3所示:
图4.3出版社查询模块
4.4作者名查询模块图
输入功能选项4,按作者名进行查询信息。
如图4.4所示:
图4.4作者名查询模块
参考文献
[1]张长海.C语言课程设计[M].北京:
高等教育出版社,2006
[2]谭浩强.C语言程序设计(第五版)[M].北京:
清华大学出版社,2011
[3]黄晓宇,丁敬忠.大学计算机基础[M].北京:
邮电大学出版社,2010
[4]陈世清.C语言程序设计[M].浙江:
浙江大学出版社,2012
[5]张基温.《C程序设计案例教程》[M].北京清华大学出版社,2006
附录(程序清单)
#include
#include
#include
structst
{
charshuming[20];
charchuban[20];
charzuozhe[20];
charshuhao[20];
}std[5];
voidread()
{
inti;
FILE*fp;
charpath[5];
printf("请输入操作的文件名:
");
scanf("%s",&path);
fp=fopen(path,"r+");
if(fp==NULL)
{
printf("cannotopenthefile");
exit(-1);
}
for(i=0;i<5;i++)
{
fscanf(fp,"%s%s%s%s\n",&std[i].shuming,&std[i].chuban,&std[i].zuozhe,&std[i].shuhao);
printf("%s%s%s%s\n",std[i].shuming,std[i].chuban,std[i].zuozhe,std[i].shuhao);
}fclose(fp);
}
voidserch1()
{
inti;
charx[20];
printf("请输入所要查询的图书名\n:
");
scanf("%s",&x);
for(i=0;i<5;i++)
{
if(strcmp(std[i].shuming,x)==0)
printf("%s%s%s\n",std[i].chuban,std[i].zuozhe,std[i].shuhao);
}
}
voidserch2()
{
inta;
chary[20];
printf("请输入所要查询图书的出版社\n:
");
scanf("%s",&y);
for(a=0;a<5;a++)
{
if(strcmp(std[a].chuban,y)==0)
printf("%s%s%s\n",std[a].shuming,std[a].zuozhe,std[a].shuhao);
}
}
voidserch3()
{
inti;
charz[20];
printf("请输入所要查询图书的作者\n:
");
scanf("%s",&z);
for(i=0;i<10;i++)
{
if(strcmp(std[i].zuozhe,z)==0)
printf("%s%s%s\n",std[i].shuming,std[i].chuban,std[i].shuhao);
}
}
voidmain()
{
intm;
printf("********欢迎使用图书查询软件********\n");
printf("按1,读取图书信息\n");
printf("按2,按图书名查询\n");
printf("按3,按出版社查询\n");
printf("按4,按作者查询\n");
printf("按5,完成退出\n");
do
{
printf("请输入您想要的功能选项:
\n");
scanf("%d",&m);
if(m==1)
read();
elseif(m==2)
serch1();
elseif(m==3)
serch2();
elseif(m==4)
serch3();
elseif(m==5)
{
printf("完成退出");break;
}
elseprintf("!
!
错误!
!
按键范围1~5\n");
}
while
(1);
}
课程设计总结:
通过此次课程设计,我掌握了编程工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。
老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。
现在终于深刻的了解了这句话。
经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对实验原理也了有更深的理解。
知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。
通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。
能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。
除了课堂外,课程设计是最能学到东西的,最考验人的。
在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。
经过这次课程设计,让我对C++这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。
只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩