c语言实现图书管理系统实训报告.docx
- 文档编号:25846275
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:42
- 大小:377.75KB
c语言实现图书管理系统实训报告.docx
《c语言实现图书管理系统实训报告.docx》由会员分享,可在线阅读,更多相关《c语言实现图书管理系统实训报告.docx(42页珍藏版)》请在冰豆网上搜索。
c语言实现图书管理系统实训报告
实训课程设计报告
题目:
图书信息管理系统
学院:
信息学院系别:
电子系
年级:
2012级专业:
电子信息科学与技术
组长:
**
组员:
******
指导老师:
***
2014年1月1日
摘要
图书馆作为一种信息资源的集散地,在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息,图书和用户借阅资料繁多,包含很多的信息数据的管理。
随着图书馆规模的不断扩大,图书数量也相应增加,若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体管理效率低下而且容易出错,造成人力与物力过多浪费,图书馆管理费用增加,影响整个图书馆运作和管理,也不方便读者对图书资料的查阅。
因此,必须制定一套合理、有效、规范和使用的图书馆管理信息系统,对对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利用管理效率的提高。
题目简介
图书管理系统,本系统能具体化、合理化的管理图书馆中的图书信息、图书流通信息,用结构化的思维方式去了解图书馆的运做。
本次实训,要求我们用C语言来完成一个简单的系统,实现一些简单的功能,我们组在讨论之后,决定使用老师给的参考题目——图书管理系统,因为我们对这个流程比较熟悉,并且更清楚使用者的需求,我们将在这个方面发挥得更好。
由于时间以及我们所掌握的知识有限,我们决定只实现由管理员登陆来管理图书信息功能的系统,包括新书信息的录入,浏览,查询,修改和删除的功能,同时,在第一界面处,有管理员身份认证,防止信息被恶意篡改或删除.
小组分工情况:
姓名
学号
分工
**
2012080321082
编程及测试
***
2012080321081
需求分析、测试、后期文档完成
***
2012080321064
系统设计、辅助编程、测试
需求分析
1。
编写目的
对于有一定规模的图书馆来说,存书数量大,存书的标识信息更大,而且图书馆也需要对读者及其管理员的信息作记录,以及读者借阅,归还图书的情况,这些汇总起来信息量非常大,如果采用手工管理,效率低,易出错,统计工作量大。
鉴于这种情况,一个操作方便,简单实用的图书信息管理系统的开发就成为必要。
2.项目实施背景
出于我们的学术水平的限制,我们不可能完成功能全面,实用性强的系统程序,在短期内就更不用说了,所以我们的编程定位是实现一些最基础的的功能。
主要是实现对图书馆中各种信息的管理,使得图书信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等.这些优点能够极大地提高图书馆管理的效率,也是图书馆正规化管理的重要途径,故设计此系统.
3.业务流程图
4.数据流程图
5.系统运行环境
系统可以在MicrosoftVisualC++6。
0软件运行,硬件基本无要求,现在的计算机基本可以运行该系统。
系统详细设计说明
1总体简述
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
2总体设计构想
根据题目要求,将系统分为两个主界面:
1、管理员身份认证界面该,界面包含三个内容
管理员编号
登录密码
验证码输入
2、主菜单界面
该界面包括六个主要模块
菜单选择模块
图书信息录入功能模块
图书信息浏览功能
图书信息查询功能
图书信息的删除和修改
退出
3程序流程图
4编码实现过程
该程序设计遵循程序设计的模块化原则,主体部分由每个自编功能函数块完成,现将设计部分详解.
(1)Myprintf函数,实现布局界面功能
voidmyprintf(intn)
{
inti=0;
for(i=0;i<=n;i++)
printf("%c”,2);
}
(2)mm函数,实现密码及验证码功能
voidmm(intn,int*q)
{inty,k,m,r=0,h[4];
for(k=0;k<4;k++)
{h[k]=rand()%10;
r=r+h[k];
}
printf(”输入密码:
");
scanf("%d",&m);
printf(”%c%c",14,14);
printf("计算下式的值作为验证码输入:
\n”);
printf(”%c%c",14,14);
printf(”%d+%d+%d+%d=?
\n”,h[0],h[1],h[2],h[3]);
printf(”%c%c?
=”,14,14);
scanf("%d”,&y);
if(y==r)
{if(n==m)
*q=0;
else
*q=1;
}
else
{printf("验证码输入错误\n”);
*q=1;
}
}
(3)save函数,实现保存信息功能
voidsave()//保存图书信息.
{
FILE*fp;
if((fp=fopen("library.doc”,”w”))==NULL)
{
printf("\n不能保存图书信息\n");
return;
}
fwrite(&library.count,sizeof(int),1,fp);
fwrite(library。
book,sizeof(library。
book[0]),library.count,fp);
}
(4)putin函数,实现录入功能
voidputin()/*定义录入函数*/
{
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]。
author);
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();
}
(5)lookup函数,实现查找功能
voidlookup()
{
system("cls”);
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(inti=0;i〈library。
count;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]。
author,library。
book[i].publish,library.book[i]。
time,library.book[i]。
price);
}
fflush(stdin);
getchar();
}
voidsearch_by_name()/*定义按书名查询*/
{
chars2[20];
intflag=1;
printf("\n请输入要查询的书名:
”);
fflush(stdin);
scanf(”%s”,s2);
printf(”图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(inti=0;i count;i++) if(strcmp(s2,library.book[i]。 name)==0) { flag=0; 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]。 author,library。 book[i].publish,library.book[i].time,library。 book[i].price); } if(flag) { printf("cannotfound! "); } fflush(stdin); getchar(); } (6)实现查找功能的函数 voidsearch_by_name()/*定义按书名查询*/ { chars2[20]; intflag=1; printf(”\n请输入要查询的书名: ”); fflush(stdin); scanf(”%s”,s2); printf(”图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n”); for(inti=0;i〈library。 count;i++) if(strcmp(s2,library。 book[i]。 name)==0) { flag=0; 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]。 author,library.book[i]。 publish,library。 book[i]。 time,library。 book[i]。 price); } if(flag) { printf("cannotfound! "); } fflush(stdin); getchar(); } voidsearch_by_author()/*定义按作者名查询*/ { chars3[20]; intflag=1; printf(”请输入要查询的书的作者: "); fflush(stdin); scanf(”%s”,s3); printf(”图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n”); for(inti=0;i if(strcmp(s3,library。 book[i]。 author)==0) { flag=0; 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].author,library.book[i]。 publish,library.book[i]。 time,library.book[i]。 price); } if(flag) { printf("cannotfound! ”); } fflush(stdin); getchar(); } voidsearch()/*定义查询函数*/ { inta; system(”cls”);/*进行清屏*/ printf(”\t\t******************************\n”); printf("开始查询\n”); printf(”\t\t\t1—-———-——-—-—--—search_by_name\n”); printf(”\t\t\t2———-——-—-—-————search_by_writer\n"); printf("\t\t\t0——---—--—-———-—exit\n”); printf(”\t\t******************************\n”); printf(”\t\t请选择你想要的查询方式: "); fflush(stdin); scanf(”%d”,&a); switch(a) { case1: search_by_name(); break; case2: search_by_author(); break; case0: return; } } (7)del函数,实现删除功能 voiddel()/*定义删除函数*/ { charnumber[10]; system(”cls");/*清屏*/ printf("\nPleasetypeinthenumberofthebookyouwanttodelete: ”); fflush(stdin); scanf("%s”,number); inti; for(i=0;i〈library。 count;i++) { if(strcmp(number,library。 book[i].number)==0)break; } if(i! =library。 count) { for(;i〈library.count-1;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].author,library。 book[i+1].author); 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(); } (8)update函数,实现修改信息的功能 voidupdate()//修改图书信息 { charnumber[10]; system(”cls");/*清屏*/ printf("\nPleasetypeinthenumberofthebookyouwanttodelete: ”); fflush(stdin); scanf(”%s”,number); inti; 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]。 number,library。 book[i]。 name,library。 book[i]。 author,library.book[i]。 publish,library。 book[i]。 time,library.book[i].price); break; } } if(i! =library。 count) { mbookbook; printf("\n\t\t请输入修改后此图书的信息\n”); printf(”\t请输入图书号: "); scanf(”%s”,book。 number); printf(”\t请输入图书名: "); scanf(”%s”,book。 name); printf(”\t请输入作者名: ”); scanf(”%s”,book.author); printf("\t请输入出版社: ”); scanf(”%s",book。 publish); printf(”\t请输入出版时间: "); scanf("%s",book.time); printf("\t请输入该书的价格: ”); fflush(stdin); scanf(”%f",&book。 price); strcpy(library。 book[i].name,book。 name); strcpy(library。 book[i].number,book.number); strcpy(library.book[i].publish,book。 publish); strcpy(library。 book[i].author,book。 author); strcpy(library。 book[i]。 time,book.time); library。 book[i]。 price=book.price; save(); } else printf(”\ncannotfound! \n”); fflush(stdin); getchar(); } 测试报告 登陆界面 身份验证 进入主菜单界面 输入1,信息录入 输入2,信息浏览 输入3,信息查询 输入1,按书名查询 输入2,按作者查询 输入5,修改信息 修改后信息浏览 输入4,删除信息 删除后浏览 个人实训总结报告 个人实训总结报告—-** 本次实训课程设计中,我的工作是编程.首先,自己详细复习了《C程序设计教程》(教科书)的第十章《文件》,基本自学会了文件的相关内容,理解了相关函数的用法和作用;另外,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解.学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、数组、文件、函数等基本知识的进一步理解。 另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。 通过本次实训,我的C语言编程的能力有了很大提高,特别是在文件、指针、数组、函数和结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会. 我对程序设计有很大的兴趣,花了很多时间来自学,同时积极参加学校组织的学科竞赛,我觉得在信息越来越发达的今天,精通一门编程语言在未来将会有很大的发展前景。 所以我会更加努力学习C语言的. 个人实训总结报告--*** 这四天以来,我们组齐心协力,共同完成了图书管理系统的编程工作以及相关的文档的撰写。 这次的实验过程中我们组的组长同学表现勇猛,展现了自己强悍的编程能力,这不仅给组内的编程工作带来突飞猛进的效果,也着实激励了我要好好学习编程的决心。 另外组内明确的分工也使工作简化了不少,各司其职,井然有序的工作氛围让我意识到了团队合作重要性。 在编程的整个过程中我主要负责编程的需求分析这一部分,我仔细分析了图书管理系统的各个环节之后将这些环节进行了归类,最后确定出了几个需要用编程实现的功能。 之后经过小组的讨论我们确定了编程的大致内容,具体实现的编程工作就交给了同学。 最后总结一下我在这次实训中的学习心得: 对于问题要学会思考和总结。 思考的要全面,但不能啰嗦,要简介,但不能遗漏. 对于学过的编程要进一步加强,自己的编程能力实在是不敢恭维。 注重团队合作,争取发挥团队的作用,不可单打独斗. 个人实训总结报告—-*** 在该“图书管理系统”的开发过程中,我负责的主要是需求分析这部分,通过对整个流程的熟悉以及小组的沟通和交流,很好的完成了用需求分析,并逐步的通过系统的分析、设计和实施,使图书管理员的工作变的更加轻松。 信息管理员只需登录到该系统中,将信息数据输入到系统内,然后就可以进行添加、删除、修改、保存、取消修改、查询数据的功能.通过这次“图书管理系统”的开发,使我又完整的熟悉了系统的整个开发过程,并体会到在系统开发中,正确的描述对系统的需求是非常重要的,在清楚的明白需求的基础上过程进行描述,同时画系统流程图,可以很好的对整个过程进行进一步的梳理,同时为系统的实施打下基础.在系统实施阶段,运用的VisualC++6。 0开发工具,使我感觉这个软件易学好用,通过这个系统的开发,使我对c语言开发工具有了一定程度的掌握。 总之,我感觉通过本次学年实习,我受益匪浅,它使我第一次完整的经历了一个完整系统的开发过程,当然,这个系统还有很多不完善的地方,甚至可能还会或多或少存在一些错误,但它使我认识到自己在系统开发过程中还存在哪些不足以及自己在哪个方面的知识需要充实,因此,在以后的学习中,我会更加的有的放矢,弥补自己知识面的不足,使自己能更好的牢固掌握本专业知识,能在毕业后更好的走上自己的工作岗位! 编程总结 循环是C语言的重要方法,也是本程序的灵魂,它在本程序中既有“穿针引线"的作用,也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用循环过程中对循环进行了多方法的应用也是一个“亮点",它使程序变得结构合理,通俗易懂,也降低了程序的难度.以后要对这种方法进行深刻的体会. 数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、贮存、读取和输入,数组的的使用在本程序中有很大的好处。 函数是实现模块化编程的基础,它使程序变得方便易懂,对修改起了很大作用,降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的独立性,但也有了一定的联系性,一个函数的错误,不会导致整个程序的失败(主函数除外),对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。 结构体的使用,为本程序提供了很大方便,也提高了程序的可读性,结构数组方便了对数据的管理. 文件的读取与存贮使数据可以保存下来,这也是在C语言的学习过程中没有进行教学的内容,在开始时遇到了不小的困难,但前期的准备工作做的还好,最终克服了.我们相信通过这次课程设计的锻炼,我们在今后的学习实践中,一定可以做出更好的作品。 附: 源代码 #include〈stdio.h> #include〈stdlib.h〉 #include #include〈time.h〉 typedefstruct{ charnumber[10];//书号 charname[20];//书名 charauthor[20];//作者 charpublish[50];//出版社 chartime[20];//出版时间 floatprice; }mbook; typedefstruct{ intco
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 图书 管理 系统 报告