C语言程序设计教程资料Word格式.docx
《C语言程序设计教程资料Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程资料Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
![C语言程序设计教程资料Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/6/3869767d-e71f-49f3-8b57-39d285d66c6b/3869767d-e71f-49f3-8b57-39d285d66c6b1.gif)
1.1选题背景
随着图书馆的图书不断增加,图书管理难度也随之加大,一个好的图书馆图书信息管理系统能够使图书管理工作简便,有条不紊。
通过C语言学习,我们已经能够完成一些基本的编程,此次课程设计,是将学习和实践结合,充分感受C语言解决实践问题的魅力。
1.2系统目的
通过本次课程设计,可以培养独立思考,综合应用所学相关知识的能力,能更好的巩固《C语言程序设计教程》课程学习的内容,掌握基本程序设计的方法,加强上机动手编程能力,实现理论与实践相结合。
更加了解C语言的好处及其可用性。
能够实现基本的图书管理功能。
它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息,借书,还书。
图书库包含图书的各方面信息,编号,类型,作者,出版社,总数,剩余量等等,并且打印图书信息表。
录入,修改,删除这些功能都是对图书库的操作。
借书,还书这两项最重要的功能也都能很好的实现。
把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。
1.3系统要求
图书信息存放在文件中,提供文件的输入、输出等操作;
要实现浏览功能;
查询和排序功能要求实现查找操作(至少两种依据);
还应该提供图书信息删除和修改的功能;
另外还应该提供键盘式选择菜单以实现功能选择。
图书信息包括:
登陆名,书名,作者名,分类号,出版单位,出版时间,价格等。
使之提供以下功能:
(1)系统以菜单方式工作。
(2)图书馆信息录入功能,、。
(3)图书信息浏览功能
(4)信息查询功能。
(5)图书信息删除和修改
第2章程序实现思路
2.1现状分析
2.1.1技术分析
随着计算机技术和管理信息系统的不断进步和发展,对小型图书馆的管理从以前的手工转移到计算机是切实可行的。
我们采用的是老师上课教过的软件进行的设计。
2.1.2管理分析
图书馆管理信息系统充分发挥了计算机技术、网络技术的强大功能,从整体上改善了图书馆的管理工作,提高了图书馆服务的功能和质量,实现了图书管理的信息化,自动化。
通过对经济、技术、管理可行性的充分研究,确定了图书馆管理信息系统的开发是必要的可行的。
2.2系统分析
1.设计思想
通过对其他院校的图书馆管理系统的分析和研究,结合目前学院的管理实际情况等因素,归纳整理出了如下的设计思想:
(1)一个系统,两个界面
该系统分两个界面,一个是图书馆的后台管理系统,登陆者为系统管理员设计的核心功能是实现图书馆的多方面的信息查询,包括图书馆信息,读者的信息和图书的借阅等信息的管理;
另一个是读者的运行界面,有查询和借阅归还图书等功能,不具备管理功能。
系统会根据登录者的信息来判断应该进入哪个运行环境。
(2)两类角色
即普通用户和管理员,普通用户中又可进一步细分为老师、学生等。
(3)五种管理
◆
图书馆信息管理
用户信息管理
读者档案管理
图书档案管理
图书的借阅归还管
2.3总体程序图
图3.1系统总框架图
2.4系统总流程图
图3.2系统总流程图
第3章程序清单与功能模块设计
3.1程序清单
3.2main()函数模块
根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。
在主函数中定义全局变量,即是在函数外部定义变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。
通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。
运用fscanf语句在主函数中将文件中的内容赋给结构体变量,便于在自定义函数中对结构体的调用。
具体如下:
在主函数中定义一个存放图书馆信息的结构体。
3.3查询所有图书信息函数模块
voidsearch_allinform(structlistb[])
通过printf()语句将所有的图书信息包括编号、书名、出版社、作者、价格等信息显示在屏幕上。
运用for语句加printf()实现图书信息的循环输出显示。
3.4查询一本图书信息函数模块
voidcheckbookinformation(structlistb[])
用户先输入图书编号后,先用strcmp(s1,s2)函数进行比较两个字符串数组的大小,从而查找出该图书是否存在,若不存在则提示用户是否要继续查找,运用switch语句,若继续则再次调用函数本身进行第二次查找,直到找到为止,若否则结束循环,不再进行查找。
运用fscanf语句在主函数中将文件中的内容赋给结构体。
其主要流程图如下:
关键代码:
strcmp(比较字符串)case....break(判断)printf(输出信息)
Switch(实现选择功能分支)
3.5添加图书信息函数模块
Voidadd_bookinformation(structlistb[])
输入图书的基本信息包括编号、书名、出版社、作者、价格,由于原有的图书信息是照编号的大小顺序排列的,所有只需运用for循环和strcmp函数找出输入的图书应该插入的位置,再将所添加的图书信息插入即可。
主要流程图如下
printf(输出信息)scanf(输入信息)switch(实现多分支结构程序设计)case-break(实现功能的选择)
3.6删除图书信息函数模块
voiddelete_bookformation(structlistb[])
用户输入所要删除的图书编号,先查找该图书编号是否存在,若存在,则提示用户是否显示删除后的信息,若不存在则提示重新输入。
strcmp(比较两个字符串的大小)
switch(实现多分支结构程序设计)
if(条件选择)
3.7借阅图书模块
voidborrow_book(structlistb[])
用户先输入所借图书的编号,调用函数查找该图书有没有借出,若已借出,则提示用户该图书已借出,并提示用户是否继续借阅其他书籍。
若继续,则继续进行新的查找。
if_else(实现分支选择)
getchar(从键盘上是输入一个字符)
goto(使程序的执行流程直接转接到标号对应的那条语句)
strcmp(比较两个字符串的大小)
第四章功能模块的调试与测试
4.1主菜单运行界面
图4.1主菜单运行界面
4.2查询所有图书信息模块运行界面
按1操作查询所有图书信息
(1)打开源程序,编译程序,单击Compile按钮,出现错误。
如图:
(2)错误均指向55行,经检查发现调用函数时调用的是整个结构体,而非某一个,
所以应该为search_allinformation(b).
(3)改正后重新运行,得出如下所示的界面:
图4.2查询所有图书信息模块运行界面
4.3查找某一图书信息模块运行界面
按2选择按书名查询某一本图书信息,若图书编号存在则界面如下:
图4.3查找某一图书信息模块运行界面
若图书编号不存在,
(1)输入y,没有进行继续查找的操作
(2)调试程序,可查出输入的y对程序无影响,由于输入的是一个字符,而”\0”本身也是一个字符,则可将scanf(“%s”,&
a)改为getchar()即可。
该后则界面如下:
4.4添加图书信息模块运行界面
按3选择,输入编号,界面如下:
4.5删除图书信息模块运行界面
按4选择,输入编号
如果编号不存在,界面如下:
图4.5删除图书信息模块运行界面
如果编号存在,如下所示:
4.6借阅图书信息模块运行界面
按5选择,输入编号,出现如下界面:
4.6借阅图书界面
调试后找出错误为文件Sendlnfo.txt扩展名是隐藏的,应将文件改为Sendlnfo,得到如下正确界面:
如果编号不存在,界面如下所示:
第五章心得体会
通过这次课程设计,使我对C语言有了更进一步的认识和了解,想要学好它要重在实在,要通过不断的上机操作与理论结合才能更好的学习它,通过这次的课程设计我也发现自己好多不足之处,通过学习过后也有所改进,其次对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,对C语言中经常出现的错误也不了解。
所以以后在学习过程中,我会更好加注实践操作。
在设计过程中,收获知识,提高能力的同时,我也懂得怎么样去制定、实现计划。
课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼我们实践能力的重要环节。
最后就是课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。
除了课堂外,课程设计是最能学到东西的,最考验人的。
在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠。
经过这次课程设计,让我对C语言这门有了更深的认识,操作能力有了提高要想是写出的代码能运行,需要耐心细心,毅力以及充沛的体力。
只有经过多次编辑,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才能达到所要的运行结果。
第六章 参考文献
[1]李丽娟《C语言程序设计教程》(第4版)[M].北京:
人民邮电出版社,2013年1月
[2]李丽娟《C语言程序设计教程实验指导与习题解答》(第4版)[M].北京:
第七章致谢
非常感谢徐亦丹老师的指导,在设计中我们遇到许多问题,在徐亦丹老师的指导下,我们慢慢进入状态,顺利的完成的编程题目,每天我们在机房编写程序,老师也一直陪着我们。
帮助我们解决问题。
编程是在英文状态在进行的,很多单词我们不知道意思,不懂错误的源头出在哪,从而无法找到错误的根源,这方面老师给我们很大帮助。
耐心帮我们调试,查找错误。
在此我对老师致以最诚挚的感谢。