《图书管理系统c++ 数据结构实验报告》由会员分享,可在线阅读,更多相关《图书管理系统c++ 数据结构实验报告(20页珍藏版)》请在金锄头文库上搜索。
1、数 据 结 构课 程 设 计 说 明 书学生姓名:学 院:软件学院专 业:信息管理与信息系统题 目:图书管理系统成绩指导教师2011年1月6日1设计目的(小标题黑体五号字)数据结构课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:n 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;n 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;n 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的
2、观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。2设计内容和要求1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; 借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; 归还:注销对借阅者的登记,改变该书的现存量。3本设计所采用的数据结构定义图书链表和图书索引结构struct Book char BookID10;/*图书编号/ char BookName512;/
3、书名*/ char Writer512;/*作者/ int CurrentNumber;/*现存量/ Book *pNext;/下一个图书信息*/;struct Index char BookID10;/*图书编号/ Index pNext;/下一个索引指针*/;/*借阅信息结构/struct Borrow char BookID10;/*借阅图书编号/ char BookName512; /书名*/ unsigned long StuID; /图书证号*/ char ReturnTime512;/归还日期/ Borrow *pNext; /*下一个借阅信息/;4功能模块详细设计4.1 详细设
4、计思想主函数main()主函数通过一个switch语句实现对系统功能的选择。主菜单选择函数ShowMainMenu()此函数包括退出系统,图书入库,查询库存,查询借阅和归还图书五个函数,通过调用主菜单函数判断用户做出的选择,从而进行相应的操作。图书入库函数PutBookInLib()此函数通过的创建一个图书链表,达到对新进书判断,若在现有的图书中找到该书,则直接进行入库,并记录下图书的数量,若找完整个图书量表也没找到该书,则要记录下新进图书的名称,作者,数量,并把该书插入到已有数中,方便下次对新书的判断。查询图书馆库存函数QueryBookLib()查询图书馆库存,查询不改变数据,故传入指针即
5、可。显示图书的编号、名称、作者、现有量以及库存量借阅图书函数BorrowBook()此函数通过读者的图书证号对读者链表从头至尾进行查找,若找到读者,则显示读者图书证号以及姓名,然后利用for循环和指针,对读者所借图书进行查找并显示。若找不到读者,显示读者标号不存在,按任意键回到查找菜单选择函数界面。借阅图书函数BorrowBook()此函数需要读者输入的图书证号,根据读者输入的要借的图书编号,再利用while循环遍历是否存在该书,若该书不存在,则显示此书不存在,若该书存在,再利用if判断是否还有现存,若无现存,在提示此书已借完,若还有现存,提示借书成功,根据库函数 time。h自动登记归还日期
6、.查询借阅函数QueryBorrow()此函数通过while循环实现对所有已借出图书的遍历,并输出所有已借出图书的信息。归还图书函数ReturnBook()此函数也是以用图书链表和读者链表对读者还书进行操作,根据读者输入的图书证号,利用while循环对读者链表进行遍历,查找是否存在该读者,若读者不存在,则提示该读者的图书证号不存在,若读者存在,根据读者输入的要还的图书编号,再利用while循环遍历是否存在该书,若该书不存在,则显示此书编号不存在,若该书存在,则利用for循环把读者的图书链表中要还书后面的书向前移一个单位,覆盖掉链表中该书的信息,并把读者的借书量减一,把图书的现存量加一.4.2
7、核心代码#include ifndef _DATA_STRUCT_H_#define _DATA_STRUCT_H_endif/_DATA_STRUCT_H_/图书结构*/struct Book char BookID10;/*图书编号/ char BookName512;/书名*/ char Writer512;/作者/ int CurrentNumber;/现存量/ Book pNext;/下一个图书信息/;/*图书索引结构*/struct Index char BookID10;/*图书编号/ Index *pNext;/下一个索引指针*/;/借阅信息结构*/struct Borrow
8、char BookID10; /借阅图书编号*/ char BookName512; /*书名*/ unsigned long StuID; /图书证号/ char ReturnTime512;/*归还日期/ Borrow *pNext; /*下一个借阅信息/;/获取输入字符串*/void GetInput(char pInOutStr,int StrLen,bool OnlyGetNumber = false);/*显示主菜单 并返回选择*/int ShowMainMenu();/*图书入库操作,传入参数为图书列表头指针的指针和索引信息的头指针的指针,因为在此函数内部可能会改变头指针的值*/
9、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
10、 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 :/
11、退出/ 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(pBorro
12、wHead); 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 GetI
13、nput(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(”* 图书管理系统 *