数据结构课程设计
总结报告
专
班
学
姓
日
业
级
号
名
期
东北大学软件学院
目录
第一章 需求分析.................................................................................................................3
第二章 系统设计.................................................................................................................4
1. 总体设计:.................................................................................................................... 4
2. 程序设计:.................................................................................................................... 5
Advertisement:.....................................................................................................5
2.1.
Bid:........................................................................................................................5
2.2.
Date:..................................................................................................................... 6
2.3.
2.4.
Client:................................................................................................................... 7
2.5. Group:...................................................................................................................8
2.6.
Listing:.................................................................................................................. 8
Category:.............................................................................................................. 9
2.7.
2.8.
Categories:.............................................................................................................10
第三章 系统的设计与调试...............................................................................................11
3.1. 有关 map 的 insert 方法和 count 方法:...............................................................11
3.2.
Advertisement:.......................................................................................................12
Categories:............................................................................................................. 12
3.3.
3.4.
Listing:.................................................................................................................... 13
第四章 系统测试...............................................................................................................16
Exercise 1 的测试:.................................................................................................16
Exercise 2 的测试:.................................................................................................19
Exercise 3 的测试:.................................................................................................21
Exercise 4 的测试:.................................................................................................23
Exercise 5 的测试:.................................................................................................32
第五章 结论.......................................................................................................................36
第六章 参考文献...............................................................................................................36
4.1.
4.2.
4.3.
4.4.
4.5.
Page 2 / 36
第一章 需求分析
随着信息化技术在生活中的应用越来越广泛,网上购物也逐渐成为人们的一种生活方式。
本系统正是基于这样一种环境下应运而生。计机网络为商务活动开辟了新的空间,提供了新
的手段,同时为公司业务发展赋予了更多的机会,成为现代商务的潮流。网上拍卖是建立在
电子网络技术上的一种全新的电子商务模式。它具有成本低廉,方式灵活,运行快捷等特点。
通过 Internet 将拍卖活动变成每一位网民都可以加入其中的交易方式。但它在给人们带来便
利的同时也带来了很多的问题。它的公平、公正、公开性受到大家的关注。其可靠性和安全
性更是大家关心的问题。这就要求不仅要在系统的设计上做到公平合理,也要在信息的传输
上做到安全可靠,以构建一个公平又安全的交易平台。[1]
而需求分析则是介于系统分析和软件设计阶段之间的重要桥梁。一方面,需求分析以系
统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;
另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动
有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。[2]
本软件设计需求分析图如下:
Figure 1. Requirement Analysis
第二章 系统设计
1. 总体设计:
根据需求分析图,创建了 Advertisement, Bid, Date, Clien 四个基础类,有创建了
Category, Categories, Group, Listing 三个容器类对前四个基础类进行封装,并且定义实现
了迭代器操作,整体类图如下所示:
Page 4 / 36
2. 程序设计:
2.1. Advertisement:
Advertisement(void);
初始化并构造 Advertisement 对象
Advertisement(const Advertisement
拷贝构造与 a 相同的 Advertisement 对象
构造函数摘要
&a);
Advertisement (string title, string
seller_email, string body,
Date start, Date close, int
初始化 Advertisement 对象,并对其中的
成员变量赋予特定值
quantity);
Figure 3. The Constructor of Class “Advertisement”
virtual void
virtual void
virtual void
virtual void
virtual void
virtual void
virtual void
virtual Date
virtual Date
virtual string
virtual string
virtual string
virtual int
virtual int
virtual
priority_queue&
virtual vector
virtual bool
成员函数摘要
setStart (const Date &start)
setClose (const Date &close)
设置广告张贴时间
设置广告结束时间
setTitle (string title)
setBody (string body)
setNumber (int number)
setEmail (string email)
setQuantity (int quantity)
getStart() const
getClose() const
getTitle() const
getBody() const
getEmail() const
getNumber() const
getQuantity() const
getBids(void)
设置广告标题
设置广告主体
设置广告编号
设置张贴人的电子邮箱
设置拍卖品数量
获得广告张贴时间
获得广告结束时间
获得广告标题
获得广告主题
获得张贴人电子邮箱
获得广告编号
获得拍卖品数量
获得广告的投标数
getTopDutchBids (void) const 获得“荷兰式”投标列表
判断该广告的编号与是否
传入广告的编号相等。如
相等,则视为两个广告相
Advertisement&) const
operator==(const
Figure 4. The Function of Class “Advertisement”
等
2.2. Bid:
构造函数摘要
Bid(void)
Bid(const Bid &b)
初始化并构造 Bid 对象
拷贝构造与 b 相同的 Bid 对象
Bid (string email, float amount, int
初始化 Bid 对象,并对其中的成员赋予
quantity, Date date)
特定值。
Figure 5. The Constructor of Class “Bid”
Page 5 / 36
virtual void
virtual void
virtual void
virtual void
virtual string
virtual float
virtual int
virtual Date
virtual bool
成员函数摘要
setEmail(const string&)
setAmount(const float&)
setQuantity(const int&)
setDate(const Date&)
getEmail() const
getAmount() const
getQuantity() const
getDate() const
operator< (const Bid &rhs)
const
设置投标人的电子邮箱
设置单个标的金额
设置标的数量
设置投标日期
获得投标人的电子邮箱
获得单个标的金额
获得标的数量
获得投标日期
判断该标的单个金额是否
大于传入的标的单个金额
判断该标的单个金额是否
virtual bool
operator== (const Bid &rhs)
相等传入的标的单个金
const
额,若相等,则视为两个
标相等
Figure 6. The Function of Class “Bid”
2.3. Date:
构造函数摘要
Date(void)
初始化并构造“Date”对象
Date (int month, int day, int year, int
初始化 Date 对象,并对其中的成员变量赋
hour, int minute, int second)
予特定值
Figure 7. The Constructor of Class “Date”
virtual void
virtual void
virtual void
virtual void
virtual void
virtual void
virtual int
virtual int
virtual int
virtual int
virtual int
virtual int
virtual bool
成员函数摘要
setMonth(int&)
setDay(int&)
setYear(int&)
setHour(int&)
setMinute(int&)
setSecond(int&)
getMonth(void) const
getDay(void) const
getYear(void) const
getHour(void) const
getMinute(void) const
getSecond(void) const
operator== (const Date&
设置该日期的月份
设置该日期的天数
设置该日期的年份
设置该日期的小时
设置该日期的分
设置该日期的秒
获得该日期的月份
获得该日期的天数
获得该日期的年份
获得该日期的小时
获得该日期的分钟
获得该日期的秒
判断该日期是否与传入日
virtual bool
operator<(const Date&
判断该日期是否早与传入
rhs)
期相等
left)
日期
Figure 8. The Function of Class “Date”
Page 6 / 36
2.4. Client:
构造函数
Client(void)
Client(Client const &c)
初始化并构造 Client 对象
拷贝构造与 c 相同的 Client 对象
Client (string &fname, string &lname,
初始化 Client 对象,并对其中的成员变量赋
string &email, string &passwd);
予特定值
Figure 9.
The Constructor of Class “Client”
virtual void
virtual void
virtual void
virtual void
virtual string
virtual string
virtual string
virtual string
virtual
成员函数
setFname(const string&)
setLname(const string&)
setEmail(const string&)
setPasswd(const string&)
getFname() const
getLname() const
getEmail() const
getPasswd() const
set::iterator
beginOfferings()
virtual
set::iterator
endOfferings()
virtual
set::iterator
beginBids()
virtual
set::iterator
endBids()
设置该用户的名
设置该用户的姓
设置该用户的电子邮箱
设置该用户的密码
获得该用户的名
获得该用户的姓
获得该用户的电子邮箱
获得该用户的密码
获得该用户用于记录所
有投标商品的容器的尾
迭代器
获得该用户用于记录所
有投标商品的容器的尾
迭代器
获得该用户用于记录所
有投标的容器的首迭代
器
获得该用户用于记录所
有投标的容器的尾迭代
器
virtual void
virtual void
addBid(int item)
添加该用户的投标编号
addOffering (int item)
添加该用户的投标商品
编号
virtual bool
verifyPasswd(string passwd) 检查传入字符串是否为
Figure 10.
The Function of Class “Client”
该用户名密码
Page 7 / 36
2.5. Group:
Client*
*operator[](const string&
成员函数
email)
以用户的电子邮箱作为
检索值从该组查找并获
得该用户
add(Client* ptr)
添加新用户到该组
获得该组存储用户的容
器的首迭代器
获得该组用户存储用户
的容器的尾迭代器
virtual void
virtual
map
begin()
::iterator
virtual
map
end()
::iterator
Figure 11. The Function of Class “Group”
2.6. Listing:
virtual
operator[](const int&
Advertisement*
number)
成员函数
以广告的编号作为检索
值从该列表查找并获得
该广告
virtual void
add(Advertisement* ptr)
添加新广告到该列表
virtual vector<
Advertisement*
>::iterator
virtual vector<
Advertisement*
>::iterator
begin()
end()
virtual Listing
sort(string field)
virtual Listing
filter(string keyword)
获得该列表存储广告的
容器的首迭代器
获得该列表存储广告的
容器的尾迭代器
遍历整个列表,按照以
传入字符串为名称的
“Advertisement”类中成
员变量大小进行排序,
并将排序好的广告添加
进新的列表容器中病返
回列表容器。
以传入的字符串作为索
引值,遍历整个列表,
查找广告标题或主体中
含有该传入字符串,并
将所有的这样的广告添
加进新的列表容器并返
回该列表容器。
Figure 12. The Function of Class “Listing”
Page 8 / 36