数据结构课程设计--图书检索系统

合集下载

数据结构课程设计-图书管理系统

数据结构课程设计-图书管理系统

用C++语言实现图书管理系统摘要图书管理系统主要是对图书的录入、读者借阅、读者归还等功能进行实现.本课程设计的系统开发平台为Windows XP,程序设计语言为C++,程序运行平台为Windws98/2000/XP/Seven。

在程序设计中采用了B-树方法提高书籍的查找速度。

关键词程序设计;图书管理系统;C++;数据结构;B-树1 索引1.1课程设计目的设计一个小型的图书管理系统,可以实现新增图书,读者借阅,读者归还等功能。

1。

2。

系统性能要求能较快的查到所要查找的图书;能准确统计当前每种书的库存,以确定此书是否可以外借;并且对外借的图书进行管理,记录借出时间、应还时间等。

1.3。

功能的实现1)新书入库:确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;2) 借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;3)归还:注销对借阅者的登记,改变该书的现存量.2 系统详细设计及实现1.所用的知识体系在整个程序的设计过程当中,用到了C++的一些基础知识,面向对象的思想和结构化的程序设计思想.数据结构的B—树建立索引,用索引提高查找的效率等。

2。

系统功能组成框图3 . 系统功能模块划分4。

流程图 4。

1录入图书信息4.2借阅图书4。

3归还图书输入图书和读者信息处理归还图书功能,清读者的借阅记录,将图书的在库数加一5 功能实现5.1 运行程序的主界面图5—1 操作界面5。

2 新书入库功能的操作界面图5—2新书入库5.3 查询数据的界面图5-3查询书籍5。

4 查询所有书籍的界面图 5—4显示库存5.5 图书借阅的界面图5-5借阅书籍5。

6 还书的界面图5—6还书3 参考文献[1]谭浩强C语言设计(第三版)清华大学出版社[2] 严蔚敏吴伟民数据结构(C语言版)清华大学出版社[3] 谭浩强 C++ 程序设计清华大学出版社[4]参考网址/manual/zh/function。

数据结构课程设计图书管理系统

数据结构课程设计图书管理系统

数据结构课程设计图书管理系统在当今数字化的时代,图书管理系统对于图书馆的高效运作和管理至关重要。

作为数据结构课程设计的一部分,设计一个功能齐全、操作便捷的图书管理系统,不仅能够巩固我们所学的数据结构知识,还能提高我们解决实际问题的能力。

一、需求分析一个完善的图书管理系统应具备以下基本功能:1、图书信息管理:包括图书的书名、作者、出版社、出版年份、ISBN 号、分类号、库存数量等信息的录入、修改、查询和删除。

2、读者信息管理:记录读者的姓名、性别、身份证号、联系电话、借阅证号、借阅记录等,同时支持读者信息的增删改查。

3、借阅管理:实现读者的借书、还书操作,能够记录借阅日期和应还日期,并自动计算逾期天数和罚款金额。

4、图书查询:提供多种查询方式,如按书名、作者、出版社、分类号等进行精确或模糊查询,以便读者快速找到所需图书。

5、统计分析:能够统计图书的借阅次数、热门图书排行、读者借阅情况等,为图书馆的管理决策提供数据支持。

二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和管理图书和读者的信息。

1、图书信息和读者信息可以使用结构体数组来存储。

结构体可以包含图书或读者的各项属性,数组则方便进行批量操作和遍历。

2、对于图书的分类和索引,可以使用二叉查找树或哈希表。

二叉查找树可以保证有序性,便于中序遍历获取排序后的图书信息;哈希表则能够快速定位特定的图书或读者,提高查询效率。

3、借阅记录可以使用链表来存储,便于动态地添加和删除借阅信息。

三、系统功能模块设计1、登录模块系统管理员和读者分别拥有不同的登录入口和权限。

管理员可以进行所有操作,读者只能进行查询和借阅相关操作。

2、图书管理模块图书录入:管理员输入图书的详细信息,将其添加到图书信息数组中。

图书修改:根据图书的 ISBN 号或其他唯一标识,修改图书的相关信息。

图书删除:按照指定条件删除图书记录。

图书查询:提供多种查询条件,快速检索图书信息。

数据结构课程设计———图书馆管理系统

数据结构课程设计———图书馆管理系统

数据库原理及应用——图书馆管理系统数据库设计一.需求分析需求分析的任务是调查应用领域,对应用领域中各应用的信息要求和操作要求进行详细分析,形成需求分析说明书。

重点是调查,收集与分析用户在数据管理中的信息要求、处理要求、数据的安全性与完整性要求。

功能模块设计将图书管理系统业务分为四个大的方面:学生数据管理、图书征订管理、藏书管理、图书流通管理。

功能模块图功能模块分析办卡、挂失、注销学生在图书馆中必须持卡办理一切业务,新生必须首先办理借书卡,当借书卡丢失时需办理挂失业务,毕业生或中途退学者必须办理注销卡业务,以防止借书卡的流失。

查询、借书、环书、注销学生在图书馆中持卡可以进行以下业务:查询自己借书状态,借书,还书,当所借书籍丢失时需办理注销业务。

图书查询、缺书登记学生需要查询自己所需书籍时,若馆中有则直接借书;若馆中没有,可以进行缺书登记。

数据流程分析与设计数据流程图数据字典的建立数据字典数据字典是我在数据流程图中选取的一些中层数据流,我把我所抽去的数据列出以下表来。

数据项二.概念结构设计E-R图根据前面的需求分析,可以将图书管理系统数据库实体划分为图书信息实体集、学生信息实体集、馆藏地实体集、借书卡信息实体集、缺书信息实体集,各实体集里还包含不同的实体以下包括所有的实体。

学生:{学号,姓名,性别,年级,学院,专业,班级}图书:{条码号,书名,作者,出版社,定价,馆藏地编号,图书状态,借阅状态}馆藏地:{馆藏地编号,馆藏地名称}借书卡:{卡号,卡状态,学号}缺书:{书名,作者,出版社,定价,搜索频率}学生日常事务信息:{卡号,时间,欠书状态,超时罚款} E-R图三.逻辑结构设计概念模型向关系模型的转变将E-R图转换为关系模型,即将实体、实体的属性和实体之间的联系转化为关系模式,为应用程序建立专门的视图而不必要应用程序直接访问数据表关系模式的设计StudentBookJieyue(应还时间—借书时间)等于一个月PlaceRountin对时间的检查,当借还书中的还书时间小于应还时间时,超时罚款为零;当超过应还时间未还书时,开始计费,超时罚款=(时间-应还时间)*0.01;当借还书中的还书时间确定时,超时罚款=(还书时间-应还时间)*0.01。

数据结构课程设计图书管理系统

数据结构课程设计图书管理系统

数据结构课程设计图书管理系统设计图书管理系统一、引言图书管理系统是为了方便图书馆进行图书的管理、借阅和归还而开发的软件系统。

本文将详细介绍设计一个图书管理系统所需的标准格式文本。

二、系统概述本图书管理系统旨在提供一个高效、便捷的图书管理平台,帮助图书馆实现图书的分类、借阅、归还、查询等功能。

系统主要包括以下模块:图书管理模块、借阅管理模块、读者管理模块、系统管理模块。

三、图书管理模块1. 图书录入功能a. 系统管理员可以录入新书籍的相关信息,包括书名、作者、出版社、ISBN 号、价格等。

b. 系统应提供图书信息的校验功能,确保录入的图书信息准确无误。

c. 系统应提供图书封面图片上传功能,以便读者更直观地了解图书。

2. 图书查询功能a. 读者和管理员可以根据关键字、作者、出版社等条件进行图书查询。

b. 系统应提供模糊查询和精确查询两种方式,以满足不同用户的需求。

3. 图书借阅功能a. 读者可以通过系统查询图书的借阅情况,并选择借阅。

b. 系统应记录借阅信息,包括借阅时间、归还时间等。

4. 图书归还功能a. 读者在归还图书时,系统应自动计算借阅天数,并生成相应的借阅费用。

b. 系统应提供归还图书的操作记录,以便管理员查看。

四、借阅管理模块1. 借阅记录查询功能a. 管理员可以查询所有借阅记录,并根据条件进行筛选。

b. 系统应提供按照借阅时间、归还时间等进行排序的功能,方便管理员进行统计分析。

2. 借阅统计功能a. 系统应提供借阅数量、借阅率等统计功能,方便管理员对图书馆的借阅情况进行分析。

五、读者管理模块1. 读者注册功能a. 读者可以通过系统进行注册,并填写个人信息。

b. 系统应提供校验功能,确保读者信息的准确性。

2. 读者信息修改功能a. 读者可以通过系统修改个人信息,如联系方式、密码等。

3. 读者信息查询功能a. 读者可以查询自己的借阅记录、借阅情况等。

六、系统管理模块1. 管理员管理功能a. 系统管理员可以管理其他管理员的账号和权限。

数据结构课程设计——图书管理信息系统

数据结构课程设计——图书管理信息系统

图书管理信息系统一、课程设计题目:图书管理信息系统二、课程设计内容:实现图书管理信息系统的设计。

这是一个数据结构的综合使用,涉及的知识比较全面,特别是对文件的使用更为全面。

进入系统后,操作员可进行系统维护、读者管理、图书管理、图书流通、退出系统等操作。

系统维护:有“初始化”和“读盘”两个重要操作。

第一次开始运行时,必须选择“初始化”,使有关文件指针、计数器等初始化为0;而在以后的每次操作开始时,选择“读盘”,将保存过的相关图书信息磁盘文件读入,以便进行各类操作。

读者管理:可实现读者信息的追加一项输入。

需要输入读者号、读者名、可借书数。

输入“y”可连续输入信息,若输入“n”则结束输入,退出读者管理。

图书管理:有“图书信息输入”和“图书信息查询”两个重要操作。

若选“图书信息输入”,就进入相关子模块,在输入信息的同时建立相应的索引及索引文件和索引链头文件,输入书号、书名、作者名、出版社、分类号、藏书量等信息,根据提示输入“y”实现连续输入,若输入“n”则结束输入,退出图书管理;有了图书信息数据之后,就可以进行图书信息的查询以及图书借阅等操作了。

若选“图书信息查询”,可根据提示按书号、书名、作者、出版社等进行查询,系统会将查询结果输出。

图书流通:有“借书处理”和“还书处理”两个重要操作。

当选择“借书处理”,系统接受输入信息后,首先查询读者文件。

若没查到,显示“非法读者!”,若查到,则再检查该读者书是否已借满,如果未借满,则继续检查图书文件;否则显示“书已借满!”。

检查图书文件如发现书号不存在或书已借出,都会提示读者“非法书号!”或“书已借出”,否则,进行借出处理,修改借阅文件、读者文件以及图书主文件的相关数据项,并显示“借书成功!”。

当选择“还书处理”,系统在接受输入信息之后,首先用书号查询借还书文件,若找到,则填入还书日期,然后再用书号查询图书主文件,修改借出数,用读者号查找读者文件,修改读者的借书数,而后显示“还书成功!”,否则显示“非法书号!”并返回主控菜单。

数据结构检索课程设计

数据结构检索课程设计

数据结构检索课程设计一、课程目标知识目标:1. 让学生掌握数据结构中常见检索算法的基本原理和实现方法,如顺序检索、二分检索等。

2. 使学生了解不同检索算法的优缺点及适用场景,能够根据实际问题选择合适的检索方法。

3. 帮助学生理解检索算法在解决实际问题时的重要性,培养他们在编程实践中运用数据结构进行问题求解的能力。

技能目标:1. 培养学生运用所学检索算法编写程序解决问题的能力,能够针对实际问题设计合适的检索方法并进行代码实现。

2. 提高学生在编程过程中对算法复杂度的分析能力,使其能够评估检索算法的效率并进行优化。

3. 培养学生通过团队协作和沟通交流,共同解决问题,提高团队协作能力。

情感态度价值观目标:1. 培养学生对数据结构检索算法的兴趣,激发他们主动探索和学习相关知识的热情。

2. 培养学生在面对问题时具备积极思考、勇于尝试的精神,使其在解决复杂问题时保持耐心和毅力。

3. 培养学生具备良好的编程习惯和诚信意识,在编程实践中遵循学术道德,尊重他人成果。

本课程针对高年级学生,课程性质为理论与实践相结合。

在教学过程中,注重培养学生的实际操作能力和团队协作精神,使他们在掌握检索算法知识的同时,能够将其应用于实际问题解决。

课程目标明确、具体,可衡量,便于教学设计和评估。

二、教学内容1. 数据结构基础回顾:简要介绍线性表、树等基本数据结构,为学生学习检索算法打下基础。

2. 顺序检索法:讲解顺序检索法的原理、实现方法及应用场景,结合实例进行分析。

3. 二分检索法:介绍二分检索法的原理、实现方法以及适用条件,通过实例演示提高学生理解。

4. 效率分析:分析比较顺序检索和二分检索的算法复杂度,讨论如何优化检索算法。

5. 应用案例:结合实际问题,设计检索算法的应用案例,指导学生进行编程实践。

6. 检索算法拓展:介绍其他检索算法,如哈希检索、索引检索等,拓展学生知识面。

教学内容参考教材以下章节:1. 第三章 数据结构基础2. 第四章 线性表3. 第五章 树4. 第七章 检索算法教学进度安排:1. 第1周:数据结构基础回顾,顺序检索法讲解及实践2. 第2周:二分检索法讲解及实践,效率分析3. 第3周:应用案例分析与编程实践,检索算法拓展教学内容科学、系统,紧密结合教材,注重理论与实践相结合,旨在提高学生对检索算法的理解和应用能力。

数据结构课程设计---图书管理系统

数据结构课程设计---图书管理系统

《数据结构》课程设计报告(图书管理系统)目录一.需求分析 (3)二.概要设计 (3)三.详细设计 (4)四.调试分析 (6)五.用户使用说明 (6)六.测试结果 (7)七.附录:带注释的源代码 (8)一.需求分析大学的图书馆藏书是非常庞大的,原始的人工借书也是非常麻烦的,因此用一种自动系统来管理图书是非常有必要的,所以设计一个图书管理系统,要能够自如管理借书,还书,以及注册,注销书本,这样就能节省很多资源,提高效率。

明确规定:1.每种书的登记内容包括书号、书名、著作者、现存量和库存量;2.对书号建立索引表(线性表)以提高查找效率;3.系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。

二.概要设计1.本题中用到了以下函数和结构体:本程序首先命名头文件:#include <stdio.h>#include <stdlib.h>#include <conio.h>以实现对各种函数的调用以及可能用到的各种循环。

用“struct BOOK”结构体,用来存放书籍以及借书信息;并用到“void page_title”的页头函数,通过“void book_out”,“void book_in”来实现对书本的借出以及还书,定义“search_book”来实现对书本各种信息的搜索任务,“void book_add”实现对书本的购进时的注册,用“void book_del”实现对书本的注销。

最后通过“goto menu”语句跳出整个循环语句,在各种操作做完后能够返回到主菜单。

用到goto语句原则上一般不符合结构化一些规定,但是此题中大大提高了效率,因此我采用了。

2. 主程序的流程及各程序模块之间的层次:本程序运用到的是用数组作为线性表的一种代替方式,实现各种查询,对各种数据的管理,运用线性表的话可能会更加简便,但是我在用了数组代替后发现其实这样更容易看懂。

数据结构课程设计--图书管理系统

数据结构课程设计--图书管理系统
关键词Visual C++ 6.0;图书管理;数据结构
1绪论
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。
基于这此问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
2系统功能介绍
2.1系统设计
本次设计的图书信息管理系统采用数据结构语言模式,通过内部网络处理和信息交换,开发结构、解决数据共享问题。主要用于对图书馆日常工作的管理,主要任务是用计算机图书各种信息进行日常的管理,如录入、列表、查询、借阅、归还图书的管理等。本系统实现了图书馆的信息自动化管理,完成了图书管理系统的基本功能,该系统主要包括管理员子系统和书籍管理子系统退出子系统两个部分。其书籍管理子系统的主要功能是用于书籍信息的管理,如新书的入库、图书查询、借阅图书、归还图书等。
3.1添加图书
该模块主要实现对新入库的图书进行信息录入,录入信息包括:图书编号、名称、状态、借阅次数等。
运行界面如图2所示,运行成功提示如图 :
图3-1添加图书
3.2列表图书
该模块主要实现对所有登记的图书进行信息列表。
运行界面如图3.2所示,运行成功提示如图:
图3-2列表图书
3.3查询图书
该模块实现对图书的信息查询功能,查询方式包括:“按名查找”、“按类型查找”。

数据结构课程设计-图书管理系统

数据结构课程设计-图书管理系统

一、需求分析1. 图书管理系统中图书管理模块包括图书类型定义:书号、现存量、总存量,出版时间为整型,定价为浮点型,书名、著者名为字符型,借阅指针、预约指针为读者类型;读者类型定义:证号为整型、姓名为字符型,另外借阅类型和预约类型组合成其中的共用体类型。

B树(2-3树)类型定义:关键字个数和关键字数组为整型、另外还有指向双亲的指针、指向子树的指针、记录单元指针;B树查找结果类型定义:节点指针、关键字序号和查找标志变量为整型。

2. 演示程序以用户和计算机的对话方式进行,在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在后面。

该演示系统,没有使用文件,全部数据放在内存存放。

四项基本业务都以书号为关键字进行的,采用了B树(2-3树)对书号建立索引,以提高效率。

3.图书管理系统实现功能:①采编入库:新书购入,将书号、书名、著者、册数、出版时间添加入图书账目中去,如果这种书在帐中已有,则只将总库存量增加,每新增一个书号则以凹入表的形式显示B树现状。

②清除库存:实现某本书的全部信息删除操作,每清除一个书号则已以凹入表的形式显示B树现状。

③图书借阅:如果书的库存量大于零时则执行出借,登记借阅者的图书证号和姓名,系统自动抓取当前借阅时间和计算归还时间。

④图书预约:如果某书库存为零,则记录预约者姓名和证号,系统自动抓取当前预约时间和取书时间。

⑤图书归还:注销借阅者信息,并改变该书的现存量。

⑥作者专区:输入作者名字,系统将查找相应作者全部著作并显示出来。

⑦图书信息:可以根据书号查阅此书基本信息、借阅信息和预约信息,亦可以查找全部图书基本信息。

二、概要设计1.抽象数据类型B树定义:ADT BTree{数据对象:D是具有相同特性的数据元素的集合。

各个数据元素均含有类型相同,可惟一标识数据元素的关键字。

数据关系:数据元素同属于一个集合并且:一棵m阶的B树,或为空,或为满足下列特性的m叉树:树中每个结点至多有m棵子树;若根结点不是叶子结点,则至少有两棵子树;除根之外的所有非终端结点至少有m/2(取上限)棵子树;所有的非终端结点包含下列信息数据:(n,A0,K1,A1,K2,A2,K3,……,Kn,An)其中:Ki(i=1,2,……n)为关键字,且Ki<Ki+1(i=1,2,……n-1);Ai(i=0,……n)为指向子树根结点的指针,且指针Ai-1所指子树中所有结点的关键字均小于Ki(i=1,2,……n),An所指子树中所有结点的关键字均大于Kn,n(m/2(取上限)-1<=n<=m-1)为关键字的个数基本操作:SearchBTree(T ,key);初始条件:B树T存在,key为和关键字类型相同的给定值。

数据结构课程设计图书管理系统

数据结构课程设计图书管理系统

数据结构课程设计图书管理系统一需求分析该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。

此程序规定:(1) 管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;(2) 用户(读者)能够按书号、书名、作者查询图书信息;(3) 管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。

如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作。

二概要设计系统用到的抽象数据类型定义:1、ADT LinearList{数据元素:D={a i|a i∈D0,i=1,2,…,n,n≥0,D0为某一数据对象}关系:S={<a i,a i+1>|a i,a i+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 LinearList2、ADT String{数据对象:D={a i|a i∈CharacterSet,i=1,2,…,n;n≧0}数据关系:R={<a i-1,a i>|a i-1,a i∈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)StrCompare(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 输出“此书已有借阅者,无法删除!”;}void Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[])/*借阅图书信息*/ {if(没有找到此书) 输出“书库中无此书!”;if(书库中有此书){借出一本书后,该书的现存量减1;并在借阅记录链表中插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录。

数据结构课程设计报告-图书馆管理系统

数据结构课程设计报告-图书馆管理系统

广东某某学院《数据结构课程设计》题目:图书馆管理系统学号:姓名:年级:学院:专业:指导教师:目录一、问题描述与基本要求1.1问题描述1.2基本要求二、数据结构的设计2.1数据结构的选择三、软件模块结构图3.1大体模块关系图3.2各模块具体分析四、程序流程图五、源程序六、调试分析6.1程序错误修改及完善的过程6.2最终程序所有功能运行结果6.3测试数据七、用户使用手册八、心得体会一、问题描述与基本要求1.1问题描述设计一个计算机管理系统完成图书管理基本业务。

1.2基本要求1、每种书的登记内容包括书的编号、书名、著作者、现存量、库存量、书证号和归还日期。

2、建立空链表,以提高查找效率3、系统功能如下:图书入库:新购一种书,确定书号后,登记到图书账目表中,如果表中已有,则只将库存量增加;借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;归还:注销对借阅者的登记,改变该书的现存量。

二、数据结构设计2.1数据结构的选择用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能。

2.2单链表的定义先定义单链表结点的数据域,数据域包括书的编号、书名、作者、现存量、库存量、书证号和归还日期;链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。

以下为单链表的相关定义:typedef struct bookdata//定义结点数据域{int id;//书的编号char title[15];//书名char author[6];//作者int count;//现存量int stock;//库存量char figure[20];//书证号char deadline[10];//归还时期}bookdata;typedef struct node//定义链表结点{bookdata Data;//结点数据域struct node *next;//结点链域}booknode;typedef booknode *booklist;//指向链表结点的指针2.3重要函数的定义及说明1、void initlist(booklist &l)//建立空链表2、void insertlist(booklist &l)//插入链表结点,实现登陆功能(需要输入书的编号,以确定登陆书名)3、void deletelist(linklist &l)//删除链表结点,实现删除功能(需要输入书的编号,以确定删除的书名)4、void find(booklist l)//查找书的编码,实现查找功能(需要输入书的编号,以确定查找的书名)5、void lend(booklist l)//借阅图书,实现借阅功能(需要输入书的编号,以确定借阅的书名)6、void dele(booklist l)//删除录入借书的信息,实现删除录入借书的功能(需要输入书的编号,以确定删除录入的书名)7、void add(booklist l)//查找有没有相同的书籍8、void begin()//开始进入图书管理系统9、void Introduction()//介绍图书管理系统的功能10、void About()//图书管理系统的相关开发内容11、void welcome()//欢迎进入图书管理系统以下为重要函数的定义;void initlist(booknode *&l)//建立空链表{l=new booknode;l->next=NULL;}void insert(booknode *&l)//图书馆添加书籍(定刚开始图书馆零本书){booknode *q;booknode *p=l;int k=1;for(;p->next!=NULL;p->next){}//移动指针找到最后一个节点while(k==1){q=new booknode;cout<<"请输入书的编号(书号为0结束):"<<endl;cin>>q->id;if(p->id!=0){cout<<"请输入书名"<<endl;cin>>q->title;cout<<"请输入作者"<<endl;cin>>q->author;cout<<"请输入图书数量"<<endl;cin>>q->stock;q->next=p->next;p->next=q;}cout<<"请输入是否继续(1.继续/0.退出)"<<endl;cin>>k;}}void find(booknode *&l)//查找书的编码{int x,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>x;for(;p!=NULL;p=p->next){if(p->id==x){cout<<"查找成功!"<<endl;cout<<"此书的名称为:"<<p->title<<endl;cout<<"此书的作者是:"<<p->author<<endl;cout<<"此书的数量为:"<<p->stock<<endl;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void lend(booknode *&l)//借阅图书{booknode *p=l;booknode *p2;p2=new booknode;int num,mark=0;char bookname[10];cout<<"请输入要查找书的名称"<<endl;cin>>bookname;for(;p!=NULL;p=p->next){if(strcmp(p->title,bookname)==0){cout<<"查找成功"<<endl;cout<<"请输入书证号"<<endl;cin>>p2->figure;cout<<"请输入归还日期"<<endl;cin>>p2->deadline;num=p->count;num=num-1;p->count=num;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void dele(booknode *&l)//删除录入借书的信息{booknode *p=l,*q;char stuname[15];cout<<"请输入书证号"<<endl;cin>>stuname[15];while(p!=NULL){if(strcmp(p->figure,stuname)==0){q->next=p->next;delete p;p=q->next;//p=p->next;}}//q=p->next;//p->next=q->next;cout<<"注销成功"<<endl;}/*void add(booknode *&l)//查找有没有相同的书籍,{int r,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>r;while(p!=NULL){if(p->id=r)//表示有同种书就只增加库存量{int number=0,o;number=p->stock;cout<<"请输入添加书的数量"<<endl;cin>>o;number=number+o;p->stock=number;cout<<"该书的库存量为:"<<endl;cout<<p->stock;p=p->next;mark=1;}else//表示没有同种书就开辟空间存入信息{booknode *p1;p1=new booknode;cout<<"请输入书的编号"<<endl;cin>>p1->id;cout<<"请输入作者"<<endl;cin>>p1->author;cout<<"请输入书的数量"<<endl;cin>>p1->count;p1->next=p->next;p->next=p1;}}}*/三、软件模块结构图3.2各模块具体分析链表插入模块具体分析如下:链表删除模块具体分析如下:主函数链表插入模块链表删除模块 链表查找、借阅、模块链表显示模块InsertList(L) scanf( )p ->book.nodeP ->P ->book.authorP ->book.stockDeleteList(L)scanf( )s,stuname链表查找、借阅模块链表输出模块具体分析如下:Search(L) scanf( )i,booknodem,nP ->book.stockp -> P ->book.authoP2->figure P2->deadline Booknode(L)scanf( )p ->book.node,P -> P ->book.author,P ->book.count四、程序流程图输入5,谢谢使用输入4,删除借阅图书信息输入3,借阅图书输入2,查找图书信息输入6,退出管理系统输入1,录入图书信息结束D4C3BA 21输入数字,选择功能功能表与编号选择1-6InitList(B)主函数main( )开始1—>A4—>D五源程序#include<iostream>#include<string>#include<string.h>using namespace std;typedef struct node//定义链表节点{int id;//书的编号char title[10];//书名char author[10];//作者int count;//现存量int stock;//库存量char figure[20];//书证号char deadline[10];//归还时期struct node *next;}booknode;//typedef booknode *booklist;void initlist(booknode *&l)//建立空链表{l=new booknode;l->next=NULL;}void insert(booknode *&l)//图书馆添加书籍(定刚开始图书馆零本书){booknode *q;booknode *p=l;int k=1;for(;p->next!=NULL;p->next){}//移动指针找到最后一个节点while(k==1){q=new booknode;cout<<"请输入书的编号(书号为0结束):"<<endl;cin>>q->id;if(p->id!=0){cout<<"请输入书名"<<endl;cin>>q->title;cout<<"请输入作者"<<endl;cin>>q->author;cout<<"请输入图书数量"<<endl;cin>>q->stock;q->next=p->next;p->next=q;}cout<<"请输入是否继续(1.继续/0.退出)"<<endl;cin>>k;}}void find(booknode *&l)//查找书的编码{int x,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>x;for(;p!=NULL;p=p->next){if(p->id==x){cout<<"查找成功!"<<endl;cout<<"此书的名称为:"<<p->title<<endl;cout<<"此书的作者是:"<<p->author<<endl;cout<<"此书的数量为:"<<p->stock<<endl;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void lend(booknode *&l)//借阅图书{booknode *p=l;booknode *p2;p2=new booknode;int num,mark=0;char bookname[10];cout<<"请输入要查找书的名称"<<endl;cin>>bookname;for(;p!=NULL;p=p->next){if(strcmp(p->title,bookname)==0){cout<<"查找成功"<<endl;cout<<"请输入书证号"<<endl;cin>>p2->figure;cout<<"请输入归还日期"<<endl;cin>>p2->deadline;num=p->count;num=num-1;p->count=num;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void dele(booknode *&l)//删除录入借书的信息{booknode *p=l,*q;char stuname[15];cout<<"请输入书证号"<<endl;cin>>stuname[15];while(p!=NULL){if(strcmp(p->figure,stuname)==0){q->next=p->next;delete p;p=q->next;//p=p->next;}}//q=p->next;//p->next=q->next;cout<<"注销成功"<<endl;}/*void add(booknode *&l)//查找有没有相同的书籍,{int r,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>r;while(p!=NULL){if(p->id=r)//表示有同种书就只增加库存量{int number=0,o;number=p->stock;cout<<"请输入添加书的数量"<<endl;cin>>o;number=number+o;p->stock=number;cout<<"该书的库存量为:"<<endl;cout<<p->stock;p=p->next;mark=1;}else//表示没有同种书就开辟空间存入信息{booknode *p1;p1=new booknode;cout<<"请输入书的编号"<<endl;cin>>p1->id;cout<<"请输入作者"<<endl;cin>>p1->author;cout<<"请输入书的数量"<<endl;cin>>p1->count;p1->next=p->next;p->next=p1;}}}*/void begin(){booknode *l;initlist(l);int k;do{cout<<"******************************************"<<endl;cout<<" 欢迎您使用图书管理系统"<<endl;cout<<" 请选择"<<endl;cout<<"1. 添加图书信息"<<endl;cout<<"2. 查找图书信息"<<endl;cout<<"3. 借阅图书"<<endl;cout<<"4. 删除借阅图书信息"<<endl;cout<<"5. 增加图书"<<endl;cout<<"6. 退出系统"<<endl;cout<<"请选择"<<endl;cin>>k;switch(k){case 1:insert(l);break;case 2:find(l);break;case 3:lend(l);break;case 4:dele(l);break;case 5://add(l);//break;case 0:cout<<"******谢谢使用,再见******"<<endl;exit(0);default:cout<<"输入有误!!"<<endl;break;}}while(k!=0);}void Introduction(){cout<<" 系统介绍"<<endl;cout<<"****************************"<<endl;cout<<" 本系统主要实现图书信息"<<endl;cout<<" 增加添加查找借阅显示"<<endl;cout<<"****************************"<<endl;}void About(){cout<<" 开发人员"<<endl;cout<<"****************************"<<endl;cout<<"********** 冯翔**********"<<endl;cout<<"********** 李建超**********"<<endl;cout<<"********** 陈宥君**********"<<endl;cout<<"********** 袁美琪**********"<<endl;cout<<"****************************"<<endl;}void welcome(){while(1){int y;cout<<"************************************************"<<endl;cout<<" 欢迎使用图书管理系统"<<endl;cout<<"1. 管理系统"<<endl;cout<<"2. 开发人员"<<endl;cout<<"3. 系统简介"<<endl;cout<<"4. 退出"<<endl;cout<<"************************************************"<<endl;cin>>y;switch(y){case 1:begin();break;case 2:About();break;case 3:Introduction();break;case 4:exit(0);default:cout<<"输入有误"<<endl;system("pause");}}}int main(){welcome();return 0;}6.1程序错误修改及完善的过程我这次的课程设计题目是根据我们小组选择的,当看到这个题目时,我觉得还算比较简单,因为我之前数据结构实验就做过单链表的插入、删除、查找、输出,而这次活期图书管理系统要求的录入、查找、借阅、归还、库存量信息等功能,即可用单链表的相关功能函数来实现,于是我修改了之前写过的单链表的一些函数,以满足这次题目的要求,但在实验过程中仍出现了一些错误。

数据结构图书管理系统课程设计报告

数据结构图书管理系统课程设计报告

数据结构图书管理系统课程设计报告一、设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务。

【基本要求】(1) 每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2) 对书号建立索引表(线性表)以提高查找效率;(3) 系统主要功能如下:①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;③归还:注销对借阅者的登记,改变该书的现存量。

二、小组分工小组成员:小组分工:图书初始化、新书入库、登记读者信息、文件保存借书系统、还书系统图书信息查询、读者信息查询三、需求分析图书管理系统共需要八个模块,分别是1图书初始化、2新书入库、3添加读者信息、4借书模块、5还书模块、6查询图书信息、7查询读者信息、8退出。

我负责其中的四个模块,如下所示:1)图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。

2)新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。

3)添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4)退出和文件保存退出读书管理系统并保存读者和图书信息。

四、概要设计图书信息和读者信息都采用结构体类型保存。

图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点的指针。

读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针。

所有图书和读者都分别以链表的形式存储,并以编号为唯一主键。

采用链表形式便于数据的添加与删改。

主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。

五、详细设计数据结构的定义:图书信息:typedef struct book{char book_num[10];char book_name[20];char book_writer[10];int book_xy;int book_kc;struct book *next;}BK;读者信息:typedef struct reader{char reader_num[10];char reader_name[10];int right;BO borrow[Max];struct reader *next;}RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息。

数据结构课程设计——图书管理信息系统

数据结构课程设计——图书管理信息系统

图书管理信息系统一、课程设计题目:图书管理信息系统二、课程设计内容:实现图书管理信息系统的设计。

这是一个数据结构的综合使用,涉及的知识比较全面,特别是对文件的使用更为全面。

进入系统后,操作员可进行系统维护、读者管理、图书管理、图书流通、退出系统等操作。

系统维护:有“初始化”和“读盘”两个重要操作。

第一次开始运行时,必须选择“初始化”,使有关文件指针、计数器等初始化为0;而在以后的每次操作开始时,选择“读盘”,将保存过的相关图书信息磁盘文件读入,以便进行各类操作。

读者管理:可实现读者信息的追加一项输入。

需要输入读者号、读者名、可借书数。

输入“y”可连续输入信息,若输入“n”则结束输入,退出读者管理。

图书管理:有“图书信息输入”和“图书信息查询”两个重要操作。

若选“图书信息输入”,就进入相关子模块,在输入信息的同时建立相应的索引及索引文件和索引链头文件,输入书号、书名、作者名、出版社、分类号、藏书量等信息,根据提示输入“y”实现连续输入,若输入“n”则结束输入,退出图书管理;有了图书信息数据之后,就可以进行图书信息的查询以及图书借阅等操作了。

若选“图书信息查询”,可根据提示按书号、书名、作者、出版社等进行查询,系统会将查询结果输出。

图书流通:有“借书处理”和“还书处理”两个重要操作。

当选择“借书处理”,系统接受输入信息后,首先查询读者文件。

若没查到,显示“非法读者!”,若查到,则再检查该读者书是否已借满,如果未借满,则继续检查图书文件;否则显示“书已借满!”。

检查图书文件如发现书号不存在或书已借出,都会提示读者“非法书号!”或“书已借出”,否则,进行借出处理,修改借阅文件、读者文件以及图书主文件的相关数据项,并显示“借书成功!”。

当选择“还书处理”,系统在接受输入信息之后,首先用书号查询借还书文件,若找到,则填入还书日期,然后再用书号查询图书主文件,修改借出数,用读者号查找读者文件,修改读者的借书数,而后显示“还书成功!”,否则显示“非法书号!”并返回主控菜单。

数据结构课程设计-图书管理

数据结构课程设计-图书管理

数据结构课程设计-图书管理---1. 引言本文档是数据结构课程设计的项目文档,主题为图书管理系统。

该系统旨在通过使用数据结构和算法,实现对图书的管理和查询功能。

本文档将详细说明系统的需求分析、系统设计、开发和测试。

2. 需求分析在这一章节中,我们将对图书管理系统的需求进行详细分析。

2.1 功能需求本系统主要包含以下功能:- 图书录入:管理员可以通过系统添加新的图书信息。

- 图书查询:用户可以根据不同的条件查询图书信息。

- 图书借阅:用户可以借阅图书,并进行相应的借阅和归还操作。

- 图书管理:管理员可以对图书进行管理,如修改图书信息、删除图书等。

- 用户管理:管理员可以管理系统用户的信息,包括添加新用户、删除用户等。

2.2 性能需求系统需要保证以下性能指标:- 响应时间:系统对用户的请求需要在合理的时间范围内进行响应,尽量避免长时间等待。

- 并发能力:系统需要支持多个用户同时使用,同时对于查询和借阅等高频操作需要有良好的并发处理能力。

- 数据存储和管理:系统需要能够高效地存储和管理大量的图书信息和用户信息。

2.3 界面需求系统的用户界面应该简洁、直观,易于使用,并且具有良好的用户体验。

界面设计需要考虑到不同用户的需求,并提供相应的功能入口和导航。

3. 系统设计在这一章节中,我们将对图书管理系统进行整体设计和模块划分。

3.1 总体架构图书管理系统的总体架构包括以下模块:- 用户管理模块:负责用户的注册、登录以及个人信息管理。

- 图书管理模块:负责图书的录入、查询、借阅和管理。

- 数据库管理模块:负责与数据库的交互,包括数据的读取和存储。

3.2 模块设计在本节中,我们将对各个模块进行详细设计。

3.2.1 用户管理模块该模块包括以下功能:- 注册:用户可以通过用户名和密码进行注册。

- 登录:注册成功后,用户可以使用用户名和密码进行登录。

- 个人信息管理:登录后,用户可以修改个人信息,包括用户名、密码、联系方式等。

数据结构课程设计报告正式版--图书信息查询

数据结构课程设计报告正式版--图书信息查询

沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:图书信息查找院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:丁一军沈阳航空航天大学课程设计报告目录1 课程设计介绍 (2)1.1课程设计内容 (2)1.2课程设计要求 (2)2 课程设计原理 (3)2.1课设题目粗略分析 (3)2.2原理图介绍 (3)2.2.1功能模块图 (4)2.2.2流程图分析 (4)3 数据结构分析 (10)3.1存储结构 (10)3.2算法描述 (10)4 调试与分析 (12)4.1调试过程 (12)4.2程序执行过程 (13)参考文献 (17)附录(关键部分程序清单) (18)1 课程设计介绍1.1 课程设计内容内容是编写算法能够建立图书信息文件,并能够查找相应的图书信息。

要求能按照图书名和作者名查找,查找算法要求使用折半查找法。

1.编写算法能够建立图书信息文件。

2.实现按照作者名或者按照图书名查找。

3.查找方法使用折半查找法。

1.2 课程设计要求1.图书信息自定,除可查找图书信息外,还可以浏览图书信息。

2.算法思路清晰,用流程图来描述。

3.源程序要有适当的注释,使程序容易阅读。

4.参考相应的资料,独立完成课程设计任务。

5.按照要求写出课程设计报告,使用vc环境进行调试。

6.交规范课程设计报告和软件代码。

2 课程设计原理2.1 课设题目粗略分析课程设计的题目是图书信息查找,而且要求使用折半查找法。

一方面就是说要使用折半查找法,就得使用顺序存储结构,建立静态顺序查找表,因为折半查找法它的所查找数据是按照一定顺序排列的。

其次为了得到这个所需的顺序就得把已知的数据进行排序,所以还得有排序模块。

另外因为有要浏览信息,所以还得有遍历。

最后进行图书信息查找要美观的话,需要一个主界面,每个模块分工清楚。

2.2 原理图介绍根据课设题目要求,本程序主要分为5个大方面的模块:主模块,建立图书信息模块,排序模块(采用非降序排序法,其中包括对图书名和作者名分别按照字母a-z的顺序排序),浏览图书信息模块,折半查找模块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

重庆科技学院《数据结构》课程设计报告学院:_电气与信息工程学院_ 专业班级:计科2010-X学生姓名: XXX 学号: XXX设计地点(单位)__ _ 计算机基础自主学习中心 __ _ _设计题目:____ __ __图书检索系统 _____________ ____完成日期:2012年 1 月 13 日指导教师评语: ________________________________________________________________________________________________________ __________________________________________________________________________________ _____________________________________ __________ _成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:图书检索系统的设计系主任:雷亮指导教师:向毅/彭军/王双明/龙冯文/黄永文2011年 12月 26日摘要随着时代的发展,科技的进步,传统的图书管理是必然会被计算机上的图书管理系统所替代;和人工管理图书相比,图书管理系统具有较大的优点,例如:查找方便、检索迅速、整理方便等。

在本课程设计是正是用于图书的管理,本系统是基于数据结构中的链表完成的。

在本系统中,具有新增图书、修改图书信息、删除图书信息、查找图书、根据不同的图书内容进行排序、还可将图书信息写入文件中。

在整个运行过程中,本系统运用c++文件输入输出流对信息进行存储,对于图书的排序,本系统运用了冒泡排序和简单选择排序,可以清楚地将图书信息显示在屏幕上。

关键字:数据结构链表 c++ 排序目录1 设计内容和要求 (1)1.1 图书检索系统基本要求 (1)1.2 主要功能的设计要求 (2)2 需求分析 (3)2.1 界面设计分析 (3)2.2 文件保存方法 (3)3 系统设计 (5)3.1 总体功能分析 (5)3.2 总体流程图 (5)4 主要功能设计 (6)4.1 新增图书模块 (6)4.2 查找图书模块 (6)4.3 修改图书模块 (7)4.4 删除图书模块 (7)4.5 图书信息排序模块 (8)5系统代码分析与测试 (9)5.1 系统主要代码分析 (9)5.2 新建追加信息代码分析 (11)5.3 查找修改删除代码分析 (12)5.5 图书排序代码分析 (14)总结 (18)致谢 (19)参考文献 (20)1 设计内容和要求1.1 图书检索系统基本要求(1)图书检索系统主菜单界面的设计:程序采用的是使用者根据系统的界面提示而选择相应功能的控制型界面,只需跟着系统提示即可进行功能的选择,界面效果图如下:图1.1.1 主菜单界面效果图(2)其他界面的设计:在其他界面功能运行完成时,界面会显示“请按任意键继续”字样(如下图1.1.2),当使用者按任意键后,屏幕即可接着显示提示用户的界面,图1.1.2 界面提示字样图(3)图书检索系统数据结构要求:本系统主要是运用链表将图书信息存储在内存上,其次运用文件输入输出流将链表中的信息写入相应文件夹中。

总之,在进行系统的运行时,系统将会自动将图书信息存储在链表中;在系统关闭时,图书信息将存储在文件夹中,且再次打开不会消失或者发生改变。

1.2 主要功能的设计要求(1)新增图书功能:此功能用于初始建库和追加图书信息,且在每加如一种新书时总的类型个数也会有相应的增加。

此功能要求使用者将图书信息通过键盘输入并且确认图书信息是否真确后才将图书信息写入文件夹中。

(2)修改图书信息功能:此功能时用于修改图书错误信息,此功能不会影响到其他图书信息,且不会改变图书总类型数量。

此功能要求使用者将图书信息通过键盘输入到内存中,然后存入到文件夹中。

(3)删除图书信息功能:此功能是用于删除已经不存在的书籍,在删除一种图书时,图书总类型的总数也会有相应的改变。

此功能只要求将所要删除书籍信息的书名输入即可。

(4)查找图书功能:此功能是用于查找使用者所需要的书籍,可通过书名和作者姓名进行查找,此功能不会改变系统中的图书信息。

此功能只需按照界面提示和输入所要查找信息即可。

(5)排序功能:此功能将系统中的图书信息根绝书名、作者、价格、字数、出版时间等进行不同的排序,并且将排序后的信息显示在屏幕上,同时也会将信息写入文件中。

(6)显示图书信息功能:此功能是将文件中的所有图书信息显示到屏幕上,此功能不会修改图书信息的任何部分,只可用于浏览图书信息。

(7)退出检索系统:此功能用于退出整个检索系统的,只需按操作界面意外的数字即可安全退出此系统。

2 需求分析2.1 界面设计分析界面的设计运用的c++的标准输入输出流,只需将字符输出到屏幕上即可,具体代码如下:void menu(){cout<<"+--------------------------------主菜单--------------------------------+"<<endl;cout<<"|--------------------------新增图书请按【1】-----------------------|"<<endl;cout<<"|--------------------------修改图书请按【2】-----------------------|"<<endl;cout<<"|--------------------------删除图书请按【3】-----------------------|"<<endl;cout<<"|--------------------------查找图书请按【4】-----------------------|"<<endl;cout<<"|--------------------------价格排序请按【5】-----------------------|"<<endl;cout<<"|--------------------------书名排序请按【6】-----------------------|"<<endl;cout<<"|--------------------------字数排序请按【7】-----------------------|"<<endl;cout<<"|--------------------------出版日期排序【8】-----------------------|"<<endl;cout<<"|--------------------------出版社排序按【9】-----------------------|"<<endl;cout<<"|--------------------------显示书库请按【0】-----------------------|"<<endl;cout<<"+--------------------------按任意数字退出--------------------------+"<<endl;}所对应的效果图如第一章中图1.1.1 主菜单界面效果图。

2.2 文件保存方法本系统中运用的是c++中的文件输入输出流,打开文件运用的是open函数,其中open函数中的参数为文件路径名和文件打开方式,其中需注意的是系统中运用了较多类型的输入输出流,如:ios::out、ios::in、ios::app,其中代表的意思如下:(1)ios::out 以输出(写入)方式打开文件夹,且ios::out打开文件以后,从文件头开始写入文件,也就是若使用者想追加图书信息时,则不能使此功能。

(2)ios::in 以输入(读)方式打开文件,此功能不会影响到文件中的信息,只将文件中的信息读出即可,同时,判断文件是否读完用函数eof()判断即可。

(3)ios::app 以输出(写入)方式打开文件夹,且在打开文件后,在文件末尾继续添加写入信息,即图书写入信息和追加以此文件写入功能实现。

如上可知,在使用文件输入输出流的过程时需注意其功能。

3 系统设计3.1 总体功能分析根据对系统的功能分析,在此系统中必须要有以下功能:新增图书、修改图书、删除图书、查找图书、排序功能(其中包括价格排序、书名排序、字数排序、出版日期排序、出版社排序)、显示书库、退出功能。

其此功能分析有以下总共能图:图3.1 总体功能图3.2 总体流程图根据系统功能及过程,可得到系统 总体流程图,如右图:如图,系统开始运行后,需要使用 者手动输入数字,如果符合功能数字的 要,则选择图3.1 总功能图中相应的功 能;若不符合功能的数字要求,则只几 天退出程序。

N图3.2 总体流程图4 主要功能设计4.1 新增图书模块本模块可用来初始建库,也可用于追加图书信息,本模块流程图如下右图:如右流程图,在此功能模块中,最重要的就是将已输入的信息保存至文件夹,保存至文件夹的函数在之后又详细解说;保存文后,需用户手动输入数字,选择接下来的功能,判断数值大小即可,最后退出此函数模块。

4.2 查找图书模块此模块用于使用者查找他所需要的图书信息,且在之后的修改功能和删除功能都会用到此功能;此模块流程图如右图:如右流程图,在此模块中用了两个读文件函数,一个是用来读取系统中总的书的类型,再将图书信息从文件中读出,最后根据函数查找使用者所需信息。

4.3 修改图书模块此模块用于修改错误的信息,在修改完成后可存入文件夹中,且此功能是基于查找功能上完成的,模块功能图如右图:如右图,此模块功能基于上一模块功能看流程图即可。

其中,在此模块中的修改信息时,查找信息囊括在修改信息中;修改信息以后将信息存储至文件中即可。

4.4 删除图书模块此模块用于删除错误信息和不需要的信息,且删除信息后直接存入文件中,也不会改变文件中其他信息。

如右图,此模块功能也基于查找功能,不过查找功能是囊括在删除中;其中删除的时候需要将删除信息所在的空间释放掉;最后写入文件即可。

相关文档
最新文档