ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:102.22KB ,
资源ID:24361002      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24361002.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计网上拍卖系统.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计网上拍卖系统.docx

1、数据结构课程设计网上拍卖系统数据结构课程设计一网上拍卖 系统数据结构课程设计总结报告专 业 软件工程班 级 软件赴日1101学 号 20112271 姓 名 贾志远 日 期 2013年9月17日东北大学软件学院第一章需求分析1、 实验要求:设计一个网上拍卖系统,有些类的头文件和主函数已经给出,通过头文件 中定义的部分和实验中的提示来编写类的代码,从而完成拍卖系统的全部功能。 实验共分五个部分,由浅入深逐渐完善,而且只有完成了前一部分实验,才能 继续进行下一部分的实验内容。2、 问题分析:根据实验要求,可知此网上拍卖系统大致包含以下几个部分:注册、登陆、 增加广告.添加子目录.显示商品列表、査找

2、广告、广告排序.客户竞标。由 实验己给的部分代码来看,应该有以下几个部分:广告(Advertisement)、广 告集合(Listing) 目录(Category)目录集合(Categories) 标价(bid)、客 户(Client).客户组(Group),系统应围绕这些部分的关系,编写各自的函数, 从而完成拍卖系统的功能。3、 实验目的:通过实验进一步了解线性表.堆栈.队列.串.数组、广义表、树、图以 及一些排序算法等数据结构内容。培养根据用户的要求及系统提供的数据,设 计或选择合适的数据结构并能编写正确的算法解决实际问题的能力第二章系统设计1、总体设计a总体思路:先写好系统的基本骨架:D

3、ate、Client、Advertisement这三个类,完成系 统的基本功能,然后根据系统的功能需求编写相应的类完成功能拓展。具体的类间关系为:Categories储存多个Category, Category通过Listing 类储存这个目录下的Advertisement, Listing是Advertisement的集合,而 Advertisement信息中包含多个Client对自己的竞标(bid), Client又可以对多 个Advertisement进行竞标并发布Advertisement, Group是Client的集合,所 以包含多个Client bidhistory 类将结果显示

4、 在页面中。体现在UML类图中如图所示:Listing-objects: veclor object 卜 addiin *plr: Advertisement)+sortin field: string): Listing +filteriin keyword: string i: ListingCategory-number: int-parent: int -name: string -sub_categories: vectorCategory object -items: veclor object +findOfrerings()+fiiK10fIeringsRecursiveOCa

5、tegorksSobjecls: veclorobjecl +TOP.LEVEL: static const int +NO_PARENT: static const int faddiin * plr: Category)Adverthement-number: int -quantity: inttitle: string -seller_email: stringbody: siring start: Dale-close: Datebids: priority queuedObxttgeffiidsO: priority_queue& object tgelTopDutchBidsi

6、|: virtual vector object* 1 # 1Client fname: siring -lname: string -email: siring passed: string -offerings: vectoc object bids: vector objecttaddBid(in item: intiaddOffering(in item: intf verify Passwd( in passwd: string!: boo】Date-month: int1 -day: int -year: inthour: intminule: int second: intwpe

7、ralo(二nin &rt)s: Date): boolBid-email: stringamount: float-quantity: int -date: Datefoperator=(in &rhs: B 汕:boolb基本的数据结构:数据结构除了上述分析中所定义的类,还包括Stl中的优先权队列和 Vector 集合。C.各类主要操作定义如下: Class Date:operator=(const Date &rhs) operator (ostream& os: const Date& date) operator(istream&, Date&)operatoroperator=(c

8、onst Date &rhs) operator(istream &stream,Advertisement &a)virtual vector getTopDutchBids (void) const;Class Client :Client (const Client &a) operator(istream &stream, Client &c)Class Listing:add(Advertisement*ptr) operator(const int& numbervirtual Listing sort(string field);virtual Listing filter(st

9、ring keyword);Class Group:Client *operator(const string& email)Class Category:virtual void addSubCategory(Category*);virtual void addltem(int);virtual void findOfferings (Listing: iterator start,Listing: iterator finish,Listing &matches);virtual void findOfferingsRecursive (Listing: iterator start,L

10、isting: iterator finish, Listing&m atches);virtual bool operator=(const Category& rhs);Class Bid:virtual bool operatorvirtual bool operator= (const Bid &rhs) const;Class bidhistory:Void displayBidHiston(ostringstream &oss,Advertisement* ad);2v程序设计系统的操作对应系统的功能,共有七种,分别是:客户注册、登陆.添加 广告、添加子目录、按关键字査找广告、对广

11、告排序.竞标。用户在使用系统 之前需进行注册,然后登陆系统后可以按提示填写广告信息发布广告,或是对 已有的广告点击bid按钮进行竞标。用户可创建目录到top level或其子目录下, 也可通过关键字査找广告或按广告的属性对广告进行排序查看。具体操作过程如下:if(dayrhs.getDay()return true;else if(day=rhs.getDay()if(hourrhs.getHour()return true;else if(hour=rhs.getHour()if(minuterhs.getMinute() return true;elseif(minute=rhs.getM

12、inute()if(secondrhs.getSecond()return true;return false;复杂度:0(1)b.Group类重载,返回有特定email地址的用户指针:算法:遍历objects集合,并判断集合中元素的email地址是否和传入的参 数相同,如果相同返回此Client指针,否则返回null。关键代码如下:Client* Group: operator (const string &email)for(int i=0;igetEmail()=email)return objects.at(i);return 0;复杂度:O(N)c.Advertisement类重载,

13、从输入中读入信息给Advertisement属性赋值: 算法:用getline函数和stream为advertisement属性赋值,为了保证能将空格和回车全部保留,用一个while循环一行读body并用“vbr”标签将结果 进行连接,直到读到空行为止。关键代码如下: istream &operate(istreain &stream, Advertisement &a)string str;Date dat;int qua;getline(stream,str);a.setTitle(str);streamstr;a.setEmail(str);streamqua;a.setQuantity

14、(qua); streamdat; a.setStart(dat); streamdat;a.setClose(dat); streamstr; a.setBody(str); return stream;复杂度:O(N)d. Category类的findOfferingsRecursive函数,用递归遍历子目录内容: 算法:递归调用 findOfferingsRecursive 和 findOfferings,先用 findOfferlngs 找到本层目录中满足条件的广告加入到matches中,然后再遍历子目录集合, 调用自身函数将子目录中满足条件的广告加入到matches中.关键代码如下:

15、 void Category:findOfferingsRecursive (Listin君:iterator starts Listing:iterator finish. Listing &matches)for(Listing: iterator is=start ;is! =finish ;is+) if(*is)-getNumber()=number)matches.add(*is); for(vector:iteratorss=sub_categ ories.begin();ss!=sub_categories.end() ;ss+)(ss)-findOfferingsRecurs

16、ive(start,finish,ma tches);复杂度:O(N) e. Listing类的sort函数,通过使用stl的sort函数实现对广告的排序功能。 算法:定义四个内部函数,再定义sort函数的排序逻辑,然后在sort函数 中,以函数指针作为参数传给so函数。关键代码如下:bool lessQuantity(Advertisement*aAdvertisement* b)return a-getQuantity() getQuantity();bool lessStart(Advertisement*a,Advertisement* b)return a-getStart() ge

17、tStart();bool lessClose(Advertisement*a,Advertisement* b)return a-getClose() getClose();bool lessEmail(Advertisement*aAdvertisement* b)return a-getEmail() getEmail();Listing Listing: sort (string field)Listing is(*this);if(field=nemailn)std:sort( is.begin() ,is.end(),lessEmail); if(field=1 Quantity

18、n)std:sort( is.begin() , is.end(), lessQuantity);if(field=nStartn)std:sort( is.begin() ,is.end(), lessStart);if(field=nClosen)std:sort( is.begin() ,is.end(), lessClose); return is;复杂度:O(N)f. Listing类的Alter函数,通过使用stl的find函数实现对广告的査找功 能。算法:总体思想是在所有的广告集合中找到包含输入关键字的广告,然后 将之加入,从而显示满足条件的广告,最后返回这个列表。关键代码如下:

19、Listing Listing: filter (string keyword)Listing is;for(int i=0;igetTitle().find(keyword);string: size_type i2objects.at (i)-getBody ().find(key word);if (il != string:nposll i2 != string:npos)is.add(objects.at(i);return is;复杂度:O(N)g. Advertisement类的getTopDutchBids函数,用以获得竞标成功的bid集 合。算法:芬标成功的bids是指按价位

20、由高到低排,累积竞标的数量和大于等 于广告商品本省的数量时停止。因此,需用一个result变重用以统计bids的竞 标数量和,遍历广告本身己经排好序的bids集合,依次将bids内的bid出栈, 并将出栈的bid数量加到result中,知道result的值大于等于广告的quantity为 止,这时,一般情况会多加一个bid,也就是说多加的这个bid内的quantity 加上前面的bid的quantity值会大于广告本身的quantity,也就是鼠 这个bid 并不会得到它所要求的广告的数量,而是广告的quantity减去前面bid所有 quantity剩下的值。关键代码如下:vector Ad

21、vertisement: :getTopDutchBids (void) constvector vb;priority_queue bid(bids); int all=number;while( !bid.empty() & all0)vb.push_back(bid.top(); all-=bid.top().getQuantity(); bid.pop();return vb;复杂度:O(N)第四章系统测试测试方法:利用Apache运行程序,设置几组测试用例,分别考虑到一般情况和特殊情 况,观察测试结果的正确性。测试用例(应该给出几组具有不同特征的数据进行测试):Client名称数量内

22、容描述天数最终竞价竞标数量赵光明奶粉1很棒儿 童产品 1-2岁放心TopLevel5Y31张三洗衣 粉3家庭TopLevel/zhang531小王冰红 茶15好喝TopLevel/zhang / wang752测试结果:a.验证广告描述和题目读入空格和回车的结果iCarncgie Auctions|By clor* dsi- vFind jG&wgory: 9 “陀】| Tap Only |EcarxxtMb.按目录显示结果分二种情况:1. TopOnly:ioBy close date xzFindCategory:BidTop Only | | Re cursive奶粉Posted by:

23、光明,赵Posted: 9/21/2013 8:31:22Closes: 9/26/2013 8:31:28Quantity: 1Number of bids: 0 彳艮棒儿童产品1-2岁放心2. Recursive:巧 close dale v| Find ICategory: | 7cp Lcvc15 | Tof 0!:门Recursive妬粉Posted by:光耳赵Posted: 9/21/2013 8:31:28Closes: 9/26/2013 8:31:28Quantity; 1Nuirber of bids; 0 很棒儿童产品-2岁放心林粉Posted by:=,张Posted

24、: 9/21/2013 8:32:43Closes: 9/26/2013 8:32:43Quantity: 3Nunber of bids: 0 家庭 冰红茶Posted by:二,hPosted: 9/21/2013 8:34:7Closes: 9/22/2013 8:34:7Quantity: IBIimrber of bids: 0好喝c按close date排序结果:奶粉Posted by:光明,赵Posted: 9/21/2013 8:31:28Closes: 9/26/2013 8:31:28 Quantity: 1Number of bids: 0很棒儿童产品1-2岁歆心 洗衣粉

25、 _Posted by:三,张Posted: 9/21/2013 8:32:43Closes: 9/26/2013 8:32:43 Qu.ant i. ty: 3Number of bids: 0冰红茶Posted by:王.小囤Posted: 9/21/2013 8:34:7Closes: 9/20013 :34:7 Quantity: 15Number of bids: 0 好喝d按start date排序结果:奶粉Posted by:光明赵Posted: 9/21/2013 8:31:28Closes: 9/26/2013 8:31:28Quantity: 1Nimber of bids

26、: 0很棒儿童产品-2岁放心洗衣粉Posted by:二,张Posted: 9/21/2013 8:32:438:32:43Closes: 9/26/2013Quantity! 3Number of bids: 0家庭冰红茶Posted by:王小Posted: 9/21/2013 8:34:7Closes: 9/28/2013 8:34:7Quantity: 15Number of bids: 0 好喝e按seller email排序结果:奶粉Posted by:光明,赵Posted: 9/21/2013 8:31:28Closes: 9/26/2013 8:31:28Quantity: 1

27、Number of bids: 0很棒儿童产品1-2岁放心洗衣粉 _Posted by:三,张Posted: 9/21/2013 8:32:43Closes: 9/26/2013 8:32:43Quantity: 3Number of bids: 0冰红茶Posted by:王,小rz-7i Posted: 9/21/2013 8:34:7u Closes: 9/28/2013 8:34:7Quantity: 15Number of bids: 0g按highest bid排序结果:期粉Posted by:光明,赵Posted: 9/21/2013 8:31:28Closes: 9/26/20

28、.13 8:31:28Quantity-: 1Number of bids: 1High bid: $3 很棒儿童产品1边岁放心洗衣粉 _Posted by:二,张Posted: 9/21/20.13 8:32:43Closes: 9/26/2013 8:32:43Quantity-:Number of bids: 1High bid: $3家庭冰红茶Posted by:王9 小Posted: 9/21/2013 8:34:7Closes: 9/28/2013 8:34:7Quantity: 15Number of bids: 2High bld: $5好喝i.wingbid的测试结果:itamcyic MuvuuiidPlace Bidseller: 123qq, con 3pest date: 9/21/2013 8:32:43 finish date: 9/2G/2013 8:52:43

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

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