数据结构图书管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2007年春季学期
算法与数据结构课程设计
题目:图书借阅管理
专业班级:
姓名:
学号:
指导教师:
成绩:_____________________
目录
摘要 (3)
前言 (4)
基本算法的实现 (5)
采用类C语言定义相关的数据类型 (5)
各模块的伪码算法 (6)
函数的调用关系图 (12)
调试分析 (13)
测试结果 (15)
源程序(带注释) (19)
总结 (30)
参考文献 (31)
致谢 (32)
附件Ⅰ部分源程序代码 (33)
摘要
图书的借阅涉及到的操作算法都是以链表或顺序表的基本运算作为基础的,此程序包括:图书添加,图书查询,图书资料删除,借书,还书,增加会员,删除会员,查询会员借书信息输出显示的功能。通过链表存储结构实现数据的输入,实现各子程序过程的演示,对异常输入信息报错。
关键字:图书借阅的演示;图书添加,图书查询,图书删除,借书,还书,增加会员,删除会员,查询会员借书信息
前言
很多涉及图书借阅的操作的算法都是以链表操作为基础,通过链表的建立,结点添加、查询与删除的演示,方便在学习中更好的理解链表结点的添加、查询、删除的过程。
通过对链表的建立,结点添加、查询与删除的演示,我们在对一些问题进行求解时,会发现有些问题很难找到规律,或者根本无规律可寻。对于这样的问题,可以利用计算机运算速度快的特点,先搜索查找所有可能出现的情况,再根据题目条件从所有可能的情况中,删除那些不符合条件的解。
我们在对一些问题进行求解时,会发现有些问题很难找到规律,或者根本无规律可寻。对于这样的问题,可以利用计算机运算速度快的特点,先搜索查找所有可能出现的情况,再根据题目条件从所有可能的情况中,删除那些不符合条件的解。
在插入结点的过程中,首先要生成一个数据域为X的结点,然后插入在链表中。根据插入操作的逻辑定义,还需要修改结点的指针域。在删除结点的过程中,首先查找到要删除的结点,然后删除,再修改结点的指针域。
基本算法的实现采用类c语言定义相关的数据类型
(1) 图书结构体的定义如下:
typedef struct BookInfo /////图书结构
{int b_Code; ////图书编号
char b_Name[20]; /////名称
float b_price; /////价格
int b_person;///借阅人
int b_Total; /////总数
int b_Out; ///借出数
BookInfo* nextbook; //////下一类图书
}BookInfo;
(2)会员结构体的定义如下:
typedef struct MemberInfo ///会员结构
{long m_Code; /////会员编号
char m_Name[20]; ////会员名字
char m_Sex[20]; ///会员的性别
int m_Age;///会员的年龄
int l_Codes[6]; /////以借书的编号,最多5 MemberInfo* nextmember; ////下一会员
}MemberInfo;
(3)管理系统结构定义如下:
typedef struct System{ ///管理系统结构BookInfo* BI;
MemberInfo* MI;
int BookTotal; ////图书类库存量
int MemberTota; /////会员数量
}System;
各模块的伪码算法
1. 添加图书算法:
void AddBook(System* S){///添加图书
int Tempcode;
char sel;
BookInfo* p=S->BI;
BookInfo* t;
BookInfo* m;
int num;
do{ cout<<"输入图书编号:";
cin>>Tempcode;
if(m=SearchBook(S,Tempcode)){
cout<<"这类书以有库存.\n输入图书的入库量:"< cin>>num; m->b_Total+=num; } else{ t=(BookInfo*)malloc(sizeof(BookInfo)); t->b_Code=Tempcode; cout<<"输入图书的名称:"; cin>>t->b_Name; cout<<"输入图书价格"; cin>>t->b_price; cout<<"输入图书的入库量:"; cin>>t->b_Total; t->b_Out=0; t->nextbook=p->nextbook; p->nextbook=t; S->BookTotal++; } cout<<"添加完毕!"< return; }}while(1); } 2. 查询图书算法: BookInfo* SearchBook(System* S,int code){ BookInfo* bi=S->BI->nextbook; int bookcode; if(code==-1){ cout<<"请输入要查询的图书编号:"; cin>>bookcode; } else bookcode=code;