数据结构课程设计图书管理系统Word文档下载推荐.docx
《数据结构课程设计图书管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计图书管理系统Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
e)
}ADTLinearList
2、ADTString{
数据对象:
D={ai|ai∈CharacterSet,i=1,2,…,n;
n≧0}
数据关系:
R={<
ai-1,ai〉|ai-1,ai∈D,i=2,…,n;
基本操作:
(1)StrAsign(S,chars)
(2)StrInsert(S,pos,T)
(3)StrDelete(S,pos,len)
(4)StrCopy(S,T)
(5)StrEmpty(S)
(6)StrCompare(S,T)
(7)StrLength(S)
(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,char SearchNum[]);
二分法查找比较书号
Buy(Book&boo,charBuyNum[]);
新书采编入库系统
Delete(Book&
boo,charDeleteNum[]);
清除图书信息系统
Borrow(Book&boo,lend&
Lin,charBorrowNum[],charCaNum[]);
借阅图书处理系统
Return(Book&
boo,lend&Lin,charReturnNum[],charBorrowerNum[]);
归还图书系统
SearchByNum(Book &boo,charSeaNum[]);
按书号查找系统
SearchByName(Book&boo);
按书名查找系统
SearchByAuth(Book&boo);
按作者查询系统
Menu();
主菜单显示系统
Search();
查询系统子菜单
main();
主函数
●系统程序功能结构图
三详细设计
●功能实现过程
bool BinarySearch(Bookboo,char SearchNum[])//二分法查找比较书号
{
while(low<
=high)
{
ﻩ计算中间点;
ﻩﻩif(查找到书号相同的)
{
ﻩﻩ返回值true;
ﻩﻩ}
ﻩif(查找书号不相同)
ﻩ用二分法进一步进行查找;
ﻩ}
if(库中没有所要查找的书)
ﻩ 返回值false;
}
void Buy(Book&
boo,char BuyNum[])/*采编入库*/
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 &
boo,lend&
Lin,charBorrowNum[],char CaNum[])/*借阅图书信息*/
if(没有找到此书)输出“书库中无此书!
if(书库中有此书)
借出一本书后,该书的现存量减1;
并在借阅记录链表中插入该条记录;
再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;
如果无该读者证号信息,申请新单链表存放借阅记录.
else 输出“该书现存量为0”;
voidReturn(Book &boo,lend&Lin,char ReturnNum[],charBorrowerNum[])/*归还图书信息*/
if(书库中无此书)
输出“无此书记录”;
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〉
#include<
string.h>
#include <stdlib.h>
#defineMAXSIZE100
#defineLIST_INIT_SIZE 100
intRetotal;
/*定义的全局变量*/
inttotal;
六 测试成果
1、采编入库
2、清空库存
3、图书借阅
4、图书归还
5、图书查找
七附录(源程序清单)
#include<
stdio。
h〉
#include<
string。
#include<
stdlib。
#defineMAXSIZE 100
#defineLIST_INIT_SIZE 100
typedefstructBoro
char BNum[20];
charRetDate[8];
struct Boro *next;
}Bor;
typedefstructLinkBook
{
Bor *next;
charCNum[20];
intTotal;
}lend[LIST_INIT_SIZE];
typedef struct LNode
ﻩcharCardNum[20];
ﻩstruct LNode *next;
}LinkList;
typedefstructbook
charnum[20];
charname[20];
charauth[20];
ﻩcharpub[20];
ﻩintTotNum;
ﻩintNowNum;
LinkList*next;
}Book[MAXSIZE];
intRetotal;
inttotal;
voidInitBo(Book&
boo)
for(int i=0;
i<MAXSIZE;
i++)
ﻩ{
ﻩboo[i].NowNum=0;
ﻩboo[i].TotNum=0;
ﻩboo[i].next=NULL;
ﻩ}
void InitRe(lend&Lin)
ﻩfor(inti=0;
i<
LIST_INIT_SIZE;
ﻩLin[i]。
next=NULL;
int mid=0;
boolBinarySearch(Bookboo,charSearchNum[])
{
ﻩintlow=0,high=total;
ﻩintfound=0;
ﻩwhile(low〈=high)
mid=(low+high)/2;
ﻩﻩif(strcmp(boo[mid].num,SearchNum)==0)
ﻩ{
ﻩfound=1;
ﻩreturn true;
}
ﻩif(strcmp(boo[mid]。
num,SearchNum)!
=0)
ﻩﻩhigh=mid—1;
ﻩﻩelse
ﻩlow=mid+1;
if(found==0)
returnfalse;
void Buy(B