S07154拍卖.docx
《S07154拍卖.docx》由会员分享,可在线阅读,更多相关《S07154拍卖.docx(54页珍藏版)》请在冰豆网上搜索。
S07154拍卖
拍卖
1题目简述
1.1题目要求
拍卖过程:
委托(物品信息、可提出保留价)
公告(物品信息、保留价)
多次竞价
成交或流排
设计一个监控程序:
维护拍卖过程各个环节的所有信息
最后保留所有物品的拍卖结果信息
1.2题目要求细化
1.2.1程序基本功能
拍卖品的委托:
实现对拍卖物品名称,保留价和功能的初始化。
拍卖过程:
实现对拍卖工程中参与者的初始化(既有多少人参与拍卖)。
拍卖品的公告:
实现对已经委托的物品进行公告,显示出物品信息。
拍卖品的竞拍:
实现对已经有的拍卖品进行竞价拍卖。
拍卖品的结果:
实现已经拍卖完的物品显示是竞拍成功还是流拍。
拍卖品的监控:
实现对拍卖过程的监控,即有多少流拍,多少成功竞拍的相关信息,或者查看指定拍卖品的相关信息。
1.2.2需要处理的数据
实体型:
拍卖品的信息,包括拍卖品名称、底价、功能、成交价、流拍还是竞拍成功。
管理型:
记录管理方面的信息,包括创建多个物品的静态链表、初始化各个拍卖品、插入,删除、查看拍卖品动态信息。
2用例建模
2.1用例图
2.2用例规约
用例名称
拍卖信息管理系统
用户ID
角色
系统用户
用例说明
登入系统后拍卖物品和查询拍卖物品信息
前置条件
登入系统
基本事件流
参与者动作
管理员动作
系统响应
1输入是否参与竞拍
2输入竞拍价格
1输入拍卖品的相关信息
2查询相关拍卖品的信息
3选择进入相关的界面
1进入用户选定界面
2提供终端信息输入界面
3对于错误操作报错
4打印用户和管理员需求的信息
其他事件流
无
异常事件流
1.输入非法字符
2.查询不存在的信息
后置条件
正确响应用户和管理员的操作
3静态建模
3.1类图
3.2类的定义
类名
goods
成员变量名
变量类型
属性
描述
reserve_cost
int
private
保留价
name
string
private
拍卖品名称
function
string
private
拍卖品功能
成员函数原型
返回值
属性
描述
DisplayGoods()
void
public
输出拍卖品的相关信息
SetGoods()
void
public
输入拍卖品的相关信息
SetGoods(goodsgood)
void
public
重载输入拍卖品的相关信息
GetGoodFunction()
string
public
获取拍卖品功能
Get_Reserve_Cost()
int
public
获取保留价
ResetData()
void
public
复位所有参数
GetGoodName()
string
public
获取物品名
类名
ManyGoods
成员变量名
变量类型
属性
描述
*FirstGoods
GoodList
private
第一个拍卖品的指针
GoodsNum
int
private
拍卖品的数目
成员函数
返回值
属性
描述
SetManyGoodsInfo(intnum)
bool
public
设置多个拍卖物品信息
GetOneGoodsInfo(intn,goods®oods)
bool
public
获取某个拍卖物品信息
InsertOneGoods(goodsgood)
bool
public
插入一个拍卖品
GetAllGoods()
void
public
获取所有拍卖品
DeleteAllGoods()
void
public
释放所有内存
类名
FinishSaleGood
成员变量名
变量类型
属性
描述
No
int
private
拍卖到该物品的物品人信息
price
bool
private
成交价格
sucessful
bool
private
是否成功拍卖
成员函数
返回值
属性
描述
GetFinishSaleGood()
void
public
获取拍卖结束的物品信息
GetNo()
int
public
获取拍卖物品编号
Getprice()
int
public
获取拍卖品价格
GetSucess()
bool
public
是否拍卖成功
SetFinishSaleGood(goodsgood,intnum,intpri,intsucess)
void
public
设置拍卖结束的物品信息
operator=(FinishSaleGoodstr)
void
public
重载=
类名
monitor
成员变量
变量类型
属性
描述
*FirstGood
FinishSaleGood
private
指向第一个拍卖物品
*EndGood
FinishSaleGood
private
指向最后一个拍卖物品
GoodNum
int
private
拍卖物品个数
成员函数
返回值
属性
描述
GetGoodInfo()
void
public
查看物品信息
GetOneGood(stringname)
bool
public
查找某个拍卖品信息
InsertOneGood(goodsgood,intnum,intpri,intsucess)
bool
public
插入一个拍卖物品
PrintAllGood()
void
public
打印所有拍卖品信息
PrintAllSucess()
void
public
打印所有拍卖成功的物品
PrintAllUnSucess()
void
public
打印所有流拍物品
PrintAllGoodName()
void
public
打印所有物品名字
PrintAllSucessGoodName()
void
public
打印所有拍卖成功物品名字
PrintAllUnSucessGoodName()
void
public
打印所有流拍物品名字
类名
sale
成员变量
变量类型
属性
描述
sale_money
int
private
成交价
Many_Sale_Goods
ManyGoods
private
多个拍卖品
mon
monitor
private
监控类
sale_good
goods
private
物品类
sale_flag
bool
private
是否拍卖物品
finish_compete
bool
private
完成拍卖标志位
compete_money
int
private
竞拍的价格
compete_person
int
private
每轮竞拍的人数
all_sale_times
int
private
总共拍卖次数
buyer
int
private
拍卖成功的获得者编号
InitCanyuMan
int
private
开始参与竞拍的人数
Sale_Goods_Num
int
private
拍卖品个数
成员函数
返回值
属性
描述
sale_process()
bool
public
拍卖过程
DisCaiDan()
void
public
进入选择菜单
wait_sale()
void
public
等待拍卖者委托
DisSale(int)
void
public
显示竞拍的结果
angecy_sale()
bool
public
委托
start_sale()
void
public
启动拍卖
compete_sale(intperson)
void
public
是否竞拍
reset_data()
void
public
参数清0
fail_sale()
void
public
流拍
SetInitMan()
void
public
设置参与拍卖的初始人数
in_monitor()
void
public
进入监控模式
4.动态建模
4.1活动图
4.2状态图
4.3时序图
4.4协作图
5系统实现
5.1运行界面
5.1.1初始菜单选择界面
5.1.2进入拍卖界面
5.1.3初始化拍卖相关信息
5.1.4开始竞拍
5.1.5拍卖结束
5.1.6进入监控界面
5.1.7查看所有流拍商品
5.1.8查看所有拍卖成功的商品
5.1.9指定查看某个商品
5.2关键代码解析
以上函数使用静态链表实现最终拍卖品的存储和释放,这种方式比数组更加灵活,节省内存。
以上函数通过使用了动态链表的方式实现了对于拍卖品的动态分配,这种方式节省内存空间,可以实现动态申请和释放,原则上可以实习任意个拍卖品进行拍卖。
6总结提高
6.1课程设计总结
遇到的问题:
1.再开始的类设计的不好,导致经常反复重新设计,这里主要是得与类的开发原则和单一职责原则不是很了解
2.在C++语法上也不是很熟悉
3.在使用画图软件上不是很熟练,需要查看很多论坛资料
收获:
通过这次课设作业,我对于C++的语法更加熟悉,对于C++封闭开放原则和单一职责原则理解更加深入,对于整个C++各种类之间的关系,类图,活动图,状态图,时序图,协作图,用例图的区别以及绘制比以前更加熟悉,对于VISIO软件的使用更加熟悉,对于动态建模,静态建模有的更深入的了解。
6.2对本课程意见与建议
希望老师在各种类图的绘制上多给点指导,以及类直接的相互关系,有时间希望能够在C++的容器,泛型算法,模板之类的给些指点。
附件:
#include
#include
#include
usingnamespacestd;
classgoods//单蹋_个?
商Θ_品·类え_
{
private:
intreserve_cost;//保馈_留?
价?
stringname;//物?
品·名?
称?
stringfunction;//物?
品·功|能ü
public:
goods(intcost=0,stringmingzi="",stringgongneng=""):
\
reserve_cost(cost),name(mingzi),function(gongneng){}//默?
认?
够?
着?
函ˉ数簓初?
始?
化ˉ
voidDisplayGoods();//输?
出?
拍?
卖?
品·的?
信?
息¢
voidSetGoods();//输?
入?
拍?
卖?
品·的?
信?
息¢
voidSetGoods(goodsgood);//重?
载?
输?
入?
拍?
卖?
物?
品·信?
息¢
intGet_Reserve_Cost();//获?
取?
保馈_留?
价?
stringGetGoodFunction();//获?
取?
物?
品·功|能ü
voidResetData();//复′位?
所ù有瓺参?
数簓
stringGetGoodName();//获?
取?
物?
品·名?
};
/*****************************************************************************
函ˉ数簓名?
:
阰Get_Reserve_Cost
参?
数簓:
阰无T
功|能ü:
阰获?
取?
物?
品·保馈_留?
价?
返う_回?
值μ:
阰物?
品·保馈_留?
价?
******************************************************************************/
intgoods:
:
Get_Reserve_Cost()
{
returnreserve_cost;
}
/*****************************************************************************
函ˉ数簓名?
:
阰GetGoodFunction()
参?
数簓:
阰无T
功|能ü:
阰获?
取?
物?
品·功|能ü
返う_回?
值μ:
阰物?
品·功|能ü
******************************************************************************/
stringgoods:
:
GetGoodFunction()
{
returnfunction;
}
/*****************************************************************************
函ˉ数簓名?
:
阰GetGoodName()
参?
数簓:
阰无T
功|能ü:
阰获?
取?
物?
品·名?
返う_回?
值μ:
阰物?
品·名?
字?
******************************************************************************/
stringgoods:
:
GetGoodName()
{
returnname;
}
/*****************************************************************************
函ˉ数簓名?
:
阰ResetData()
参?
数簓:
阰无T
功|能ü:
阰所ù有瓺参?
数簓归é0
返う_回?
值μ:
阰无T
******************************************************************************/
voidgoods:
:
ResetData()
{
reserve_cost=0;
name="";
function="";
}
/*****************************************************************************
函ˉ数簓名?
:
阰SetGoods()
参?
数簓:
阰goods:
物?
品·类え_
功|能ü:
阰通_过y形?
参?
直±接ó对?
物?
品·对?
象ó初?
始?
化ˉ
返う_回?
值μ:
阰无T
******************************************************************************/
voidgoods:
:
SetGoods(goodsgood)
{
name=good.name;
function=good.function;
reserve_cost=good.reserve_cost;
}
/*****************************************************************************
函ˉ数簓名?
:
阰SetGoods()
参?
数簓:
阰无T
功|能ü:
阰打洙_印?
拍?
卖?
品·的?
相à关?
信?
息¢
返う_回?
值μ:
阰无T
******************************************************************************/
voidgoods:
:
SetGoods()
{
cout<<"拍?
卖?
品·名?
称?
:
阰"<cin>>name;
cout<<"拍?
卖?
品·功|能ü:
阰"<cin>>function;
cout<<"保馈_留?
价?
是?
:
阰"<cin>>reserve_cost;
}
/*****************************************************************************
函ˉ数簓名?
:
阰DisplayGoods
参?
数簓:
阰无T
功|能ü:
阰打洙_印?
拍?
卖?
品·的?
相à关?
信?
息¢
返う_回?
值μ:
阰无T
******************************************************************************/
voidgoods:
:
DisplayGoods()
{
cout<<"拍?
卖?
品·名?
称?
:
阰"<cout<<"拍?
卖?
品·功|能ü:
阰"<cout<<"保馈_留?
价?
是?
:
阰"<}
typedefstructGoodsList
{
structGoodsList*next;//下?
个?
物?
品·
goodsGoodsData;//物?
品·信?
息¢
}GoodList;
//多à个?
拍?
卖?
商Θ_品·类え_
classManyGoods
{
private:
GoodList*FirstGoods;//第台_一?
个?
要癮拍?
卖?
的?
商Θ_品·
intGoodsNum;//拍?
卖?
物?
品·个?
数簓
public:
ManyGoods()
{
FirstGoods=NULL;
GoodsNum=0;
}
boolSetManyGoodsInfo(intnum);//设Θ_置?
多à个?
拍?
卖?
物?
品·信?
息¢
boolGetOneGoodsInfo(intn,goods®oods);//获?
取?
某3个?
拍?
卖?
物?
品·信?
息¢
boolInsertOneGoods(goodsgood);//插?
入?
某3个?
物?
品·
voidGetAllGoods();//获?
取?
所ù有瓺物?
品·信?
息¢
voidDeleteAllGoods();//释酣_放?
所ù有瓺内ú存?
~ManyGoods()
{
GoodList*p=FirstGoods;
if(GoodsNum>0)
for(inti=0;i缓o存?
{
FirstGoods++;
deletep;
FirstGoods=FirstGoods->next;
}
FirstGoods=NULL;
}
};
//释酣_放?
所ù有瓺内ú存?
voidManyGoods:
:
DeleteAllGoods()
{
GoodList*p=FirstGoods;
if(GoodsNum>0)
for(inti=0;i缓o存?
{
FirstGoods++;
deletep;
FirstGoods=FirstGoods->next;
}
FirstGoods=NULL;
}
//设Θ_置?
所ù有瓺物?
品·信?
息¢
boolManyGoods:
:
SetManyGoodsInfo(intnum)
{
GoodsNum=num;
inti=num;
GoodList*First=NULL;
GoodList*s=NULL;
while(i>0)
{
cout<<"初?
始?
化ˉ第台?
"<拍?
卖?
品·信?
息¢"<if(i==num)//头_指?
针?
{
FirstGoods=newGoodList;
if(!
FirstGoods)returnfalse;
FirstGoods->GoodsData.SetGoods();
First=FirstGoods;
}
else//尾2插?
法ぁ_创洹_建¨物?
品·链ⅰ_表括_
{
s=newGoodList;
if(!
s)returnfalse;
s->GoodsData.SetGoods();
First->next=s;
First=s;
}
i--;
}
First->next=NULL;
returntrue;
}
//获?
取?
某3个?
物?
品·信?
息¢
boolManyGoods:
:
GetOneGoodsInfo(intn,goods®oods)
{
if(n>GoodsNum||n<0||FirstGoods==NULL)
{
returnfalse;
}
inti=1;
GoodList*good=NULL;
while(i<=n)
{
if(1==i)
good=FirstGoods;
else
good=good->next;
i++;
}
if(good==NULL)
returnfalse;
regoods=good->GoodsData;
returntrue;
}
//获?
取?
所ù有瓺物?
品·信?
息¢
voidManyGoods:
:
GetAllGoods()
{
inti=0;
GoodList*p=FirstGoods;
while(i{
cout<<"物?
品·"<
息¢:
阰"<p->GoodsData.DisplayGoods();
p=p->next;
}
}
boolManyGoods:
:
InsertOneGoods(goodsgood)//插?
入?
某3个?
物?
品·
{
if(GoodsNum==0)
{
FirstGoods=newGoodList;
if(!
FirstGoods)returnfalse;
FirstGoods->next=NULL;
FirstGoods->GoodsData.SetGoods(good);
GoodsNum++;
}
else
{
GoodList*goodpoint=FirstGoods;
while(goodpoint->next!
=NULL)
goodpoint=goodpoint->next;
GoodList*s=NULL;
s=newGoodList;
if(!
s)returnfalse;
(*s).GoodsData.SetGoods(good);
s->next=goodpoint->next;
goodpoint->next=s;
}
returntrue;
}
//保馈_留?
单蹋_个?
物?
品·拍?
卖?
结á束?
信?
息¢类え_
classFinishSaleGood:
publicgoods