《C语言图书管理系统课程设计报告.pdf》由会员分享,可在线阅读,更多相关《C语言图书管理系统课程设计报告.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、0目录目录引言引言.1.1第一章第一章绪论绪论.1.11.11.1 课题背景课题背景.1.11.21.2 图书馆信息化管理图书馆信息化管理.2.2第二章第二章开发工具简介开发工具简介.3.3VC6.0VC6.0 简介简介.3.3第三者第三者图书管理系统的设计与实现图书管理系统的设计与实现.4.43.13.1 系统的需求分析系统的需求分析.4.43.23.2 系统的设计系统的设计.5.53.2.13.2.1 系统的总统设计系统的总统设计.5.53.2.23.2.2 系统的概要设计系统的概要设计.6.63.33.3 测试结果测试结果.6.63.43.4 源代码源代码.9.9第四章第四章心得体会心得
2、体会.22.22参考文献参考文献.22.221引言引言随着社会经济的迅速发展和现代科学技术的进步,人类社会正逐渐走向现代化。计算机事业的飞速发展,使得以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。同时,随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。图书馆拥有丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中的作用愈来愈重要。图书管理系统是我国大部分学校或其他部门不可缺少的部分,书籍是人类的精神食粮,尤其对一些学校来说,图书馆非常重要。在软件开发中,以计算机图书为主,称“计算机图书管理系统” 。计算机图书管理系统能够为用户实现借阅图书、管理等,随着计算机
3、科学的日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对图书资源信息进行管理,具有着手工管理所无法比拟的优点,例如:查阅迅速、安全性高、可靠性高、存储量大、保密性好、成本低等。计算机图书管理系统能够单一定向计算机图书方面,具有实用、精简功能等效率,这些优点能够极大的提高图书管理的效率,也是企业、学校的科学化、正规化管理,与世界接轨的重要条件。2第一章第一章 绪论绪论1.11.1 课题背景课题背景随着人类社会的发展,人类对知识的需求也不断增长。在这种形势下,书籍就渐渐的成为人们获取并增长知识的主要途径,而图书馆就自然而
4、然地在人们的生活中占据一定的位置,如何科学的管理图书馆不仅关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书管理系统就必不可少了。随着现代社会信息量的不断增加,图书的种类及信息也越来越多,如何来管理庞大的图书信息成为一大难题,如何以一种便捷的管理方式加快图书流通信息的反馈速度,提高工作效率,已经成为学校图书馆管理的关键问题。信息技术的飞速发展给图书馆的管理带来了全新的变革,采用图书管理系统对图书馆的运作进行全程管理,不仅是图书馆摆脱了以往人工管理产生的一系列问题,而且让图书馆提高了管理效率,减少了管理成本。让图书馆进行更有效的管理。1.21.2 图书馆信息化管理图书馆信息
5、化管理图书馆的信息化从最初的对图书馆业务管理实行信息化发展到图书馆各个业务流程进行系统和网络化管理,并建立大规模以个体文献目录联机查询为主的资源共享系统。 进入 21 世纪, 充分利用计算机网络和信息技术,逐步实现不同载体的实体文献的信息化管理和多方位的联机查询。图书馆的计算机信息化管理,就3是将传统图书馆业务的手工操作转变成由计算机管理,既图书馆的图书期刊、音像资料等各种载体文献的采编、典藏、流通、检索及常规业务管理工作,采用计算机技术,进行高效、准确的信息化管理。其根本目的是实现区域内及地区、国家、国家间的资源共享。要达到资源共享的目的,必须制定一定的标准,只有各个系统都遵循这些标准,不同
6、的系统间才可以实现联机查询、资源共享的效果。第二章第二章 开发工具简介开发工具简介VC6.0VC6.0 简介简介Visual C+ 6.0, 简称 VC 或者 VC6.0, 是微软推出的一款 C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自 1993 年Microsoft 公司推出 Visual C+1.0 后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于 Windows 20
7、00、Windows XP 和 WindowsNT4.0。所以实际中,更多的是以 Visual C+6.0 为平台。VC6.0 由以下三部分组成:1、 Developer Studio,这是一个集成开发环境,我们日常工作的 99%都是在它上面完成的, Developer Studio 为 VisualC+提供了一个很好的编辑器和很多 Wizard,但实际上它没有任何编译和链接程序的功能。我们也知道,Developer Studio 并不是专门用于 VC 的,它也同样用于 VB,VJ,VID 等 Visual Studio4家族的其他同胞兄弟。 所以不能把 Developer Studio 当成
8、 VisualC+, 它充其量只是 Visual C+的一个壳子而已。2、 MFC。从理论上来讲,MFC 也不是专用于 Visual C+,Borland C+,C+Builder 和 Symantec C+同样可以处理 MFC。同时,用 Visual C+编写代码也并不意味着一定要用 MFC,只要愿意,用 Visual C+来编写 SDK 程序,或者使用 STL,ATL,一样没有限制。不过,Visual C+本来就是为 MFC 打造的,Visual C+中的许多特征和语言扩展也是为 MFC 而设计的,所以用 VisualC+而不用 MFC 就等于抛弃了 Visual C+中很大的一部分功能。
9、但是,Visual C+也不等于 MFC。3、Platform SDK。这才是 Visual C+和整个 Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK 是以 Microsoft C/C+编译器为核心(不是 VisualC+,看清楚了),配合 MASM,辅以其他一些工具和文档资料。上面说到 Developer Studio 没有编译程序的功能, 那么这项工作是由谁来完成的呢?是 CL,是 NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成 Visual Studio 的基石。第三章第三章 图书管理系统的设计与实现图书管理系
10、统的设计与实现3.13.1 系统的需求分析系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作5系统功能需求分析描述如下系统功能需求分析描述如下:(1)系统主菜单:进入系统和退出系统(2)功能菜单:显示可以进行的操作(3)查询主菜单:根据图书编号、书名、作者进行查询,并可显示所有图书信息(4)借还书主菜单:可以进行借书和还书等操作3.23.2系统的设计系统的设计3.2.13.2.1 系统的总统设计系统的总统设计下面从系统的整体流程的功能模块、系统界面及数据结构进行总体设计。(1
11、)总体思想本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、借书、还书等主要功能。系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。(2)系统模块结构图根据需求分析结果, 图书管理系统可以分为三大模块: 查询图书模块、借书功能模块、还书功能模块。系统模块结构如图系统模块结构如图: :图书管理系统图书管理主菜单图书查询系统还书功能系统借书功能系统63.2.23.2.2 系统的概要设计系统的概要设计系统主菜单。显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。功能主要包括:退出系统、查询图书、借书、还书。查询图书信息进入此菜单功能
12、模块,输入您要查询的图书的编号、名字、作者等。图书查询模块流程如图:否否是是是是否否开始提示输入图书编号、书名、作输入正确查询重新输入退出系统73.33.3 测试结果测试结果系统主界面系统主界面功能菜单功能菜单8查询系统菜单查询系统菜单借还系统菜单借还系统菜单93.43.4 源代码源代码# include # include # include typedef struct linkchar number100;char bookname100;char author100;char publish100;char time100;float price;char status100;stru
13、ct link *next;link;10link *Cbook()int n=0;link *p,*q,*head;FILE *fp;fp=fopen(图书信息.txt,r+);if(fp=NULL)printf(没有找到文件,请检查);p=(link *)malloc(sizeof(link);if(p=NULL)printf(申请内存出错! ! !n);fscanf(fp,%s%s%s%s%s,p-number,p-bookname,p-author,p-publish,p-time);fscanf(fp,%f,&p-price);fscanf(fp,%s,p-status);while
14、(feof(fp)=0)n+;if(n=1)head=p;elseq=p;p=(link *)malloc(sizeof(link);if(p=NULL)printf(申请内存出错! ! !n);fscanf(fp,%s%s%s%s%s,p-number,p-bookname,p-author,p-publish,p-time);fscanf(fp,%f,&p-price);fscanf(fp,%s,p-status);q-next=p;p-next=NULL;11fclose(fp);printf(信息已录入! ! !);return head;void mainmenu()printf(n
15、*n);printf(n*欢迎使用图书管理系统*n);printf(n*1.进入系统0.退出系统*n);printf(n*n);printf(n请选择);void menu1()printf(n*n);printf(n*1.进入图书查询系统*n);printf(n*2.进入图书借还系统*n);printf(n*3.保存所有图书信息*n);printf(n*4.返回上级菜单*n);printf(n*n);printf(n 请选择);void cxmenu()printf(n*n);printf(n*1.显示所有图书信息*n);printf(n*2.按编号查询图书*n);printf(n*3.按书
16、名查询图书*n);printf(n*4.按作者查询图书*n);printf(n*5.返回上级菜单*n);printf(n*n);printf(n 请选择);12void jhmenu()printf(n*n);printf(n*1.借书*n);printf(n*2.还书*n);printf(n*3.返回上级菜单*n);printf(n*n);printf(n 请选择);void print(link *head)link *p;p=head;printf(n);printf(n*n);printf(n 编号tt 书名tt 作者tt 出版社tt 出版时间tt 价格tt 状态n);while(p!
17、=NULL)printf(n);printf(%st%st%st%st%s,p-number,p-bookname,p-author,p-publish,p-time);printf(tt%.2f,p-price);printf(tt%s,p-status);printf(n);p=p-next;voidhold(link *head)link *p;FILE *fp;13fp=fopen(图书信息.txt,w+);if(fp=NULL)printf(文件操作出错! ! !);exit(1);p=head;for(;p!=NULL;p=p-next)fprintf(fp,%st%st%st%s
18、t%s,p-number,p-bookname,p-author,p-publish,p-time);fprintf(fp,tt%.2f,p-price);fprintf(fp,tt%s,p-status);fprintf(fp,n);fclose(fp);printf(信息已保存。);void holdcx(link *t)link *p=NULL;FILE *fp;fp=fopen(查询.txt,a+);p=t;fprintf(fp,查询到的信息为:n);fprintf(fp,n);fprintf(fp,n*n);fprintf(fp,n 编号tt 书名tt 作者tt 出版社tt 出版时间
19、tt 价格tt 状态n);fprintf(fp,n);fprintf(fp,%st%st%st%st%s,p-number,p-bookname,p-author,p-publish,p-time);fprintf(fp,tt%.2f,p-price);fprintf(fp,tt%s,p-status);14fprintf(fp,n);fclose(fp);printf(信息已保存!);link *findnumber(link *head)char key100;link *h,*t1=NULL;printf(请输入图书的编号:);getchar();gets(key);for(h=head
20、;h!=NULL;h=h-next)if(strcmp(key,h-number)=0)t1=h;break;return t1;link *findboookname(link *head)char key100;link *h,*t2=NULL;printf(请输入图书的书名:);getchar();gets(key);for(h=head;h!=NULL;h=h-next)if(strcmp(key,h-bookname)=0)t2=h;break;15returnt2;link *findauthor(link *head)char key100;link *h,*t3=NULL;pr
21、intf(请输入作者姓名:);getchar();gets(key);for(h=head;h!=NULL;h=h-next)if(strcmp(key,h-author)=0)t3=h;break;returnt3;link *sortnumber(link *head)link *p,*q,*temp;temp=(link *)malloc(sizeof(link);if(temp=NULL)printf(申请内存出错! ! !);exit(1);for(p=head;p!=NULL;p=p-next)for(q=p-next;q!=NULL;q=q-next)16if(strcmp(p-
22、number,q-number)0)strcpy(temp-number,p-number);strcpy(temp-bookname,p-bookname);strcpy(temp-author,p-author);strcpy(temp-publish,p-publish);strcpy(temp-time,p-time);temp-price=p-price;strcpy(temp-status,p-status);strcpy(p-number,q-number);strcpy(p-bookname,q-bookname);strcpy(p-author,q-author);strcp
23、y(p-publish,q-publish);strcpy(p-time,q-time);p-price=q-price;strcpy(p-status,temp-status);strcpy(q-number,temp-number);strcpy(q-bookname,temp-bookname);strcpy(q-author,temp-author);strcpy(q-publish,temp-publish);strcpy(q-time,temp-time);q-price=temp-price;strcpy(q-status,temp-status);return head;lin
24、k *borrowbook(link *head)link *h,*p;char ch,ch1100=在库,ch2100=不在库;h=head;17printf(n*n);printf(tt 欢迎使用借书系统!n);p=findboookname(h);if(p=NULL)printf(借书失败,书库中没有这本书! ! !);else if(strcmp(p-status,ch2)=0)printf(借书失败,图书不在库! ! !);elseprintf(确认借出?Y/N:);scanf(%c,&ch);getchar();if(ch=Y|ch=y)strcpy(p-status,ch2);p
25、rintf(借书成功,请返回上级菜单保存信息! ! !);if(ch=N|ch=n)printf(你没有借任何书! ! !);return head;link *returnbook(link *head)link *h,*p;char ch,ch1100=在库,ch2100=不在库;h=head;printf(n*n);printf(tt 欢迎使用还书系统!n);p=findboookname(h);if(p=NULL)18printf(还书失败,这不是本书库的书! !);elseprintf(确认还书?Y/N:);scanf(%c,&ch);getchar();if(ch=Y|ch=y)s
26、trcpy(p-status,ch1);printf(还书成功,请返回上级菜单保存信息! ! !);if(ch=N|ch=n)printf(你没有还书! ! !);return head;void main()int a,b,c,d;link *h,*t;L:system(cls);mainmenu();while(1)scanf(%d,&a);switch(a)case 1:B: system(cls);menu1();while(1)19scanf(%d,&b);switch(b)case 1:system(cls);cxmenu();while(1)scanf(%d,&c);switch
27、(c)case 1:print(h);break;case 2:t=findnumber(h);if(t=NULL)printf(没有要查询的图书! ! !);if(t!=NULL)printf(查询的图书为:);printf(n);printf(n*n);printf(n 编号tt 书名tt 作者tt 出版社tt 出版时间tt 价格tt 状态n);printf(n);printf(%st%st%st%st%s,t-number,t-bookname,t-author,t-publish,t-time);printf(tt%.2f,t-price);printf(tt%s,t-status);
28、20printf(n);break;case 3:t=findboookname(h);if(t=NULL)printf(没有要查询的图书! ! !);if(t!=NULL)printf(查询的图书为:);printf(n);printf(n*n);printf(n 编号tt 书名tt 作者tt 出版社tt 出版时间tt 价格tt 状态n);printf(n);printf(%st%st%st%st%s,t-number,t-bookname,t-author,t-publish,t-time);printf(tt%.2f,t-price);printf(tt%s,t-status);prin
29、tf(n);break;case 4:t=findauthor(h);if(t=NULL)printf(没有要查询的图书! ! !);if(t!=NULL)printf(查询的图书为:);printf(n);printf(n*n);21printf(n 编号tt 书名tt 作者tt 出版社tt 出版时间tt 价格tt 状态n);printf(n);printf(%st%st%st%st%s,t-number,t-bookname,t-author,t-publish,t-time);printf(tt%.2f,t-price);printf(tt%s,t-status);printf(n);b
30、reak;case 5:goto B;break;break;case 2:system(cls);jhmenu();while(1)scanf(%d,&d);switch(d)case 1:borrowbook(h);break;case 2:returnbook(h);break;case 3:22goto B;break;break;case 3:hold(h);break;case 4:goto L;break;break;case 0:printf(ttt 感谢使用,再见! ! !);exit(0);第四章第四章心得体会心得体会经过一个多星期的编译原理课程设计,在我的努力下,顺利完成
31、该课程设计。通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。23老师常说,课本上的知识是机械的,表面的,要学会去运用,要举一反三。 现在终于深刻的了解了这句话。 经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对实验原理也了有更深的理解。知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解 。 通过该课程设计, 把死板的课本知识变得生动有趣,激发了学习的积极性。能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。除了课堂外,课程设计是最能学到东西的,最考验人的。在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。经过这次课程设计,让我对C+这门语言有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。参考文献参考文献谭洁强 C 程序设计 清华大学出版社张基温 C 程序设计案例教程 清华大学出版社王宏C#程序设计案例教程 清华大学出版社
限制150内