1、e)AT LinearLst、DT Stri 数据对象:Dai|aharterSet,i=1,2,n;n0 数据关系:R=ai-1,aai1,aiD,=2,,n; 基本操作:(1)trAsign(S,cr)(2)StrInst(S,ps,T)(3)StrDlee(S,s,n)(4)SrCop(S,T)(5)Smpty()(6)Stromar(S,T)(7)trLengt(S)(8)StrCer(S)(9)trCt(S,T)(10)SuString(Sub,po,len)(11)StrInex(,pos,T)(12)rRelc(S,T,V)(13)trDestry(S)DT ting系统中的子程
2、序和功能说明:Inito(Bo &o);初始化图书信息nit(ldLin);初始化借阅者信息BinarySerch(Book boo,chaSachNum);二分法查找比较书号Buy(Book boo, cha uyum);新书采编入库系统Delet(Book &b,ca eeteNum);清除图书信息系统Borw(Bok boo,l &i,cha Borroum,cha aNum);借阅图书处理系统Reun(Bok &bo,d Li,cha ReturnNum,cha BrrowerNu);归还图书系统SearhByNm(ookoo,ch Saum);按书号查找系统arhByame(ook
3、boo);按书名查找系统SerhByAut(Boo o);按作者查询系统Menu();主菜单显示系统earch();查询系统子菜单ain();主函数系统程序功能结构图三 详细设计功能实现过程olBnrSarh(Book oo,harSeahNum) 二分法查找比较书号 while(low=hih) 计算中间点;f(查找到书号相同的) 返回值true; if(查找书号不相同) 用二分法进一步进行查找; (库中没有所要查找的书) 返回值fls; voidy(Bok &bo, haByNu)/采编入库*/ if(书库中有此书) 总库存加1; 现库存加;if(书库中无此书) for(i=tal;imi
4、tota;i)/*将新采购的书插在适合位置,保持有序*/ 空出插入位置; 输入新购书籍的相关信息:书号、书名、作者、出版社;UL;oal+;/总量加1/vid Dlete(Book &boo,ca DleeNm)*清除图书信息/ f(书库中没有此书)输出“无此书”;if(书库中有此书) scpy(连续两本书的相关信息);现存量减1;库存量减1;els 输出“此书已有借阅者,无法删除!”;o orow(Book&o,len &Li,ca BorrwNm,caaNum)/*借阅图书信息*/ f(没有找到此书) 输出“书库中无此书! if(书库中有此书) 借出一本书后,该书的现存量减1;并在借阅记录
5、链表中插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录. els 输出“该书现存量为0”;vd eturn(Booko,lnd Li,hrturNm,c Borwerm)/归还图书信息/ if(书库中无此书)输出“无此书记录”; if(书库中有此书) 查找图书文件,修改图书的现存量;查找记录借阅信息的单链表,填入还书日期,删除借阅信息;查找记录读者信息的单链表,删除证号信息。od SearchN(ok bo,chr SaNum)/*按书号查找* i(书库中无此书信息)用二分法查找 输出“无此书”; el
6、e*书库中有此书信息/ 输出与此书有关的相关信息;vo ahByNm(Bok &boo)按书名查找输入想要查找书的书名;用顺序查找法查找;f(查找到需要查找的书) 输出与此书相关的信息;建议画出主要模块流程图。四设计与调试分析1、这个程序设计中要注意定义两个结构体:图书结构体、借阅人结构体。其中定义数组存放图书信息,申请链表存放借阅记录和读者信息记录。2、程序中运用到大多的插入与删除,所以申请链表比较方便插入与删除。但应前期需求分析的准备工作不充分,导致程序运行功能不全,比如查找时关于此书的信息不能全部显示出来,并且添加删除时库存的变化不能直接显示出来。程序的健壮性不能达到预期的结果,这些都是
7、需要改进的.3、在程序中的函数调用是个非常重要的部分,也是经常需要用到的,在编写程序过程中,因为函数调用不准确,使得循环进不去,后来改变函数的调用关系,才达到了预期结果。4、程序中还定义了全局变量,之前没定义全局变量,在下面的编写过程,同样性质的地方需要重复定义,比较麻烦,定义全局变量使得程序比较简明一点。五 用户手册【 使用说明 】1、进入图书馆管理系统主页面2、若有新书要新编入库,选择,进入新书入库系统,输入入库书的书号,若书库中无该书,则设立新书目,输入新书信息。若书库中已有该书,则输入新信息覆盖修改原书库中该书号对应书的信息。3、若有书籍信息需要删除,选择2,进入清空库存系统,输入想要
8、删除书的书号,则此书信息就已删除.4、若要借阅图书,选择,进入图书借阅系统,输入需要借阅书的书号以及读者证号,并输入还书日期,则借书成功。、若要归还图书,选择,进入图书归还系统,输入需要归还图书的书号以及读者证号,则还书成功。、若要查找信息,选择,进入查找信息子系统。若要按书号查找,则选择子系统中的1,输入需要查找的书的书号,若按书名查找,则选择子系统中的2,输入需要查找的书名,若按作者查找,输入需要查找书的作者进行查找,若查找结束,则按0退出.7、若系统使用结束,按0退出.【程序中的头文件】nlude stio.#inclde ncludestdibh#efi MASZ 100 #dein
9、LIST_I_IZ100int Reta;/定义的全局变量*/int ta;六测试成果1、采编入库2、清空库存、图书借阅4、图书归还5、图书查找七 附录(源程序清单)#ncud stdio。h#includ strg。cud stdlib。dfne MAXSIE0 dfine IST_INIT_SIZE0typedef struc oo arBNum20; char Rtate8; strtBr*x;Bor;typeef struct Linkok Bor*next; char CNum20;int To;lenLIS_NIT_SIZE;tpedefsuctLNodhar ardNu0;str
10、ctNodenxt;inkList;typedef struct bok h m2; chr nae20; har au2;car u0;it otNum;n Nowu; LinkLst *net;BookMAXSIZE;int Rtt;int tota;vid InitBo(Bo &b) for(iti=0;iXSZE;i+) bo.owum=0; boi.ToN=0; booi.next=ULL;odntRe(lnd Ln)for(it i=0;LITINISIZ;ini。nex=NLL;itm0;bool Binaryearc(Book o,char erchNum) t low=0,high=total;int ound=0;while(lw=igh) mi(low+high)/2;f(strcm(boium,SeahNum)=0) ond=1; retntre; if(stcmp(boomid。num,SeacNm)!=0) highd;else low=mid1; if(fond=0) turn fale;viB(B
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1