还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据结构课程设计说明书 学生姓名:学号学院:专业:题目:成绩指导教师 年月日1设计目的小标题黑体五号字设计一个计算机管理系统完成图书管理基本业务(数据可以存储在一个数据文件中,数据结构、具体数据自定)
2.设计内容和要求具体功能有1每种书的登记内容包括书号、书名、著__、出版单位、现存量和库存量;2对书号建立索引表(线性表)以提高查找效率;3采编入库新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;4)借阅如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;5)归还注销对借阅者的登记,改变该书的现存量3.本设计所采用的数据结构所用数据结构:线性表、查找、排序链表用一组地址任意的存储单元存放线性表中的数据元素以元素数据元素的映象+指针指示后继元素存储位置=结点表示数据元素或数据元素的映象以“结点的序列”表示线性表称作线性链表(单链表)单链表是一种链式存取的结构,为找第i个数据元素必须先找到第i-1个数据元素因此,查找第i个数据元素的基本操作为__指针,比较j和i1__llocsize在内存的动态存储区申请一个长度为size字节的连续空间2callocn,size在内存的动态存储区申请n个长度为size字节的连续空间,函数返回值为分配空间的首地址若此函数未被成功执行,函数返回值为03freep释放由指针p所指向的存储单元,而存储单元的大小是最近一次调用__lloc或calloc函数时所申请的存储空间运用了单链表的插入、删除、排序、修改等一些操作!4.功能模块详细设计
4.1详细设计思想
(1)基本思想
(2)图书信息录入、图书信息的查询、图书信息的排序、图书信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统
(3)程序中的主要函数有void__in//主函数intCreateListRLinkList*L//尾插法建表voidLocateElemLinkList*L//查询intSortLinkList*L//递增有序排序直接插入排序法voidDisplayLinkList*L//输出排序结果ModifyListLinkList*L//修改intListDeleteLinkList*L//删除voidBorrowLinkList*L//借阅voidReturnLinkList*L//归还
4.2核心代码#includestdio.h#includestring.h#includestdlib.h#include__lloc.htypedefstruct{intnum;charname
[20];charauthor
[20];charpress
[20];intcount;charpri__
[10];}ElemType;typedefstructLNode//定义单链表结点类型{ElemTypedata;structLNode*next;}LinkList;voidInitListLinkList*L//初始化线性表{L=LinkList*__llocsizeofLinkList;//创建头结点L-next=NULL;}intCreateListRLinkList*L//尾插法建表{intin;LinkList*s*q*p;p=L;whilep-next!=NULLp=p-next;printf请输入需要录入的图书信息的个数n=;scanf%dn;fori=1;in+1;i++{s=LinkList*__llocsizeofLinkList;printf书号书名__出版社名称存馆数量定价\n;scanf%d%s%s%s%d%ss-data.nums-data.names-data.authors-data.presss-data.counts-data.pri__;q=L-next;ifq==NULL{p-next=s;p=s;p-next=NULL;printf录入成功!\n;continue;}whileq!=NULL{ifstrcmps-data.nameq-data.name==0{printf此图书已存在!;printf请重新输入\n;scanf%d%s%s%s%d%sp-data.nump-data.namep-data.authorp-data.pressp-data.countp-data.pri__;}q=q-next;}p-next=s;p=s;p-next=NULL;printf录入成功!\n;}return0;}voidLocateElemLinkList*L//查询{LinkList*p=L-next;//p指向第一个数据结点intc;intx=0;charname1
[10]author1
[10]press1
[10];printf1按书名查询\n;printf2按__名查询\n;printf3按出版社名称\n;printf4返回\n;printf请选择1--4进行操作:\n;scanf%dc;ifc4||c1{printf您的输入有误!\n;scanf%dc;}switchc{case1:printf请输入图书书名:\n;scanf%sname1;whilep!=NULL{ifstrcmpname1p-data.name!=0//查找图书书名p=p-next;else{printf书号书名__出版社名称存馆数量定价\n;printf%d\t%s\t%s\t%s\t%d\t%sp-data.nump-data.namep-data.authorp-data.pressp-data.countp-data.pri__;printf\n;p=p-next;x++;}}ifp==NULLx==0printf对不起不存在此图书!\n;break;case2:printf请输入图书__:\n;scanf%sauthor1;whilep!=NULL{ifstrcmpauthor1p-data.author!=0//查找图书__p=p-next;else{printf书号书名__出版社名称存馆数量定价\n;printf%d\t%s\t%s\t%s\t%d\t%sp-data.nump-data.namep-data.authorp-data.pressp-data.countp-data.pri__;printf\n;p=p-next;x++;}}ifp==NULLx==0printf对不起不存在此图书!\n;break;case3:printf请输入图书的出版社名称:\n;scanf%spress1;whilep!=NULL{ifstrcmppress1p-data.press!=0//查找图书出版社名称p=p-next;else{printf书号书名__出版社名称存馆数量定价\n;printf%d%s%s%s%d%sp-data.nump-data.namep-data.authorp-data.pressp-data.countp-data.pri__;printf\n;p=p-next;x++;}}ifp==NULLx==0printf对不起!不存在此图书\n;break;case4:break;}}intSortLinkList*L//递增有序排序直接插入排序法{LinkList*p=L-next*q*r;//p指向第一个数据结点ifp!=NULL//若原单链表中有一个或以上的数据结点{r=p-next;//r保存*p结点直接后继结点的指针p-next=NULL;//构造只含一个数据结点的有序表p=r;whilep!=NULL{r=p-next;//r保存*p结点的直接后继结点的指针q=L;whileq-next!=NULLq-next-data.nump-data.numq=q-next;//在有序表中找插入*p的直接前驱结点*q的位置p-next=q-next;//将*p插入到*q之后q-next=p;p=r;//扫描原单链表余下的结点}}return0;}voidDisplayLinkList*L//输出排序结果{LinkList*p=L-next;whilep!=NULL{printf书号书名__出版社名称存馆数量定价\n;printf%d\t%s\t%s\t%s\t%d\t%sp-data.nump-data.namep-data.authorp-data.pressp-data.countp-data.pri__;printf\n;p=p-next;}}intModifyListLinkList*L//修改{LinkList*p=L;charname1
[10];printf请输入要修改的图书的书名:\n;scanf%sname1;whilep!=NULL{ifstrcmpname1p-data.name==0//查找所要修改的书名{printf请输入修改后的信息!\n;printf书号书名__出版社名称存馆数量定价\n;scanf%d%s%s%s%d%sp-data.nump-data.namep-data.authorp-data.pressp-data.countp-data.pri__;printf修改成功!\n;return0;}p=p-next;}printf不存在此图书\n;return0;}intListDeleteLinkList*L//删除{LinkList*p=L-next*q=L;charname1
[10];ifp!=NULL{printf请输入要删除的书名:;scanf%sname1;}whilep-next!=NULLstrcmpp-data.namename1!=0{p=p-next;q=q-next;}ifp-next!=NULL//如果p此时不是最后一个节点,说明此时已经找到书{q-next=p-next;printf删除成功!\n;return0;}ifp-next==NULLstrcmpname1p-data.name!=0//如果p此时为最后一个结点并且没有找到与之相符的书名{printf你输入的书名不存在,请核实后重新输入!\n;}else{q-next=NULL;printf删除成功!\n;}return0;}voidBorrowLinkList*L//借阅{LinkList*p=L-next;charname1
[10];printf请输入要借阅的图书的书名:\n;scanf%sname1;whilep-next!=NULLstrcmpname1p-data.name!=0p=p-next;ifp-next==NULLstrcmpname1p-data.name!=0printf此图书不存在!\n;elseifp-data.count1printf此书已借完!\n;elseifstrcmpname1p-data.name==0{printf借书成功!\n;p-data.count--;}}voidReturnLinkList*L//归还{LinkList*p=L-next;charname1
[10];printf输入归还书的书名:\n;scanf%sname1;whilep-next!=NULLstrcmpname1p-data.name!=0p=p-next;ifp-next==NULLstrcmpname1p-data.name!=0printf错误!此图书不存在!\n;elseifstrcmpname1p-data.name==0{printf该书归还成功!\n;p-data.count++;}}voidmenu{//菜单函数printf----------------------------------------------------------\n;printf欢迎光临图书管理系统!\n;printf-----------------------------------------------------------\n;printf
1.图书信息录入添加功能\n;printf
2.图书信息查询功能\n;printf
3.图书信息排序功能\n;printf
4.图书的修改功能\n;printf
5.图书的删除功能\n;printf
6.图书借阅功能\n;printf
7.图书归还功能\n;printf
0.退出系统\n;printf请选择你需要的操作:\n;}int__in//主函数{ints;LinkList*L;L=LinkList*__llocsizeofLinkList;InitListL;menu;printf请输入编号\n;scanf%ds;whiles!=0{switchs{case1:CreateListRL;break;case2:LocateElemL;break;case3:SortL;DisplayL;break;case4:ModifyListL;break;case5:ListDeleteL;break;case6:BorrowL;break;case7:ReturnL;break;case0:printf谢谢使用\n;break;}scanf%ds;}return0;}(此页附在说明书后,请在验收前填好)班级11060141题目图书馆管理系统学号姓名设计模块成绩1106014106王烨资料收集修改和删除1106014122张艳明需求分析任务书查询和排序1106014130张攀程序调试主函数跟借还图书信息的录入添加图书信息的查询模块图书信息的排序模块图书信息的修改模块图书信息的删除模块图书的借阅模块图书的归还模块退出图书管理系统图书管理系统主程序模块。