《2022年C++图书馆管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年C++图书馆管理系统 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 图书管理系统面向对象程序设计实习报告专业:计算机科学与技术班级:姓名:指导教师:二一年十二 月 六 日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 21 页 -2 目录1.设计内容、任务以及基本要求.31.1 设计内容 .3 1.2 设计任务 .3 1.3 基本要求 .3 2对问题的分析理解.43采用的对象模型(类图).54模型(或算法)中涉及的知识点.54.1 main()函数模块 .5 4.2 查询所有图书信息函数模块.6 void search_allinformation(struct list b).6 4.3 查询一本图书信息函数模块.6 4.4 添加图书信息函
2、数模块.6 4.5 删除图书信息函数模块.6 4.6 借阅图书模块.7 4.7 关键代码 .7 5设计用的计算机环境.76测试结果.87结论.98源代码.10名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -3 1.设计内容、任务以及基本要求1.1 设计内容主要利用 c 语言的文件操作能力设计开发一个小型的图书管信息管理系统,至少具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。操作界面要符合用户的一般习惯,界面易于读者明白理解,图形或文本界面都可以。1.2 设计任务要求:明确课程设计的
3、目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。掌握模块化编程的基本方法与步骤;巩固和加深学生对 C 语言课程基本知识的理解与掌握,培养学生利用C 语言进行软件操作的能力和技巧。1.3 基本要求(1)通过提示菜单选择可以进行的操作。(2)将图书的信息存入文件中,并命名为BookInfo.txt。(3)将图书借阅情况信息存入文件中,并命名为SendInfo.txt。(4)在本系统中可以进行管理系统包含的基本操作,其中包括a)查看
4、所有图书的信息。b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -4 c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存
5、入SendInfo.txt文件中。(5)图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。(6)图书信息文件中每一行存放一本图书的信息。(7)借阅信息文件中每一行存放一本书的借阅情况。2对问题的分析理解图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理。此程序包含了图书信息的录入、图书信息的浏览、图书的查询和排序、图书信息的删除与修改,借书,还书,统计等。通过编译一个C 语言函数,其中包含一个主函数,多个子函数,主函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。1、查询所有图书信息:将所有图书信息包括编号、书名、出版社、作者、价格等显
6、示在屏幕上。2、查找一本图书的信息:通过输入图书编号完成图书信息的查找,并在屏幕上显示。3、修改图书信息:通过输入编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号。4、删除图书信息:通过输入编号,判断此图书是否存在,若存在,则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书编号。5、借书:通过输入图书编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号,若图书已借出则提示用户是否继续借书,若没借出则将此图书的编号和学生的学号存入图书借阅文件中。6、退出系统:返回主页面。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -5 3采用的对象模型
7、(类图)4模型(或算法)中涉及的知识点4.1 main()函数模块根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。通过将switch 语句与 break语句联合使用来实现多分支选择结构程序的设计。运用fscanf 语句在主函数中将文件中的内容赋给结构体变量,便于在自定义函数中对结构体的调用。图书馆信息管理系统查询所有图书信息查找一本图书的信息借阅图书删除图书信息添加图书信息退出系统名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 21 页
8、 -6 4.2 查询所有图书信息函数模块void search_allinformation(struct list b)通过 printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加 printf()实现图书信息的循环输出显示。4.3 查询一本图书信息函数模块void check_bookinformation(struct list b)用户先输入图书编号后,先用strcmp(s1,s2)函数进行比较两个字符串数组的大小,从而查找出该图书是否存在,若不存在则提示用户是否要继续查找,运用switch 语句,若继续则再次调用函数本身进行第二
9、次查找,直到找到为止,若否则结束循环,不再进行查找。通过将 switch 语句与 break 语句联合使用来实现多分支选择结构程序的设计。运用fscanf语句在主函数中将文件中的内容赋给结构体。4.4 添加图书信息函数模块void add_bookinformation(struct list b)输入图书的基本信息包括编号、书名、出版社、作者、价格,由于原有的图书信息是按照编号的大小顺序排列的,所以只需运用 for 循环 和 strcmp 函数找出输入的图书应该插入的位置,再将所添加的图书信息插入即可。4.5 删除图书信息函数模块void delete_bookinformation(str
10、uct list b)用户输入所要删除的图书编号,先查找该图书编号是否存在,若存在,这提示用户是否要显示删除后的信息,若不存在则提示重新输入。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 21 页 -7 4.6 借阅图书模块void borrow_book(struct list b)用户先输入所借图书的编号,调用函数查找该图书有没有借出,若已借出,则提示用户该图书已借出,并提示用户是否继续借阅其他书籍。若继续,则继续进行新的查找。4.7 关键代码if-else(实现分支选择)getchar(从键盘上输入一个字符)goto (使程序的执行流程直接转接到标号对应的那条语句)str
11、cmp(比较两个字符串的大小)5设计用的计算机环境WINDOWS XP Microsoft Visual C+6.0 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -8 6测试结果主菜单运行界面名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -9 7结论通过这次课程设计,使我对 C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,通过学习也有所改进;再有对 C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对 C语言中经常出现的错误也不了解,所以后在学习过程中
12、,我会更加注视实践操作。在课程设计过程中,收获知识,提高能力的同时,我也懂得怎么样去制定、实现计划,课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢
13、固,在设计中我们遇到了很多编程问题,最后在各位老师的辛勤指导下,我们慢慢的进入状态,我做的是一个图书馆信息管理系统的设计,内容包括很多。运用的函数也是非常的复杂,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的操作,是我们最大的问题。要有模块化思维能力,化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -10 8源代码#inclu
14、de#include#include struct list char num20;/*图书编号*/char name40;/*书名*/char author40;/*作者*/char publish 40;/*出版社*/double price;/*价格*/;struct list b40;int w=0;/*定义一个全局变量,用来记录bookinfo.txt文件中的数据个数*/void search_allinformation(struct list b);/*查看全部图书信息*/void check_bookinformation(struct list b);/*查找图书信息*/vo
15、id add_bookinformation(struct list b);/*添加图书信息*/void delete_bookinformation(struct list b);/*删除图书信息*/void borrow_book(struct list b);/*借阅图书*/int main()int i=0;int choice1;FILE*fp;printf(*n);printf(*欢迎 进 入图 书 馆信 息管理 系 统*n);名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 21 页 -11 printf(*n);fp=fopen(e:BookInfo.txt,r)
16、;if(fp=NULL)printf(Can not open the file!n);exit(0);while(!feof(fp)fscanf(fp,%s%s%s%s%lf,/*调用函数将文件中的数据读入结构变量中*/bi.num,bi.name,bi.author,bi.publish,&bi.price);i+;w=i-1;fclose(fp);do printf(#);printf(功能选项:n);printf(1:查 看 全 部 图 书 信 息n);printf(2:查 找 图 书 信 息n);printf(3:添 加 图 书 信 息n);名师资料总结-精品资料欢迎下载-名师精心整
17、理-第 11 页,共 21 页 -12 printf(4:删 除 图 书 信 息n);printf(5:借 阅 图 书n);printf(0:退 出 系 统n);printf(#);printf(请选择操作:);scanf(%d,&choice1);switch(choice1)case 1:search_allinformation(b);break;case 2:check_bookinformation(b);break;case 3:add_bookinformation (b);break;case 4:delete_bookinformation(b);break;case 5:b
18、orrow_book(b);break;case 0:break;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 21 页 -13 while(choice1!=0);printf(谢谢使用!n);return 0;/*查看全部图书信息*/void search_allinformation(struct list b)int i;printf(#n);printf(#查看全部图书信息!#n);printf(#n);printf(图书的相关信息:编号书名作者出版社价格n);for(i=0;iw;i+)printf(%s%s%s%s%.2fn,/*将数据输出到屏幕中*/bi.nu
19、m,bi.name,bi.author,bi.publish,bi.price);printf(%d ,w);printf(#n);/*查找图书信息*/void check_bookinformation(struct list b)名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 21 页 -14 int i,flag=0;char s20;printf(输入编号:n);/*提示输入图书编号*/scanf(%s,s);printf(#n);printf(#查找图书信息!#n);printf(#n);for(i=0;iw;i+)if(strcmp(s,bi.num)=0)prin
20、tf(该图书的相关信息:编号书名作者出版社价格n);printf(%s%s%s%s%.2fn,bi.num,bi.name,bi.author,bi.publish,bi.price);flag=1;break;if(flag=0)printf(该图书编号不存在!n);printf(是否要继续查找?y:是;n:否n);getchar();switch(getchar()case y:check_bookinformation(b);/*调用函数本身继续查找*/case n:名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 21 页 -15 break;printf(#n);/*添
21、加图书信息*/void add_bookinformation(struct list b)int i,count=0,choice3;struct list p;FILE*fp2;printf(#n);printf(#添加图书信息!#n);printf(#n);printf(请输入该图书的相关信息:n);printf(编号书名作者出版社价格n);scanf(%s%s%s%s%lf,p.num,p.name,p.author,p.publish,&p.price);printf(添加成功 !n);printf(是否显示添加后的信息?1:是;2:否 n);printf(请选择:);scanf(%
22、d,&choice3);switch(choice3)case 1:for(i=0;i0)count+;for(i=w;icount;i-)bi=bi-1;bi=p;w+;/*每添加一本图书,图书数目都会增加一个*/fp2=fopen(e:BookInfo.txt,w);if(fp2=NULL)printf(Can not open the file!n);exit(0);for(i=0;iw;i+)fprintf(fp2,%s%s%s%s%.2fn,bi.num,bi.name,bi.author,bi.publish,bi.price);fclose(fp2);for(i=0;iw;i+)
23、printf(%s%s%s%s%.2fn,bi.num,bi.name,bi.author,bi.publish,bi.price);case 2:break;名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 21 页 -17 printf(#n);/*删除图书信息*/void delete_bookinformation(struct list b)int i,flag=0,choice4;char s20;printf(#n);printf(#删除图书信息#n);printf(#n);printf(请输入图书编号:);scanf(%s,s);for(i=0;iw;i+)if(
24、strcmp(s,bi.num)=0)printf(删除成功 !n);printf(是否显示删除后的信息?1:是;2:否 n);printf(请选择:);scanf(%d,&choice4);switch(choice4)case 1:printf(删除后 的图书信 息:编号书名作者出版社价格n);for(i=0;iw;i+)if(strcmp(s,bi.num)!=0)名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 21 页 -18 printf(%s%s%s%s%.2fn,bi.num,bi.name,bi.author,bi.publish,bi.price);case
25、2:break;flag=1;break;if(flag=0)printf(该图书编号不存在!n);printf(#n);/*借阅图书*/void borrow_book(struct list b)int i=0,n=0,flag=0,x=0;int m;/*定义一个变量用来记录sendinfo.txt文件中的数据个数*/struct list q;struct student char name20;char number40;名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 21 页 -19;struct student stu50;FILE*fp;FILE*fp4;pri
26、ntf(#n);printf(#借阅图书#n);printf(#n);A:printf(输入图书编号:);scanf(%s,q.num);fp=fopen(e:BookInfo.txt,a);if(fp=NULL)printf(Can not open the file!n);exit(0);for(i=0;iw;i+)if(strcmp(q.num,bi.num)=0)flag=1;if(flag=0)printf(该图书编号不存在,请重新输入!n);borrow_book(b);fclose(fp);if(flag=1)fp4=fopen(e:SentInfo.txt,r);名师资料总结-
27、精品资料欢迎下载-名师精心整理-第 19 页,共 21 页 -20 if(fp4=NULL)printf(Can not open the file!n);exit(0);while(!feof(fp4)fscanf(fp4,%s%s,/*调用函数将文件中的数据读入结构变量中*/stui.number,stui.name);i+;n=i-1;fclose(fp4);fp=fopen(e:SentInfo.txt,a);if(fp=NULL)printf(Can not open the file!n);exit(0);for(i=0;in;i+)if(strcmp(q.num,stui.num
28、ber)=0)printf(该图书已借出!);printf(是否继续续借?y or nn);getchar();if(getchar()=y)goto A;名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 21 页 -21 else x=1;if(x=0)/*若该图书未借出,则执行以下操作*/printf(请输入学号:);scanf(%d,&m);if(fp=fopen(e:SendInfo.txt,a)=NULL)printf(File open error!n);exit(0);fprintf(fp,%s%d,q.num ,m);fclose(fp);printf(借阅成功!n);printf(#n);参考书目:1(美)Herb Sutter,Andrei、Alexandrescu.c+编程规范.北京:人民邮电出版社,2006 年2张素琴.C+程序设计语言.北京:清华大大学出版社,1995 年名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 21 页 -