版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计图书管理系统BooksManagementSystem学生姓名张朝柱学院名称徐州工程学院学号20230566140班级13计转本专业名称计算机科学与技术指导教师李子龙2023年5月10日一、需求分析为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、数量、在库状态等。图书信息的录入和显示要求有一定的标准格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等根本操作。整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。二、算法设计:1.设计思想:整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯穿。进一步加深、稳固了所学的专业的根本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。2,设计表示:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。(2)、voidBook_Entering(structSqList&SL);这是一个录入图书信息的函数,它主要实现了顺序表的创立,并且在创立过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。它引用了一个顺序表SL。其他函数调用时只需传入顺序表头即可。(3)、intmain(void);这五个函数时整个图书管理系统的全部菜单函数,Book_Entering();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。Book_Inquire();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作。(4)、voidBook_Inquire(structSqList&SL);这个函数为顺序表的输出函数,把顺序表的头传给函数后,可输出整个顺序表的所有信息。、(5)、voidBook_Borrow(structSqList&SL);这个函数为保存信息到文件的函数,使用时将顺序表的头传给函数,函数可将整个顺序表的所有信息存入到磁盘文件中。并覆盖掉源文件,以便以后调用。(9)、voidBook_Borrow(structSqList&SL)、voidBook_Return(structSqList&SL);这两个函数是借书还书的函数,在借还后系统会修改图书的在库信息。调用时将顺序表参数带回到主函数。并会出提示信息让用户返回菜单保存信息。3.实现注释:这个实用的小型图书管理程序程序以顺序表操作完成,并实现文件信息的录入和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。实现了图书管理的根本功能,包括了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。查询时可按书名、编号、作者等方式查询,找到后输出这本书的所有信息。在添加图书信息后,还增加了顺序表排序操作,并输出整个顺序表,方便用户检查信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态改变,并有提示信息让用户保存信息。系统中主要的数据结构就是图书的信息,包含编号、书名、作者、出版社、出版时间、价格、在库状态等,在处理过程中各项可以作为一本图书的不同属性来进行处理。4.结构体系设计:图书管理系统主界面流程图录入所有书籍信息录入所有书籍信息进入图书管理系统显示菜单进入图书查询系统进入图书借还系统保存所有图书信息返回上级菜单图书管系统主界面开始图书管理系统流程图显示所有图书信息显示所有图书信息按编号查询图书按书名查询图书按作者查询图书保存所查询图书的信息返回上级菜单图书查询系统主界面图书查询系统主界面流程图图书借还系统主界面流程图借书借书还书返回上级菜单图书借还系统5.设计过程中的想法与程序中的缺乏:作为学期末的一项课程,主要靠编出来的系统来考察我们所掌握的根本理论知识及实际解决问题的能力,通过这次c语言课程设计,很大程度上锻炼了我们写程序的动手能力和自主思考能力。利用所学知识,开发小型实用的应用系统,掌握运用C语言编写调试应用系统程序,对于我们独立开发应用系统并进行数据处理的综合能力是一个很大的提高。总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与缺乏。比方,没有对界面进行操作,只是实现了简单的功能,程序写的有点繁琐,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些缺乏之处,提示信息不明确,对于数据的错误输入处理不是很完善等等。这个系统主要是我自己编写的,同时也得到了老师和同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识缺乏,有的是考虑不够周全,。事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对c语言的学习。我认为对于C语言编写的程序来说,使用方法大致都是一样的,所以如果要改良的话,就是要改良一些算法,尽量把界面编写清楚,提示信息全面,方便易用。三、用户手册:下面,我大致介绍一下我的系统的主要功能和考前须知:当运行此程序时,首先进入系统主界面,然后可以选择1.进入系统,2.退出系统。选择1后进入系统,然后显示功能菜单按数字键选择所需效劳。功能菜单中,1录入所有书籍信息,2进入图书管理系统,3进入图书查询系统,4进入图书借还系统,5保存所有图书信息,6显示菜单,7返回上级菜单。当出现"请选择"时,需要输入选项前的数字,输完之后按回车〔下同〕。首次运行系统需要先选择1录入库存书籍信息,然后再选择其他操作。中选择2时会进入图书管理系统,在这里可以选择添加、修改信息等操作,需要注意的是每次执行完添加、修改等操作后需要手动选择保存图书信息的操作,不然磁盘文件信息不会改变〔下同〕。返回上级菜单进入图书查询系统、图书借还系统的操作和管理系统的差不多,用户可自己尝试使用,所有信息最后均以磁盘文件方式保存,而且格式固定,在输入和输出均按这种格式,用户在使用时必须要按这种格式输入,否那么会出现文件信息错误。四、调试与测试:上机操作〔截图〕系统主界面〔选择数字进入相应的选项〕选择1进入系统,然后出现图书初始化菜单;选择4进入查询系统,然后出现查询库存信息;选择2输入图书编号,借书功能并且显示库存;选择3输入图书编号,还书功能并且显示库存;选择4进入查询系统,然后出现查询库存信息;五、小节:在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性。将理论和实践结合在一起,用先进的计算机工具方便人们的生活。C语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序。编写的程序从理论上来说并没有错,但以上机就问题不断。甚至有些课本上的知识照搬不变,也不能得到正确的结果。有时一个程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出错。经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都是值得的。我认为,开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分考虑到客户的需求和现实意义。不管什么系统,只用运用到实际应用中,才具有先现实意义。所以c语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。参考文献:[1]黄明等编著《C语言课程设计》北京:电子工业出版社[2]郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社[3]宁正元《数据结构〔c语言〕》南京:东南大学出版社。2000年6月第1版[4]严蔚敏等《数据结构〔c语言版〕》北京:清华大学出版社,1997年4月第1版[5]谭浩强编著《C程序设计题解与上机指导(第3版)》北京:清华大学出版社[6]谭浩强编著《C程序设计(第3版)》北京:清华大学出版社附录:源程序代码/***任务:C语言课程设计*班级:13计转本*学号:20230566140*姓名:张朝柱*实验时间:2023-3-22*本程序的功能是:图书管理系统*/#include<stdio.h>#include<iostream.h>#include<malloc.h>#defineBOOKNUMBER5#defineLIST_SIZE10//顺序表的初始大小#defineADD_SIZE10//顺序表的增量structSqList{ structBOOK_SYSTEM*elem;//这种类型的起始地址 intlength;//顺序表中元素的个数 intlistsize;//顺序表的分配的空间大小};//采用结构体定义每本图书的编号,书的名称,书的作者,书的数量等信息。structBOOK_SYSTEM{ intbook_id;//编号 charbook_name[50];//名字 charbook_author[20];//作者 intbook_number;//数量};voidGUI_human_computer(void)//人机交互界面{ cout<<"/**********************************************************************/"<<endl; cout<<"/**********************************************************************/"<<endl; cout<<"\t\t\t图书管理系统"<<endl; cout<<endl; cout<<"\t\t输入数字1:\t初始化5本书的信息并保存到书库中\t"<<endl; cout<<"\t\t输入数字2:\t借阅图书;并且显示图书库存的信息\t"<<endl; cout<<"\t\t输入数字3:\t返还图书;并且显示还书后库存的信息\t"<<endl; cout<<"\t\t输入数字4:\t查阅图书库存信息\t"<<endl; cout<<"/*********************************************************************************/"<<endl; cout<<"/*********************************************************************************/"<<endl;}voidBook_Entering(structSqList&SL)//SL.elem->book_nameSL是顺序表的变量名;SL.elem是图书结构的顺序表头变量名{ //intnumber; inti=0; cout<<"录入5本图书信息"<<endl; for(i=0;i<BOOKNUMBER;i++) { cout<<"请录入第"<<i+1<<"本书的信息(格式:编号书名作者数量):";//因为数组的下标是从0开始 cin>>SL.elem[i].book_id;//cin>>SL.elem->book_id;//这样出现的错误是因为一直给第一个elem元素复制 cin>>SL.elem[i].book_name; cin>>SL.elem[i].book_author; cin>>SL.elem[i].book_number; SL.length++;//书库中有几种书 } cout<<"五本图书信心录入完毕!"<<endl;}voidBook_Borrow(structSqList&SL)//借书我个人认为就算借完,即库存为空的时候,这个书的编号还是应该存在的{ inti=0,ID=0; cout<<"请输入你所借书的编号:"; cin>>ID; for(i=0;i<SL.length;i++) { if((SL.elem[i].book_id==ID)&&(SL.elem[i].book_number>=1))//如果找到了所借书的编号 { cout<<"成功提示:找到图书!"<<endl; cout<<"图书信息为:"; cout<<SL.elem[i].book_id<<""<<SL.elem[i].book_name<<""<<SL.elem[i].book_author <<""<<SL.elem[i].book_number<<endl; SL.elem[i].book_number--; cout<<"成功提示:借书成功!"<<endl; cout<<"图书信息为:"; cout<<SL.elem[i].book_id<<""<<SL.elem[i].book_name<<""<<SL.elem[i].book_author <<""<<SL.elem[i].book_number<<endl; return; } } cout<<"错误提示:没有你所要借的图书!"<<endl;}voidBook_Return(structSqList&SL){ inti=0,ID=0; cout<<"请输入你所还书的编号:"; cin>>ID; for(i=0;i<SL.length;i++) { if(SL.elem[i].book_id==ID)//如果是该书库的图书 { cout<<"成功提示:是本书库的书籍!"<<endl; cout<<"图书信息为:"; cout<<SL.elem[i].book_id<<""<<SL.elem[i].book_name<<""<<SL.elem[i].book_author <<""<<SL.elem[i].book_number<<endl; SL.elem[i].book_number++; cout<<"成功提示:还书成功!"<<endl; cout<<"图书信息为:"; cout<<SL.elem[i].book_id<<""<<SL.elem[i].book_name<<""<<SL.elem[i].book_author <<""<<SL.elem[i].book_number<<endl; return; } } cout<<"错误提示:你所还书籍不在本书库中!"<<endl;}voidBook_Inquire(structSqList&SL){ inti,ID; cout<<"请输入你要查询图书的库存(图书的编号):"; cin>>ID; for(i=0;i<SL.length;i++) { if(SL.elem[i].book_id==ID)//如果是该书库的图书 { cout<<"成功提示:是本书库的书籍!"<<endl; //cout<<"图书信息为:"; //cout<<SL.elem[i].book_id<<""<<SL.elem[i].book_name<<""<<SL.elem[i].book_author // <<""<<SL.elem[i].book_number<<endl; cout<<"该书的库存为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护工和病人协议合同书(2篇)
- 2025年孝感b2货运资格证多少道题
- 2024年物业电梯紧急救援协议3篇
- 2025年临沂货运资格证考试题库
- 2024年度精准岗位聘任合同范本2篇
- 2025年延边下载货运从业资格证模拟考试
- 2025年西宁货运从业资格证网上考试
- 2025年运城货运从业资格证网上考试答案
- 2025年深圳货运从业资格证考试模拟
- 《轮胎生产流程》课件
- 竞争对手分析管理方案了解竞争对手动态的手段
- 中职《在实践中学礼仪外研社第二版》课件 项目一 任务一
- 东北抗联精神 (第二稿)
- 刺梨产品计划书
- 2024《HSK标准教程3》第3课 桌子上放着很多饮料 教案
- 【《广东省服装业出口贸易探究》9900字(论文)】
- 理解生活满意度的标准和评估方法
- 中医五则诊断法在临床中的应用与误区
- 《初中语文教学中的跨学科融合与创新实践》
- 《金子美玲儿童诗》课件
- 《立体主义》课件
评论
0/150
提交评论