图书管理信息系统的设计与实现Word文档格式.docx
《图书管理信息系统的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《图书管理信息系统的设计与实现Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
![图书管理信息系统的设计与实现Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/24/d1f1ebcb-3724-4f64-956d-e98fe2fa22c8/d1f1ebcb-3724-4f64-956d-e98fe2fa22c81.gif)
指针1
作者
指针2
出版社
指针3
分类
藏书量
借出数
1
1021
数据库
李小云
人民邮电
021
8
2
1014
刘小洋
中国科学
013
6
3
1106
操作系统
许海平
1
024
7
4
1108
孙一
清华大学
5
1203
程序设计
035
2201
2360
0030
a)图书主索引文件
链头地址
长度
b)书名索引链头文件c)作者索引链头文件d)出版社索引链头文件
二、设计内容
设计一个计算机管理系统完成图书管理基本业务。
(1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;
(2)对书号建立索引表(线性表)以提高查找效率;
(3)采编入库:
新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,
则只将库存量增加;
(4)借阅:
如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和还
期限,改变现存量;
(5)归还:
注销对借阅者的登记,改变该书的现存量。
三、概要设计:
确定所需模块及模块间调用关系
分析:
首先应该定义借书人的结构体信息和图书结构体信息,为了便于查找图书和借书人,分别对其建立单链表。
然后定义buy(),SearchByNum(),SearchByName(),borrow(),return()五个函数分别实现图书采编入库的功能,按书号查询的功能,按书名查找的功能,借书功能和还书功能。
.根据任务的要求,先定义头文件。
然后写出借书人和图书的结构体信息。
为了便
于查找图书和存储借书人的信息,分别对借书人和图书采用链表的形式存放。
um,SearchNum)==0)um,SearchNum)!
=0)图书采编入库
voidBuy(ook&
boo,charBuyNum[])
{
if(BinarySearch(boo,BuyNum))otNum++;
owNum++;
n"
);
printf("
已更改书库中该书的信息。
编号%s的书%s作者是%s,出版社是%s,
目前的总库存是%d,现库存是%d。
\n"
boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);
}
if(!
BinarySearch(boo,BuyNum))
{
inti;
for(i=total;
i>
mid&
&
total;
i--)um,BuyNum);
该书购入的数量是:
"
scanf("
%d"
&
boo[i].NowNum);
boo[i].TotNum=boo[i].NowNum;
该书的名字是:
%s"
boo[i].name);
该书的作者是:
boo[i].auth);
该书的出版社是:
boo[i].pub);
ext=NULL;
total++;
um,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
入库成功.\n"
}
3、查找图书的设计方案
为了更便于查找,这里设计了两种查找方案,按书号查找和按书名查找。
在按书号
查找中使用了折半查找法的查找函数。
按书号查找方案中都显示图书的所有状态,包括是在库还是借出,如果借出,并显示何人借走。
(1).按书号查找
voidSearchByNum(ook&
boo,charSeaNum[])
{ext;
if(BinarySearch(boo,SeaNum)==false)printf("
对不起,未找到您想查找的书。
um,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);
if(boo[mid].next!
=NULL)
{printf("
┃已借该书的┃\n"
┃图书证号┃\n"
while(p)
┃%14s┃\n"
p->
CardNum);
p=p->
next;
%s"
书名查找
voidSearchByName(ook&
boo)
{ame)==0)um,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo
[i].NowNum);
}owNum>
0)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++;
elseprintf("
借阅失败.该书现在库存为0.\n"
5、归还图书的设计方案
定义了一个return函数,当进行还书时,在借阅者表里查找借阅者,注销对借阅者的登记。
在图书链表中改变该书的现存量,把现存量增加。
voidReturn(ook&
boo,lend&
Lin,charReturnNum[],charBorrowerNum[])
{Bor*p,*q;
LinkList*m,*n;
intflag=0;
if(BinarySearch(boo,ReturnNum))ext;
strcmp(m->
CardNum,BorrowerNum))owNum++;
ext=m->
Num,BorrowerNum))ext;
strcmp(p->
BNum,ReturnNum))ext=p->
flag=1;
elsen"
for(intk=0;
k<
Retotal;
k++)
Lin[k].next)
intj;
for(j=k;
j<
j++)
Lin[j]=Lin[j+1];
Num,"
"
6、定义主函数,在主函数中设计出主界面。
便于用户进入后能够根据提示方便操作。
并且在主函数中定义出要实现的基本功能,在分别另外去实现。
分别在主函数中定义有:
Buy(Bo,BNum);
SearchByNum(Bo,BNum);
SearchByName(Bo);
Borrow(Bo,Lin,BNum,CNum);
Return(Bo,Lin,BNum,CNum)五个函数。
四、算法描述:
给出各模块流程图及代码
图书管理系统的总体结构如
完整代码如下:
“”
的种类数
owNum=0;
boo[i].TotNum=0;
boo[i].next=NULL;
voidInitRe(lend&
Lin)ext=NULL;
intmid=0;
um,SearchNum)==0)um,SearchNum)>
0)otNum++;
编号%s的书%s作者是%s,出版社是%s,目前的总库存是%d,现库存是%d。
boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);
inti=0,j=0;
while(boo[i].num[j]!
=0)
{
i++;
}
um,BuyNum);
scanf("
printf("
voidBorrow(ookboo[],lend&
Lin,charBorrowNum[],charCaNum[])
{owNum>
输入借书日期:
BorDate);
voidReturn(ookboo[],lend&
{n"
if(BinarySearch(boo,ReturnNum))ext;
ext;
if(boo[mid].next!
ame)==0)um,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}um[j]=0;
-----------------------欢迎进入图书管理系统!
---------------------------\n\n"
intchoice=5;
intSearchCho=5,ViewCho=10;
while(choice!
=0)
{
请选择:
\n\n"
\t\t\t1.新图书采编入库\n\n\n"
\t\t\t2.按书号查找图书\n\n\n"
\t\t\t3.按书名查找图书\n\n\n"
\t\t\t4.借阅图书\n\n\n"
\t\t\t5.归还图书\n\n\n"
\t\t\t0.退出系统\n\n\n"
语言程序设计教程.
[2]朱战立等.数据结构(C语言版).