图书馆管理系统课程设计.docx
- 文档编号:1464704
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:20
- 大小:235.14KB
图书馆管理系统课程设计.docx
《图书馆管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
图书馆管理系统课程设计
软件设计报告
题目:
图书馆管理系统
院系名称
:
电子工程学院
专业名称
:
电子信息工程
班级
:
电子0902
班内序号
:
学生姓名
:
指导教师
:
时间
:
2010年6月7日至2010年6月18日
三、需求分析
可以实现图书馆图书数据的录入,保存,浏览,查找,添加,删除,修改排序,使图书信息一目了然。
三、课程设计目的
加深对C语言课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,使学生通过系统分析、系统设计、编程调试、,写实验报告等环节,初步掌握软件系统设计的方法和步骤,训练灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提高程序设计水平,培养必要的工程实践动手能力。
四、程序内容
数据的录入数据存储、数据读写数据添加
数据删除数据查询数据修改
数据排序数据打印
五、详细设计及运行结果
功能模块的说明
1输入信息模块:
函数名为input,分为三个小的模块,即在程序目录下创建文件保存数据。
②浏览模块:
函数名为scan,分别打印出输入的:
图书号,图书名,作者,出版社,出版时间,价格。
③查询模块:
函数名为search,分为两个小的模块,即分别以图书号(search_num)或图书名(search_name)查询。
④添加信息模块:
函数名为add,读出信息,读入结构体,插入信息后,覆盖写入源文件。
⑤删除细细模块:
函数名为del,打开文件读出信息至结构体后,先查询并确认,然后跳过该信息覆盖写入源文件。
修改信息模块:
函数名为change,通过strcmp(number,library.book[i].number)检索出要修改的图书号,通过scanf分别输入各成员的值,在通过strcpy将各值覆盖到原成员的值上,就完成了修改。
排序模块:
函数名为sort,通过比较price的大小排序,用for循环将小的放在前面。
main函数:
调用以上各功能模块,实现程序功能。
六、调试情况,设计技巧及体会
调试情况:
经过若干次调试,程序已基本达到设计功能要求。
设计技巧:
通过数组及字符串的比较实现函数功能。
心得体会:
通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。
在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。
在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力,争取把知识学得更扎实、更全面。
不足及改进:
没有用到指针及链表,是本程序最大的不足,程序也存在其他缺点,比如排序是不能按字符进行排序,是功能有局限性;使用数组使程序结构简单,可用性不强。
以后应对程序进行改进,比如部分功能用链表实现,改进排序方案等。
八、附录:
源代码
#include
#include
#include
typedefstruct
{
charnumber[10];/*图书号*/
charname[20];/*书名*/
charwriter[20];/*作者*/
charpublish[50];/*出版社*/
chartime[20];/*出版时间*/
floatprice;/*价格*/
}mbook;/*图书类型标识符*/
typedefstruct
{
intcount;/*数量统计*/
mbookbook[100];
}mlibrary;
mlibrarylibrary;
voidsave()
{
FILE*fp;
if((fp=fopen("library.txt","w"))==NULL)
{
printf("\n不能保存图书信息\n");
return;
}
fwrite(&library.count,sizeof(int),1,fp);
fwrite(library.book,sizeof(library.book[0]),library.count,fp);
}
voidinput()/*输入模块*/
{
inty=1;
system("cls");
while(y)
{
printf("\t请输入您的书籍的书号:
");
scanf("%s",library.book[library.count].number);
printf("\t请输入书名:
");
scanf("%s",library.book[library.count].name);
printf("\t请输入作者名:
");
scanf("%s",library.book[library.count].writer);
printf("\t请输入出版社:
");
scanf("%s",library.book[library.count].publish);
printf("\t请输入出版时间:
");
scanf("%s",library.book[library.count].time);
printf("\t请输入该书的价格:
");
fflush(stdin);
scanf("%f",&library.book[library.count].price);
library.count++;
printf("\n是否继续录入(1.继续;0,退出录入):
");
fflush(stdin);
scanf("%d",&y);
if(y!
=1)
{
y=0;
break;
}
}
save();
}
voidscan()/*输出模块*/
{
inti;
system("cls");
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(i=0;i { printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].writer,library.book[i].publish,library.book[i].time,library.book[i].price); } fflush(stdin); getchar(); } voidsearch()/*查询模块*/ { inta; system("cls"); printf("\t\t****************************\n"); printf("\t\t请输入查询方式\n"); printf("\t\t1------------按书名查询\n"); printf("\t\t2------------按书号查询\n"); printf("\t\t0------------退出\n"); printf("\t\t****************************\n"); scanf("%d",&a); switch(a) { case1: search_name(); break; case2: search_num(); break; case0: return; } } intadd()/*添加模块*/ { intsum=0; chara; while(a=='y'||a=='Y') { printf("要添加本新书吗? y/n\n"); scanf("%c",&a); if(a=='n'||a=='N') break; else if(a=='y'||a=='Y') { library.count++; } else printf("\n输入不正确,请重新输入\n"); } printf("\n新书信息: \n"); scan(); input(); returnsum; } voiddel()/*删除模块*/ { inti; charnumber[10]; system("cls"); printf("\n请输入要删除的图书号: "); fflush(stdin); scanf("%s",number); for(i=0;i { if(strcmp(number,library.book[i].number)==0) break; } if(i! =library.count) { for(;i { strcpy(library.book[i].name,library.book[i+1].name); strcpy(library.book[i].number,library.book[i+1].number); strcpy(library.book[i].publish,library.book[i+1].publish); strcpy(library.book[i].writer,library.book[i+1].writer); strcpy(library.book[i].time,library.book[i+1].time); library.book[i].price=library.book[i+1].price; } library.count--; } else printf("\ncannotfound! \n"); save(); fflush(stdin); getchar(); } voidchange()/*修改模块*/ { inti; charnumber[10]; system("cls"); printf("\n请输入要修改的图书号: "); fflush(stdin); scanf("%s",number); for(i=0;i { if(strcmp(number,library.book[i].number)==0) { printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].numb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)