1、指针1作者指针2出版社指针3分类藏书量借出数1 1021数据库李小云人民邮电021821014刘小洋中国科学013631106操作系统许海平1024741108孙一清华大学51203程序设计035220123600030a)图书主索引文件链头地址长度b)书名索引链头文件 c) 作者索引链头文件 d)出版社索引链头文件 二、设计内容设计一个计算机管理系统完成图书管理基本业务。(1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2)对书号建立索引表(线性表)以提高查找效率;(3)采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;(4)借阅:如果一种书
2、的现存量大于0,则借出一本,登记借阅者的书证号和还期限,改变现存量;(5)归还:注销对借阅者的登记,改变该书的现存量。三、概要设计:确定所需模块及模块间调用关系分析:首先应该定义借书人的结构体信息和图书结构体信息,为了便于查找图书和借书人,分别对其建立单链表。然后定义buy(),SearchByNum (),SearchByName(), borrow(),return()五个函数分别实现图书采编入库的功能,按书号查询的功能,按书名查找的功能,借书功能和还书功能。.根据任务的要求,先定义头文件。然后写出借书人和图书的结构体信息。为了便于查找图书和存储借书人的信息,分别对借书人和图书采用链表的形
3、式存放。um,SearchNum)=0) um,SearchNum)!=0)图书采编入库 void Buy(ook &boo, char BuyNum) if(BinarySearch(boo,BuyNum) otNum+; owNum+; n); printf(已更改书库中该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。n,boomid.num,boomid.name,boomid.auth,boomid.pub,boomid.TotNum,boomid.NowNum); if(!BinarySearch(boo,BuyNum)
4、 int i; for(i=total;imid&total;i-) um,BuyNum);该书购入的数量是: scanf( %d,&booi.NowNum); booi.TotNum=booi.NowNum;该书的名字是: %sbooi.name);该书的作者是:booi.auth);该书的出版社是:booi.pub);ext=NULL; total+;um,booi.name,booi.auth,booi.pub,booi.TotNum,booi.NowNum);入库成功.n 3、查找图书的设计方案 为了更便于查找,这里设计了两种查找方案,按书号查找和按书名查找。在按书号查找中使用了折半查
5、找法的查找函数。按书号查找方案中都显示图书的所有状态,包括是在库还是借出,如果借出,并显示何人借走。(1).按书号查找 void SearchByNum(ook &boo,char SeaNum) ext; if(BinarySearch(boo,SeaNum)=false)printf(对不起,未找到您想查找的书。um,boomid.name,boomid.auth,boomid.pub,boomid.NowNum,boomid.TotNum);if(boomid.next!=NULL) printf( 已借该书的 n 图书证号 n while(p) %14sn,p-CardNum); p=
6、p-next; %s 书名查找 void SearchByName(ook &boo) ame)=0)um,booi.name,booi.auth,booi.pub,booi.TotNum,booi.NowNum); owNum0) owNum-;ext=NULL) ext=m;ext; while(m-next) Num,CaNum)ext; while(p-next)p=p-n break; Num,CaNum); ext=p; strcpy(p-BNum,BorrowNum);输入归还日期:p-RetDate); p-next=NULL; Retotal+; else printf(借阅
7、失败.该书现在库存为0.n5、归还图书的设计方案 定义了一个return函数,当进行还书时,在借阅者表里查找借阅者,注销对借阅者的登记。在图书链表中改变该书的现存量,把现存量增加。void Return(ook &boo,lend &Lin,char ReturnNum,char BorrowerNum) Bor *p,*q; LinkList *m,*n; int flag=0; if(BinarySearch(boo,ReturnNum) ext;strcmp(m-CardNum,BorrowerNum) owNum+; ext=m- Num,BorrowerNum) ext;strcmp
8、(p-BNum,ReturnNum) ext=p- flag=1; else n for(int k=0;kRetotal;k+) Link.next) int j; for(j=k;j0)otNum+;编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。,boomid.num,boomid.name,boomid.auth,boomid.pub,boomid.TotNum,boomid.NowNum); int i=0,j=0; while(booi.numj!=0) i+; um,BuyNum);scanf(printf(void Borro
9、w(ook boo,lend &Lin,char BorrowNum,char CaNum) owNum输入借书日期:BorDate); void Return(ook boo,lend &nif(BinarySearch(boo,ReturnNum) ext; ext; if(boomid.next!ame)=0)um,booi.name,booi.auth,booi.pub,booi.TotNum,booi.NowNum); umj=0;-欢 迎 进 入 图 书 管 理 系 统!-nnint choice=5; int SearchCho=5,ViewCho=10;while(choice!=0) 请选择:nnttt1.新 图 书 采 编 入 库 nnn ttt2.按 书 号 查 找 图 书 nnn ttt3.按 书 名 查 找 图 书 nnnttt4.借 阅 图 书 nnn ttt5.归 还 图 书 nnn ttt0.退 出 系 统 nnn语言程序设计教程. 2朱战立 等.数据结构(C语言版).
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1