您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数据结构课程设计图书管理系统实验报告
数据结构课程设计课程设计实验报告院(系、部):信息工程学院姓名:计141范文虎指导教师签名:2016年6月29日·北京BeijingInstituteofPetrochemicalTechnology目录一.设计题目····································二.设计目的····································三.实验分工····································四.算法思想分析································五.算法描述实现································1.数据结构类型定义2.算法流程图3.程序代码六.运行结果····································七.结论········································一.设计题目图书管理基本业务模拟图书管理一般包括图书采编、图书编目、图书查询及图书流通(借、还书)等基本业务。要求设计一个图书管理信息系统,用计算机模拟实现上述系统功能。(1)书的登记内容包括书号、书名、著作者、现存量和库存量等;学生信息包括借书证号、借阅信息等;(2)以书号建立索引表(线性表)以提高查找效率;(3)主要功能如下:a)采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;b)借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书号和归还期限,改变现存量;c)归还:注销对借阅者的登记,改变该书的现存量。(4)输出形式:能按书号、书名、著作者查找库存的书籍信息能按学生的借书证号显示学生信息和借阅信息书籍入库借书功能实现还书功能实现二.设计目的1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。2.开发环境:VC6.0或者DEVC++.三.实验分工范文虎:总体程序框架构思,算法分析,主程序编写,子函数调用,图书信息记录存储子函数编写,结合,主控制面板编写,哈希函数,结构体定义。算法实现,添加图书信息子函数编写,借阅图书字函数编写,查询子函数设计编写,还书子函数设计编写,最终程序调试,写报告。算法实现,删除图书子函数设计编写,查找图书信息子函数编写,测试整体程序,程序缺陷纠正,最终修改后程序综合。算法实现,查询图书信息子函数设计编写,程序缺陷修改和测试。四.算法思想分析用线性表进行存储,充分利用它易添加、易删除、查找方便的特点,进行程序的编写,符合题目的需求。而线性表是最基本、最简单、也是最常用的一种数据结构。五.算法描述实现1.数据结构类型定义typedefstruct{intyear;intmonth;intday;}data;typedefstruct{charnum[5];//读者编号记录databro;databack;}ReaderNode;typedefstruct{chartitle[15];charwriter[15];intcurrent;inttotal;intkey;//书的编号ReaderNodereader[10];//记录借读该书的读者记录}BookNode;typedefstruct{BookNode*elem;intcount;//记录节点中的总数}HashTable;2.算法流程图建立哈希表删除函数添加函数查找函数添加图书增量子函数借阅书子函数添加书子函数查看已添加书子函数归还书子函数查看已借阅书子函数查找书子函数主函数完成3.程序代码#includestdafx.h#includestdio.h#includestdlib.h#includemalloc.h#includestring.h#includeconio.h#defineSUCCESS1#defineUNSUCCESS0#defineDUPLICATE-1#defineNULL_KEY0//无记录元素inthashsize[]={17,19,23,29};//存储容量intm=0;//表长typedefstruct{intyear;intmonth;intday;}data;typedefstruct{charnum[5];//读者编号记录databro;databack;}ReaderNode;typedefstruct{chartitle[15];charwriter[15];intcurrent;inttotal;intkey;intmore;//书的编号ReaderNodereader[10];//记录借读该书的读者记录}BookNode;typedefstruct{BookNode*elem;intcount;//记录节点中的总数}HashTable;voidInitHashTable(HashTable*H){inti;(*H).count=0;m=hashsize[0];(*H).elem=(BookNode*)malloc(m*sizeof(BookNode));for(i=0;im;i++)(*H).elem[i].key=NULL_KEY;}unsignedHash(intK)//哈希函数,自己设定{returnK%m;}voidcollision(int*p,intd)//开放定址法处理冲突{*p=(*p+d)%m;}intSearchHash(HashTableH,intK,int*p,int*c)//p为数据的地址位置,返回{*p=Hash(K);while(H.elem[*p].key!=NULL_KEY&&(K!=H.elem[*p].key)){(*c)++;if(*cm)collision(p,*c);//下一地址elsebreak;}if(K==H.elem[*p].key)returnSUCCESS;elsereturnUNSUCCESS;}intInsertHash(HashTable*H,BookNodee){intc,p;c=0;if(SearchHash(*H,e.key,&p,&c))returnDUPLICATE;elseif(chashsize[0]/2){(*H).elem[p]=e;++(*H).count;return1;}return0;}intDeleteHash(HashTable*H,BookNodee){intc,p;c=0;if(SearchHash(*H,e.key,&p,&c)){(*H).elem[p].key=NULL_KEY;--(*H).count;return1;}else{printf(不好意思,不存在\n);}return0;}voidAddBook(HashTable*H){BookNodee;inti;system(CLS);printf(\n\n**************************************************\n);printf(\t你能在此目录下添加图书信息);printf(\n**************************************************\n);printf(\n\t请输入书的编号(形如:1***):);scanf(%d,&e.key);getchar();printf(\n\t请输入书名:);gets(e.title);printf(\n\t请输入该书作者:);gets(e.writer);printf(\n\t请输入该书现库存量:);scanf(%d,&e.current);printf(\n\t请输入该书总库存量:);scanf(%d%*c,&e.total);for(i=0;i10;i++)(e.reader[i]).num[0]='\0';//用'\0'来初始化借该书的读者证号,表示一开始时没人借书if(InsertHash(&(*H),e))printf(图书添加成功!\n);(*H).count++;}voidShowBook(HashTableH){inti;system(CLS);printf(\n\n**************************************************\n);printf(\t你能在此目录查看图书信息);printf(\n**************************************************\n);for(i=0;im;i++)if(H.elem[i].key!=NULL_KEY)/*有数据*/{printf(图书编号:%d\n,H.elem[i].key);printf(书名:《%s》\n,H.elem[i].title);printf(作者:%s\n,H.elem[i].writer);printf(图书现存量:%d\n,H.elem[i].current);printf(图书总量:%d\n,H.elem[i].total);printf(***************************************************\n);}}voidBoSearch(HashTable*H)//借阅查询{inte,r,t;system(CLS);printf(\n\n**************************************************\n);printf(\t你能在此目录下按借书证号查找图书信息);printf(\n**************************************************\n);printf(\n\t请输入你的借书证号:);scanf(%d%*c,&e);if(SearchHash(*H,e,&r,&t)){printf(借书证编号:%d\n,(*H).elem[e].key);printf(书名:《%s》\n,(*H).elem[e].title);printf(作者:%s\n,(*H).elem[e].writer);printf(图书现存量:%d\n,(*H).elem[e].current);printf(图书总量:%d\n,(*H).elem[e].total);}elseprintf(您没有借过书!!!);}voidFind(HashTable*H){intx,p,c;system(CLS);printf(\n\n**************************************************\n);printf(\t你能在此目录下按编号查找图书信息);printf(\n**************************************************\n);printf(\n\t请输入你想查找的书的编号:);scanf(%d%*c,&x);if(SearchHash(*H,x,&p,&c)){printf(图书编号:%d\n,(*H).elem[p].key);printf(书名:《%s》\n,(*H).elem[p].title);printf(作者:%s\n,(*H).elem[p].writer);printf(图书现存量:%d\n,(*H).elem[p].current);printf(图书总量:%d\n,(*H).elem[p].total);}elseprintf(对不起,不存在该书!\n);}voidBorrowBook(HashTable*H){inti,k,x,f,t;system(CLS);printf(\n\n****************
本文标题:数据结构课程设计图书管理系统实验报告
链接地址:https://www.777doc.com/doc-6959859 .html