c++数据结构课程设计报告——图书收藏夹

上传人:第*** 文档编号:55632311 上传时间:2018-10-03 格式:DOC 页数:38 大小:1.04MB
返回 下载 相关 举报
c++数据结构课程设计报告——图书收藏夹_第1页
第1页 / 共38页
c++数据结构课程设计报告——图书收藏夹_第2页
第2页 / 共38页
c++数据结构课程设计报告——图书收藏夹_第3页
第3页 / 共38页
c++数据结构课程设计报告——图书收藏夹_第4页
第4页 / 共38页
c++数据结构课程设计报告——图书收藏夹_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《c++数据结构课程设计报告——图书收藏夹》由会员分享,可在线阅读,更多相关《c++数据结构课程设计报告——图书收藏夹(38页珍藏版)》请在金锄头文库上搜索。

1、计算机科学与通信工程学院课程设计报告课程课程数据结构数据结构 A A 课程设计课程设计课题名称课题名称收藏夹的设计收藏夹的设计学生姓名学生姓名李威李威学号学号31406080113140608011专业班级专业班级软件软件 14011401指导教师指导教师王王 新新 胜胜成绩评定表分析能力(30 分)总体功能分析 逻辑结构分析 存储结构分析设计能力(30 分)系统功能设计 存储结构设计 算法设计与编码创新能力(10 分)设计思路新颖,所设计的功 能有扩展,有创新意识写作能力(10 分)文字通顺,用词规范,叙述 清晰,有条理性,格式、绘 图、表格、插图等规范准确作业质量 评分团队合作评价(20

2、分)团队成员沟通,个人职责履 行总分教师签名特别说明1. 无故缺席或请假未获批准擅自离开达到 3 次或课程设计上机时间内做与课程设计无关的事情达到 3 次,课程设计成绩为 0 分;2. 课程设计抄袭者,课程设计成绩为 0 分。1目录目录1. 课题简介和设计要求.1(1)收藏夹系统的实现:.1 (2)分工:.12. 总体设计.13. 详细设计.33.1 结点类型的设计3 3.2 采用的逻辑结构3 3.3 采用的存储结构 4 3.4 相关算法 4 1.总体流程图5 2.分功能流程图54. 编码134.1 数据结构定义.13 4.2 程序实现.15 Book.h.15 FV.h.16 收藏夹.cpp

3、.275. 测试295.1 测试用例.29 5.2 程序运行结果.30 主目录:.30 图书列表:.30 收藏图书:.31 显示收藏:.31 删除图书:.32 查询收藏:.32 清空收藏:.33 按价格排序:.33 按收藏时间排序:.346. 收获与体会340数据结构课程设计数据结构课程设计1. 课题简介和设计要求目前有一些著名的网上图书购买系统,比如当当网、亚马逊等,他们都有收藏夹和购 物车的功能,通过收藏夹可以把你感兴趣的图书添加到收藏夹,可以直接把想购买的图书 添加到购物车,也可以从收藏夹中把准备购买的图书加入购物车,等等功能。现在请你利 用已经学到的程序设计和数据结构等课程的相关知识模

4、拟实现具有收藏夹和购物车功能的 系统。 题目如下: (1)收藏夹系统的实现:(1) 能收藏一本图书,并记录收藏时间。图书的信息包括图书号(是唯一的)、书名、 作者、出版社、出版时间、价格。 (2) 能按照图书号查询显示收藏夹中图书的相关信息。 (3) 能按照收藏时间的先后显示输出所收藏的所有图书的相关信息。 (4) 能按照价格的大小显示输出收藏夹中的所有图书的相关信息。 (5) 可以把不想收藏的某一本指定图书号的图书移出收藏夹。(2) 分工:邢志康负责所有图书的索引,收藏夹的添加和清空以及收藏夹与单链表同步。 李威负责收藏夹的显示、删除,按书号查询图书以及按价格或收藏时间排序。 Book 结点

5、和主程序文件为了方便分工是我们共同完成的,我们设计了一些符号构成 的方块界面方便操作。 在我负责的模块中,我设计了按照是(y)否(任意键)来操作的判断语句方便用户, 并且为了防止错误操作引起程序出错做了一些错误操作的反馈语句用来提示用户,并且运 用 goto 语句实现了各功能之间的切换。2. 总体设计整个系统准备实现的功能有 9 个,分别是所有图书的索引、收藏夹与单链表的同步、收藏夹添加图书、收藏夹的清空、收藏夹的显示、收藏夹图书的删除、按书号查询图书、收藏夹按照价格排序、收藏夹按照添加时间排序。1由图可以明确的看出9大功能的实现与总体系统的关系,其中“收藏夹与单链表同步”这个模块是程序内置的

6、,不需要用户操作,也就是说整个程序完成了8个用户使用的功能,即图书索引、收藏图书、显示收藏、删除收藏、查询收藏、清空收藏、按价格排序、按收藏时间排序。图1 收藏夹总体系统模块各功能的含义如下:(1)图书索引:给出了整个图书馆的目录以及图书的编号、名字、作者、出版社、出版日期、图书价格。方便用户进行查找、添加收藏和浏览。(2)收藏图书:用户将图书添加到收藏夹的功能若编号不存在,则返回“!该图书不存在!”;若图书已经在收藏夹内,则返回“!该书已在收藏夹!”;若打不开收藏目录,则返回“目录打不开”;若打不开收藏夹,则返回“收藏夹打不开”。添加时获取当地时间,并给出添加成功的提示.(3)显示收藏:按照

7、先后顺序输出已经收藏的图书所有信息,包括图书的编号、名字、作者、出版社、出版日期、图书价格和收藏时间。(4)删除图书:输入一本图书的编号来删除图书收藏夹中与该编号相同的图书,如果没有这本书,则输出“收藏夹不存在这本书”;如果删除成功,则返回“删除成功”。用户可以在该界面看到收藏夹中已有的图书,并且可以反复操作删除多个图书。(5)查询收藏:用户可以输入一本图书的编号来查询收藏夹中与该图书编号相同的图书,若收藏夹中没有这本图书,则返回“!收藏夹里没有这本书请重新输入!”;若操作成收藏夹系统所有图书的索引收藏夹与单链表同步收藏夹添加图书收藏夹的清空收藏夹的显示收藏夹图书的删除按书号查询图书收藏夹按照

8、价格排序收藏夹按照添加时间排序2功,则返回“您要查询的图书为:”和图书的编号、名字、作者、出版社、出版日期、图书价格和收藏时间。(6)清空收藏:进入该操作会出现方框提示框(输入Y确定删除,任意键不删除),输入Y并输入回车键进行清空操作,若操作失败,则返回“找不到收藏夹”;若操作成功,则返回“收藏夹已清空”(7)价格排序:将用户收藏的图书按照价格从小到大进行排序,方便用户的购买和查询,若排序成功则自动返回菜单界面。(8)按收藏时间排序:将用户收藏的图书按照收藏的时间进行排序,为了方便排序使用了一个长整型函数来存储格林尼治时间(秒),避免了多次比较,降低了复杂度,操作成功则直接返回主菜单界面。3.

9、详细设计3.1 结点类型的设计对图书设计了 Book 结点,数据成员包含了收藏时间、图书号(是唯一的)、书名、作 者、出版社、出版时间、价格。还包含了用于排序的格林尼治时间。成员函数包含一个缺 省构造函数和一个构造函数。用图表可以清晰的展现出来:结点的名字数据成员数据成员的类型数据成员的含义BookNOint图书的编号Booknamestring图书名Bookautherstring作者Bookpublisherstring出版社Booktime2Int 数组出版日期BookPriceint价格BookTime6Int 数组年月日时分秒Book*next指针后继结底BookTlong格林尼治时

10、间表 1 结点的数据成员如图所示,前七个数据成员存储了图书的总体信息,后继结点是为了向空链表添加结 点和数据,格林尼治时间单纯的为了排序方便。 构造函数执行的同时对各个数据成员进行赋值并且存入线性表中,同时后继结点后移, 每创建一个结点则执行同样的操作。析构函数释放构造函数使用的空间,避免造成空间的 浪费。33.2 采用的逻辑结构该系统采取了线性表逻辑结构。 因为每本图书都有图书号(是唯一的)、书名、作者、出版社、出版时间、价格和收 藏时间等数据,分开存放和定义非常复杂,采用线性表可以将这些数据同时存入一个结点 中,避免了复杂的操作; 线性表的存储结构分为顺序存储结构和链式存储结构。使用顺序存

11、储结构进行操作来 调用各个数据,操作起来容易出错并且操作非常复杂。为了提高程序准确程度和便捷性最 后我们采用了线性表的链式结构逻辑结构来编程。3.3 采用的存储结构该系统采用了线性表的链式存储结构。 将一个线性表存储到计算机中,可以采用许多不同的方法,其中既简单又自然的是顺 序存储方法,即将线性表中的元素逐个存放于数组的一些连续的存储单元中。在这种表示 方式下,容易实现对表的遍历。要在表的尾部插入一个新元素,也很容易。但是要在表的 中间位置插入一个新元素,就必须先将其后面的所有元素都后移一个单元,才能腾出新元 素所需的位置。执行删除运算的情形类似。如果被删除的元素不是表中最后一个元素,则 必须

12、将它后面的所有元素前移一个位置,以填补由于删除所造成的空缺。而链式存储结构 不要求存储位置,只是按照指针来进行操作调用,总体来说,该系统最适用于链式存储结 构结构。3.4 相关算法dataheadnextdatanextdatanextnull41.1.总体流程图总体流程图图 2 总体流程图2.2.分功能流程图分功能流程图void List();/图书索引图书索引图书索引:给出了整个图书馆的目录以及图书的编号、名字、作者、出版社、出版日期、 图书价格。方便用户进行查找、添加收藏和浏览。图 3List()算法流程图5void Updata();/收藏夹与单链表同步收藏夹与单链表同步收藏夹与单链表

13、同步:将收藏夹中的数据同步到单链表中,让用户打开程序就能看到已收 藏的内容,这样可以避免每次打开程序都要重新收藏。图 4Updata()算法流程图void Clear();/将收藏夹清空将收藏夹清空清空收藏:进入该操作会出现方框提示框(输入Y确定删除,任意键不删除),输入Y并输入回车键进行清空操作,若操作失败,则返回“找不到收藏夹”;若操作成功,则返回“收藏夹已清空”6图5Clear()算法流程图void Add();/添加添加收藏图书:用户将图书添加到收藏夹的功能若编号不存在,则返回“!该图书不存在!”; 若图书已经在收藏夹内,则返回“!该书已在收藏夹!”;若打不开收藏目录,则返回 “目录打

14、不开”;若打不开收藏夹,则返回“收藏夹打不开”。添加时获取当地时间,并 给出添加成功的提示.7图6Add()算法流程图void Show();/显示显示显示收藏:按照先后顺序输出已经收藏的图书所有信息,包括图书的编号、名字、作者、 出版社、出版日期、图书价格和收藏时间。8图7Show()算法流程图void Delete();/删除删除删除图书:输入一本图书的编号来删除图书收藏夹中与该编号相同的图书,如果没有这本 书,则输出“收藏夹不存在这本书”;如果删除成功,则返回“删除成功”。用户可以在该 界面看到收藏夹中已有的图书,并且可以反复操作删除多个图书。9图 8Delete()算法流程图void

15、Query();/根据书名号查询收藏夹中的某一本书根据书名号查询收藏夹中的某一本书查询收藏:用户可以输入一本图书的编号来查询收藏夹中与该图书编号相同的图书,若收 藏夹中没有这本图书,则返回“!收藏夹里没有这本书请重新输入!”;若操作成功,则返10回“您要查询的图书为:”和图书的编号、名字、作者、出版社、出版日期、图书价格和收 藏时间。图 9Query()算法流程图void Porder();/ 按照价格排序按照价格排序价格排序:将用户收藏的图书按照价格从小到大进行排序,方便用户的购买和查询,若排 序成功则自动返回菜单界面。11图 10Porder()算法流程图void Torder();/按照

16、收藏时间排序按照收藏时间排序按收藏时间排序:将用户收藏的图书按照收藏的时间进行排序,为了方便排序使用了 一个长整型函数来存储格林尼治时间(秒),避免了多次比较,降低了复杂度,操作成功 则直接返回主菜单界面。12图 11Torder()算法流程图4. 编码4.1 数据结构定义【提示】包括类名、数据成员、成员函数的设计和注释。结点类:Book#pragma once#include#includeusing namespace std;templateclass Book/图书结点public:int NO;/图书编号string name;/图书名13string auther;/作者string publisher;/出版社int time2;/出版日期double price;/图书价格Book *next;int Time6;/收藏时间long T;/用于按收藏时间排序Book(void);/缺省构造函数Book(int no,string na,string au,string pu,int t1,int t2,do

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号