-1-东南大学C语言课程设计报告课程名称:计算机综合课程设计学院:土木工程学院设计题目:图书信息管理系统设计级别:A级学生姓名:学号:同组学生:学号:指导教师:2012年09月05日-2-课程报告任务书题目图书信息管理系统主要内容图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能:1)系统以菜单方式工作;2)图书信息录入功能(图书信息用文本文件形式保存);3)图书信息浏览功能;4)查询和排序功能:按书名查找;按作者名查找;5)图书信息删除功能;6)图书信息修改功能。任务要求采用模块化程序设计;鼓励可视化编程;源程序中应有足够的注释;学生可自行增加新功能模块(视情况可另外加分);必须上机调试通过;注重算法运用,优化存储效率与运算效率;需提交源程序(含有注释)及相关文件(数据或数据库文件);(cpp文件、txt或dat文件等)提交设计报告书成绩评定评定教师-3-摘要:随着当今社会发展,信息化水平逐步提高,对图书管理有了新的要求,因此,编写一个信息管理系统是十分必要的。为了满足图书管理的要求,通过计算机技术给图书管理人员带来便利。使用C语言编写图书管理系统,其中主要运用了结构化设计与链表结构。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括图书信息录入、浏览、排序、删除和修改等功能。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理。图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、删除和修改等基本操作。关键字:图书信息管理C语言链表结构目录1.设计的目的与要求-------------------------------------------------42.分析-------------------------------------------------------------43.总体设计---------------------------------------------------------54.主要功能算法-----------------------------------------------------55.完整程序及注释---------------------------------------------------86.调试分析--------------------------------------------------------247.总结------------------------------------------------------------288.答辩记录--------------------------------------------------------299.教师意见--------------------------------------------------------29-4-1.设计的目的与要求1.1设计的目的使用链表和结构等结构数据,编写一C语言程序,实现图书信息管理的功能,通过此系统可对图书馆图书信息进行管理和维护等操作,给图书管理人员带来便利。1.2设计的要求图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(图书信息用文本文件形式保存)(3)图书信息浏览功能(4)查询和排序功能:按书名查找按作者名查找(5)图书信息删除功能(6)图书信息修改功能2.分析根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,排序,删除和修改等功能的操作,所以需要建立相应的函数模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。-5-3.总体设计根据题目要求,我们经过分析和讨论后,决定将此系统分为十个功能模块:(1)菜单选择模块(2)图书信息录入功能模块(3)图书信息浏览功能模块(4)图书信息查询功能模块(5)图书信息排序功能模块(6)图书信息删除功能模块(7)图书信息修改功能模块(8)图书数据保存功能模块(9)信息文件打开功能模块(10)退出系统功能模块4.主要功能的算法4.1录入函数算法-6-4.2按书名查找算法(按作者名与此类似)4.3删除图书信息算法(修改与此类似)-7-4.4显示函数算法5.完整程序及注释#includeiostream.h/*引用库函数*/#includestdio.h#includestring.h#includeconio.h#includestdlib.h#includewindows.htypedefstructbook_info//定义图书信息的结构体变量并声明新的类型名{charAN[10];/*登录号*/charname[20];/*书名*/charauthor[20];/*作者名*/charclc[10];/*分类名*/charcompany[20];/*出版单位*/chardate[20];/*出版日期*/charprice[10];/*价格*/structbook_info*next;-8-}Booklist,*Pointer;intnum=0;//全局变量的定义PointerHead=NULL;//头指针为空FILE*fp;//指向文件的指针/*声明函数*/intmenu_select();/*主菜单函数*/voidInsert(Pointer*Head);/*录入函数*/voidScan(PointerHead);/*显示函数*/voidSearch_name(PointerHead);/*按书名查找函数*/voidSearch_author(PointerHead);/*按作者名查找函数*/voidListbyname(Pointer*Head);/*按书名排序函数*/voidDelete(Pointer*Head);//删除函数voidUpdate(PointerHead);//修改函数voidSave();//用文本文件形式保存函数voidRead();//读入文本文件函数voidExit();//退出函数voidmain()//主函数{system(cls);/*运行前清屏*/for(;;){switch(menu_select()){case1:Insert(&Head);break;case2:Scan(Head);break;-9-case3:Search_name(Head);break;case4:Search_author(Head);break;case5:Listbyname(&Head);break;case6:Delete(&Head);break;case7:Update(Head);break;case8:Save();break;case9:Read();break;case0:Exit();default:putchar('\a');}}}menu_select()//主菜单函数{inta;printf(\n\t\t\t欢迎使用图书信息管理系统\n\n\n\n\n\t\t*****请按任意键进入系统菜单!*****\n);getch();system(cls);printf(\t\t********************MENU*********************\n);//主菜单-10-printf(\t\t1.录入图书信息\n);printf(\t\t2.浏览图书信息\n);printf(\t\t3.按书名查询图书信息\n);printf(\t\t4.按作者名查询图书信息\n);printf(\t\t5.图书信息排序\n);printf(\t\t6.删除图书信息\n);printf(\t\t7.修改图书信息\n);printf(\t\t8.图书数据保存\n);printf(\t\t9.图书信息文件打开\n);printf(\t\t0.退出\n);printf(\t\t***********************************************\n);do{printf(\n\t请选择您所需要的服务:);scanf(%d,&a);}while(a0||a9);returna;}voidInsert(Pointer*Head)//录入图书信息函数{charAN[10];charc;Pointerp,q,r;printf(\n\t\t****************请输入图书信息****************\n);/*交互输入*/printf(\n\t\t请输入登录号:);scanf(%s,AN);p=q=*Head;//检测登录号是否重复-11-while(p!=NULL){if(strcmp(p-AN,AN)==0){printf(已经有相同的登录号:);return;}else{q=p;p=p-next;}}r=(Pointer)malloc(sizeof(Booklist));r-next=NULL;if(r==NULL){printf(分配空间失败!);return;}if(q==NULL)*Head=r;else{q-next=r;}strcpy(r-AN,AN);printf(\n\t\t输入书名:);//录入图书信息scanf(%s,r-name);getchar();printf(\n\t\t输入作者名:);scanf(%s,r-author);getchar();printf(\n\t\t输入分类号:);scanf(%s,r-clc);getchar();printf(\n\t\t输入出版单位:);scanf(%s,r-company);getchar();printf(\n\t\t输入出版日期:);-12-gets(r-date);printf(\n\t\t输入价格:);scanf(%s,r-price);do{printf(\n\t\t录入成功!!!!);num++;printf(选择是否继续录入(Y/N)?:);/*连续录入图书信息*/getchar();scanf(%c,&c);if(c=='y'||c=='Y')Insert(Head);else{if(c=='n'||c=='N')return;elseprintf(\n\t\t输入错误,请重新输入!!!);}}while(c!='y'&&c!='n'&&c!='Y'&&c!='N');}voidScan(PointerHead)//显示图书信息函数{Pointerp;p=Head;if(p==NULL)printf(记录为空);//检测是否有图书信息else-13-{printf(\n\t共有%d条记录,num);while(p!=NULL){printf(\n\n\t\t登录号:%-10s,p-AN);//显示图书信息printf(\n\t\t书名:%-20s,p-name);printf(\n\t\t作者名:%-20s,p-author);printf(\n\t\t分类号:%-10s,p-clc);printf(\n\t\t出版单位:%-20s,p-company);printf(\n\t\t出版时间:%-20s,p-date);printf(\n\t\t价格:¥%-10s,p-price);p=p-next;}printf(\n\t\t请按任意键回到主菜单);return;}}voidSearch_name(Po