1、 数据结构课程设计 总结报告 专专 业业 软件工程 班班 级级 软件赴日 1101 学学 号号 姓姓 名名 日日 期期 2013 年 9 月 17 日 第一章 需求分析 1、 实验要求: 设计一个网上拍卖系统,有些类的头文件和主函数已经给出,通过头文件中 定义的部分和实验中的提示来编写类的代码, 从而完成拍卖系统的全部功能。 实 验共分五个部分,由浅入深逐渐完善,而且只有完成了前一部分实验,才能继续 进行下一部分的实验内容。 2、 问题分析: 根据实验要求,可知此网上拍卖系统大致包含以下几个部分:注册、登陆、 增加广告、添加子目录、显示商品列表、查找广告、 广告排序、客户竞标。由 实验已给的部
2、分代码来看,应该有以下几个部分:广告(Advertisement) 、广 告集合(Listing) 、目录(Category) 、目录集合(Categories) 、标价(bid) 、客户 (Client) 、 客户组(Group) ,系统应围绕这些部分的关系,编写各自的函数, 从而完成拍卖系统的功能。 3、 实验目的: 通过实验进一步了解线性表、堆栈、队列、串、数组、广义表、树、图以及 一些排序算法等数据结构内容。培养根据用户的要求及系统提供的数据,设计或 选择合适的数据结构并能编写正确的算法解决实际问题的能力 第二章 系统设计 1、总体设计 a.总体思路:总体思路: 先写好系统的基本骨架:
3、Date、Client 、Advertisement 这三个类,完成系统 的基本功能,然后根据系统的功能需求编写相应的类完成功能拓展。 具体的类间关系为:Categories 储存多个 Category,Category通过 Listing类 储存这个目录下的 Advertisement,Listing 是 Advertisement 的集合,而 Advertisement 信息中包含多个 Client 对自己的竞标(bid) ,Client 又可以对多个 Advertisement 进行竞标并发布 Advertisement,Group 是 Client 的集合,所以包含 多个 Client
4、。 其他的是过程类, 由 main调用 processrequest 类, 再由 processrequest 调用相应的 buildbidpage、buildpage、bidhistory类将结果显示在页面中。 体现在 UML 类图中如图所示: 数据结构课程设计任务书 3 +getBids() : priority_queue Class Client : Client (const Client virtual Listing filter(string keyword); Class Group: Client *operator(const string virtual void ad
5、dItem(int); virtual void findOfferings (Listing:iterator start, Listing:iterator finish, Listing virtual void findOfferingsRecursive (Listing:iterator start, Listing:iterator finish, Listing virtual bool operator=(const Category Class Bid: virtual bool operator,从输入中读入信息给 Advertisement 属性赋值: 算法:用 get
6、line 函数和 stream 为 advertisement 属性赋值,为了保证能将空 格和回车全部保留,用一个 while 循环一行读 body 并用“”标签将结果进 行连接,直到读到空行为止。关键代码如下: istream Date dat; int qua; getline(stream,str); a.setTitle(str); streamstr; a.setEmail(str); streamqua; a.setQuantity(qua); streamdat; a.setStart(dat); streamdat; a.setClose(dat); streamstr; a.setBody(str); return stream; 复杂度:O(N) d. Category类的 findOfferingsRecursive 函数,用递归遍历子目录内容: 算法:递归调用 findOfferingsRecursive 和 fin