欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    大数据结构课程设计图书管理系统报告材料书.doc

    • 资源ID:16218       资源大小:326.06KB        全文页数:27页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    大数据结构课程设计图书管理系统报告材料书.doc

    课题描述:本次数据结构课程设计内容是:设计一个计算机管理系统完成图书管理根本业务。随着社会的开展,技术的进步,各种管理业务越来越趋于自动化。而图书馆在日常运营中,面对大量书籍,读者信息以与两者间相互联系产生的借书还书信息,而人工记录的方法不仅效率低而且极容易出现错误,大大影响了图书馆的日常管理工作。图书管理系统就是为了解决人工管理图书的问题,实现图书馆图书自动化的管理。本系统需要实现图书根本信息管理的功能,具体涉与到新进图书根本信息的录入,图书根本信息的查询,借书人的根本信息的注册以与借书,还书等几项根本功能。一、 需求分析:图书管理系统将实现以下几个根本功能,根本要求为:1. 新进图书根本信息的录入:当图书馆新引进一批新书时,图书管理员需要将这些图书的根本信息录入管理系统中,具体包括图书书号,书名,著作者,现存量和库存量。2. 图书根本信息的查询:读者可以根据自己的情况在本系统中查询图书的根本信息,从而便于自己借阅图书。3. 借阅图书:在借阅图书之前没有在本图书馆进展注册的读者,是不能够借阅图书的,因而在读者在借阅图书之前需要登记借阅者的书证号,以与归还日期,然后系统再进展改变现存量等相关操作。4. 归还图书:根据读者归还图书的日期,本系统会注销对借阅者的登记,然后进展改变该书的现存量操作。5. 退出:当读者在图书馆中完毕其业务时,如此会在系统的提示下退出操作。二、 总体结构设计:1. 系统设计功能模块图2. 系统模块说明:图书入库模块:图书名称,作者,入库数量;查询库存模块:显示当前库存书的编号,书名与作者;借阅图书模块:输入所借阅图书的编号,如果存在如此会提示读者输入借书证号,提示借阅成功,如果图书不存在或者已借出,如此提示借阅失败;查询借阅模块:显示所借书人的借书证号,借阅书的书名,编号以与归还日期; 归还图书模块:输入借书证号和图书编号,进展还书操作。三、 各子模块设计:1. 定义main函数,并使图书馆存书初始化为空,建立主菜单栏,显示业务信息 定义图书结构#include<stdio.h>#ifndef _DATA_STRUCT_H_#define _DATA_STRUCT_H_ struct Book unsigned long BookID; /*图书编号*/ char BookName512; /*书名*/ char Writer512; /*作者*/ int CurrentNumber; /*现存量*/ Book *pNext; /*下一个图书信息*/;图3.1 main()函数流程图2定义GetInput函数,使得读者所输入数据的X围符合程序所定义的。开始Multiplex完毕图3.2 GetInput()函数流程图3定义ShowMainMenu()函数,进入图书管理系统,并显示主菜单界面图3.3 ShowMainMenu()函数流程图4定义putBookInLib函数,其功能为图书入库,输入图书信息,包括图书名称,图书作者与入库数量。图3.4 PutBookInLib()函数流程图5.定义QueryLib()函数,其功能为查询图书馆库存信息,查询图书编号,书名,作者以与当前库存数量。开始完毕图3.5 QueryBookLib()函数流程图6.定义BorrowBook()函数,实现读者借阅图书的功能,输入所借阅图书的编号,如果存在如此会提示读者输入借书证号,提示借阅成功,如果图书不存在或者已借出,如此提示借阅失败。开始MultiplexMultiplexMultiplexMultiplex完毕图3.6 BorrowBook()函数流程图7.定义QueryBorrow()函数,实现读者查询自己的借阅情况功能,读者可清晰的看到自己所借阅的图书信息以与归还日期等。开始完毕图3.7 QueryBorrow()函数流程图8.定义ReturnBook函数,实现读者归还图书的功能。开始MultiplexMultiplexMultiplexMultiplex完毕图3.8 ReturnBook()函数流程图四、 编程实现:#include<stdio.h>#ifndef _DATA_STRUCT_H_#define _DATA_STRUCT_H_/*图书结构*/struct Book unsigned long BookID;/*图书编号*/ char BookName512;/*书名*/ char Writer512;/*作者*/ int CurrentNumber;/*现存量*/ Book *pNext;/*下一个图书信息*/;/*图书索引结构*/struct Index unsigned long BookID;/*图书编号*/ Index *pNext;/*下一个索引指针*/;/*借阅信息结构*/struct Borrow unsigned long BookID;/*借阅图书编号*/ char BookName512;/*书名*/ unsigned long StuID;/*图书证号*/ char ReturnTime512;/*归还日期*/ Borrow *pNext;/*下一个借阅信息*/;#endif/*_DATA_STRUCT_H_*/ BookManage.cpp : 定义控制台应用程序的入口点。/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>void GetInput(char *pInOutStr,int StrLen,bool OnlyGetNumber = false);/*显示主菜单 并返回选择*/int ShowMainMenu();/*图书入库操作,传入参数为图书列表头指针的指针和索引信息的头指针的指针,因为在此函数内部可能会改变头指针的值*/void PutBookInLib(Book *pHead,Index *pIndex);/*查询图书馆库存,查询不改变数据,故传入指针即可*/void QueryBookLib(Book *pHead);/*借阅图书*/void BorrowBook(Borrow *pBorrow,Book *pHead);/*查询借阅*/void QueryBorrow(Borrow *pBorrow);/*归还图书*/void ReturnBook(Borrow *pBorrow,Book *pHead);/*释放图书链表与索引链表与借阅信息链表*/void DeleteBookList(Book *pHead);void DeleteIndexList(Index *pIndex);void DeleteBorrowList(Borrow *pBorrow);int main() /*图书列表头指针*/ Book *pBookHead = NULL; /*图书索引头指针*/ Index *pIndexHead = NULL; /*借阅信息头指针*/ Borrow *pBorrowHead = NULL; /*用来保存当前用户的输入*/ int ChoosedNum = -1; while ( true ) ChoosedNum = ShowMainMenu(); switch(ChoosedNum) case 0 :/*退出*/ return 0; break; case 1:/*图书入库*/ PutBookInLib(&pBookHead,&pIndexHead); break; case 2:/*查询库存*/ QueryBookLib(pBookHead); printf("按回车键继续."); fflush(stdin); getchar(); system("cls"); break; case 3:/*借阅图书*/ QueryBookLib(pBookHead); BorrowBook(&pBorrowHead,pBookHead); break; case 4:/*查询借阅*/ QueryBorrow(pBorrowHead); printf("按回车键继续."); fflush(stdin); getchar(); system("cls"); break; case 5:/*归还图书*/ QueryBorrow(pBorrowHead); ReturnBook(&pBorrowHead,pBookHead); break; DeleteBookList(&pBookHead); DeleteIndexList(&pIndexHead); DeleteBorrowList(&pBorrowHead); fflush(stdin); getchar(); return 0;/*获取输入字符串*/void GetInput(char *pInOutStr,int StrLen,bool OnlyGetNumber) memset(pInOutStr,0x0,StrLen); fflush(stdin); int Count = 0; while ( true ) char TmpC = 0; fread(&TmpC,1,1,stdin); if ( 10 = TmpC ) break; if ( OnlyGetNumber && TmpC >= '0' && TmpC <= '9' ) pInOutStrCount = TmpC; Count+; else pInOutStrCount = TmpC; Count+; /*显示主菜单 并返回选择*/int ShowMainMenu() char InPutStr1024;NO_INPUT: printf("nnn"); printf("*n"); printf("* 图书管理系统 *n"); printf("*n"); printf("n"); printf("请选择:n"); printf("t1.图书入库n"); printf("t2.查询库存n"); printf("t3.借阅图书n"); printf("t4.查询借阅n"); printf("t5.归还图书n"); printf("t0.退出n"); printf("n"); printf("t输入 : "); GetInput(InPutStr,1024,true); if ( strlen(InPutStr) < 1 ) system("cls"); goto NO_INPUT; return atoi(InPutStr);/*图书入库操作*/void PutBookInLib(Book *pHead,Index *pIndex) Book *pWork = *pHead; unsigned long BookID = 1; char InPutStr1024; /*先计算处当前入库图书的ID号*/ if ( NULL = pWork ) BookID = 1; else 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->BookID = BookID; system("cls"); printf("输入图书名称 : "); GetInput(InPutStr,1024); strcpy(pTmpNewBook->BookName,InPutStr); system("cls"); printf("<<%s>>n",pTmpNewBook->BookName); printf("图书作者 : "); GetInput(InPutStr,1024); strcpy(pTmpNewBook->Writer,InPutStr); system("cls"); printf("<<%s>>n",pTmpNewBook->BookName); printf("%sn",pTmpNewBook->Writer); printf("入库数量 : "); GetInput(InPutStr,1024,true); pTmpNewBook->CurrentNumber = atoi(InPutStr); if ( pTmpNewBook->CurrentNumber < 1 ) system("cls"); printf("入库数量错误!(按回车键继续.)"); fflush(stdin); getchar(); system("cls"); return; if ( NULL = *pHead ) *pHead = pTmpNewBook; *pIndex = pTmpIndex; else Book *pWork = *pHead; while ( pWork != NULL ) if ( strcmp(pWork->BookName,pTmpNewBook->BookName) = 0 && strcmp(pWork->Writer,pTmpNewBook->Writer) = 0 ) pWork->CurrentNumber += pTmpNewBook->CurrentNumber; return; pWork = pWork->pNext; pWork = *pHead; while ( pWork->pNext != NULL ) pWork = pWork->pNext; pWork->pNext = pTmpNewBook; Index *pWork2 = *pIndex; while ( pWork2->pNext != NULL ) pWork2 = pWork2->pNext; pWork2->pNext = pTmpIndex; system("cls"); printf("图书:<<%s>>n%sn入库数:%dnn入库操作成功!(按回车键继续.)",pTmpNewBook->BookName,pTmpNewBook->Writer,pTmpNewBook->CurrentNumber); fflush(stdin); getchar(); system("cls");/*释放图书链表与索引链表*/void DeleteBookList(Book *pHead) Book *pWork = *pHead; Book *pNext = pWork; while ( NULL != pWork ) pNext = pWork->pNext; free(pWork); pWork = pNext; void DeleteIndexList(Index *pIndex) Index *pWork = *pIndex; Index *pNext = pWork; while ( NULL != pWork ) pNext = pWork->pNext; free(pWork); pWork = pNext; void DeleteBorrowList(Borrow *pBorrow) Borrow *pWork = *pBorrow; Borrow *pNext = pWork; while ( NULL != pWork ) pNext = pWork->pNext; free(pWork); pWork = pNext; /*查询图书馆库存,查询不改变数据,故传入指针即可*/void QueryBookLib(Book *pHead) Book *pWork = pHead; int TotalCount = 0; while ( NULL != pWork ) TotalCount+; pWork = pWork->pNext; system("cls"); printf("当前库存共%d种图书,列表如下:n=n",TotalCount); pWork = pHead; while ( NULL != pWork ) printf("编号:%d 书名:<<%s>> %s 当前库存:%dn",pWork->BookID,pWork->BookName,pWork->Writer,pWork->CurrentNumber); pWork = pWork->pNext; printf("=n",TotalCount);/*借阅图书*/void BorrowBook(Borrow *pBorrow,Book *pHead) char InPutStr1024; bool HadTheBook = false; Borrow *pTmpBorrow = (Borrow *)(malloc(sizeof(Borrow); memset(pTmpBorrow,0x0,sizeof(Borrow); printf("请输入你想借书的编号 : "); GetInput(InPutStr,1024,true); pTmpBorrow->BookID = atoi(InPutStr); Book *pWorkBook = pHead; while ( pWorkBook != NULL ) if ( pWorkBook->BookID = pTmpBorrow->BookID ) HadTheBook = true; break; pWorkBook = pWorkBook->pNext; if ( HadTheBook ) if ( pWorkBook->CurrentNumber < 1 ) system("cls"); printf("图书<<%s>>当前无库存,无法借阅!n(按回车键继续.)",pWorkBook->BookName); fflush(stdin); getchar(); system("cls"); free(pTmpBorrow); return; else system("cls"); printf("图书编号%d不存在!n(按回车键继续.)",pTmpBorrow->BookID); fflush(stdin); getchar(); system("cls"); free(pTmpBorrow); return; strcpy(pTmpBorrow->BookName,pWorkBook->BookName); printf("请输入借书证号 : "); GetInput(InPutStr,1024,true); pTmpBorrow->StuID = atoi(InPutStr); if ( 0 = pTmpBorrow->StuID ) system("cls"); printf("借书证号不存在(借书证号输入整数)!n(按回车键继续.)"); fflush(stdin); getchar(); system("cls"); free(pTmpBorrow); return; time_t ltime; struct tm *today; time(&ltime); ltime += 60 * 60 * 24 * 30; today = localtime(&ltime); sprintf(pTmpBorrow->ReturnTime,"%d年%d月%d日", today->tm_year+1900, today->tm_mon+1, today->tm_mday); if ( *pBorrow = NULL ) *pBorrow = pTmpBorrow; else Borrow *pWork = *pBorrow; while ( NULL != pWork->pNext ) pWork = pWork->pNext; pWork->pNext = pTmpBorrow; pWorkBook->CurrentNumber-; system("cls"); printf("借书证号:%dn借阅图书:<<%s>>nn操作成功!(按回车键继续.)",pTmpBorrow->StuID,pTmpBorrow->BookName); fflush(stdin); getchar(); system("cls");/*查询借阅*/void QueryBorrow(Borrow *pBorrow) Borrow *pWork = pBorrow; int TotalCount = 0; while ( NULL != pWork ) TotalCount+; pWork = pWork->pNext; system("cls"); printf("当前借阅信息共%d条,列表如下:n=n",TotalCount); pWork = pBorrow; while ( NULL != pWork ) printf("借书证号:%d 借书名:<<%s>> 图书编号:%d 归还日期:%sn",pWork->StuID,pWork->BookName,pWork->BookID,pWork->ReturnTime); pWork = pWork->pNext; printf("=n",TotalCount);/*归还图书*/void ReturnBook(Borrow *pBorrow,Book *pHead) char InPutStr1024; Borrow TmpBorrow; bool HasFindBorrwo = false; memset(&TmpBorrow,0x0,sizeof(TmpBorrow); printf("请输入借书证号 : "); GetInput(InPutStr,1024,true); TmpBorrow.StuID = atoi(InPutStr); printf("请输入所还图书编号 : "); GetInput(InPutStr,1024,true); TmpBorrow.BookID = atoi(InPutStr); Borrow *pWorkBorrow = *pBorrow; Borrow *pDeletePre = NULL; while ( NULL != pWorkBorrow ) if ( pWorkBorrow->BookID = TmpBorrow.BookID && pWorkBorrow->StuID = TmpBorrow.StuID ) HasFindBorrwo = true; break; pDeletePre = pWorkBorrow; pWorkBorrow = pWorkBorrow->pNext; if ( ! HasFindBorrwo ) system("cls"); printf("你输入的借书信息不存在!n(按回车键继续.)"); fflush(stdin); getchar(); system("cls"); return; if ( NULL = pDeletePre ) *pBorrow = pWorkBorrow->pNext; else pDeletePre->pNext = pWorkBorrow->pNext; Book *pWorkBook = pHead; while ( NULL != pWorkBook ) if ( pWorkBook->BookID = pWorkBorrow->BookID ) pWorkBook->CurrentNumber +; pWorkBook = pWorkBook->pNext; system("cls"); printf("借书证号:%dn归还图书:<<%s>>nn操作成功!(按回车键继续.)",pWorkBorrow->StuID,pWorkBorrow->BookName); fflush(stdin); getchar(); system("cls"); free(pWorkBorrow);五、 测试结果:1. 图书管理系统菜单界面2. 图书入库操作界面3. 查询库存操作界面4. 借阅图书操作界面5. 查询借阅操作界面6. 借阅图书成功后,查询当前图书库存操作界面7. 归还图书操作界面8.归还图书操作成功后,查询当前图书库存操作界面六、 总结:本次课程设计的内容是图书管理系统:设计一个计算机管理系统完成图书管理根本业务。经过一个周,我完成了本次课程设计,过程可谓曲折。在此过程中,构思,编写程序代码的过程是最花费时间的,对于我而言,编写一个图书管理系统程序有些困难,每天对着电脑,查阅各种资料。在程序的调试中,经常会遇到这样那样的错误,有的是因为对根本知识点不熟悉,造成的语法错误,有的是由于粗心,造成的错误,所以导致了程序的不能正常运行。每个实验通常都要花很长时间才能够理清一个程序的思路,而且要不断地调试程序,同时还要做到界面的美化。在此期间,整个课程设计的过程中让我严肃认真的对待本次课程设计,所以让我很回味这整个过程,最终,在我和担当的共同努力下,教师与同学的帮助下,我们最终完成了本次课程设计的任务。在这次课程设计中,使我懂得了理论与实际相结合是非常重要的。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的思考和解决问题以与实际动手能力。同时也巩固和加深了我对数据结构的进一步掌握,提高综合运用本课程所学知识的能力,培养了我运用参考书,查阅手册与文献资料的能力,培养独立思考,深入研究,分析问题,解决问题的能力。通过实际对编译系统的分析设计,编程调试,掌握应用软件的分析方法和设计方法。而且,在做课程设计的同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很理解,做完课程设计,这些问题就迎刃而解了,还可以记住很多东西。根据在课程设计中遇到的问题,我将在以后的学习过程中注意以下几点:1.认真上好专业实验课,多在实践中锻炼自己;2.编写程序的时候要考虑周到严密;3.在做设计的时候要有信心,有耐心;4.认真学习课本的知识,并以此为根底学会灵活应用。认识来源于实践,实践是认识的最终目的,所以这个学期期末的数据结构课程设计对我来所作用非常大,让我更加了解数据结构的重要性,它将会在我的专业开展中发挥重要的作用。有了这次课程设计,我相信在以后的课程设计制作中,能够轻松并高质量的完成。七、 参考文献1. 实用数据结构根底第二版陈元春等 中国铁道2C程序设计第四版谭浩强著清华大学

    注意事项

    本文(大数据结构课程设计图书管理系统报告材料书.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开