《C语言课程设计报告图书信息管理系统设计.pdf》由会员分享,可在线阅读,更多相关《C语言课程设计报告图书信息管理系统设计.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言课程设计图书管理系统Books Management SystemBooks Management System一、需求分析一、需求分析为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用 c 语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、数
2、量、在库状态等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。二、算法设计二、算法设计:1 1设计思想:设计思想:整个系统制造的而过程中,涉及了较多 C 语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种
3、子函数,操作界面简单,易操作。2 2,设计表示:,设计表示:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句 while()和选择语句 swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。(2)、void Book_Entering(struct SqList&SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。它引用了一个顺序表 SL。其他函数调用时只需传入顺序表头即可。(3)、int
4、 main(void);这五个函数时整个图书管理系统的全部菜单函数,Book_Entering();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。Book_Inquire();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作。(4)、void Book_Inquire(struct
5、SqList&SL);这个函数为顺序表的输出函数,把顺序表的头传给函数后,可输出整个顺序表的所有信息。、(5)、void Book_Borrow(struct SqList&SL);这个函数为保存信息到文件的函数,使用时将顺序表的头传给函数,函数可将整个顺序表的所有信息存入到磁盘文件中。并覆盖掉源文件,以便以后调用。(9)、void Book_Borrow(struct SqList&SL)、void Book_Return(structSqList&SL);这两个函数是借书还书的函数,在借还后系统会修改图书的在库信息。调用时将顺序表参数带回到主函数。并会出提示信息让用户返回菜单保存信息。3
6、3实现注释:实现注释:这个实用的小型图书管理程序程序以顺序表操作完成,并实现文件信息的录入和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。实现了图书管理的基本功能,包括了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。查询时可按书名、编号、作者等方式查询,找到后输出这本书的所有信息。在添加图书信息后,还增加了顺序表排序操作,并输出整个顺序表,方便用户检查信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态改变,并有提示信息让用户保存信息。系统中主要的数据结构就是图书的信息,包含编号、书名、作者、出版社、出版时间、价格、在库状态等,在处理过程
7、中各项可以作为一本图书的不同属性来进行处理。4 4结构体系设计:结构体系设计:图书管理系统主界面流程图开始图书管系统主界面图书管理系统流程图录入所有书籍信息进入图书管理系统进入图书查询系统进入图书借还系统保存所有图书信息显示菜单返回上级菜单图书查询系统主界面流程图图书查询系统主界面显示所有图书信息按编号查询图书按书名查询图书按作者查询图书保存所查询图书的信息返回上级菜单图书借还系统主界面流程图借书图书借还系统还书返回上级菜单5 5设计过程中的想法与程序中的不足:设计过程中的想法与程序中的不足:作为学期末的一项课程,主要靠编出来的系统来考察我们所掌握的基本理论知识及实际解决问题的能力,通过这次
8、c 语言课程设计,很大程度上锻炼了我们写程序的动手能力和自主思考能力。利用所学知识,开发小型实用的应用系统,掌握运用 C 语言编写调试应用系统程序,对于我们独立开发应用系统并进行数据处理的综合能力是一个很大的提高。总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足。比如,没有对界面进行操作,只是实现了简单的功能,程序写的有点繁琐,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处,提示信息不明确,对于数据的错误输入处理不是很完善等等。这个系统主要是我自己编写的,同时也得到了老师和同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识
9、不足,有的是考虑不够周全,。事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对 c 语言的学习。我认为对于 C 语言编写的程序来说,使用方法大致都是一样的,所以如果要改进的话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易用。三、用户手册三、用户手册:下面,我大致介绍一下我的系统的主要功能和注意事项:当运行此程序时,首先进入系统主界面,然后可以选择 1.进入系统,2.退出系统。选择 1 后进入系统,然后显示功能菜单按数字键选择所需服务。功能菜单中,1 录入所有书籍信息,2 进入图书管理系统,3 进入图书查询系统,4 进入图书借还系统,5 保存所有图书信息
10、,6 显示菜单,7 返回上级菜单。当出现请选择时,需要输入选项前的数字,输完之后按回车(下同)。首次运行系统需要先选择 1 录入库存书籍信息,然后再选择其他操作。当选择 2 时会进入图书管理系统,在这里可以选择添加、修改信息等操作,需要注意的是每次执行完添加、修改等操作后需要手动选择保存图书信息的操作,不然磁盘文件信息不会改变(下同)。返回上级菜单进入图书查询系统、图书借还系统的操作和管理系统的差不多,用户可自己尝试使用,所有信息最后均以磁盘文件方式保存,而且格式固定,在输入和输出均按这种格式,用户在使用时必须要按这种格式输入,否则会出现文件信息错误。四、调试与测试四、调试与测试:上机操作(截
11、图)系统主界面(选择数字进入相应的选项)选择 1 进入系统,然后出现图书初始化菜单;选择 4 进入查询系统,然后出现查询库存信息;选择 2 输入图书编号,借书功能并且显示库存;选择 3 输入图书编号,还书功能并且显示库存;选择 4 进入查询系统,然后出现查询库存信息;五、小节:五、小节:在这一个星期的实践中,通过编写这个图书管理系统,我体会到了 c 语言学习的实用性。将理论和实践结合在一起,用先进的计算机工具方便人们的生活。C语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序。编写的程序从理论上来说并没有错,但以
12、上机就问题不断。甚至有些课本上的知识照搬不变,也不能得到正确的结果。有时一个程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出错。经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都是值得的。我认为,开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分考虑到客户的需求和现实意义。不管什么系统,只用运用到实际应用中,才具有先现实意义。所以 c 语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。参考文献:参考文献:1 黄明等编著C 语言课程设计北京:电子工业出版社2郭翠英编著C 语言课程设计案例精编北京:中国水利水电出版社3 宁
13、正元数据结构(c 语言)南京:东南大学出版社。2000 年 6 月第 1版4 严蔚敏等 数据结构(c 语言版)北京:清华大学出版社,1997 年 4 月第 1 版5谭浩强编著C 程序设计题解与上机指导(第 3 版)北京:清华大学出版社6 谭浩强编著C 程序设计(第 3 版)北京:清华大学出版社附录:附录:源程序代码/*任务:C 语言课程设计*班级:13 计转本*学号:20130566140*姓名:张朝柱*实验时间:2016-3-22*本程序的功能是:图书管理系统*/#include#include#include#define BOOKNUMBER5#define LIST_SIZE 10/顺
14、序表的初始大小#define ADD_SIZE10/顺序表的增量struct SqListstruct BOOK_SYSTEM*elem;/这种类型的起始地址int length;/顺序表中元素的个数int listsize;/顺序表的分配的空间大小;/采用结构体定义每本图书的编号,书的名称,书的作者,书的数量等信息。struct BOOK_SYSTEMintbook_id;/编号char book_name50;/名字char book_author20;/作者intbook_number;/数量;void GUI_human_computer(void)/人机交互界面cout/*/endl
15、;cout/*/endl;coutttt 图 书 管 理 系 统endl;coutendl;couttt 输入数字 1:t 初始化 5 本书的信息并保存到书库中tendl;couttt 输入数字 2:t 借阅图书;并且显示图书库存的信息tendl;couttt 输入数字 3:t 返还图书;并且显示还书后库存的信息tendl;couttt 输入数字 4:t 查阅图书库存信息tendl;cout/*/endl;cout/*/book_name SL 是顺序表的变量名;SL.elem 是图书结构的顺序表头变量名/int number;int i=0;cout录入 5 本图书信息endl;for(i=
16、0;iBOOKNUMBER;i+)cout请录入第i+1SL.elemi.book_id;/cinSL.elem-book_id;/这样出现的错误是因为一直给第一个 elem 元素复制cinSL.elemi.book_name;cinSL.elemi.book_author;cinSL.elemi.book_number;SL.length+;/书库中有几种书cout五本图书信心录入完毕!endl;void Book_Borrow(struct SqList&SL)/借书我个人认为就算借完,即库存为空的时候,这个书的编号还是应该存在的int i=0,ID=0;coutID;for(i=0;i=
17、1)/如果找到了所借书的编号cout成功提示:找到图书!endl;cout图书信息为:;coutSL.elemi.book_idSL.elemi.book_authorSL.elemi.book_numberendl;SL.elemi.book_number-;cout成功提示:借书成功!endl;cout图书信息为:;coutSL.elemi.book_idSL.elemi.book_authorSL.elemi.book_numberendl;return;cout错误提示:没有你所要借的图书!endl;void Book_Return(struct SqList&SL)int i=0,I
18、D=0;coutID;for(i=0;iSL.length;i+)if(SL.elemi.book_id=ID)/如果是该书库的图书cout成功提示:是本书库的书籍!endl;cout图书信息为:;coutSL.elemi.book_idSL.elemi.book_authorSL.elemi.book_numberendl;SL.elemi.book_number+;SL.elemi.book_nameSL.elemi.book_nameSL.elemi.book_namecout成功提示:还书成功!endl;cout图书信息为:;coutSL.elemi.book_idSL.elemi.b
19、ook_nameSL.elemi.book_authorSL.elemi.book_numberendl;return;cout错误提示:你所还书籍不在本书库中!endl;void Book_Inquire(struct SqList&SL)int i,ID;coutID;for(i=0;iSL.length;i+)if(SL.elemi.book_id=ID)/如果是该书库的图书cout成功提示:是本书库的书籍!endl;/cout图书信息为:;/coutSL.elemi.book_idSL.elemi.book_nameSL.elemi.book_author/SL.elemi.book_
20、numberendl;cout该书的库存为:SL.elemi.book_numberendl;return;cout错误提示:您查询的书籍不在本书库中!endl;int main(void)struct SqListSL;/SL 表示顺序表的类型的 变量名;struct BOOK_SYSTEM Book;/Book 结构体类型名SL.elem=NULL;SL.elem=(struct BOOK_SYSTEM*)malloc(sizeof(struct BOOK_SYSTEM)*LIST_SIZE);/开辟 10 个 struct BOOK_SYSTEM 这个类型的顺序表if(SL.elem=N
21、ULL)cout错误提示:内存申请失败!endl;return 0;elseSL.length=0;SL.listsize=LIST_SIZE;int command=0;/命令字变量GUI_human_computer();while(1)coutcommand;switch(command)case 1:Book_Entering(SL);/五本书的录入函数break;case 2:Book_Borrow(SL);break;case 3:Book_Return(SL);break;case 4:Book_Inquire(SL);break;default:cout错误提示:命令字有误!endl;break;return 0;