C语言课程设计图书馆管理系统.docx
- 文档编号:5382631
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:19
- 大小:240.59KB
C语言课程设计图书馆管理系统.docx
《C语言课程设计图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书馆管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
C语言课程设计图书馆管理系统
目录
第1章引言2
1.1题目背景2
1.2设计目的2
1.3解决问题2
第2章使用工具与特点4
2.1C语言的发展4
2.2C语言的特点5
第3章总体设计6
3.1编写目的6
3.2系统功能6
第4章系统分析与设计12
4.1添加功能设计12
4.2借阅图书功能13
第5章系统功能实现18
5.1添加功能18
5.2借阅功能18
结论21
致谢22
第1章引言
1.1题目背景
随着计算机技术的飞速发展,改变了世界,也改变了人类的生活。
作为现代科学技术的飞速发展,改变了世界,也改变了人类的生活。
新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求
当今社会,多元文化快速发展,人与人的交流也越来越多,社交也越来越广泛,这时,记住自己认识的人是很重要的,因此我们做了这个程序,为了使我们更有效的记录下自己所认识的人,更方便去和更多的人交流而不会记错。
C语言成了在国内外使用的一种计算机语言。
C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。
现在大多数的高校都把C语言作为第一门计算机语言进行教学,这是可行的,学生也是能够学习好的。
1.2设计目的
这次设计主要是应用了C程序设计中的一些算法,还有一些函数的调用,结构体的应用等,根据他们的基本思想来编写程序。
程序包括的主要内容可以对图书馆管理系统进行输入、修改、删除、借阅、归还、显示等操作,设计一个有关学生借阅图书的管理程序,来方便人们对信息更方便的使用,经过这样一个过程来巩固和完善自己所学的知识,同时来培养一下自己的实践能力。
通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。
通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力为了人们能够更快的记录学生的借书管理,使人们不再因为添加、删除图书而苦恼。
1.3解决问题
图书馆管理系统用于计算机管理图书馆里的书籍,方便学生进行更方便快捷的结束程序。
在这个程序中可以对图书馆管理系统中的内容进行输入、添加记录、显示记录、注册会员,还可对其中的书籍进行删除等等。
使信息管理更具体、更明朗、更电子化,让人一目了然,给人们带来无穷的快捷。
这次实训,使我们对C语言的掌握更加熟练,也解决了一些问题:
1、解决手工记录和减少工作量,以及相关函数的使用。
2、解决函数间的链接关系,使函数的调用更加方便灵活以及相关函数的使用。
3、解决对单个函数如何操作和各种按键的功能设置以及相关函数的使用。
4、解决对程序显示窗口的设置及对各种相关函数的使用。
5、提高分析问题、解决问题和实际动手的能力。
6、需要对图像和文本的输出有一个较好的了解。
7、能够熟练运用C言分支语句,并能使各种循环相互连接,完成对按键选择操作等过程。
8、在设计的过程中,建立清晰的层次结构。
9、在编写程序前先画出主要的功能结构图和主要模块的流程图。
10、对每个功能所运用的数学知识有一个较好的认识和探索。
11、得出最简洁,最快速的算法。
12、要求操作简单,用户界面友好。
第2章使用工具与特点
2.1C语言的发展
本次C语言课程设计中,我们小组的题目是学生成绩管理,在设计过程中,我们使用的软件是TurboC2.0。
C语言是国际上广泛流行的、很有发展前途的计算机高级语言。
它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
早期的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。
由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。
为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作),例如:
对内存地址的操作、位操作等)。
人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。
于是,C语言就在这种情况下应运而生了。
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL60。
1960年出现的ALGOL60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。
1963年英国的剑桥大学推出了CPL(CombinedProgram-mingLanguage)语言。
CPL语言在ALGOL60的基础上接近了硬件一些,但规模比较大,难以实现。
1967年英国剑桥大学的MatinRichards对CPL语言作了简化,推出了BCPL(BasicCombinedProgrammingLanguage)语言。
1970年美国贝尔实验室的KenThompson以BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的B语言(取BCPL的第一个字母),并用B语言写第一个UNIX操作系统,在PDP-7上实现。
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用。
直到1-975年UNIX第6版公布后,C语言的突出优点才引起人们普遍注意。
1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX操作系统迅速地在各种机器上实现。
例如,VAX,AT&T等计算机系统都相继开发了UNIX。
随着UNIX的日益广泛使用,C语言也迅速得到推广。
C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。
1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。
现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。
以1978年发表的UNIX第7版中的C编译程序为基础,BrianW.Kernighan和DennisM.Ritchie(合称K&R)合著了影响深远了名著《TheCProgrammingLan-guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C。
1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定了新的标准,称为ANSIC。
ANSIC比原来的标准C有了很大的发展。
1987年,ANSIC又公布了新标准--87ANSIC。
目前流行的C编译系统都是以它为基础的。
2.2C语言的特点
1.简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2.运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。
C语言把括号、赋值、强制类型转换等都作为运算符处理。
从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3.数据结构丰富
C的数据类型有:
整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。
能用来实现各种复杂的数据类型的运算。
并引入了指针概念,使程序效率更高。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。
且计算功能、逻辑判断功能强大。
4.C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5.C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。
而C语言允许程序编写者有较大的自由度。
6.C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7.C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8.C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。
第3章总体设计
3.1编写目的
根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细设计做准备。
通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的手册。
3.2系统功能
设计一个图书馆管理系统能提供以下功能:
1.加入功能:
加入图书的基本信息,如图书名称、图书编号、图书价格、该书出版社、图书作者。
2.显示功能:
显示所有已经输入并保存的图书及图书的详细信息,如书名称、图书编号、图书价格、该书出版社、图书作者。
3.查询功能:
按图书的名字进行查询,可以显示图书存在与否、以及图书的详细的信息
4.删除功能:
按图书的名字进行图书信息的删除。
5.会员注册功能:
图书馆会员的注册,要求输入该会员的名字、学号进行注册,成功注册后就可在图书馆里借阅图书。
6.借书功能:
根据是否是会员来判断是否能够进行借书,按图书的名字进行借阅。
7.还书功能:
按图书的名字进行还书,办理入馆手续。
8.文件操作:
文件保存、文件读取。
通过菜单的选择可以实现模块图的功能:
通过不同的提示信息并输入不同的属性值,可以现实对图书信息的加入、总体显示、删除、查询功能,系统限制非会员不能借书。
非会员注册后,可以按会员名字进行借书及还书的操作。
我们所做的图书管理系统最大的优点在于操作方便、快捷,对图书的管理更加轻松自如,但是此系统只有当你是我们的会员时才能够借阅,这也给不是会员的同学带来了很大的不便,在工作人员操作此系统时,如有操作上的失误,并不会给我们带来更多的麻烦,比如在图书删除方面,当你们输入删除的书名后,但是又并不想删除此书,这时你不用有焦虑之心,我们在显示界面中会出现你是否想删除的提示选择Y\N,这时你做出你真正的选择进行操作,即可对此书进行删除或保留。
在显示图示界面中,当借阅者输入想要借阅的图书名称,屏幕上就会显示有关于本书的所有信息,比如书的编号、书的价格、书的出版社、书的作者等相关基本信息,使得借阅者对本书有更进一步的了解,对是否借阅此书作出准确的判断。
3.2.1图书馆管理系统主界面
图书馆管理系统主界面如图3-1所示。
图3-1图书馆系统主界面
3.2.2添加图书功能
图书馆管理系统添加图书功能界面如图3-2所示。
图3-2图书添加界面
3.2.3显示图书信息功能
图书馆管理系统显示图书信息功能界面如图3-3所示。
图3-3图书显示界面
3.2.4删除图书功能
图书馆管理系统删除图书功能界面如图3-4所示。
图3-4图书删除界面
3.2.5查询图书功能
图书馆管理系统查询图书功能界面如图3-5所示。
图3-5图书查询界面
3.2.6会员注册功能
图书馆管理系统会员注册功能界面如图3-6所示。
图3-6会员注册界面
3.2.7会员借书功能
图书管管理系统会员借书功能界面显示如图3-73-8所示。
图3-7会员借书界面
图3-8会员借书成功
3.2.8会员还书功能
图书馆管理系统会员还书功能界面显示如图3-9所示。
图3-9会员还书
第4章系统分析与设计
4.1添加功能设计
添加图书功能:
义直向文件的指针,进行申请空间,如果没申请到空间则输出没有申请到,内存溢出本函数。
再输入书名,书号,价格,再用循环控制图书的输入。
进而实现图书添加的功能。
其流程图如图4-1。
4.2借阅图书功能
添加图书功能:
先输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。
当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能。
我运用了指针、数组、链表等基本操作完成了这项功能的操作。
具体操作如图4-2所示,详细操作如图4-3所示。
图4-2借阅图书具体流程图
图4-3借阅图书详细流程图
第5章系统功能实现
5.1添加功能
源代码:
/**增加图书信息**/
structnode*add(structnode*head);
{
inti;
floatjg;
structnode*p,*pnew;
pnew=(structnode*)malloc(sizeof(structnode));
printf("Pleaseinputbookname,booknumber,price,pub,name\n");
printf("bookname:
");scanf("%s",pnew->bookname);
printf("booknumber:
");scanf("%d",&pnew->booknumber);
printf("price:
");scanf("%f",&jg);pnew->price=jg;
printf("pub:
");scanf("%s",pnew->pub);
printf("name:
");scanf("%s",pnew->name);
pnew->link=NULL;
pnew->yes=1;
if(head==NULL)
head=pnew;
else
{
p=head;
while(p->link!
=NULL)
p=p->link;
p->link=pnew;
}
return(head);
}
5.2借阅功能
源代码
/**会员借书信息**/
voidBookBorrow()
{
FILE*fp;structnode*pnew,*p1;
charbookname[20],membername[20];
intflag=0,mflag=0;
clrscr();
printf("Inputthemermbername:
");
scanf("%s",membername);
if((fp=fopen("member.txt","r"))==NULL)
{
printf("Cannotopenfile\n!
");
getch();
return;
}
else
while(!
feof(fp))
{
consultmember=(structMember*)malloc(sizeof(structMember));
fread(&consultmember,sizeof(structMember),1,fp);
if(strcmp(consultmember->name,membername)==0)
{
mflag=1;
break;
}
}
fclose(fp);
if(mflag==0)
{
printf("Youarenotamember,pleasregister!
");
getch();
return;
}
printf("Inputthebookname:
");
scanf("%s",bookname);
if((fp=fopen("library.txt","r"))==NULL)
{
printf("Cannotopenfile\n!
");
getch();
return;
}
pnew=load();
p1=pnew;
while(p1)
{
fread(p1,sizeof(structnode),1,fp);
if(strcmp(p1->bookname,bookname)==0)
{
if(p1->yes==0)
{
printf("Thisbookhasborrowed\n!
");
getch();
break;
}
else
{
p1->yes=0;
strcpy(p1->person,membername);
save(p1);
printf("Borrowedsuccess!
");
getch();
break;
}
}
}
if(flag!
=0)
{
clrscr();
printf("Borrowedfail!
\n");
getch();
}
fclose(fp);
}
结论
通过两周的课程设计,使我清楚地认识到了实践的重要性.经过有针对性地上机操作,不仅可以提高我对C语言的认识,更重要的是提高了自己的实践能力。
在课程设计过程中,我学到了许多道理,也懂得无论做什么事情都应该先拟定一个计划。
有了计划,就有了奋斗目标,我们就会冲着目标奋进。
通过这次学习使我对指针、数组、结构体以及循环有了深刻的理解,可以学以致用,觉得有了很大的收获。
与此同时也使我学会了如何克服不良情绪,怎样调整自己的心态。
在这次学习中,我遇到了许多困难,但经过我的耐心研究,同学们的帮助以及老师的谆谆教导,使我最终克服了困难,成功地完成了本次课程设计。
这让我懂得了,无论做什么事都不要轻言放弃,无论做什么事都要有耐心、信心加恒心,只有这样,我们才会成功。
在这次设计中,我的人生格言也在无时无刻地帮助着我,鼓励这我,在我感到困惑疲惫时,在我被问题萦绕百般不解时,它都会激励我,它就是————在磨练中成长、苦中作乐。
在做课程设计的过程中,我发现了许多平时没注意的细节,这也让我及时补充了自己的知识。
应当说,在这次课程设计中,我花费了大量的精力与时间,但却让我懂得了C语言的重要性。
我们小组主要负责的是图书馆管理系统,为了使此项目完善,这就需要我们对次系统有非常全面的理解。
于是,我们利用业余时间查阅了大量的资料,并把其按一定顺序分类,自己也非常专注地投入到编程当中。
在此期间,不可避免地会遇到许多问题,但我们小组中的所有成员都始终拥有无限地激情与动力,没有一丝泄气和放弃。
当问题出现时,大家齐心协力来解决问题,当问题逐渐被我们所攻克时,内心的喜悦无以言表。
这也使我充分地认识到,团队精神的伟大之处。
与此同时,这次课程设计也使大家的心贴得更紧,情系得更近!
程序设计和应用开发能力的提高,需要不断地上机实践和长期地经验积累,在上机的过程中会碰到各种各样的问题,而分析问题、解决问题的过程就是一个积累的过程。
的确是这样的,作为大学生的我们就是要有进取拼搏的精神和思考问题的能力,只有这样,将来的我们才会立足于世界之林。
这次课程设计,让我对C语言的知识有了深刻地理解,也使我对课程设计充满了无限地动力,我发现自己在此期间内的实践能力有了明显的提高。
我始终相信,有理想就有动力,有动力就会胜利。
既然自己在此期间学会了许多知识和经验,所以今后的我一定会更加努力奋斗,在平时学习中不断积累经验,在实践中不断总结过去点点滴滴的不足,我相信,只有这样,我才会在不断进步,在以后的人生发展道路上有更大的收获和提高。
是的,其实任何事物都并非象锦江大街一样平坦而笔直,它似崎岖的山路需要迂回前进,它有诸多的艰难险阻需要我们逢山开路,遇水架桥,它有魑魅魍魉,需要我们与之拼搏于抗争,只有这样,我们才会成地到达人生的彼岸。
今后的我一定会更加发奋努力,使自己对计算机方面的知识有更深刻地理解,让我在自己成长的阶梯上有上一个新的台阶。
致谢
尊敬的老师你好!
两周的课程设计匆匆结束,在这段时间内,不仅使我学会了如何设计程序、对错误程序进行调试、如何运用创新能力、如何实现数据为功能,更重要的是使我结实了诸多学时丰富的老师。
老师的谆谆教导使我清楚地认识到,没有老师的支持与鼓励,就不会有我们今天的辉煌成绩!
在课程设计的期间内,对我影响最大的莫过于老师,老师的和蔼可亲,让我觉得老师就是我生活中最真诚的朋友;老师的渊博学识,让我觉得老师就是我人生中最崇拜的偶像!
作为学生的我,现在唯一能做的就是用自己的耐心、恒心、信心不断去奋斗,不断去拼搏,不断地去完善自我,不断地去创造自我,给老师以最大的回报。
在以后的人生之路上,我要以老师作为自己的榜样与引航灯,踏踏实实工作,勤勤恳恳做人。
老师洒下的每一份汗水,付出的每一份辛劳,我都会牢记心上,将来用自己的行动去报答老师的一片良苦用心。
“宝剑锋从磨砺出,梅花香自苦寒来”,我相信今后的我一定会更加发奋努力,因为老师就是我最大的动力与支持。
老师,我想对您说:
“老师,我们因您而灿烂,我们因您而自傲!
”。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 图书馆 管理 系统