图书管理系统--c++-数据结构实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据结构课程设计说明书学生姓名:学院:软件学院专业:信息管理与信息系统题目:图书管理系统成绩指导教师2011年1月6日1.设计目的(小标题黑体五号字)《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分1析和讨论。进行数据结构课程设计要达到以下目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。2.设计内容和要求1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。3.本设计所采用的数据结构定义图书链表和图书索引结构structBook{charBookID[10];/*图书编号*/charBookName[512];/*书名*/charWriter[512];/*作者*/intCurrentNumber;/*现存量*/Book*pNext;/*下一个图书信息*/};structIndex{charBookID[10];/*图书编号*/Index*pNext;/*下一个索引指针*/};2/*借阅信息结构*/structBorrow{charBookID[10];/*借阅图书编号*/charBookName[512];/*书名*/unsignedlongStuID;/*图书证号*/charReturnTime[512];/*归还日期*/Borrow*pNext;/*下一个借阅信息*/};4.功能模块详细设计4.1详细设计思想主函数main()主函数通过一个switch语句实现对系统功能的选择。主菜单选择函数ShowMainMenu()此函数包括退出系统,图书入库,查询库存,查询借阅和归还图书五个函数,通过调用主菜单函数判断用户做出的选择,从而进行相应的操作。图书入库函数PutBookInLib()此函数通过的创建一个图书链表,达到对新进书判断,若在现有的图书中找到该书,则直接进行入库,并记录下图书的数量,若找完整个图书量表也没找到该书,则要记录下新进图书的名称,作者,数量,并把该书插入到已有数中,方便下次对新书的判断。查询图书馆库存函数QueryBookLib()查询图书馆库存,查询不改变数据,故传入指针即可。显示图书的编号、名称、作者、现有量以及库存量借阅图书函数BorrowBook()此函数通过读者的图书证号对读者链表从头至尾进行查找,若找到读者,则显示读者图书证号以及姓名,然后利用for循环和指针,对读者所借图书进行查找并显示。若找不到读者,显示读者标号不存在,按任意键回到查找菜单选择函数界面。借阅图书函数BorrowBook()3此函数需要读者输入的图书证号,根据读者输入的要借的图书编号,再利用while循环遍历是否存在该书,若该书不存在,则显示此书不存在,若该书存在,再利用if判断是否还有现存,若无现存,在提示此书已借完,若还有现存,提示借书成功,根据库函数time.h自动登记归还日期。查询借阅函数QueryBorrow()此函数通过while循环实现对所有已借出图书的遍历,并输出所有已借出图书的信息。归还图书函数ReturnBook()此函数也是以用图书链表和读者链表对读者还书进行操作,根据读者输入的图书证号,利用while循环对读者链表进行遍历,查找是否存在该读者,若读者不存在,则提示该读者的图书证号不存在,若读者存在,根据读者输入的要还的图书编号,再利用while循环遍历是否存在该书,若该书不存在,则显示此书编号不存在,若该书存在,则利用for循环把读者的图书链表中要还书后面的书向前移一个单位,覆盖掉链表中该书的信息,并把读者的借书量减一,把图书的现存量加一。4.2核心代码#includestdio.h#includestdlib.h#includestring.h#includetime.h#ifndef_DATA_STRUCT_H_#define_DATA_STRUCT_H_#endif/*_DATA_STRUCT_H_*//*图书结构*/structBook{charBookID[10];/*图书编号*/charBookName[512];/*书名*/charWriter[512];/*作者*/intCurrentNumber;/*现存量*/Book*pNext;/*下一个图书信息*/4};/*图书索引结构*/structIndex{charBookID[10];/*图书编号*/Index*pNext;/*下一个索引指针*/};/*借阅信息结构*/structBorrow{charBookID[10];/*借阅图书编号*/charBookName[512];/*书名*/unsignedlongStuID;/*图书证号*/charReturnTime[512];/*归还日期*/Borrow*pNext;/*下一个借阅信息*/};/*获取输入字符串*/voidGetInput(char*pInOutStr,intStrLen,boolOnlyGetNumber=false);/*显示主菜单并返回选择*/intShowMainMenu();/*图书入库操作,传入参数为图书列表头指针的指针和索引信息的头指针的指针,因为在此函数内部可能会改变头指针的值*/voidPutBookInLib(Book**pHead,Index**pIndex);/*查询图书馆库存,查询不改变数据,故传入指针即可*/voidQueryBookLib(Book*pHead);/*借阅图书*/voidBorrowBook(Borrow**pBorrow,Book*pHead);/*查询借阅*/voidQueryBorrow(Borrow*pBorrow);/*归还图书*/5voidReturnBook(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);break;}6case2:/*查询库存*/{QueryBookLib(pBookHead);printf(按回车键继续...);fflush(stdin);getchar();system(cls);break;}case3:/*借阅图书*/{QueryBookLib(pBookHead);BorrowBook(&pBorrowHead,pBookHead);break;}case4:/*查询借阅*/{QueryBorrow(pBorrowHead);printf(按回车键继续...);fflush(stdin);getchar();system(cls);break;}case5:/*归还图书*/{QueryBorrow(pBorrowHead);ReturnBook(&pBorrowHead,pBookHead);break;}7}}DeleteBookList(&pBookHead);DeleteIndexList(&pIndexHead);DeleteBorrowList(&pBorrowHead);fflush(stdin);getchar();return0;}/*获取输入字符串*/voidGetInput(char*pInOutStr,intStrLen,boolOnlyGetNumber){memset(pInOutStr,0x0,StrLen);fflush(stdin);intCount=0;while(true){charTmpC=0;fread(&TmpC,1,1,stdin);if(10==TmpC){break;}if(OnlyGetNumber&&TmpC='0'&&TmpC='9'){pInOutStr[Count]=TmpC;Count++;}else{8pInOutStr[Count]=TmpC;Count++;}}}/*显示主菜单并返回选择*/intShowMainMenu(){charInPutStr[1024];NO_INPUT:printf(\n\n\n);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){9system(cls);gotoNO_INPUT;}returnatoi(InPutStr);}/*图书入库操作*/voidPutBookInLib(Book**pHead,Index**pIndex){Book*pWork=*pHead;charInPutStr[1024];Book*pTmpNewBook=(Book*)(malloc(sizeof(Book)));memset(pTmpNewBook,0x0,sizeof(Book));Index*pTmpIndex=(Index*)(malloc(sizeof(Index)));memset(pTmpIndex,0x0,sizeof(Index));system(cls);printf(输入图书编号:);GetInput(InPutStr,1024);strcpy(pTmpNewBook-BookID,InPutStr);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(%

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功