C语言图书馆管理系统课程设计报告.docx
《C语言图书馆管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言图书馆管理系统课程设计报告.docx(17页珍藏版)》请在冰点文库上搜索。
![C语言图书馆管理系统课程设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-7/22/ce40ec5a-b7d4-4fe7-8dea-aa58fc453fc6/ce40ec5a-b7d4-4fe7-8dea-aa58fc453fc61.gif)
C语言图书馆管理系统课程设计报告
《高级语言程序设计》
课程设计报告
设计题目:
**高校图书馆信息管理系统
姓
名:
专
业:
计算机科学与技木
班
级:
指导老师:
2012年01月01日
摘要
绪论
问题定义(或系统分析)总体设计与详细设计调适与测试
总结与心得
附录
附录一源代码
附录二参考文献
**高校图书馆管理系统
摘要
【设计题目】
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等试设计一图书信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作
2)图书信息录入功能(图书信息用文件保存)--输入
3)图书信息浏览功能--输出
4)查询和排序功能:
(至少一种查询方式)--算法
5)按书名查询
6)按作者名查询
7)图书信息的删除与修改(可选项)*
绪论
【设计目的】
1.通过本次课程设计对c语言的充分编程和实际应用进一步熟悉和巩固c语言
语法知识和程序设计的基本方法。
2.因为编程具有细致繁琐的特点,训练大家的编程素质,养成耐心细致的习惯。
3.锻炼思维能力,养成多思考的习惯,同时有助于培养团队意识
4.了解大型程序的编写过程,为以后编写大型程序和开发软件打下基础。
【设计要求】
1.掌握面相对象程序设计的功能抽象和数据抽象方法,掌握类,对象的使用的方法;
2.掌握数据类型的使及不同程序方式的应用.
3.掌握函数使用技巧,包括函数类型的选择,含参数的传递方式等;
4.掌握使用数组,指针,引用,文件等编程的方法.
5.掌握C++流类库的使用.
6.掌握C++模板的使用;
7.掌握中小型规模程序的设计,开发,调试的全过程.
问题定义(或系统分析)
【设计思路】
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:
在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:
另外还需提供选择菜单实现功能,在运行时达到所要求的目的。
总体设计与详细设计
【总体设计】
图1系统功能模块图
【详细设计】
1.主函数
主函数设计要求简洁,只提供部分提示语和函数的调用
【程序】
头函数名:
#include
#include
#includestructbookinf
{intnum;//登录号
charbname[20];//书名
charwname[10];//作者名
charclanum[14];//分类号
charpubcom[10];//出版单位
charpubtime[10];//出版时间
floatprice;//价格
};
(1)来到图书信息管理系统页面
voidindex()
{
charinput;
printf("\n\n\t\t\t****************************
printf("\t\t\t图书信息管理系统\n");
(2)来到功能菜单页面
voidadm_servelist()
{
voidbook_add();
voidbook_view();
voidchange();
voiddel();
voidbook_search();
voidlogin();
voidpwchange();
intin;
charinput;
do
{
printf("\n\n\n\t--欢迎使用信息管理系统--");printf("\n\n\t1.图书信息录入\n");
printf("\t2.图书信息浏览\n");
printf("\t3.图书信息查询\n");
printf("\t4.图书信息删除\n");
printf("\t5.图书信息修改\n");
printf("\t6.退出管理模式\n");
printf("\n\t请选择服务种类:
");scanf("%d",&in);
if(in!
=1&&in!
=2&&in!
=3&&in!
=4&&in!
=5&&in!
=6){
printf("\n\t没有这项服务~\n");
printf("\t按任意键重新选择");input=getchar();
}
while(in!
=1&&in!
=2&&in!
=3&&in!
=4&&in!
=5&&in!
=6);switch(in)
{
case1:
book_add();break;case2:
book_view();break;case3:
book_search();break;case4:
del();break;case5:
change();break;case6:
login();break;
}}
(3)图书信息录入功能模块voidbook_add()
{
voidadm_servelist();voidbook_add();inti=0,j;FILE*fp;charinput;structbookinfbooks;structbookinfbook_taxis[30];printf("\n\n\n\t---请输入图书信息---\n\n");
printf("\t登录号:
");
scanf("%d",&books.num);printf("\n\t书名:
");
scanf("%s",books.bname);printf("\n\t作者名:
");
scanf("%s",books.wname);printf("\n\t分类号:
");
scanf("%s",books.clanum);printf("\n\t出版单位:
");
scanf("%s",books.pubcom);printf("\n\t出版时间:
");
scanf("%s",books.pubtime);printf("\n\t价格:
");
scanf("%f",&books.price);
if((fp=fopen("book.txt","r"))!
=NULL){do
{
fread(&book_taxis[i],sizeof(structbookinf),1,fp);i=i+1;
}
while(!
feof(fp));fclose(fp);
for(j=0;j<=i;j++)
if(books.num==book_taxis[j].num)
{
printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");
input=getchar();
adm_servelist();
break;
}
}
if((fp=fopen("book.txt","r"))==NULL)
{
fp=fopen("book.txt","w");
}
else
{
fclose(fp);fp=fopen("book.txt","a");
}fwrite(&books,sizeof(structbookinf),1,fp);
fclose(fp);
printf("\n\n\n\t信息输入完毕~按任意键继续\n");input=getchar();
adm_servelist();
}
(4)图书信息浏览功能模块
voidbook_view()
{
voidadm_servelist();
voidbook_view();
intinp,i=0,n=0;
FILE*fp;
charinput;
structbookinfbookview[20];
if((fp=fopen("book.txt","r"))==NULL)
{
printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~\n");
printf("\n\t<按任意键返回管理菜单>\n\t");input=getchar();
adm_servelist();
}
else
{
do
{
fread(&bookview[i],sizeof(structbookinf),1,fp);
i=i+1;
}
while(!
feof(fp));
fclose(fp);
do
{
printf("\n\t共有%c条记录",i-1);
printf("\n\n\t登录号:
%d\n",bookview[n].num);
printf("\n\t书名:
%s\n",bookview[n].bname);
printf("\n\t
作者名:
%s\n",bookview[n].wname);
printf("\n\t
分类号:
%s\n",bookview[n].clanum);
printf("\n\t
出版单位:
%s\n",bookview[n].pubcom);
printf("\n\t
出版时间:
%s\n",bookview[n].pubtime);
printf("\n\t
价格:
%f\n",bookview[n].price);
printf("\n\n\t1.
上一页\t2.下一页\t3.回目录\n");
printf("\n\t
请选择:
");
scanf("%d",&inp);
switch(inp)
{
case1:
{
if(n==0)
{
printf("\n\t已到达首页\n\t按任意键重新选择");
input=getchar();
}
elsen=n-1;break;
}
case2:
{
if(n==i-2)
{
printf("\n\t已到达最末页\n\t按任意键重新选择");
input=getchar();
}
elsen=n+1;break;
}
case3:
{
adm_servelist();
break;
}
default:
{
printf("\n\t没有这项服务\n\t按任意键重新选择");input=getchar();
}
}
}
while(inp!
=3);
}
}
(5)图书信息修改与删除功能模块修改:
voidchange(intx)
{
intinp,i=0,j;
voidbook_search();
FILE*fp,*fp1;
charinput;
structbookinfbooks,book_taxis[20];
do
{
printf("\n\n\n\t注意:
您确定要修改该记录吗?
\n");
printf("\n\t1.是\t2.否\n");
printf("\n\t请输入:
");
scanf("%d",&inp);
if(inp!
=1&&inp!
=2)
{
printf("\n\t对不起~没有这项服务~\n");
printf("\t按任意键重新选择\n\t");
input=getchar();
}
}
while(inp!
=1&&inp!
=2);
if(inp==2)
book_search();
if(inp==1)
{
printf("\n\n\n\t---请输入图书信息---\n\n");
printf("\t登录号:
");scanf("%d",&books.num);printf("\n\t书名:
");
scanf("%s",books.bname);printf("\n\t作者名:
");
scanf("%s",books.wname);printf("\n\t分类号:
");
scanf("%s",books.clanum);printf("\n\t出版单位:
");
scanf("%s",books.pubcom);printf("\n\t出版时间:
");
scanf("%s",books.pubtime);printf("\n\t价格:
");
scanf("%f",&books.price);
if((fp1=fopen("book.txt","r"))!
=NULL)
{do{fread(&book_taxis[i],sizeof(structbookinf),1,fp1);i=i+1;
}while(!
feof(fp1));fclose(fp1);
for(j=0;jif(books.num==book_taxis[j].num)
{
printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");
printf("0");input=getchar();book_search();break;
}
for(j=x+1;jif(books.num==book_taxis[j].num)
{
printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("1");
printf("\t按任意键返回管理菜单~");
input=getchar();
book_search();
break;
}
}book_taxis[x]=books;fp=fopen("book.txt","w");
for(j=0;jprintf("\n\n\t信息修改完成!
按任意键返回");
input=getchar();
book_search();
}
}删除:
voiddel(inty)
{
charinput;
FILE*fp;
intinp,i=0,j;
structbookinfbook_taxis[20];
voidbook_search();
voidadm_servelist();
do
{
printf("\n\n\n\t注意:
您确定要删除该记录吗?
\n");printf("\n\t1.是\t2.否\n");
printf("\n\t请输入:
");scanf("%d",&inp);
if(inp!
=1&&inp!
=2)
{
printf("\n\t对不起~没有这项服务~\n");
printf("\t按任意键重新选择\n\t");input=getchar();
}
}
while(inp!
=1&&inp!
=2);
if(inp==2)book_search();
if(inp==1){
if((fp=fopen("book.txt","r"))!
=NULL)
{
do
{
fread(&book_taxis[i],sizeof(structbookinf),1,fp);
i=i+1;
}
while(!
feof(fp));
fclose(fp);
}
if(i>2)
{fp=fopen("book.txt","w");
for(j=0;jfwrite(&book_taxis[j],sizeof(structbookinf),1,fp);fclose(fp);
fp=fopen("book.txt","a");
for(j=y+1;j}
else
{
remove("book.txt");
}
printf("\n\n\t记录已删除!
\n\n\t按任意键返回\n\t");input=getchar();
adm_servelist();
}
}
(6)图书信息查询功能模块
voidbook_search()
{
voidadm_servelist();
voidid_search();
voidwr_search();
voidbn_search();
charinput;
FILE*fp;
intinp;
if((fp=fopen("book.txt","r"))==NULL)
{
printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n");
printf("\n\t<按任意键返回管理菜单>\n\t");
input=getchar();
adm_servelist();
}
else
{
do
{
printf("\n\n\n\t1.按图书登录号查询\n");printf("\n\t2.按图书作者查询\n");
printf("\n\t3.按图书名查询\n");
printf("\n\t4.回到主菜单\n");
printf("\n\n\t请选择查询类别:
");
scanf("%d",&inp);
if(inp!
=1&&inp!
=2&&inp!
=3&&inp!
=4)
{
printf("\n\n\t没有这项服务~\n\t按任意键重新选择~");input=getchar();
}
}
while(inp!
=1&&inp!
=2&&inp!
=3&&inp!
=4);
fclose(fp);
switch(inp)
{
case1:
id_search();break;case2:
wr_search();break;case3:
bn_search();break;case4:
adm_servelist();break;}
}
}
调试与测试
cl*C:
\DocuaentsandSettings\jsj\Debug\sl23.exe*
一欢迎使用信息管理系统一
入H询除改式讲査ffl修棋息息息息息理书节书书书出
请选拝般务种琴
Pressanykeytocontinue
总结与心得
对程序的设计要有充分的逻辑性,将该程序的大纲罗列出来,同时要充分了解该程序所需的编程语言,通过这次课程设计我们能把课本上的知识充分的应用到实践中来。
在本次课程设计中要区分相似函数的功能,减少调试时间,打开文件的方式特别重要,调试程序时很可能是一个符号难死人那,因此编程时要非常的细心编程需要长时间练习。
这次课程设计让我掌握了许多的有用知识。
首先通过不断地学习和锻炼更加熟练地掌握应用软件MicrosoftVisualC++6.0了。
设计正确及合适的程序对
于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。
同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。