




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2012届分类号单位代码本科毕业设计说明书C语言编写图书管理系统姓名李彬学号200815840114年级2008级本科3班专业机械设计制造及其自动化系(院)机械工程学院指导教师李培珍年月日目录第一部分1职业生涯规划十年创业路11前言12自我剖析13环境分析131国家环境132社会环境133职业环境234分析小结24未来人生职业规划25总结2第二部分4C语言编写图书管理系统4摘要4ABSTRACT51需求分析611系统需求612功能分析62系统功能模块结构图621系统调用的函数722图书管理系统模块93图书管理系统的结构1031主函数流程图10311主控模块10312读者登陆模块11313管理员登陆模块12314图书管理模块13315读者管理模块1432实体数据结构15321读者类别结构15322读者信息结构15323图书类别结构16324图书数据结构16325管理员类别结构17326管理员数据结构17327借阅信息结构18328违规记录数据结构1833程序文件存储设计19331链表存储结构简述19332动态链表的建立19333动态链表的删除21334动态链表的插入23335数据文件存储244图书管理系统测试2541测试过程2542实验结果2543系统缺陷255出错处理2551出错输出信息2552出错处理对策256安全设计257设计心得26参考文献27附录27第一部分职业生涯规划十年创业路1前言在今天这个人才竞争的时代,职业生涯规划开始成为在人争夺战中的另一重要利器。对企业而言,如何体现公司“以人为本”的人才理念,关注员工的人才理念,关注员工的持续成长,职业生涯规划是一种有效的手段;而对每个人而言,职业生命是有限的,如果不进行有效的规划,势必会造成生命和时间的浪费。作为当代大学生,若是带着一脸茫然,踏入这个拥挤的社会怎能满足社会的需要,使自己占有一席之地因此,我试着为自己拟定一份职业生涯规划,将自己的未来好好的设计一下。有了目标,才会有动力。2自我剖析优点做事仔细认真、踏实、有耐心、肯吃苦耐劳。为人和蔼、友善、安分、忠实可靠、很好相处而且能以一种实事求是的态度接受他人的行为,但我需要基本的信任和理解。总是避免矛盾,更在意维护人际关系。只要可能,就会使自己适应他人的需要和期望。缺点性格偏内向,不太善于表达自己,语言表达还很欠缺。交际能力较差,胆小,思想上属保守派,积极主动性不够。有时偷懒,知识面不广,经验不足。缺乏毅力、恒心有时多愁善感。兴趣爱好1CAD、PRO/E绘图。2看书。3编程。4听音乐。3环境分析31国家环境机械自动化技术从上个世纪2O年代开始发展应用以来,已经得到了迅速的发展,特别是近年来计算机的高度集成化,开始采用了计算机集成制造系统,大大加快了机械自动化的发展,但我国仍处于初级操作阶段的自动化。我国机械制造业目前有114万个企业,发展很不平衡,有大量落后于现代水准的产业,大部分企业还比较落后,手工劳动占有相当的比重,我国能独立开发现代机械自动化技术的企业可以说没有;我国机械制造业企业中自动化装备少、水准低,不仅在数量上同世界先进国家有较大差距,而且在品种上、质量上、使用上,同世界先进水准也存在阶段性差距。实现我国机械自动化技术是一个长期的过程,不可能一蹴而就,需要循序渐进,不断努力,创造条件,向自动化的高级理想阶段迈进。32社会环境国产造型生产线因产品质量差、可靠性低、实用性差,开工率一般仅在5060。而能在生产中长期服役的主力生产线很少,像第一汽车制造厂的01线、第二汽车制造厂的BMD线等具有全年开工业绩的线更是风毛麟角。这种现象不属偶然或局部,而是带有普遍性。据调查,我国引进的弧焊机器人,完全正常运转、充分发挥效益的只占13,另外13处于负荷不满或不能完全正常运转状态还有13不能正常使用,直接影响了用户使用更多机器人的信心。所以,我国现在需要自动化控制方面的人才,以提高利用率、生产率。33职业环境由于大力发展工业自动化是加快传统产业改造提升、提高企业整体素质、提高国家整体国力、调整工业结构、迅速搞活大中型企业的有效途径和手段,国家将继续通过实施一系列工业过程自动化高技术产业化专项,用信息化带动工业化,推动工业自动化技术的进一步发展,加强技术创新,实现产业化,解决国民经济发展面临的深层问题,进一步提高国民经济整体素质和综合国力,实现跨越式发展。此时很多企业都需要自动化控制方面的人才。34分析小结前景是乐观的,但是经济的发展和全球化的到来必将导致人才精英化,这就需要我更加努力学习与专业相关的拓展知识,完善自己,让自己更容易融入社会,融入工作。4未来人生职业规划技术学习期对于我们刚毕业的大学生来说,最缺乏的应该就是动手操作的能力了,也就是技术所以,毕业后先学一门技术在这个高速发展的社会里是刻不容缓的。我需要三年的时间去学习一门技术,这不仅会是为了未来的生活,我还必须根据自己的知识去完善它,让它成为我自己的技术。经验累积期在这个时期,我已经可以独立工作,并且还要多学习经验,多与同行师傅学习。并且要学习企业管理,为以后的创业打下坚实的基础。这个时期我定为五年。自主创业期在这个时期,我已经学习到了技术,积累了经验,有了广阔的人际关系和丰富的管理知识。我需要的是拼搏。在未来的两年,我会用我积攒的知识、技术、资金和人脉组成一个二十人左右的团队,走上我的创业路。创业的路一定是艰辛的,一定会遇到各种各样的问题,我会在接下来的两年里不断改善我的团队,发展她5总结通过规划,我清楚地认识了自己,确立了自己的努力方向和职业定位,这样就可以使自己保持平稳和正常的心态,按照目标和理想有条不紊、循序渐进地努力。当然,计划虽好,最重要的还是在于其具体的实践和所取得的成效。任何目标,只说不做到头来都会是一场空。然而现实是未知多变的,定出的计划随时都会遭遇问题,这就要求我们有清醒的头脑,客观的分析和全面的认知。每个人都有自己的理想信念,抱负和追求,每个人都渴望成功,但在此过程中我们必须坚持信念,必须持之以恒,必须脚踏实第二部分C语言编写图书管理系统摘要论文主要讲述的是用C语言编写图书管理系统。在本次设计中,先是对系统的需求进行分析,得到了图书管理系统所需要的基本功能。再进行了模块化的分组,将图书管理系统所需要的功能细分为多个模块进行各模块的开发。继而对各功能菜单和流程进行设计。数据结构是这个系统最重要的部分之一,因为它承担着整个系统数据存储的重担。而图书管理系统的数据时非常多的。最后进行系统测试和调试。关键词C语言;图书管理系统;需求;模块;结构;流程;数据测试ABSTRACTTHEPAPERISTALKINGABOUTWRITTENABOOKSMANAGEMENTSYSTEMINCPROGRAMMINGLANGUAGEINTHISDESIGN,IGETTHESYSTEMREQUIREMENTSFIRSTANDIKNOWWHATFUNCTIONISTHEBOOKSMANAGEMENTSYSTEMNEEDSECONDLY,IDIVIDETHEBOOKSMANAGEMENTSYSTEMINTOSEVERYMODULESANDDEVELOPMENTEACHMODULEANDTHENDESIGNSEACHFUNCTIONMENUANDPROCESSTHEDATASTRUCTUREOFTHISSYSTEMISONEOFTHEMOSTIMPORTANTPARTS,BECAUSEITBEARTHEBURDENOFTHEWHOLESYSTEMDATASTORAGEANDTHEDATAOFTHEBOOKSMANAGEMENTSYSTEMISSOMUCHFINALLY,TESTINGANDDEBUGGINGTHEBOOKSMANAGEMENTSYSTEMKEYWORDSCPROGRAMMINGLANGUAGEBOOKSMANAGEMENTSYSTEMREQUIREMENTMODULESTRUCTUREPROCESSDATATESTING1需求分析11系统需求为了方便读者查找自己需要的书籍及图书馆人员的管理,需要对书籍进行必要的分类处理,这样既方便管理人员对图书的管理,也方便读者的借阅,使图书管理井然有序。12功能分析图书分类管理为了便于不同书籍的管理,图书可分为不同的类别,用于编辑不同的权限,设置不同的管理方式。读者分类管理为了读者管理方便,可以将读者分为不同的类别,定义不同的属性,灵活的管理读者信息。管理员分类管理为了便于对管理员的管理,管理员可分为多种类别,并且可以编辑,各级管理员权限亦不同,实现管理员对图书管理系统的管理。图书查询设定多种搜索条件,按条件搜索符合读者要求的图书。如果读者知道某本书的书名、作者等相关信息,利用图书搜索功能就很方便了。权限管理权限管理包括两部分内容对读者帐号的管理和对书籍信息的管理。管理员需要给用户分配用户名和密码,同时设定用户的类别。同时,管理员还需要给书籍规定类别,用以图书和读者的管理。违规管理用以管理图书借阅超期的读者,违规读者在得到相应处罚后才能继续借阅图书。2系统功能模块结构图本图书管理系统由图书管理,读者管理,图书借阅,管理员管理四个大的菜单模块组成,其总体结构图如下图书管理模块读者管理模块图书借阅模块管理员模块图1图书管理系统总体结构图图书管理系统21系统调用的函数函数名称函数功能ADMINISTERS_SHOW显示管理员数据ADMINISTERS修改管理员数据ADD_ADMINISTERS增加管理员DELE_ADMINISTERS删除管理ADMINTYPE_SHOW显示管理员类别数据ADMINTYPE修改管理员类别数据ADD_ADMINTYPE增加管理员类别DELE_ADMINTYPE删除管理员类别BOOKS_SHOW显示书籍信息BOOKS修改书籍信息ADD_BOOKS增加书籍DELE_BOOKS删除书籍SURCH_BOOKS搜索书籍BORROW_BOOKS书籍借阅BOOKTYPE_SHOW显示图书类别BOOKTYPE修改图书类别ADD_BOOKTYPE增加图书类别DELE_BOOKTYPE删除图书类别BORROWINFO_SHOW显示借阅信息ADD_BORROWINFO增加借阅信息SURCH_BORROWINFO搜索借阅信息RETURN_BORROWINFO归还图书DATE_SHOW显示时间DATECPY时间复制函数RETURN_DATE还书日期计算函数DATE_COMPARE时间比较函数GET_TIME获取系统时间OUTLINE_SHOW显示违规记录OUTLINE修改违规记录ADD_OUTLINE增加违规记录OUTLINE_JUDGE判断图书是否过期OUTLINE_SURCH搜索违规记录READERS_SHOW显示读者信息READERS修改读者信息ADD_READERS增加读者DELE_READERS删除读者READERTYPE_SHOW显示读者类别READERTYPE修改读者类别ADD_READERTYPE增加读者类别DELE_READERTYPE删除读者类别图2系统调用的函数图22图书管理系统模块主菜单包括读者登陆,管理员登陆,图书查询,退出。读者登陆图书借阅,已借图书,借阅历史,违规记录,退出。管理员登陆图书查询,图书管理,读者管理,违规处理,返回上层,退出。图书查询根据图书名称查询图书。退出退出图书管理系统。主菜单读者登陆管理员登陆图书查询退出图书借阅退出违规记录借阅历史已借图书图书查询退出返回上一层违规处理读者管理图书管理添加图书返回删除类别添加类别删除图书添加读者删除读者返回删除类别添加类别图3图书管理系统模块3图书管理系统的结构31主函数流程图311主控模块在该模块中,提供系统主菜单,通过主菜单用户选择读者登陆、管理员登陆、图书查询和退出。开始显示系统菜单B1B2B3B4调用读者登录菜单READERMENU调用管理员登陆菜单ADMINMENU调用图书查询函数SURCH_BOOKS退出数据结构定义YYYYNNNNYYY图4主控模块流程图312读者登陆模块在该模块中,提供子菜单供用户选择图书查询,已借书目,借阅历史,违规记录和退出。查询函数直接调用借阅函数借阅图书。已借书目查询未归还图书。借阅历史查询已还图书。违规记录查询超期未还图书。YNYNYNYNNY图5读者登陆模块流程图开始B1显示读者菜单B2B3B4B5退出调用图书借阅函数BORROW_BOOKS调用借阅信息查询函数SURCH_BOWWOWINFO调用借阅信息查询函数SURCH_BOWWOWINFO调用违规记录查询函数OUTLINE_SURCH313管理员登陆模块在该模块中,提供子菜单供用户选择图书查询,图书管理,读者管理,违规记录,返回上层和退出。查询菜单调用图书查询函数查询图书。图书馆里调用图书管理菜单,对图书管理进行各种操作。读者管理调用读者管理菜单,对读者进行各种操作。违规记录调用违规记录处理函数,对读者超期的图书进行管理。返回上一层为保持管理员的登陆状态,以便读者借阅图书。退出为管理员退出登陆,此状态下读者不可借阅图书。YNYNYNYN图6管理员登陆模块流程图B6YN开始B2显示管理员菜单B3B4B1B5退出调用图书查询函数SURCH_BOOKS调用图书管理菜单BOOK_ADMIN_MENU调用读者管理菜单READER_ADMIN_MENU调用违规处理函数OUTLINE_ALTERYN314图书管理模块在该菜单中供用户选择添加图书,删除图书,添加类别,删除类别和返回。添加图书调用添加图书函数。删除图书调用图书删除函数。添加类别调用添加类别函数。删除类别调用类别删除函数。返回为退出图书图书管理菜单,并返回上层菜单。图7图书管理模块流程图开始B1显示图书管理菜单B2B3B4B5调用添加图书函数ADD_BOOKS调用删除图书函数DELE_BOOKS调用添加图书类别函数ADD_BOOKTYPE调用删除图书类别函数DELE_BOOKTYPE返回YYYYYNNNNN315读者管理模块在该菜单中供用户选择添加读者,删除读者,添加类别,删除类别和返回。添加读者调用读者添加函数。删除读者调用读者删除函数。添加类别调用读者类别添加函数,删除类别调用读者类别删除函数。返回为退出读者管理菜单,并返回上一层。图8读者管理模块流程图开始B1显示图书管理菜单B2B3B4B5调用添加读者函数ADD_READERS调用删除读者函数DELE_READERS调用添加读者类别函数ADD_READERTYPE调用删除读者类别函数DELE_READERTYPE返回NYYYYYNNNN32实体数据结构321读者类别结构图9读者类别结构图322读者信息结构图10读者信息结构图读者类别NEXT指针备注最多节约数量借阅期限类别名称类别编号读者信息备注密码NEXT指针姓名证件号院系电话电子邮箱办证日期有效期限类别323图书类别结构图11图书类别结构图324图书数据结构图12图书信息结构图图书类别类别编号类别名称图书关键字备注NEXT指针剩余数量图书信息馆藏地址备注索书号NEXT指针图书编号图书名称图书类别作者出版社出版日期单价页数登记时间总数关键字325管理员类别结构图13管理员类别结构图326管理员数据结构图14管理员数据结构图管理员类别类别编号NEXT指针类别名称管理级别管理期限备注管理员类别NEXT指针类别证件号姓名电话电邮密码办理日期备注327借阅信息结构图15借阅信息结构图328违规记录数据结构图16违规记录结构图借阅信息NEXT指针图书编号图书名称读者证号读者姓名借阅日期还书日期借阅状态备注违规记录NEXT指针处理状态书籍名称书籍编号读者姓名读者证号33程序文件存储设计程序数据采用链表结构。链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。用数组存储数据时,必须事先定义固定的长度(即元素个数)。如果事先难以确定元素个数,则必须把数组定义的足够大,以便能存放任意数目的数据,显然这将会浪费内存。链表则没有这种缺点,它根据需要开辟内存单元。所以本程序选用链表结构存储数据。331链表存储结构简述HEAD1249135614751021图17链表示意图链表有一个“头指针”变量,图中HEAD表示,它存放一个地址,该地址指向一个元素。链表中每一个元素成为“结点”,每个结点都应包括两个部分;用户需要用的实际数据和下一个结点的地址。HEAD指向第一个元素;第一个元素又指向第二个元素直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。链表中各个元素在内存中可以不是连续存放的。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一元素。如果不提供“头指针”(HEAD),则整个链表都无法访问。由此可见,头指针在链表中得重要性。由此,本程序中头指针都列为全局变量,可供各个文件中函数调用,保证数据的流通。同时,头指针也不直接应用,而是传递给同类型指针后再应用,用以保证头指针不被随意修改,保证程序的稳定性。332动态链表的建立建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相连的关系。HEADP1P2A1249A1356B1475C1021DNULL10101AHEADP1P2BHEADP1P2CP1HEADP2DP1HEADP2E10101A10103B10101A10103B10101A10103B10101A10103B10107BP1HEADP2F图18链表建立示意图当输入第一个结点数据时,令HEADP1,即把P1的值赋给HEAD,也就是使HEAD也指向新开辟的结点(图18A)。P1所指向的新开辟的结点就成为链表中第一个结点。然后再开辟另一个结点并使P1指向它,接着输入该结点的数据(图18B)。当链入第二个结点时,将P1的值赋给P2NEXT,此时P2指向第一个结点,因此执行“P2NEXTP1”就将新结点的地址赋给第一个结点的NEXT成员,使第一个结点的NEXT成员指向第二个结点(图18C)。接着使P2P1,也就是使P2指向刚才建立的结点(图18D)。接着再开辟一个结点并使P1指向它,并输入该结点的数据(图18E)。再次循环建立结点,又将P1的值赋给P2NEXT,也就是将第3个结点连接到第2个结点之后,并使P2P1,使P2指向最后一个结点(图18F)。在结束结点建立时,最后一个结点NEXT成员应被赋给NULL,它不指向任何结点。333动态链表的删除动态链表的删除指删除链表中得某一个结点。即查找到要删除的结点后删除此结点,再将其余链表连接。(A)(B)图1910101A10103B10107CABCDEABCDE与此相仿,从一个动态链表中删去一个结点,并不是真正从内存中把它抹掉,而是把它从链表中分离开来,只要撤销原来的连接关系即可。HEADP1(A)HEADP1P2BHEADP1CHEADP1P2D图20动态链表删除示意图101011010310107NULL101011010310107NULL101011010310107NULL101011010310107NULL设两个指针变量P1和P2,先使P1指向第一个结点(图20A)。如果要删除的不是第一个结点,则使P1后移指向下一个结点(将P1NEXT赋给P1),在此之前应将P1的值赋给P2,是P2指向刚才检查过的那个结点(图20B)。如此一次一次地使P1后移,直到找到所要删除的结点或检查完全部链表都找不到要删除的结点为止。如果找到某一结点是要删除的结点,还要区分两种情况要删除的是第一个结点(P1的值等于HEAD的值,如图20A那样),则应将P1NEXT赋给HEAD(图20C)。这时HEAD指向原来的第二个结点。第一个结点虽然仍存在,但它已与链表脱离,因为链表中没有一个结点或头指针指向它。虽然P1还指向它,它仍指向第二个结点,但仍无济于事,现在链表的第一个结点是原来的第二个结点,原来第一个结点已“丢失”,即不再是链表中得一部分了。如果要删除的不是第一个结点,则将P1NEXT赋给P2NEXT图20D。P2NEXT原来指向P1指向的结点(图中第二个结点),现在P2NEXT改为指向P1NEXT所指向的结点(图中第三个结点)。P1所指向的结点不再是链表的一部分。还要烤炉链表是空表(无结点)和链表中找不到要删除的结点的情况。334动态链表的插入对链表的插入是指将一个结点插入到一个已有的链表中。根据插入的位置不同,可分为三种插入方式插在链表开头。插在链表结尾。插在链表中间。P1HEADP0(A)1010110103NULL10108HEADP1P0B图21动态链表插入示意图由于在本程序中只用到第一种插入方式,所以此处只对第一种插入方式进行讲解。先将指针变量P0指向待插入结点,P1指向第一个结点,见图21A。插入位置为第一个结点之前(即P1等于HEAD),将P0赋给HEAD,将P1赋给P0NEXT,见图21B。335数据文件存储为了使用方便,容易理解和对文件直接访问,本程序用FPRINTF和FSCANF函数对磁盘文件读写。这种存储方式在输入时要将ASC码转换为二进制形式,在输出是又要将二进制形式转换成字符,花费时间比较多。此处可以用FREAD和FWRITE函数代替,但是为了更方便阅读文件,此处不做代替。程序数据存取主要由八个文件ADMINISTERSDAT、ADMINTYPEDAT、BOOKSDAT、BOOKTYPEDAT、READERSDAT、READERTYPEDAT、BORROWINFODAT、OUTLINEDAT组成。ADMINISTERSDAT用于存储管理员信息。程序的增加管理员、删除管理员等功能均是对此文件进行读写操作。ADMINTYPEDAT用于存储管理员类别信息。程序的增加管理员类别、删除管理员类别等功能均是对此文件的读写操作。BOOK
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《护理专业解析与应用课件》课件
- 媒体广告投放交易合同具体规定
- 劳务派遣协议用工单位
- 畜牧养殖与饲料供应合作协议
- 车厂供应商合同协议
- 配货生意转让合同协议
- 转让工地临建房合同协议
- 购买木板材合同协议模板
- 产品销售代理协议条款细则
- 转让矿山破碎设备合同协议
- 2023年中考数学专题复习:《二次函数》压轴题突破练习题汇编(含答案解析)
- 5.实验设计的基本原则和常用方法
- GB/T 4162-2008锻轧钢棒超声检测方法
- 初中生职业生涯规划完整版课件
- 风险分级管控和隐患排查治理体系奖励惩罚台账
- 成都14级初二下语文锦江区届零诊考试试题及答案
- 拔牙术中术后并发症的处理课件
- 股骨头骨骺骨软骨病课件
- 克隆技术的发展及其伦理问题课件
- 走近生命科学的世纪
- 乙烯高压气相本体聚合制备低密度聚乙烯的合成工艺
评论
0/150
提交评论