大数据结构课程设计图书管理系统报告材料书Word格式文档下载.docx
- 文档编号:17785798
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:30
- 大小:244.52KB
大数据结构课程设计图书管理系统报告材料书Word格式文档下载.docx
《大数据结构课程设计图书管理系统报告材料书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《大数据结构课程设计图书管理系统报告材料书Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
输入所借阅图书的编号,如果存在则会提示读者输入借书证号,提示借阅成功,如果图书不存在或者已借出,则提示借阅失败;
查询借阅模块:
显示所借书人的借书证号,借阅书的书名,编号以及归还日期;
归还图书模块:
输入借书证号和图书编号,进行还书操作。
三、各子模块设计:
1.定义main()函数,并使图书馆存书初始化为空,建立主菜单栏,显示业务信息
定义图书结构
#include<
stdio.h>
#ifndef_DATA_STRUCT_H_
#define_DATA_STRUCT_H_
structBook
{
unsignedlongBookID;
/*图书编号*/
charBookName[512];
/*书名*/
charWriter[512];
/*作者*/
intCurrentNumber;
/*现存量*/
Book*pNext;
/*下一个图书信息*/
};
图3.1main()函数流程图
2.定义GetInput()函数,使得读者所输入数据的范围符合程序所定义的。
图3.2GetInput()函数流程图
3.定义ShowMainMenu()函数,进入图书管理系统,并显示主菜单界面
图3.3ShowMainMenu()函数流程图
4.定义putBookInLib()函数,其功能为图书入库,输入图书信息,包括图书名称,图书作者及入库数量。
图3.4PutBookInLib()函数流程图
5.定义QueryLib()函数,其功能为查询图书馆库存信息,查询图书编号,书名,作者以及当前库存数量。
图3.5QueryBookLib()函数流程图
6.定义BorrowBook()函数,实现读者借阅图书的功能,输入所借阅图书的编号,如果存在则会提示读者输入借书证号,提示借阅成功,如果图书不存在或者已借出,则提示借阅失败。
图3.6BorrowBook()函数流程图
7.定义QueryBorrow()函数,实现读者查询自己的借阅情况功能,读者可清晰的看到自己所借阅的图书信息以及归还日期等。
图3.7QueryBorrow()函数流程图
8.定义ReturnBook()函数,实现读者归还图书的功能。
图3.8ReturnBook()函数流程图
四、编程实现:
#define_DATA_STRUCT_H_
/*图书结构*/
/*图书编号*/
/*书名*/
/*作者*/
/*现存量*/
/*下一个图书信息*/
/*图书索引结构*/
structIndex
Index*pNext;
/*下一个索引指针*/
/*借阅信息结构*/
structBorrow
/*借阅图书编号*/
unsignedlongStuID;
/*图书证号*/
charReturnTime[512];
/*归还日期*/
Borrow*pNext;
/*下一个借阅信息*/
#endif/*_DATA_STRUCT_H_*/
//BookManage.cpp:
定义控制台应用程序的入口点。
//
#include<
stdlib.h>
string.h>
time.h>
voidGetInput(char*pInOutStr,intStrLen,boolOnlyGetNumber=false);
/*显示主菜单并返回选择*/
intShowMainMenu();
/*图书入库操作,传入参数为图书列表头指针的指针和索引信息的头指针的指针,因为在此函数内部可能会改变头指针的值*/
voidPutBookInLib(Book**pHead,Index**pIndex);
/*查询图书馆库存,查询不改变数据,故传入指针即可*/
voidQueryBookLib(Book*pHead);
/*借阅图书*/
voidBorrowBook(Borrow**pBorrow,Book*pHead);
/*查询借阅*/
voidQueryBorrow(Borrow*pBorrow);
/*归还图书*/
voidReturnBook(Borrow**pBorrow,Book*pHead);
/*释放图书链表及索引链表及借阅信息链表*/
voidDeleteBookList(Book**pHead);
voidDeleteIndexList(Index**pIndex);
voidDeleteBorrowList(Borrow**pBorrow);
intmain()
/*图书列表头指针*/
Book*pBookHead=NULL;
/*图书索引头指针*/
Index*pIndexHead=NULL;
/*借阅信息头指针*/
Borrow*pBorrowHead=NULL;
/*用来保存当前用户的输入*/
intChoosedNum=-1;
while(true)
{
ChoosedNum=ShowMainMenu();
switch(ChoosedNum)
case0:
/*退出*/
return0;
break;
}
case1:
/*图书入库*/
PutBookInLib(&
pBookHead,&
pIndexHead);
case2:
/*查询库存*/
QueryBookLib(pBookHead);
printf("
按回车键继续..."
);
fflush(stdin);
getchar();
system("
cls"
case3:
BorrowBook(&
pBorrowHead,pBookHead);
case4:
QueryBorrow(pBorrowHead);
case5:
ReturnBook(&
DeleteBookList(&
pBookHead);
DeleteIndexList(&
DeleteBorrowList(&
pBorrowHead);
}
/*获取输入字符串*/
voidGetInput(char*pInOutStr,intStrLen,boolOnlyGetNumber)
memset(pInOutStr,0x0,StrLen);
intCount=0;
charTmpC=0;
fread(&
TmpC,1,1,stdin);
if(10==TmpC)
if(OnlyGetNumber&
&
TmpC>
='
0'
&
TmpC<
9'
)
pInOutStr[Count]=TmpC;
Count++;
else
intShowMainMenu()
charInPutStr[1024];
NO_INPUT:
\n\n\n"
******************************************************************\n"
*图书管理系统*\n"
\n"
请选择:
\t1.图书入库\n"
\t2.查询库存\n"
\t3.借阅图书\n"
\t4.查询借阅\n"
\t5.归还图书\n"
\t0.退出\n"
\t输入:
"
GetInput(InPutStr,1024,true);
if(strlen(InPutStr)<
1)
gotoNO_INPUT;
returnatoi(InPutStr);
/*图书入库操作*/
voidPutBookInLib(Book**pHead,Index**pIndex)
Book*pWork=*pHead;
unsignedlongBookID=1;
/*先计算处当前入库图书的ID号*/
if(NULL==pWork)
BookID=1;
while(pWork->
pNext!
=NULL)
pWork=pWork->
pNext;
BookID=pWork->
BookID+1;
Book*pTmpNewBook=(Book*)(malloc(sizeof(Book)));
memset(pTmpNewBook,0x0,sizeof(Book));
Index*pTmpIndex=(Index*)(malloc(sizeof(Index)));
memset(pTmpIndex,0x0,sizeof(Index));
pTmpNewBook->
BookID=BookID;
pTmpIndex->
输入图书名称:
GetInput(InPutStr,1024);
strcpy(pTmpNewBook->
BookName,InPutStr);
<
%s>
>
pTmpNewBook->
BookName);
图书作者:
Writer,InPutStr);
作者:
%s\n"
Writer);
入库数量:
CurrentNumber=atoi(InPutStr);
if(pTmpNewBook->
CurrentNumber<
入库数量错误!
(按回车键继续...)"
return;
if(NULL==*pHead)
*pHead=pTmpNewBook;
*pIndex=pTmpIndex;
while(pWork!
if(strcmp(pWork->
BookName,pTmpNewBook->
BookName)==0&
strcmp(pWork->
Writer,pTmpNewBook->
Writer)==0)
pWork->
CurrentNumber+=pTmpNewBook->
CurrentNumber;
pWork=*pHead;
pNext=pTmpNewBook;
Index*pWork2=*pIndex;
while(pWork2->
pWork2=pWork2->
pWork2->
pNext=pTmpIndex;
图书:
\n作者:
%s\n入库数:
%d\n\n入库操作成功!
CurrentNumber);
/*释放图书链表及索引链表*/
voidDeleteBookList(Book**pHead)
Book*pNext=pWork;
while(NULL!
=pWork)
pNext=pWork->
free(pWork);
pWork=pNext;
voidDeleteIndexList(Index**pIndex)
Index*pWork=*pIndex;
Index*pNext=pWork;
voidDeleteBorrowList(Borrow**pBorrow)
Borrow*pWork=*pBorrow;
Borrow*pNext=pWork;
voidQueryBookLib(Book*pHead)
Book*pWork=pHead;
intTotalCount=0;
TotalCount++;
当前库存共%d种图书,列表如下:
\n=====================================================\n"
TotalCount);
pWork=pHead;
编号:
[%d]书名:
作者:
%s当前库存:
%d\n"
pWork->
BookID,pWork->
BookName,pWork->
Writer,pWork->
=====================================================\n"
voidBorrowBook(Borrow**pBorrow,Book*pHead)
boolHadTheBook=false;
Borrow*pTmpBorrow=(Borrow*)(malloc(sizeof(Borrow)));
memset(pTmpBorrow,0x0,sizeof(Borrow));
请输入你想借书的编号:
pTmpBorrow->
BookID=atoi(InPutStr);
Book*pWorkBook=pHead;
while(pWorkBook!
if(pWorkBook->
BookID==pTmpBorrow->
BookID)
HadTheBook=true;
pWorkBook=pWorkBook->
if(HadTheBook)
图书<
当前无库存,无法借阅!
\n(按回车键继续...)"
pWorkBook->
free(pTmpBorrow);
图书编号%d不存在!
pTmpBorrow->
BookID);
strcpy(pTmpBorrow->
BookName,pWorkBook->
请输入借书证号:
StuID=atoi(InPutStr);
if(0==pTmpBorrow->
StuID)
借书证号不存在(借书证号输入整数)!
time_tltime;
structtm*today;
time(&
ltime);
ltime+=60*60*24*30;
today=localtime(&
sprintf(pTmpBorrow->
ReturnTime,"
%d年%d月%d日"
today->
tm_year+1900,
today->
tm_mon+1,
tm_mday);
if(*pBorrow==NULL)
*pBorrow=pTmpBorrow;
=pWork->
pNext)
pNext=pTmpBorrow;
pWorkBook->
CurrentNumber--;
借书证号:
%d\n借阅图书:
\n\n操作成功!
StuID,pT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 图书 管理 系统 报告 材料
![提示](https://static.bdocx.com/images/bang_tan.gif)