数据结构课程设计图书管理系统Word文档下载推荐.docx

上传人:b****6 文档编号:17337448 上传时间:2022-12-01 格式:DOCX 页数:23 大小:161.42KB
下载 相关 举报
数据结构课程设计图书管理系统Word文档下载推荐.docx_第1页
第1页 / 共23页
数据结构课程设计图书管理系统Word文档下载推荐.docx_第2页
第2页 / 共23页
数据结构课程设计图书管理系统Word文档下载推荐.docx_第3页
第3页 / 共23页
数据结构课程设计图书管理系统Word文档下载推荐.docx_第4页
第4页 / 共23页
数据结构课程设计图书管理系统Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据结构课程设计图书管理系统Word文档下载推荐.docx

《数据结构课程设计图书管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计图书管理系统Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

数据结构课程设计图书管理系统Word文档下载推荐.docx

(8)StrClear(S)

(9)StrCat(S,T)

(10)SubString(Sub,S,pos,len)

(11)StrIndex(S,pos,T)

(12)StrReplace(S,T,V)

(13)StrDestroy(S)

}ADTString

●系统中的子程序和功能说明:

InitBo(Book&

boo);

初始化图书信息

InitRe(lend&

Lin);

初始化借阅者信息

BinarySearch(Bookboo,charSearchNum[]);

二分法查找比较书号

Buy(Book&

boo,charBuyNum[]);

新书采编入库系统

Delete(Book&

boo,charDeleteNum[]);

清除图书信息系统

Borrow(Book&

boo,lend&

Lin,charBorrowNum[],charCaNum[]);

借阅图书处理系统

Return(Book&

Lin,charReturnNum[],charBorrowerNum[]);

归还图书系统

SearchByNum(Book&

boo,charSeaNum[]);

按书号查找系统

SearchByName(Book&

按书名查找系统

SearchByAuth(Book&

按作者查询系统

Menu();

主菜单显示系统

Search();

查询系统子菜单

main();

主函数

●系统程序功能结构图

三详细设计

●功能实现过程

boolBinarySearch(Bookboo,charSearchNum[])//二分法查找比较书号

{

while(low<

=high)

{

计算中间点;

if(查找到书号相同的)

{

返回值true;

}

if(查找书号不相同)

用二分法进一步进行查找;

}

if(库中没有所要查找的书)

返回值false;

}

voidBuy(Book&

boo,charBuyNum[])/*采编入库*/

if(书库中有此书)

总库存加1;

现库存加1;

if(书库中无此书)

for(i=total;

i>

mid&

&

total;

i--)/*将新采购的书插在适合位置,保持有序*/

空出插入位置;

输入新购书籍的相关信息:

书号、书名、作者、出版社;

boo[i].next=NULL;

total++;

/*总量加1*/

voidDelete(Book&

boo,charDeleteNum[])/*清除图书信息*/

if(书库中没有此书)

输出“无此书”;

if(书库中有此书)

strcpy(连续两本书的相关信息);

现存量减1;

库存量减1;

else输出“此书已有借阅者,无法删除!

”;

voidBorrow(Book&

Lin,charBorrowNum[],charCaNum[])/*借阅图书信息*/

if(没有找到此书)输出“书库中无此书!

if(书库中有此书)

借出一本书后,该书的现存量减1;

并在借阅记录链表中插入该条记录;

再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;

如果无该读者证号信息,申请新单链表存放借阅记录。

else输出“该书现存量为0”;

voidReturn(Book&

Lin,charReturnNum[],charBorrowerNum[])/*归还图书信息*/

if(书库中无此书)

输出“无此书记录”;

查找图书文件,修改图书的现存量;

查找记录借阅信息的单链表,填入还书日期,删除借阅信息;

查找记录读者信息的单链表,删除证号信息。

voidSearchByNum(Book&

boo,charSeaNum[])/*按书号查找*/

if(书库中无此书信息)/*用二分法查找*/

输出“无此书”;

else/*书库中有此书信息*/

输出与此书有关的相关信息;

voidSearchByName(Book&

boo)/*按书名查找*/

输入想要查找书的书名;

用顺序查找法查找;

if(查找到需要查找的书)

输出与此书相关的信息;

建议画出主要模块流程图。

四设计与调试分析

1、这个程序设计中要注意定义两个结构体:

图书结构体、借阅人结构体。

其中定义数组存放图书信息,申请链表存放借阅记录和读者信息记录。

2、程序中运用到大多的插入与删除,所以申请链表比较方便插入与删除。

但应前期需求分析的准备工作不充分,导致程序运行功能不全,比如查找时关于此书的信息不能全部显示出来,并且添加删除时库存的变化不能直接显示出来。

程序的健壮性不能达到预期的结果,这些都是需要改进的。

3、在程序中的函数调用是个非常重要的部分,也是经常需要用到的,在编写程序过程中,因为函数调用不准确,使得循环进不去,后来改变函数的调用关系,才达到了预期结果。

4、程序中还定义了全局变量,之前没定义全局变量,在下面的编写过程,同样性质的地方需要重复定义,比较麻烦,定义全局变量使得程序比较简明一点。

五用户手册

【使用说明】

1、进入图书馆管理系统主页面

2、若有新书要新编入库,选择1,进入新书入库系统,输入入库书的书号,若书库中无该书,则设立新书目,输入新书信息。

若书库中已有该书,则输入新信息覆盖修改原书库中该书号对应书的信息。

3、若有书籍信息需要删除,选择2,进入清空库存系统,输入想要删除书的书号,则此书信息就已删除。

4、若要借阅图书,选择3,进入图书借阅系统,输入需要借阅书的书号以及读者证号,并输入还书日期,则借书成功。

5、若要归还图书,选择4,进入图书归还系统,输入需要归还图书的书号以及读者证号,则还书成功。

6、若要查找信息,选择5,进入查找信息子系统。

若要按书号查找,则选择子系统中的1,输入需要查找的书的书号,若按书名查找,则选择子系统中的2,输入需要查找的书名,若按作者查找,输入需要查找书的作者进行查找,若查找结束,则按0退出。

7、若系统使用结束,按0退出。

【程序中的头文件】

#include<

stdio.h>

string.h>

stdlib.h>

#defineMAXSIZE100

#defineLIST_INIT_SIZE100

intRetotal;

/*定义的全局变量*/

inttotal;

六测试成果

1、采编入库

2、清空库存

3、图书借阅

4、图书归还

5、图书查找

七附录(源程序清单)

typedefstructBoro

charBNum[20];

charRetDate[8];

structBoro*next;

}Bor;

typedefstructLinkBook

{

Bor*next;

charCNum[20];

intTotal;

}lend[LIST_INIT_SIZE];

typedefstructLNode

charCardNum[20];

structLNode*next;

}LinkList;

typedefstructbook

charnum[20];

charname[20];

charauth[20];

charpub[20];

intTotNum;

intNowNum;

LinkList*next;

}Book[MAXSIZE];

voidInitBo(Book&

boo)

for(inti=0;

i<

MAXSIZE;

i++)

boo[i].NowNum=0;

boo[i].TotNum=0;

boo[i].next=NULL;

voidInitRe(lend&

Lin)

LIST_INIT_SIZE;

Lin[i].next=NULL;

intmid=0;

boolBinarySearch(Bookboo,charSearchNum[])

intlow=0,high=total;

intfound=0;

mid=(low+high)/2;

if(strcmp(boo[mid].num,SearchNum)==0)

found=1;

returntrue;

if(strcmp(boo[mid].num,SearchNum)!

=0)

high=mid-1;

else

low=mid+1;

if(found==0)

returnfalse;

voidBuy(Book&

boo,charBuyNum[])

inti;

if(BinarySearch(boo,BuyNum))

{

boo[mid].TotNum++;

boo[mid].NowNum++;

printf("

入库成功.\n"

);

已更改书库中该书的信息。

\n"

编号:

%s书名:

%s"

boo[mid].num,boo[mid].name);

作者:

%s出版社:

%s"

boo[mid].auth,boo[mid].pub);

if(!

BinarySearch(boo,BuyNum))

i--)

boo[i]=boo[i-1];

该书在书库中不存在,设立新书目!

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

该书购入的数量是:

"

scanf("

%d"

&

boo[i].NowNum);

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

该书的名字是:

%s"

boo[i].name);

该书的作者是:

boo[i].auth);

该书的出版社是:

boo[i].pub);

total++;

已增加该书的信息!

boo[i].num,boo[i].name);

boo[i].auth,boo[i].pub);

boo,charDeleteNum[])

if(BinarySearch(boo,DeleteNum)==false||total==0)

书库中没有该书.\n"

if(BinarySearch(boo,DeleteNum))

if(!

boo[mid].next)

intj;

for(j=mid;

j<

j++)

boo[j]=boo[j+1];

strcpy(boo[j].num,boo[j+1].num);

strcpy(boo[j].name,boo[j+1].name);

strcpy(boo[j].auth,boo[j+1].auth);

strcpy(boo[j].pub,boo[j+1].pub);

boo[j].TotNum=boo[j+1].TotNum;

boo[j].NowNum=boo[j+1].NowNum;

printf("

已成功删除该书.\n"

该书有借阅者,无法删除。

Lin,charBorrowNum[],charCaNum[])

Bor*p,*q;

LinkList*m,*n;

BinarySearch(boo,BorrowNum)||total==0)

书库里没这书。

if(BinarySearch(boo,BorrowNum))

if(boo[mid].NowNum>

0)

{

boo[mid].NowNum--;

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));

next=n;

strcpy(n->

n->

inti=0;

for(i=0;

Retotal;

if(!

strcmp(Lin[i].CNum,CaNum))

{

p=Lin[i].next;

while(p->

next)p=p->

q=(Bor*)malloc(sizeof(Boro));

p->

next=q;

strcpy(q->

BNum,BorrowNum);

printf("

输入归还日期:

scanf("

q->

RetDate);

q->

借阅成功.\n"

break;

}

if(i==Retotal)

strcpy(Lin[i].CNum,CaNum);

p=(Bor*)malloc(sizeof(Boro));

Lin[i].next=p;

strcpy(p->

p->

Retotal++;

}

else

printf("

借阅失败.该书现在库存为0.\n"

Lin,charReturnNum[],charBorrowerNum[])

intflag=0;

BinarySearch(boo,ReturnNum)||!

total)

printf("

书库中无此书.\n"

if(BinarySearch(boo,ReturnNum))

m=boo[mid].next;

strcmp(m->

CardNum,BorrowerNum))

boo[mid].NowNum++;

boo[mid].next=m->

free(m);

else

while(m->

if(!

next->

n=m->

next=n->

free(n);

boo[mid].NowNum++;

break;

m=m->

}

strcmp(Lin[i].CNum,BorrowerNum))

p=Lin[i].next;

if(!

strcmp(p->

BNum,ReturnNum))

Lin[i].next=p->

free(p);

成功归还该书.\n"

flag=1;

break;

while(p->

q=p->

next=q->

free(q);

flag=1;

p=p->

for(intk=0;

k<

k++)

Lin[k].next)

for(j=k;

Lin[j]=Lin[j+1];

strcpy(Lin[j].CNum,"

"

Retotal--;

}

if(flag==0)

无该证信息.\n"

boo,charSeaNum[])

LinkList*p;

p=boo[mid].next;

if(BinarySearch(boo,SeaNum)==true)

书号:

%s\n"

boo[mid].num);

书名:

boo[mid].name);

作者名:

boo[mid].auth);

出版社:

boo[mid].pub);

现存量:

boo[mid].NowNum);

库存量:

boo[mid].TotNum);

\n"

else

对不起,未找到您想查找的书。

boo)

charSeaName[20];

输入想查找的书的书名:

scanf("

SeaName);

此书存在!

if(strcmp(SeaName,boo[i].name)==0)

编号:

总库存量:

boo[i].TotNum);

现库存量:

boo[i].NowNum);

}

voidSearchByAuth(Book&

charSeaAuth[20];

输入想查找的书的作者:

SeaAuth);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1