图书馆管理系统C语言课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程报告任务书
开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。
使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
①按书名查询②按作者名查询③按照价钱排序④按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:可以按照自己的程度进行扩展。
比如(1)简单的权限处理(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。
(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
1需求分析
开发一个图书管理系统。
一、图书信息包括图书编号、书名、作者、价格、出版社、出版日期、类别、馆藏地址、库存量。
二、系统功能包括
1 新建图书信息库
2查询图书信息
●全部查询
●按书名查询
●按作者查询
●按类别查询
3 图书排序
●按编号排序
●按价格排序
4 图书信息插入(插入后仍按编号顺序排放的)
5 图书信息删除(按书名查找删除)
6 图书信息修改(按书名查询到书后可以进行选择对各项信息进行修改)
7 图书数目统计
8 图书信息保存在文件中
三、在主函数里设计各个功能选项,然后调用相应的自定义子函数来实现功能。
2 概要设计
(1) 数据结构
主要数据结构:单链表
xt","w"))==NULL)
{
printf("文件图书信息库.txt 打开失败");
exit(0);
}
for(p1=head;p1!=NULL;p1=p1->next)
fprintf(fb,"%15s%20s%15s%15s%15s%15s%15s%%5d\n",p1->num,p1->name,p1->writer, p1->publisher,
p1->time,p1->category,p1->room,p1->price,p1->amount);
fclose(fb);
printf("文件成功保存到图书信息库.txt 中!\n按Enter键继续!");
getchar();
}
xt","r"))==NULL)
{
printf("文件图书信息.txt 打开失败\n");
exit(0);
}
while(!feof(fp))
{
p1=(struct book*)malloc(sizeof(struct book));
fscanf(fp,
"%s %s %s %s %s %s %s %lf %d\n",&p1->num,&p1->name,&p1->writer,&p1->publisher,&p 1->time,&p1->category,&p1->room,&p1->price,&p1->amount);
if(head==NULL)
head=p1;
else
tail->next=p1;
tail=p1;
}
tail->next=NULL;
fclose(fp);
printf("文件信息读出成功!\n按Enter键继续!");
getchar();
return head;
}
//退出函数
int quit(struct book *head)
{
int x=0,n;
system("cls");
printf("是否要保存你操作中对图书信息的改动?\n");
printf("************************************************\n");
printf(" 1---是 2---否 3---取消 \n");
printf("************************************************\n");
printf("请选择:");
scanf("%d",&n);
switch(n)
{
case 1:
if(head==NULL)
{
system("cls");
printf("没有需要保存的数据\n");
printf("您已经退出程序\n谢谢使用\n");
}
else
{ save(head);
system("cls");
printf("您已经退出程序\n谢谢使用\n");
}
break;
case 2:
system("cls");
printf("您已经退出程序\n谢谢使用\n");
break;
default:
x=1;
break;
}
return x;
}
4 调试分析
●插入书籍信息函数中直接写进输入单本书信息的代码时时,显得有些庞大。
另外定义了一个函数struct book * scanf1_();//输入单本书的信息。
用作被插入函数调用。
●从文件中读取信息时发生错误,
原因是将信息写入文件与从文件中读取信息使用的文件名不完全相同。
●综合查询函数开始是每次只能查询一次就退出功能了。
解决方案:模仿主函数,运用了while循环,switch分支结构。
是函数可以在推出前一直使用。
并且加入了清屏函数让使用更方便。
●修改函数原先每次只能对一本书的一项信息进行修改。
解决方案:像综合查询函数一样在函数中运用了while循环,可以对一本书的各项信息进行修改。
而且在主函数中运用了while循环,可以对多本书尽心修改。
●使用中有时候不知道下一步该干什么
在程序中加入如printf("按Enter键继续");的操作提示。
●原来选择退出时没有后悔的余地,设计了一个退出函数,最选择退出后可以有文件保存
提示和取消退出选择5测试结果
6 课程心得总结
这次编写图书信息管理系统,让我对c语言程序设计有了更深的认识和体会。
做一个系统就像完成一个工程。
既要学会分步又要学会分块。
分步就是清楚整个程序的流程;分块就是将整个程序分成各个相对独立的模块,一个个模块完成,最后将其组合,就完成了整个程序。
图书管理系统中在主函数提供各个功能选项,而各个功能又有相应的功能函数实现。
C语言程序设计听不会,也看不会,只能做会。
它是一门实践技术,程序有问题了,一直想,根本不行,只要到电脑上运行一下就解决问题了。
编写程序不要害怕出问题,只有通过不断调试、改进。
程序才能达到完善。
程序在运行过程中要不断地发现问题,改进系统。
我在编写中就对综合查询函数进行了多次改进,让它可以循环使用,每次实现下次查询功能前都会将上次的查询结果清空。
编写的系统是让人使用的,应让系统运行中显得人性化。
每一步都要让人知道该怎么操作,要在程序运行中对用户进行必要的提示。
我在系统加入了许多注意保存、欢迎进入、按enter键继续等语句。
系统编写是精工细活,不可急功近利。
编写系统过程中,要保持清醒的头脑,也要有耐心。
通过努力编写成功后,会很有成就感。
每次编写程序先赶快完成时,总不能完成,搞得自己心烦意乱。
直到最后告诫自己要一步步来时,程序编写便有了很快进展。
总之这次变成收获很大,体会到了c语言的强大,也增添了自己的自信。