数据结构课程设计图书管理系统.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
数据结构课程设计图书管理系统 一 需求分析 该程序就是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。 此程序规定: (1) 管理员能够向系统中输入每种书得基本信息,包括书号、书名、作者、现存量与库 存量、借阅记录,并保存记录; (2) 用户(读者)能够按书号、书名、作者查询图书信息; (3) 管理员能够实现图书采编入库(新购入一本书,经分类与确定书号之后登记到图书账目中 去。如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书得现存量大于0,则借 出一本,登记借阅者得图书证号与归还期限)、归还(删除对借阅者得登记,改变该书得现 存量)、销毁(将图书从账目中删除)等操作。 二 概要设计 系统用到得抽象数据类型定义: 1、ADT LinearList{ 数据元素:D={ai|ai D0,i=1,2,…,n,n 0,D0为某一数据对象} 关系:S={<ai,ai+1>"ai,ai+1 D0,i=1,2,…,n—1} 基本操作: 1) InitList(L) 2) DestroyList(L) 3) ClearList(L) 4) EmptyList(L) 5) ListLength(L) 6) Locate(L,e) 7) GetData(L,i) 8) InsList(L,i,e) 9) DelList(L,i,&e) }ADT LinearList 2、ADT String{ 数据对象:D={ai|ai CharacterSet,i=1,2,…,n;n 0} 数据关系:R={〈ai-1,ai〉"ai-1,ai D,i=2,…,n;n 0} 基本操作: 1. StrAsign(S,chars) 2. StrInsert(S,pos,T) 3. StrDelete(S,pos,len) 4. StrCopy(S,T) 5. StrEmpty(S) 6. Strpare(S,T) 7. StrLength(S) 8. StrClear(S) 9. StrCat(S,T) (10)SubString(Sub,S,pos,len) (11)StrIndex(S,pos,T) (12)StrReplace(S,T,V) (13)StrDestroy(S) }ADT String 系统中得子程序与功能说明: InitBo(Book &boo);初始化图书信息 InitRe(lend &Lin);初始化借阅者信息 BinarySearch(Book boo,char SearchNum[]);二分法查找比较书号 Buy(Book &boo, char BuyNum[]);新书采编入库系统 Delete(Book &boo,char DeleteNum[]);清除图书信息系统 Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[]);借阅图书处理系统 Return(Book &boo,lend &Lin,char ReturnNum[],char BorrowerNum[]);归还图书系统 SearchByNum(Book &boo,char SeaNum[]);按书号查找系统 SearchByName(Book &boo);按书名查找系统 SearchByAuth(Book &boo);按作者查询系统 Menu();主菜单显示系统 Search();查询系统子菜单 main();主函数 系统程序功能结构图 三 详细设计 功能实现过程 bool BinarySearch(Book boo,char SearchNum[]) //二分法查找比较书号 { while(low〈=high) { 计算中间点; if(查找到书号相同得) { 返回值true; } if(查找书号不相同) 用二分法进一步进行查找; } if(库中没有所要查找得书) 返回值false; } void Buy(Book &boo, char BuyNum[])/*采编入库*/ { if(书库中有此书) { 总库存加1; 现库存加1; } if(书库中无此书) { for(i=total;i〉mid&&total;i- —)/*将新采购得书插在适合位置,保持有序*/ 空出插入位置; 输入新购书籍得相关信息:书号、书名、作者、出版社; boo[i]、next=NULL; total++;/*总量加1*/ } } void Delete(Book &boo,char DeleteNum[])/*清除图书信息*/ { if(书库中没有此书) 输出"无此书"; if(书库中有此书) { strcpy(连续两本书得相关信息); 现存量减1;库存量减1; } else 输出"此书已有借阅者, 数据结构课程设计的目标是构建一个图书管理系统,模拟实际图书馆的操作流程。系统主要包含以下几个核心功能:图书信息的录入、查询、借阅、归还、销毁等。为了实现这些功能,设计了两个关键的抽象数据类型(ADT):LinearList 和 String。 1. ADT LinearList 是线性列表,用于存储图书的基本信息。它包含一系列数据元素D,每个元素ai属于数据对象D0。线性列表提供了一系列基本操作,如初始化、销毁、清空、检查是否为空、获取长度、定位元素、获取或设置指定位置的数据、插入元素以及删除元素。这些操作为图书信息的管理和更新提供了基础。 2. ADT String 代表字符串,用于处理图书信息中的文本数据,如书名和作者。字符串的数据对象由字符集CharSet的元素组成。String的ADT提供了更丰富的操作,包括赋值、插入、删除、复制、判断是否为空、修剪、获取长度、清除、连接字符串、提取子串、查找子串的位置、替换子串以及销毁字符串。这些操作满足了文本信息处理的需求。 系统中涉及的子程序有: - InitBook 和 InitRead:分别用于初始化图书信息和借阅者信息。 - BinarySearch:使用二分查找算法来高效地搜索特定书号。 - Buy:处理新书的采编入库,根据书库情况增加总库存和现存量。 - Delete:清除图书信息,根据书号进行操作,并考虑是否有借阅者的情况。 - Borrow 和 Return:管理图书的借阅和归还,更新图书的现存量和借阅记录。 - SearchByNum、SearchByName 和 SearchByAuth:按照书号、书名和作者进行查询。 - Menu 和 Search:提供用户交互界面,展示主菜单和查询子菜单。 详细设计阶段,每个功能的实现过程被详细描述,例如BinarySearch通过不断缩小查找范围,直至找到目标书号或确定书库中不存在该书。Buy函数在书库中插入新书,确保数据有序,同时更新库存。Delete函数则要考虑图书是否被借阅,以避免错误删除。 这个数据结构课程设计通过使用线性列表和字符串ADT,结合图书馆管理的业务逻辑,创建了一个功能完善的图书管理系统。这个系统不仅可以帮助学生理解数据结构在实际问题中的应用,还能锻炼他们的编程和系统设计能力。
剩余16页未读,继续阅读
- 粉丝: 106
- 资源: 9354
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助