图书管理信息系统的I设计与实现_第1页
图书管理信息系统的I设计与实现_第2页
图书管理信息系统的I设计与实现_第3页
图书管理信息系统的I设计与实现_第4页
图书管理信息系统的I设计与实现_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据构造

课程设计汇报

设计题目:图书管理信息系统的I设计与实现

专业通信工程(物联网)

班级________________________

学生________________________

学号________________________

指导教师_______________________

起止时间2012-8-20至2012-9-11

湖北师范学院

2023年下学期

一、设计题目

十七、图书管理信息系统的设计与实现

【问题描述】图书信息所示的就是一种数据库文献。图书管理一般包括:图书采编、

图书编目、图书查询及图书流通(借、还书)等。规定设计一种图书管理信息系统,

用计算机实现上述系统功能。

【基本规定】

建立一种图书信息数据库文献,输入若干种书的记录,建立一种以书号为关键字口勺

索引文献;在主数据库文献中建立以书名、作者及出版社作为次关键字的索引以及

对应的索引链头文献,如身所示;

建立有关书号、书名、作者及出版社日勺图书查询;

(1)实现图书日勺借还子系统,包括建立读者文献、借还文献、读者管理及图书借

还等有关日勺处理。

记录号书号书名指针1作者指针2出版社指针3藏书借出

量数

11021数据库0李小云0人民邮002180

21014数据构0刘小洋0中国科001360

造学

31106操作系0许海平0人民邮102470

统电

41108数据构2孙一0清华大001350

造学

51203程序设0李小云1中国科203560

计学

62201数据库1许海平3清华大402160

72360数据构4李小云5人民邮301350

造电

80030程序设5刘小洋2清华大603570

计学

a)图书主索弓文献

书名链头地址长度作者链头地址长度出版社链头地址长度

数据库62李小云73人民邮电73

数据构造73刘小洋82中国科学52

操作系统31许海平62清华大学83

程序设计82孙一41

b)书名索引链头文献c)作者索引链头文献d)出版社索引链头文献

二、设计内容

设计一种计算机管理系统完毕图书管理基本业务。

(1)每种书日勺登记内容包括书号、书名、著作者、现存量和库存量;

(2)对书号建立索引表(线性表)以提高查找效率;

(3)采编入库:新购一种书,确定书号后,登记到图书帐目表中,假如表中已经

有,

则只将库存量增长;

(4)借阅:假如一种书H勺现存量不小于0,则借出一本,登记借阅者日勺书证号和

期限,变化现存量;

(5)偿还:注销对借阅者的登记,变化该书的现存量。

三、概要设计:确定所需模块及模块间调用关系

分析:首先应当定义借书人的构造体信息和图书构造体信息,为了便于查找图

书和借书人,分别对其建立单链表。然后定义buy0,SearchByNum

0,SearchByName(),borrow(),return()五个函数分别实现图书采编入库日勺功能,

按书号查询口勺功能,按书名查找欧I功能,借书功能和还书功能。

,根据任务口勺规定,先定义头文献。然后写出借书人和图书的构造体信息。为了便

于查找图书和存储借书人口勺信息,分别对借书人夭口图书采用链表的形式寄存。

〃头文献的申明

#include<stdio.h>

ttinclude<string.h>

^include<stdlib.h>

ttdefineMAXSIZE100〃最大值定义为100

ttdefineLIST_INIT_SIZE100〃图书证使用者最大值定义为100

〃借书人的构造体

typedefstructBoro〃借书记录

(

charBNum[20];〃所借书的|书号

charBorDate[8];〃借书日期

charRetDate[8];〃偿还日期

structBoro*next;

}Bor;

typedefstructLinkBook

(

Bor*next;〃该图书证日勺借书记录

charCNum[20];〃图书证号

intTotal;〃借书%I数量

}lend[LIST_INIT_SIZE];//借书人数组

〃图书H勺构造体信息

typedefstructLNode

charCardNum[20];〃图书证号

structLNode*next;

}LinkList;〃借书人

typedefstructbook

{〃每种图书需要登记H勺内容包括书号、书名、作者、出版社、总库存量和现库量。

charnum[20];〃书号

charname[20];〃书名

charauth[20];〃作者

charpub[20];〃出版社

intTotNum;〃总库存

intNowNum;〃现库存

LinkList*next;〃借了该书的I人}ook;

1、新图书采编入库的设计方案

采编入库:新购入一种书,假如该书在图书账目中已经存在,则将其库存量增长(包

括总库存量和现库存量),假如该书不存在,则在图书账目中增长一种书,总库存

量和现库存量均为1。为了便于查找,此外定义了一种专门用于查找的I函数

BinarySearch(),使用欧J是折半查找法。

(1)折半查找法查找书号

intmid=O;〃外部函数mid,用来返回查找到日勺位置

intBinarySearch(ookboo,charSearchNum[])〃二分法查找比较书号

(由于函数不能有两个返回值,因此设置一种外部变量mid,用来返回查找到的位

intlow=0,high=total-l;

intfound=0;

while(low<=high)

(

mid=(low+high)/2;//中间点

if(strcmp(boo[mid],num,SearchNum)==0)〃书号相似

found=l;

returntrue;

}〃查找成功

if(strcmp(boo[mid].num,SearchNum)!=0)〃书号不一样

high=mid-l;

elselow=mid+l;

}

if(found==0)

returnfalse;〃查找失败

)

2.新图书采编入库

voidBuy(ook&boo,charBuyNum[])

if(BinarySearch(boo.BuyNum))〃假如书库中有此书

boo[mid].TotNum++;〃总库存加1

boo[mid].NowNum++;〃现库存加1

printf("入库成功.\n〃);

printf(〃已更改书库中该书的信息。编号%s的书%s作者是%s,出版社是%s,

目前的总库存是%d,现库存是%do\n〃,

boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid],pub,boo[mid].TotNum,b

oo[mid].NowNum);

}

if(!BinarySearch(boo,BuyNum))

inti;

for(i=total;i>mid&&total;i—)〃插在适合位置保持有序

boo[i]=boo[i-l];〃空出插入位置

printf(〃该书在书库中不存在。设置新书目,请补全书的详细信息。\n〃);

strcpy(boo[i].num,BuyNum);

printf(〃该书购入口勺数量是:〃);

scanf(〃%d/z,&boo[i].NowNum);

boo[i].TotNum=boo[i].NowNum;

printf(〃该书的名字是:〃);

scanf(〃%s〃,&boo[i].name);

printf(〃该书的作者是:〃);

scanf(,z%s,z,&boo[i].auth);

printf(〃该书的出版社是:〃);

scanfC%s”,&boo[i].pub);〃补全信息

boo[i].next=NULL;

total++;〃总量+1

printf(〃已增长该书H勺信息。编号%s的书%s作者是%s,出版社是%s,目前

出J总库存是%d,现库存是%do\n〃,

boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowN

um);

printf(〃入库成功.\n〃);

}

3、查找图书的设计方案

为了更便于查找,这里设计了两种查找方案,按书号查找和按书名查找。在按书号

查找中使用了折半查找法日勺查找函数。按书号查找方案中都显示图书的所有状态,

包括是在库还是借出,假如借出,并显示何人借走。

(1).按书号查找

voidSearchByNum(ook&boo,charSeaNum[])

{//BYNUM根据书号查找

LinkList*p;

p=boo[mid],next;

if(BinarySearch(boo,SeaNum)==false)printf(〃对不起,未找到您想查找的I书。

\n〃);〃二分查找没找到

else〃找到了的话

printf(〃|书号|书名|作者|出版社|现库存|

总库存I\n〃);

printfC--------------------------------------------------------------------------

------------------\n〃);

printf(/z|%10s|%10s|%10s|%10s|%10d|%10d|\n〃,

boo[mid].num,boo[mid].name,boo[mid],auth,boo[mid],pub,boo[mid].NowNum,b

oo[mid].TotNum);

if(boo[mid],next!=NULL)

{printfC|已借该书的I\n〃);

printf(z/|图书证号I\n〃);

whilc(p)

{printf(z,|%14s|\n,z,p->CardNum);

p=p->next;

)

)

}

while(p)

printf(z/%szz,p->CardNum);〃在按书号查找的J函数里也显示借了这本书

的借阅者口勺证号

p=p->next;

}

printfC\n〃);

}〃显示查找出J书籍H勺信息

)

(2).按书名查找

voidSearchByName(ook&boo)

{//BYNAME根据书名查找

charSeaName[20];

printf(〃输入想查找日勺书的书名:\n〃);

scanf(〃%s,z,&SeaName);

printf(〃找到符合该书名叫书的详细信息如下:\n〃);

for(inti=0;Ktotal;i++)

if(strcmp(SeaName,boo[i].name)=0)〃假如书名同样

printf("书号:%s\n书名:%s\n%s\n出版社:%s\n总库存量:%d\n现

库存

量:%d\n\n〃,boo[i].num.boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum

,boo

[i].NowNum);

}〃显示符合信息的所有书籍的信息

}

4、借阅图书H勺设计方案

假如一种书的现库存量不小于零,则借出一本书,将现库存量减1,

并登记借阅者的图书证号和偿还期限。

voidBorrow(ook&boo,lend&Lin,charBorrowNum[],charCaNum[])

Bor*p,*q;

LinkList

if(!BinarySearch(boo,BorrowNum)|total==0)〃假如没有找到此书

printf(〃书库里没这书,\n〃);〃假如有这书

if(BinarySearch(boo,BorrowNum))〃书库里有

if(boo[mid].NowNum>0)〃看现库存与否不小于0

boo[mid].NowNum一;〃借出一本,少1

if(boo[mid].next==NULL)〃若该书信息下显示该种书还没被人借过

m=(LinkListmalloc(sizeof(LNode));〃分派

boo[mid],next二m;〃该图书信息中H勺链表的第一种结点

strcpy(m->CardNum,CaNum);

m->next=NULL;〃后一种结点为空

}

else〃假如已经有人在借这书了

m二boo[mid].next;

while(m->next)〃遍历到最终一种结点

m=m->next;

n=(LinkList*)malloc(sizeof(LNode));//分派空间,增长1个结点

m->next=n;

strcpy(n->CardNum.CaNum);〃记录证号

n->next=NULL;

inti=0;

for(i=0;i<Retotal;i++)

if(!strcmp(Lin[i]um,CaNum))〃假如已经有该图书证H勺信息

p=Lin[i].next;

while(p->next)p=p->next;〃遍历到最终一种结点

q=(Bor*)malloc(sizeof(Boro));〃分派空间

p->next=q;

strcpy(q->BNum.BorrowNum);〃记录书号

printf(〃输入偿还日期:〃);

scanf(〃%s〃,&q->RetDate);

q->next=NULL;

printf("借阅成功.\n");

break;〃找到证了就跳出循环

}

)

if(i=Rototal)〃假如没有这张证日勺信息

strcpy(Lin[i]um,CaNum);//记录证号

p=(Bor*)malloc(sizeof(Boro));〃分派空间

Lin[i].next=p;

strcpy(p->BNum,BorrowNum);

printf(〃输入偿还日期:〃);

scanf(z/%s,z,&p->RetDate);

p->next=NULL;

Retotal++;〃借阅证号信息总数加1

printf(〃借阅成功.\n〃);

elseprintf(〃借阅失败.该书目前库存为0.\n");

}

}

5、偿还图书的设计方案

定义了一种return函数,当进行还书时,在借阅者表里查找借阅者,注销对借阅者

的登记。在图书链表中变化该书的现存量,把现存量增长。

voidReturn(ook&boo,lend&Lin,charReturnNum[],charBorrowerNum[])

{Bor*p,*q;

LinkList*m,*n;

intflag=0;〃设置一种参数

if(!BinarySearch(boo,ReturnNum)||!total)//没书

printf(〃书库中无此书,\n〃);

if(BinarySearch(boo,ReturnNum))〃有书

m=boo[mid].next;

if(!strcmp(m->CardNum,BorrowerNum))〃假如是第一种借的J人还

boo[mid].NowNum++;〃现库存加1

boo[mid].next=m->next;〃删除结点

free(m);〃释放该结点口勺空间空间

)

else

while(m->next)〃查找偿还者的借阅者结点

if(!strcmp(m->next->CardNum,BorrowerNum))//假如找到

n=m->next;〃n为偿还者的借阅结点

m->next=n->next;〃m指向偿还者的借阅结点时下一结点

free(n);〃释放空间

boo[mid].NowNum++;〃现库存加1

break;

}

m=m->next;

}

)

〃在借阅者表里查找借阅者信息

for(inti=0;i<Retotal;i++)

if(!strcmp(Lin[i]um,BorrowerNum))//假如找到借阅者

p=Lin[i].next;

if(!strcmp(p->BNum,ReturnNum))〃假如是偿还W、J是借H勺第一本书

Lin[i].next=p->next;〃指向下一借书结点

free(p);〃释放结点空间

printf(〃成功偿还该书.\n〃);

flag=l;

break;

else〃找不到

while(p->next)〃找到偿还书於J借书结点

if(!strcmp(p->next->BNum,ReturnNum))〃假如找到

q=p->next;〃q为偿还书肚I借书结点

p->next=q->ncxt;〃p指向下一借书结点

free(q);〃释放空间

printf(〃成功偿还该书.\n〃);

flag=l;

break;

}

p=p->next;

}

)

)

}

for(intk=0;k<Retotal;k++)

if(!Lin[k].next)

intj;

for(j=k;j<Retotal;j++)

Lin[j]=Lin[j+l];〃其后都往前移一位,覆盖掉目前信息

strcpy(Lin[j]um,〃〃);〃删除图书证号

Retotal—;〃图书证数减1

)〃删除目前状态下没借书的图书证出J信息,节省空间

if(flag==0)printf(〃无该证信息.\n〃);

)

6、定义主函数,在主函数中设计出主界面。便于顾客进入后可以根据提醒以便操作,并且在主

函数中定义出要实现H勺基本功能,在分别此外去实现。分别在主函数中定义有:Buy(Bo,BNum);

SearchByNum(Bo,BNum);SearchByName(Bo);Borrow(Bo,Lin,BNum,CNum);Return(Bo,Lin

,BNum,CNum)五个函数。

四、算法描述:给出各模块流程图及代码

图书管理系统的总体构造如

/图书管理,

系统

\)

/图书采编)‘按书号查'/按书名查]/借阅图书'&书偿还'

入库找找

kJ\/\\\)

完整代码如下:

“wj.h”

〃借书人H勺构造体

typedefstructBoro//借书记录

(

charBNum[20];〃所借书的书号

charBorDate[8];〃借书日期

charRetDate[8];〃偿还日期

structBoro*next;

}Bor;

typedefstructLinkBook

(

Bor*next;〃该图书证的借书记录

charCNum[20];〃图书证号

intTotal;〃借书的I数量

}lend[LIST」NIT_SIZE];//借书人数组

〃图书口勺构造体信息

typedefstructLNode

(

charCardNum[20];〃图书证号

structLNode*next;

}LinkList;〃借书人

typedefstructbook

{〃每种图书需要登记H勺内容包括书号、书名、作者、出版社、总库存量和现库量。

charnum[20];〃书号

charname[20];〃书名

charauth[20];〃作者

charpub[20];〃出版社

intTotNum;〃总库存

intNowNum;〃现库存

LinkList*next;//借了该书的|人

}ook;

intRetotal;〃读者数量

inttotal;〃定义外部变量.书的种类数

〃构造体初始化

voidTnitBo(ookboot])〃初始化图书信息

for(inti=O;i<MAXSIZE;i++)

boo[i].NowNum=0;

boo[i].TotNum=0;

boo[i].next=NULL;

)

voidInitRe(lend&Lin)〃初始化借阅者信息

for(inti=0;i<LTST_TNIT_STZE;i++)

Lin[i].next=NULL;

)

intmid=O;〃外部函数mid,用来返回查找到的位置

intBinarySearch(ookboo[],charSearchNum[])〃二分法查找比较书号

{〃由于函数不能有两个返回值,因此设置一种外部变量mid,用来返回查找位置

intlow=0,high=totalT;

intfound=0;

while(low<=high)

mid=(low+high)/2;〃中间点

if(strcmp(boo[mid].num,SearchNum)-0)〃书号相似

found=l;

return1;

}〃查找成功

if(strcmp(boo[mid].num,SearchNum))0)〃书号不一样

high=midT;

elselow=mid+1;

if(found==0)

return0;〃查找失败

voidBuy(ookboo[],charBuyNum[])

{/*采编入库:新购入一种书,假如该书在图书账目中已经存在,则将其库存量增

长(包括总库存量和现库存量),假如该书不存在,则在图书账目中增长一种书,

总库存量和现库存量均为1。*/

if(BinarySearch(boo.BuyNum))〃假如书库中有此书

booTmidLTotNum++;〃总库存加1

boo[mid].NowNum++;〃现库存加1

printf(〃入库成功.\n〃);

printf(〃已更改书库中该书的信息。编号%s的书%s作者是%s,出版社是%s,

目前的I总库存是%d,现库存是%do

\n〃,boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotN

uni,boo[mid].NowNum);

)

if(!BinarySearch(boo,BuyNum))

(

inti=0,j=0;

while(boo[i].num[j]!=0)

(

i++;

)

//for(i=total;i>mid&&total;i一)〃插在适合位置保持有序

//boo[i]=boo[i-l];〃空出插入位置

printf(〃该书在书库中不存在。\n设置新书目,请补全书的详细信息。\n〃);

strcpy(boo[i].num,BuyNum);

printf(〃该书购入的数量是:〃);

scanf(z,%d,z,&boo[i].NowNum);

boo[i].TotNum=boo[i].NowNum;

printf(〃该书的名字是:〃);

scanf(",%s,z,&boo[i].name);

printf(〃该书的J作者是:〃);

scanf(,z%s,z,&boo[i].auth);

printf(〃该书的出版社是:〃);

scanf(z,%s,,,&boo[i].pub);〃补全信息

boo[i].next=NULL;

total++;//总量+1

printf(〃已增长该书日勺信息。编号%s的书%s作者是%s,出版社是%s,目前

的总库存是%d,现库存是%do

\n〃,boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].

NowNum);

printf(〃入库成功.\n〃);

}

)

voidBorrow(ookboo[],lend&Lin,charBorrowNum[],charCaNum[])

{〃借阅:假如一种书的现库存量不小于零,则借出一本书,将现库存量减1,并登

记借阅者的图书证号和偿还期限。

Bor*p,*q;

LinkList*m,*n;〃索引表中图书信息和借书人信息

if(!BinarySearch(boo,BorrowNum)||total==0)//假如没有找到此书

printf(〃书库里没这书,\n〃);〃假如有这书

if(BinarySearch(boo,BorrowNum))〃书库里有

if(boo[mid].NowNum>0)〃看现库存与否不小于0

boo[mid].NowNum--;〃借出一本,少1

if(boo[mid].next=NULL)〃若该书信息下显示该种书还没被人借过

(

m=(LinkList*)malloc(sizeof(LNode));〃分派

boo[mid],next二m;〃该图书信息中欧|链表的第一种结点

strcpy(m->CardNum,CaNum);

m->next=NULL;〃后一种结点为空

}

else〃假如已经有人在借这书了

m=boo[mid],next;

while(m->next)〃遍历到最终一种结点

m=m->next;

n=(LinkList*)malloc(sizeof(LNode));//分派空间,增长1个结点

m->next=n;

strcpy(n->CardNum.CaNum);〃记录证号

n->next=NULL;

)

inti=0;〃定义整型H勺i记录下读者的数量

for(i=0;i<Retotal;i十十)

if(!strcmp(Lin[i]um,CaNum))〃假如己经有该图书证日勺信息

p=Lin[i].next;//用p记下该借书证在索引表中位置

\"山"68->血*1:注印->血*1;〃遍历到最终一种结点

q二(Bor*)malloc(sizeof(Boro));〃分派空间,用来记录索引表中该借书证

H勺信息

p->next=q;

strcpy(q->BNum.BorrowNum);〃记录书号

printf(〃输入借书日期借);

scanf(〃%s〃,&q->BorDate);

printf(〃输入偿还日期:〃);

scanf(〃%s〃,&q->RetDate);

q->next=NULL;

printf(〃借阅成功.\n〃);

break;〃找到证了就跳出循环

)

}

if(i=Retotal)〃假如没有这张证的信息

(

strcpy(Lin[i]um,CaNum);//记录证号

p=(Bor*)malloc(sizeof(Boro));//分派空间

Lin[i].next=p;

strcpy(p->BNum,BorrowNum);

printf(〃输入借书日期:〃);

scanfC%s,z,&p->BorDate);

printf(〃输入偿还日期:〃);

scanf(〃%s”,&p->RetDate);

p->next=NULL;

Retotal++;〃借阅证号信息总数加1

printf(〃借阅成功.\n〃);

)

)

elseprintf(〃借阅失败.该书目前库存为0.\n");

)

voidReturn(ookboo[],lend&Lin,charReturnNum[],charBorrowerNum[])

{//偿还:注销对借阅者H勺登记,变化该书的现存量。

Bor*p,*q;

LinkList*m,*n;

intflag=0;〃设置一种参数

if(!BinarySearch(boo,ReturnNum)||!total)〃没书

printf(〃书库中无此书八n〃);

if(BinarySearch(boo,ReturnNum))〃有书

(

m=boo[mid].next;

if(!strcmp(m->CardNum,BorrowerNum))〃假如是第一种借的人还口勺

boo[mid].NowNum++;〃现库存加1

boo[mid].next=m->next;〃删除结点

free(m);〃释放该结点的空间空间

}

else

while(m->next)〃查找偿还者tf、J借阅者结点

if(!strcmp(m->next->CardNum,BorrowerNum))//假如找到

n=m->next;//n为偿还者的借阅结点

m->next=n->next;〃ni指向偿还者W、J借阅结点出J下一结点

free(n);〃释放空间

boo[mid].NowNum++;〃现库存加1

break;

i

m=m->next;

)

)

)

〃在借阅者表里查找借阅者信息

for(inti=0;i<Retotal;i++)

if(!strcmp(Lin[i]um.BorrowerNum))〃假如找到借阅者信息

(

p=Lin[i].next;

if(!strcmp(p->BNum,ReturnNum))〃假如偿还的J是借日勺第一本书

(

Lin[i].next=p->next;〃指向下一借书结点

free(p);〃释放结点空间

printf(〃成功偿还该书.\n〃);

flag=l;

break;

)

else〃找不到

whi1e(p->next)〃找到偿还书欢J借书结点

if(!strcmp(p->next->BNum,ReturnNum))〃假如找到

(

q=p->next;〃口为偿还书日勺借书结点

p->next=q->next;〃p指向下一借书结点

free(q);〃释放空间

printf(〃成功偿还该书.\n〃);

flag=l;

break;

}

p=p->next;

}

)

)

)

for(intk=0;k<Retotal;k++)

if(!Lin[k].next)

(

intj;

for(j=k;j<Retotal;j++)

Lin[j]=Lin[j+l];〃其后都往前移一位,覆盖掉目前信息

strcpy(Lin[j]um,〃〃);〃删除图书证号

Retotal--;〃图书证数减1

}〃删除目前状态下没借书的图书证的信息,节省空间

if(flag==0)printf(〃无该证信息.\n〃);

}

//查找:实现按两种查询条件之一查找:按书号查找、

〃按书名查找。

voidSearchByNum(ookboo[],charSeaNum[])

{//BYNUM根据书号查找

LinkList*p;

p=boo[mid],next;

if(BinarySearch(boo,SeaNum)==false)printf(〃对不起,未找到您想查找日勺书。

\n〃);〃二分查找没找到

else〃找到了的话

(

(

printf(〃|书号|书名|作者|出版社|现库存|

总库存I\n〃);

printfC-----------------------------------------------------------------

----------------\n〃);

printfC|%10s|%10s|%10s|%10s|%10d|%10d|

\n〃,boo[mid].num,boo[mid],name,boo[mid]・auth,boo[mid].pub,boo[mid].NowN

um,boo[mid].TotNum);

if(boo[mid],next!=NULL)

{printfCI已借该书的|\n〃);

printfCI图书证号l\n〃);

while(p)

printf(〃|%14s|\n〃,p->CardNum);

p=p->next;

}

)

while(p)

printf(〃%sz,,p->CardNum);〃在按书号查找欧J函数里也显示借了这本书

H勺借阅者H勺证号

p=p->next;

}

printfC\n〃);

}〃显示查找的书籍口勺信息

)

voidSearchByName(ookboo[])

{//BYNAME根据书名查找

charSeaName[20];

printf(〃输入想查找的书的书名:\n〃);

scanf(〃%s”,&SeaName);

printf(〃找到符合该书名的书的详细信息如下:\n〃);

for(inti=0;i<total;i++)

if(strcmp(SeaName,boo[i].name)==0)〃假如书名同样

printf("书号:%s\n书名:%s\n%s\n出版社:%s\n总库存量:%d\n现库存

量:%d\n\nz,,boo[i].num.boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum

,boo[i].NowNum);

}〃显示符合信息的所有书籍欧I信息

)

)

"zhs.cpp”

ttinclude<stdio.h>

ttinclude<string.h>

ttinclude<stdlib.h>

#defineMAXSIZE100〃最大值定义为100

#defineLTST_TNTT_STZE100〃图书证使用者最大值定义为100

#includez,wj.h〃

voidmain()

(

ookBo[MAXSIZE];

lendLin;

inti,j;

charBNum[20];

charCNum[20];

for(i=0;i<MAXSIZE;i++)

(

for(j=0;j<20;J++)

Bo[i].num[j]=0;

)

printfC-----------------------欢迎进入图书管理系

统!-------------------------\n\n〃);

intchoice=5;

intSearchCho=5,ViewCho=10;

while(choice!=0)

(

printf(〃请选择:\n\n〃);

printf(z,\t\t\tl.新图书采编入库\n\n\n〃);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论