




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计图书馆管理系统C语言程序设计图书馆管理系统/C语言程序设计图书馆管理系统实训报告实训报告题目:图书馆管理系统院系:信息科技学院专业:姓名:学号:指导教师:日期:2015年7月15日桂林电子科技大学信息科技学院
目录1问题定义=================================12系统设计52.1总体设计52.2详细设计62.2.1数据结构设计62.2.2主控流程82.2.3增加信息模块72.2.4查找信息模块72.2.7删除信息模块72.2.8修改信息模块72.2.8数据功能描述73系统实现================================23.1编码83.1.1程序预处理93.1.2主函数main()93.1.3主菜单界面113.1.7增加图书信息143.1.8查询图书信息143.1.9删除图书信息153.2.0修改图书信息153.2测试与调试133.2.1概述143.2.2程序测试145归纳总结==============================================35.1开发经验165.2实训中遇到的问题与解决方法165.3设计中的不足之处165.4感想和心得体会166参考资料=================================16前言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识与以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以与开发应用程序等。我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是,对于程序设计而言,学习C的步伐不应该停留于此。我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C语言开发出解决复杂问题的大型综合程序。可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对TurboC语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识与开发程序打下坚实的基础。本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。由于时间、经验与水平的原因,不当、不足之处,请大家提出宝贵意见。编者
图书馆管理系统实训目的:巩固C语言的三种基本结构、数组、函数调用的基本知识;掌握利用C语言编写程序的基本方法,提高C语言编程技巧,培养分析问题、解决问题的能力;熟练掌握C语言的编译、调用方法。实验内容退出图书管理修改图书信息删除图书信息查找图书信息增加图书信息主菜单退出图书管理修改图书信息删除图书信息查找图书信息增加图书信息主菜单1、问题定义创建一个图书馆管理系统。假设系统中每本图书只包括图书名字、图书书号、图书出版社、图书作者等信息。程序的运行效果如图1.1所示,选择任意菜单中的数字,实现相应功能。图1.1图书管理系统功能需求在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。2.系统设计2.1总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。本图书管理系统采用了数组来实现,如下图1.2所示,它由五大功能模块组成:•增加图书信息模块。通过输入图书的书名、书号、出版社、作者来实现增加信息。•查找图书信息模块。根据增加的图书的书名来查找图书的信息。•删除图书信息模块。根据增加的图书信息记录通过查找定位找到信息进行删除。•修改图书信息模块。根据增加的图书信息记录通过查找找到该书信息进行修改。2.2详细设计2.2.1数据结构设计图书馆信息结构体结构体structbook将用于储存图书的基本信息,它将作为文件的数据域。Structbook/*定义结构体*/{charName[20];/*书名*/charNumber[20];/*书号*/charpublish[20];/*出版社*/charauthor[10];/*作者*/}book[500];这样就定义了一个数组的结构2.2.2主控main()函数执行流程增加信息模块:主要实现图书信息的增加功能。查找信息模块:主要实现图书查找书籍的功能。删除信息模块:主要实现图书删除图书记录的功能修改信息模块:主要实现修改增加后的图书信息功能。函数功能述•add()函数原型:voidadd();add()函数用于在增加图书信息的功能。•chazhao()函数原型:chazhao();chazhao()函数用于在查找图书信息的功能。•del()函数原型:del();del()函数用于在删除图书信息的功能。•xiugai()原型函数:xiugai();xiugai()函数用于在修改图书信息的功能。主函数main()整个成绩管理系统控制部分。voidmain()/*整个图书管理系统控制部分*/{inti;do/*控制返回菜单*/{Menu();printf("请输入要实现的功能");scanf("%d",&i);if(i<=4&&i>=0)/*请输入0到4之间的数字*/switch(i){case1:add();break;case2:chazhao();break;case3:del();break;case4:xiugai();break;case0:exit(0);break;}elseprintf("对不起,请重新输入并按回车确定\n\n");}while(1);}注:图书馆信息管理系统的控制部分。3、系统实现3.1编码3.1.1包括定义结构体、常量和变量、声明部分,并对它们进行初始化工作。#include<stdio.h>/*标准函数输入输出函数库*/#include<stdlib.h>/*标准函数库*/#include<string.h>/*字符串函数库*//*^TTT^TTT^^TT^TT^TT^T函数声明部分T^TTT^T^TT^TT^TT^TT^T*/voidadd();/*增加*/voidchazhao();/*查找*/voiddel();/*删除*/voidxiugai();/*修改*/voidexti();/*退出*/voidMenu();/*菜单*//*T^^TT^TT^TT^TT^T定义结构体部分T^TTT^TT^TT^TT^TT^TT^T*/structbook/*定义结构体*/{charName[20];/*书名*/charNumber[20];/*书号*/charpublish[20];/*出版社*/charauthor[10];/*作者*/}book[500];#include<stdio.h>/*标准函数输入输出函数库*/#include<stdlib.h>/*标准函数库*/#include<string.h>/*字符串函数库*//*^TTT^TTT^^TT^TT^TT^T函数声明部分T^TTT^T^TT^TT^TT^TT^T*/voidadd();/*增加*/voidchazhao();/*查找*/voiddel();/*删除*/voidxiugai();/*修改*/voidexti();/*退出*/voidMenu();/*菜单*//*T^^TT^TT^TT^TT^T定义结构体部分T^TTT^TT^TT^TT^TT^TT^T*/structbook/*定义结构体*/{charName[20];/*书名*/charNumber[20];/*书号*/charpublish[20];/*出版社*/charauthor[10];/*作者*/}book[500];主函数main()main()函数主要实现了对整个程序的运行控制,以与相关功能模块的调用。voidmain()/*整个图书管理系统控制部分*/{inti;do/*控制返回菜单*/{Menu();printf("请输入要实现的功能");scanf("%d",&i);if(i<=4&&i>=0)/*请输入0到4之间的数字*/switch(i){case1:add();break;case2:chazhao();break;case3:del();break;case4:xiugai();break;case0:exit(0);break;}elseprintf("对不起,请重新输入并按回车确定\n\n");}while(1);}主菜单界面{printf("━━━━━━━━━━━━欢迎使用图书管理系统━━━━━━━━\n");printf("┏———————————————菜单—————————————┓\n");printf("││\n");printf("│按'1':增加图书信息│\n");printf("││\n");printf("││\n");printf("│按'2':查找图书信息│\n");printf("││\n");printf("││\n");printf("│按'3':删除图书信息│\n");printf("││\n");printf("││\n");printf("│按'4':修改图书信息│\n");printf("││\n");printf("││\n");printf("│按'0':退出图书管理│\n");printf("││\n");printf("┗—————————请选择你需要的操作————————┛\n");printf("<<<<<<<<<<<<<<<<<<<<==================>>>>>>>>>>>>>>>>>>>>\n");printf(" 电信工程专业1051210206\n");}3.14增加图书信息用户进入系统后,输入要添加的书籍信息。voidadd()/*增加功能*/{inti,j;printf("请输入要增加图书的图书数量,按回车键结束\n");scanf("%d",&j);for(i=0;i<j;i++){printf("请输入要增加图书的图书名字,按回车键结束=");scanf("%s",book[i].Name);printf("请输入要增加图书的图书书号,按回车键结束book.num=");scanf("%s",book[i].Number);printf("请输入要增加图书的图书出版社,按回车键结束book.publish=");scanf("%s",book[i].publish);printf("请输入要增加图书的图书作者,按回车键结束author=");scanf("%s",book[i].author);}}3.15查找图书信息用户进入系统后,按信息记录进行查找该图书的书籍信息。voidchazhao()/*查找功能*/{intj=0;charName[20];printf("请输入书的name=");/*请输入要查找图书的书名*/scanf("%s",Name);for(j=0;j<500;j++)/*找到要查找图书的书名*/if(strcmp(book[j].Name,Name)==0){printf("┏━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┓\n");printf("┃书名┃书号┃出版社┃作者┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf("\n");printf("%s┃%s┃%s┃%s┃\n",book[j].Name,book[j].Number,book[j].publish,book[j].author);break;}else{printf("抱歉,未找到相应书籍\n");break;}/*如果查找到图书的信息就输出该图书信息,否则输出sorry,未找到相应书籍*/}3.16删除图书信息用户进入系统后,按条件输入要删除的图书信息。voiddel()/*删除功能*/{intj=0;charName[20];printf("请输入图书的书名,name=");/*按*/scanf("%s",Name);/**/for(j=0;j<500;j++)/**/if(strcmp(book[j].Name,Name)==0)/*将定位到你所要查找图书的位置*/for(;book[j].Name[0]!='\0';j++)book[j]=book[j+1];/*将查找到的图书的后一本图书的信息覆盖这本图书的信息*/book[j].Name[0]='\0';/*给结构体最后一个图书加上结束符*/}3.17修改图书信息用户进入系统后,按条件输入要修改的图书信息。voidxiugai()/*修改功能*/{intj=0;charNumber[20];printf("请输入要修改图书的number=");/*请输入要修改图书的书号*/scanf("%s",Number);for(j=0;j<500;j++)if(strcmp(book[j].Number,Number)==0)/*定位到你所要修改图书的位置,然后修改该书籍的相关信息*/{printf("请输入要修改图书的图书名字,按回车键结束=");scanf("%s",book[j].Name);printf("请输入要修改图书的图书书号,按回车键结束book.num=");scanf("%s",book[j].Number);printf("请输入要修改图书的图书出版社,按回车键结束book.publish=");scanf("%s",book[j].publish);printf("请输入要修改图书的图书作者,按回车键结束author=");scanf("%s",book[j].author);break;}3.2测试与调试3.2.1概述一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句。在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试。测试是通过运行程序发现错误的过程,常见的错误有数据溢出、数组越界、进入死循环、语句顺序颠倒、多加“;”或少加“{}”等等。调试则是确定测试中找到的错误性质并改正错误的过程。测试与调试通常交替进行,即测试——调试——再测试——再调试。能检查出尚未发现的、各种不同类型错误的测试才是成功的测试。测试程序需要测试用例,测试用例可用如下公式表示:测试用例=测试数据+预期结果。好的测试用例应该是用尽可能少的测试数据发现尽可能多的错误,即发现错误的概率要大。要选择合适的测试数据,使系统在运行时尽量能执行到每条语句,以测试各指令是否正确。还应分别测试输入合法数据与非法数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全生产管理制度文本普通货运十七项
- 汽车金融公司风险防范与应对措施考核试卷
- 火工品生产过程中的质量控制与保障考核试卷
- 灯具销售中的市场预测与趋势分析考核试卷
- 抗磨损能力研究考核试卷
- 生物遗传工程与生物技术考核试卷
- 电池管理系统与充电技术考核试卷
- 2025届四川省德阳市第五中学高三下学期第三次(线上)周考数学试题
- 2025医疗设备采购合同协议范本格式
- 2025版锅炉设备购销安装合同(草案)
- 河北省2024-2025学年高三省级联测考试+化学试卷答案
- 青岛版小学数学四年级下册认识多边形思维导图知识讲解
- 信息技术必修一《数据与计算》第四章第一节《体验计算机视觉应用》教案
- 【年产五万吨乙醛工艺设计7100字(论文)】
- 事业单位离岗创业规定2024年
- 压力容器制造程序文件及表格(符合TSG 07-2019特种设备质量保证管理体系)
- 2024年四川省南充市中考英语试卷真题(含官方答案及解析)
- 圆周角与圆心角的关系 说课 课件2023-2024学年北师大版九年级数学下册
- 举一反三四年级奥数-第19周-解决问题(二)
- 2024年陕西咸阳市县及县以下医疗卫生机构定向招聘医学类毕业生87人(高频重点提升专题训练)共500题附带答案详解
- 潮州市潮安区2022-2023学年七年级下学期期中道德与法治试题【带答案】
评论
0/150
提交评论