C语言图书管理系统实验报告.docx
课程报告课程名称:专业班级:学生姓名:学号:任课教师:程序设计实践信息类HlO期:20221-2022学年第二学期题目图书信息管理系统主要内容开辟一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)一一输入(2)图书信息浏览功能一一输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):按书名查询按作者名查询按照价钱排序按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理(2)报表打印功能(3)甚至根据自己情况,可以加之学生信息,并扩充为图书借阅系统。(4)含糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或者筛任务要求必山'J'J匕牛里J牛1十口U因IJl一、提交材料应包括:(二、整个设计过程具体要:(1)需求分析要求学目各个模块的调用关系;(2)设计过程要求学生进(函数名、参数、返回值等)(3)实现过程要求学生?完成系统整体测试;(4)总结阶段按照要求3口心寸寸,心,'JKAIKWHJ11J刁NA4L7J八171A八日匕。1)系统源代码(2)课程报告匚对案例系统进行分析,设计出需要完成的功能,完善一步明确各模块调用关系,进一步完善模块函数细节,成良好的编码习惯、完成各个模块并进行测试,最终己成系统设计和实现报告,并进行总结、答辩。成绩评定总分报告内容规范程度程序测试东新元址11基本功能扩展功能音辩情仇自述情况4U廿)答辩情况20分b分b分20分10分IU分30分成绩评定教师:1需求分析这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。通过这些信息使之提供以下功能:(1)图书信息创建功能。其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。(图书信息用文件保存)。(2)图书信息查看功能。用来查看各项图书信息。(3)图书信息查找功能。通过已知信息来查找想要的图书。(4)图书信息的删除。可以删除特定图书。(5)图书信息的修改。可以修改图书的各项信息。(6)图书信息的排序功能。按图书信息对录入的图书进行排序。(7)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能2概要设计数据结构图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。自定义枚举类型fi-type,用来表示图书信息typedefenum_fi_type(news=l,图书信息fi_type;图书信息结构体structfi_infocharname11;书名charwriter21;作者charshuhao10;书号charfenlei10;分类charchuban20;出版社intchubantime;出版时间floatprice;价格fi_typetype;structfiinfo*next;结构体的指针域,用于存放链表的下个结点的地址);模块划分本系统主要有创建新的图书、查找图书、删除图书、修改图书、查看图书和图书排序几个基本功能。2structfi_info*head=NULL,*head_=NULL;将图书信息写成链表,头指针分别为空intBookjum;图书信息的统计数voidmenuO;intReadinfoFromFileO;读入数据函数申明intChUangjian();/创建新的图书信息voidchazhao();查找图书voidshanchu();删除图书voidxiugai();修改图书voidshow();查看图书voidpaixu();图书排序voidquit();退出(3)程序结构3详细设计1主菜单函数的原型:voidmenu()函数的功能:调用菜单,使用各项功能程序:voidmenu()Printf(“nn*<图书信息管理系单>Printf(printf(zztttn);主菜息<1;创建图书信n);printf(,zttt<2;查找图书信息>nzz);printf("ttt<3;删除图书信息>n);printf(,zttt<4;修改图书信息>n);printf(,zttt<5;显示图书信息>nzz);printf(,zttt<6;按出版i时I间排序>n);n);printf(,ttt<0;退出>printf(r);)2.新建文件函数的原型:intReadinfoFromFi1e()函数的功能:建立文件储存数据程序intReadinfoFromFile()读入数据(FILE*fp=NULL;文件指针structfi_info*p=NULL;结构体指针inti;if(fp=fopenC,sun.txtz,zzr+z,)-NULL)(printf(文件不存在!n);fp=fopen(zzsun.txt,w);为输出打开一个文件printf(文件建立成功!n");fscanf(fp,zz%dzz,&Book_num);从文件中分别读入图书信息统计数,以便于下面for循环的条件控制for(i=0;i<Booknum;i+)p=(structfi_info*)malloc(sizeof(structfi-info);/P为动作指针,申请内存空间fscanf(fp,zz%szz,p->name);fscanf(fp,"%s”,p->writer);fscanf(fp,z%s,z,p->shuhao);fscanf(fp,zz%szz,&p->fenlei);fscanf(fp,%s,p->chuban);fscanf(fp,"%c1zz,->chubantime);fscanf(fp,%.2f”,fcp->price);fscanf(fp,zz%dzz,p->type);if(p->type=l)if(head=NULL)head=p;p->next=NULL;)elsep->next=head;head-p;)elseif(head_=NULL)head_-p;p->next=NULL;elsep->next=head_;head_=P;)fclose(fp);return0;J3 .创建图书信息函数的原型:intChuangjianO函数的功能:记录图书的各项信息程序:intChuangjian0创建图书信息structfi_info*p=NULL;p-(structfi_info*)malIoc(sizeof(structfi-info);printf(请输入书名:”);scanf(zz%szz,p->name);printf(请输入作者名:);scanf(z,%szz,p->writer);Printf(请输入书号:);scanf(z,%szz,p->shuhao);Printf(请输入分类:);scanf½p->fenlei);Printf(请输入出版社:);scanfp->chuban);Printf(请输入出版时间:);scanf(z,%dzz,&p->chubantime);Printf(请输入价格:);scanf(z,%fzz,p->price);p->type=news;Book_num+=1;p->next=head;head=p;return0;4 .查找图书信息函数的原型:voidchazhao()函数的功能:通过书名查找、作者查找、组合查找三种方式查找图书信息。程序:voidchazhao()查找图书信息structfi_info*p=NULL;charname10,writer21;intprice;intb=l,i;Printf(按书名查找请按l.n按作者名查找请按2.n按组合查询请按3.n);scanf(zz%dz,&i);if(i=l)Printf(请输入要查找的书名:);scanf(zz%szz,name);for(p=head;p!=NULL;p=p->next)一个链表指针P的遍历,直到结尾P=NULL(if(strcmp(name,p->name)=0)字符串的比较函数,若先后相等则等于0b=0;若存在,则b=0Printf(找到要查找的图书信息:n);Printf(图书名称 Printf ("图书作者 Printf(图书书号 Printf(图书分类Printf ("出版社 Printf (出版时间 Printf (图书价格%snz,p->name);%sn,p->writer);%sn”,p->shuhao);%snzz,p->fenlei);%snyz,p->chuban);%dn7z,p->chubantime)%.2fnzz,p->price);if(head-NULL)Printf(“<查无此书>n");if(b)Printf(<查找的图书信息不存在!>n);若b=l,则不存在)elseif(i=2)(printf(请输入要查找的作者名:);scanf(%s”,writer);for(p=head;p!=NULL;p=p->next)一个链表指针P的遍历,直到结尾P=NULLif(strcmp(writer,p->writer)-0)字符串的比较函数,若先后相等则等于0b=0;若存在,则b=0Printf(找到要查找的图书信息、:n);Printf(图书名称Printf(图书作者Printf(图书书号Printf (图书分类Printf (出版社 Printf ("出版时间Printf ("图书价格%sn, p->n