C++数据结构课程设计报告图书收藏夹.docx

上传人:b****1 文档编号:498646 上传时间:2022-10-10 格式:DOCX 页数:42 大小:853.35KB
下载 相关 举报
C++数据结构课程设计报告图书收藏夹.docx_第1页
第1页 / 共42页
C++数据结构课程设计报告图书收藏夹.docx_第2页
第2页 / 共42页
C++数据结构课程设计报告图书收藏夹.docx_第3页
第3页 / 共42页
C++数据结构课程设计报告图书收藏夹.docx_第4页
第4页 / 共42页
C++数据结构课程设计报告图书收藏夹.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

C++数据结构课程设计报告图书收藏夹.docx

《C++数据结构课程设计报告图书收藏夹.docx》由会员分享,可在线阅读,更多相关《C++数据结构课程设计报告图书收藏夹.docx(42页珍藏版)》请在冰豆网上搜索。

C++数据结构课程设计报告图书收藏夹.docx

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

计算机科学与通信工程学院

 

课程设计报告

 

课程

数据结构A课程设计

课题名称

收藏夹的设计

学生姓名

李威

学号

3140608011

专业班级

软件1401

指导教师

王新胜

成绩评定表

作业质量评分

分析能力(30分)

总体功能分析

逻辑结构分析

存储结构分析

设计能力(30分)

系统功能设计

存储结构设计

算法设计与编码

创新能力(10分)

设计思路新颖,所设计的功能有扩展,有创新意识

写作能力(10分)

文字通顺,用词规范,叙述清晰,有条理性,格式、绘图、表格、插图等规范准确

团队合作评价(20分)

团队成员沟通,个人职责履行

总分

教师签名

特别说明

1.无故缺席或请假未获批准擅自离开达到3次或课程设计上机时间内做与课程设计无关的事情达到3次,课程设计成绩为0分;

2.课程设计抄袭者,课程设计成绩为0分。

目录

1.课题简介和设计要求1

(1)收藏夹系统的实现:

1

(2)分工:

1

2.总体设计1

3.详细设计3

3.1结点类型的设计3

3.2采用的逻辑结构3

3.3采用的存储结构4

3.4相关算法4

1.总体流程图5

2.分功能流程图5

4.编码13

4.1数据结构定义13

4.2程序实现15

Book.h15

FV.h16

收藏夹.cpp27

5.测试29

5.1测试用例29

5.2程序运行结果30

主目录:

30

图书列表:

30

收藏图书:

31

显示收藏:

31

删除图书:

32

查询收藏:

32

清空收藏:

33

按价格排序:

33

按收藏时间排序:

34

6.收获与体会34

数据结构课程设计

1.课题简介和设计要求

目前有一些著名的网上图书购买系统,比如当当网、亚马逊等,他们都有收藏夹和购物车的功能,通过收藏夹可以把你感兴趣的图书添加到收藏夹,可以直接把想购买的图书添加到购物车,也可以从收藏夹中把准备购买的图书加入购物车,等等功能。

现在请你利用已经学到的程序设计和数据结构等课程的相关知识模拟实现具有收藏夹和购物车功能的系统。

题目如下:

(1)收藏夹系统的实现:

(1)能收藏一本图书,并记录收藏时间。

图书的信息包括图书号(是唯一的)、书名、作者、出版社、出版时间、价格。

(2)能按照图书号查询显示收藏夹中图书的相关信息。

(3)能按照收藏时间的先后显示输出所收藏的所有图书的相关信息。

(4)能按照价格的大小显示输出收藏夹中的所有图书的相关信息。

(5)可以把不想收藏的某一本指定图书号的图书移出收藏夹。

(2)分工:

邢志康负责所有图书的索引,收藏夹的添加和清空以及收藏夹与单链表同步。

李威负责收藏夹的显示、删除,按书号查询图书以及按价格或收藏时间排序。

Book结点和主程序文件为了方便分工是我们共同完成的,我们设计了一些符号构成的方块界面方便操作。

在我负责的模块中,我设计了按照是(y)否(任意键)来操作的判断语句方便用户,并且为了防止错误操作引起程序出错做了一些错误操作的反馈语句用来提示用户,并且运用goto语句实现了各功能之间的切换。

2.总体设计

整个系统准备实现的功能有9个,分别是所有图书的索引、收藏夹与单链表的同步、收藏夹添加图书、收藏夹的清空、收藏夹的显示、收藏夹图书的删除、按书号查询图书、收藏夹按照价格排序、收藏夹按照添加时间排序。

由图可以明确的看出9大功能的实现与总体系统的关系,其中“收藏夹与单链表同步”这个模块是程序内置的,不需要用户操作,也就是说整个程序完成了8个用户使用的功能,即图书索引、收藏图书、显示收藏、删除收藏、查询收藏、清空收藏、按价格排序、按收藏时间排序。

 

图1收藏夹总体系统模块

各功能的含义如下:

(1)图书索引:

给出了整个图书馆的目录以及图书的编号、名字、作者、出版社、出版日期、图书价格。

方便用户进行查找、添加收藏和浏览。

(2)收藏图书:

用户将图书添加到收藏夹的功能若编号不存在,则返回“!

该图书不存在!

”;若图书已经在收藏夹内,则返回“!

该书已在收藏夹!

”;若打不开收藏目录,则返回“目录打不开”;若打不开收藏夹,则返回“收藏夹打不开”。

添加时获取当地时间,并给出添加成功的提示.

(3)显示收藏:

按照先后顺序输出已经收藏的图书所有信息,包括图书的编号、名字、作者、出版社、出版日期、图书价格和收藏时间。

(4)删除图书:

输入一本图书的编号来删除图书收藏夹中与该编号相同的图书,如果没有这本书,则输出“收藏夹不存在这本书”;如果删除成功,则返回“删除成功”。

用户可以在该界面看到收藏夹中已有的图书,并且可以反复操作删除多个图书。

(5)查询收藏:

用户可以输入一本图书的编号来查询收藏夹中与该图书编号相同的图书,若收藏夹中没有这本图书,则返回“!

收藏夹里没有这本书请重新输入!

”;若操作成功,则返回“您要查询的图书为:

”和图书的编号、名字、作者、出版社、出版日期、图书价格和收藏时间。

(6)清空收藏:

进入该操作会出现方框提示框(输入Y确定删除,任意键不删除),输入Y并输入回车键进行清空操作,若操作失败,则返回“找不到收藏夹”;若操作成功,则返回“收藏夹已清空”

(7)价格排序:

将用户收藏的图书按照价格从小到大进行排序,方便用户的购买和查询,若排序成功则自动返回菜单界面。

(8)按收藏时间排序:

将用户收藏的图书按照收藏的时间进行排序,为了方便排序使用了一个长整型函数来存储格林尼治时间(秒),避免了多次比较,降低了复杂度,操作成功则直接返回主菜单界面。

3.详细设计

3.1结点类型的设计

对图书设计了Book结点,数据成员包含了收藏时间、图书号(是唯一的)、书名、作者、出版社、出版时间、价格。

还包含了用于排序的格林尼治时间。

成员函数包含一个缺省构造函数和一个构造函数。

用图表可以清晰的展现出来:

结点的名字

数据成员

数据成员的类型

数据成员的含义

Book

NO

int

图书的编号

Book

name

string

图书名

Book

auther

string

作者

Book

publisher

string

出版社

Book

time[2]

Int数组

出版日期

Book

Price

int

价格

Book

Time[6]

Int数组

年月日时分秒

Book

*next

指针

后继结底

Book

T

long

格林尼治时间

表1结点的数据成员

如图所示,前七个数据成员存储了图书的总体信息,后继结点是为了向空链表添加结点和数据,格林尼治时间单纯的为了排序方便。

构造函数执行的同时对各个数据成员进行赋值并且存入线性表中,同时后继结点后移,每创建一个结点则执行同样的操作。

析构函数释放构造函数使用的空间,避免造成空间的浪费。

3.2采用的逻辑结构

该系统采取了线性表逻辑结构。

因为每本图书都有图书号(是唯一的)、书名、作者、出版社、出版时间、价格和收藏时间等数据,分开存放和定义非常复杂,采用线性表可以将这些数据同时存入一个结点中,避免了复杂的操作;

线性表的存储结构分为顺序存储结构和链式存储结构。

使用顺序存储结构进行操作来调用各个数据,操作起来容易出错并且操作非常复杂。

为了提高程序准确程度和便捷性最后我们采用了线性表的链式结构逻辑结构来编程。

3.3采用的存储结构

该系统采用了线性表的链式存储结构。

将一个线性表存储到计算机中,可以采用许多不同的方法,其中既简单又自然的是顺序存储方法,即将线性表中的元素逐个存放于数组的一些连续的存储单元中。

在这种表示方式下,容易实现对表的遍历。

要在表的尾部插入一个新元素,也很容易。

但是要在表的中间位置插入一个新元素,就必须先将其后面的所有元素都后移一个单元,才能腾出新元素所需的位置。

执行删除运算的情形类似。

如果被删除的元素不是表中最后一个元素,则必须将它后面的所有元素前移一个位置,以填补由于删除所造成的空缺。

而链式存储结构不要求存储位置,只是按照指针来进行操作调用,总体来说,该系统最适用于链式存储结构结构。

data

head

next

data

next

data

next

3.4相关算法

1.总体流程图

图2总体流程图

2.分功能流程图

voidList();//图书索引

图书索引:

给出了整个图书馆的目录以及图书的编号、名字、作者、出版社、出版日期、图书价格。

方便用户进行查找、添加收藏和浏览。

图3List()算法流程图

voidUpdata();//收藏夹与单链表同步

收藏夹与单链表同步:

将收藏夹中的数据同步到单链表中,让用户打开程序就能看到已收藏的内容,这样可以避免每次打开程序都要重新收藏。

图4Updata()算法流程图

voidClear();//将收藏夹清空

清空收藏:

进入该操作会出现方框提示框(输入Y确定删除,任意键不删除),输入Y并输入回车键进行清空操作,若操作失败,则返回“找不到收藏夹”;若操作成功,则返回“收藏夹已清空”

图5Clear()算法流程图

voidAdd();//添加

收藏图书:

用户将图书添加到收藏夹的功能若编号不存在,则返回“!

该图书不存在!

”;若图书已经在收藏夹内,则返回“!

该书已在收藏夹!

”;若打不开收藏目录,则返回“目录打不开”;若打不开收藏夹,则返回“收藏夹打不开”。

添加时获取当地时间,并给出添加成功的提示.

图6Add()算法流程图

voidShow();//显示

显示收藏:

按照先后顺序输出已经收藏的图书所有信息,包括图书的编号、名字、作者、出版社、出版日期、图书价格和收藏时间。

图7Show()算法流程图

voidDelete();//删除

删除图书:

输入一本图书的编号来删除图书收藏夹中与该编号相同的图书,如果没有这本书,则输出“收藏夹不存在这本书”;如果删除成功,则返回“删除成功”。

用户可以在该界面看到收藏夹中已有的图书,并且可以反复操作删除多个图书。

图8Delete()算法流程图

voidQuery();//根据书名号查询收藏夹中的某一本书

查询收藏:

用户可以输入一本图书的编号来查询收藏夹中与该图书编号相同的图书,若收藏夹中没有这本图书,则返回“!

收藏夹里没有这本书请重新输入!

”;若操作成功,则返回“您要查询的图书为:

”和图书的编号、名字、作者、出版社、出版日期、图书价格和收藏时间。

图9Query()算法流程图

voidPorder();//按照价格排序

价格排序:

将用户收藏的图书按照价格从小到大进行排序,方便用户的购买和查询,若排序成功则自动返回菜单界面。

图10Porder()算法流程图

voidTorder();//按照收藏时间排序

按收藏时间排序:

将用户收藏的图书按照收藏的时间进行排序,为了方便排序使用了一个长整型函数来存储格林尼治时间(秒),避免了多次比较,降低了复杂度,操作成功则直接返回主菜单界面。

图11Torder()算法流程图

4.编码

4.1数据结构定义

【提示】包括类名、数据成员、成员函数的设计和注释。

结点类:

Book

#pragmaonce

#include

#include

usingnamespacestd;

template

classBook//图书结点

{

public:

i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1