永发信息网

c++编程题

答案:1  悬赏:60  手机版
解决时间 2021-04-14 14:51

定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、当日开盘价和当日收盘价。尽量发挥想象力。为该类设计成员函数。

在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。

最佳答案

增加三个属性:股票编号、股票名称、当前价格


支持操作:获得交易日/股票编号/股票名称/当前价格/最高价/最低价/开盘价/收盘价/涨幅/是否涨/跌/显示股票信息/开盘/收盘/改变价格。。


#include <iostream>
#include <string>
using namespace std;


// 定义浮点数最大值
#ifndef FLT_MAX
#define FLT_MAX 3.402823466e+38F
#endif


class Stock
{
public:
Stock(const Stock& stock)
{
this->m_strStockID = stock.GetStockID();
this->m_strStockName = stock.GetStockName();
this->m_fPriceDayHigh = FLT_MAX;
this->m_fPriceDayLow = 0.0f;
}


Stock(const Stock stock, int nTradeDataNo)
{
this->m_strStockID = stock.GetStockID();
this->m_strStockName = stock.GetStockName();
this->m_nTradeDataNo = nTradeDataNo;
this->m_fPriceDayHigh = FLT_MAX;
this->m_fPriceDayLow = 0.0f;
}

Stock(const Stock stock, int nTradeDataNo, float fPriceDayOpen)
{
this->m_strStockID = stock.GetStockID();
this->m_strStockName = stock.GetStockName();
this->m_nTradeDataNo = nTradeDataNo;
this->m_fPriceNow = this->m_fPriceDayHigh = this->m_fPriceDayLow = this->m_fPriceDayOpen = fPriceDayOpen;
}


Stock(string strStockID, string strStockName)
{
this->m_strStockID = strStockID;
this->m_strStockName = strStockName;
this->m_fPriceDayHigh = FLT_MAX;
this->m_fPriceDayLow = 0.0f;
}


Stock(string strStockID, string strStockName, int nTradeDataNo)
{
this->m_strStockID = strStockID;
this->m_strStockName = strStockName;
this->m_nTradeDataNo = nTradeDataNo;
this->m_fPriceDayHigh = FLT_MAX;
this->m_fPriceDayLow = 0.0f;
}


Stock(string strStockID, string strStockName, int nTradeDataNo, float fPriceDayOpen)
{
this->m_strStockID = strStockID;
this->m_strStockName = strStockName;
this->m_nTradeDataNo = nTradeDataNo;
this->m_fPriceNow = this->m_fPriceDayHigh = this->m_fPriceDayLow = this->m_fPriceDayOpen = fPriceDayOpen;
}


public:
// 设置交易日
void SetTradeDataNo(int nTradeDataNo)
{
this->m_nTradeDataNo = nTradeDataNo;
}


// 开盘
void Open(float fPriceDayOpen)
{
this->m_fPriceNow = this->m_fPriceDayHigh = this->m_fPriceDayLow = this->m_fPriceDayOpen = fPriceDayOpen;
}

// 收盘
void Close()
{
this->m_fPriceDayClose = m_fPriceNow;
}


// 获得当前价格
int GetPriceNow() const
{
return this->m_fPriceNow;
}


// 获得交易日序号
int GetTradeDateNo() const
{
return this->m_nTradeDataNo;
}


// 获得最高价
float GetDayHigh() const
{
return this->m_fPriceDayHigh;
}

// 获得最低价
float GetDayLow() const
{
return this->m_fPriceDayLow;
}

// 获得开盘价
float GetDayOpen() const
{
return this->m_fPriceDayOpen;
}

// 获得收盘价
float GetDayClose() const
{
return this->m_fPriceDayClose;
}

// 获得股票名
string GetStockName() const
{
return this->m_strStockName;
}

// 获得股票编号
string GetStockID() const
{
return this->m_strStockID;
}

// 获得涨幅
float GetRaises() const
{
return this->m_fPriceDayClose / this->m_fPriceDayOpen;
}


// 涨还是跌
bool IsRaise() const
{
return GetRaises() > 1;
}


// 改变价格
void ChangePrice(float fPriceChanged)
{
if (fPriceChanged > m_fPriceDayHigh)
{
this->m_fPriceDayHigh = fPriceChanged;
}
if (fPriceChanged < m_fPriceDayLow)
{
this->m_fPriceDayLow = fPriceChanged;
}
m_fPriceNow = fPriceChanged;
}


// 显示信息
void PrintStockInfo() const
{
cout << m_nTradeDataNo << "日 ";
cout << "[" << m_strStockID << "] " << m_strStockName << "交易信息" << endl;
cout << "涨幅:" << GetRaises() << "【" << (IsRaise()?"涨":"跌") << "】" <<endl;
cout << "开盘价:" << m_fPriceDayOpen << endl;
cout << "收盘价:" << m_fPriceDayClose << endl;
cout << "最高价:" << m_fPriceDayHigh << endl;
cout << "最低价:" << m_fPriceDayLow << endl;
cout << "=========================================================" << endl;
}


private:
int m_nTradeDataNo; // 交易日序号
float m_fPriceDayHigh; // 当日最高价
float m_fPriceDayLow; // 当日最低价
float m_fPriceDayOpen; // 当日开盘价
float m_fPriceDayClose; // 当日收盘价


float m_fPriceNow; // 当前价格


string m_strStockID; // 股票编号
string m_strStockName; // 股票名
};


int main(void)
{
Stock yesterday("DK3301", "某某股票", 1, 3.5f);
yesterday.ChangePrice(3.7f);
yesterday.ChangePrice(3.1f);
yesterday.ChangePrice(2.7f);
yesterday.Close();
yesterday.PrintStockInfo();


Stock today(yesterday, 2);
today.Open(2.5f);
today.ChangePrice(2.8f);
today.ChangePrice(2.7f);
today.ChangePrice(2.9f);
today.ChangePrice(3.1f);
today.Close();
today.PrintStockInfo();

return 0;
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
给最好闺蜜结婚祝福语,好兄弟结婚 发祝福语
韩国微妮化妆品专卖NO.0442这个地址在什么地
穿越火线怎样上YY,哪个教教我,
二次函数y=2(x+m)2+4的顶点坐标是(-1,4)
自己不好吗?为什么还要找另一半
口袋妖怪白金血翼飞龙的最初形态有抓吗
汽车音响喇叭密封对音响效果有哪些作用
今年的诺贝尔得奖人名单是什么?
棋牌室禁烟标语大全,求棋牌室里用的标语
康熙微服私访记是三德子葵花宝典法印九阳神功
温馨家园便利店怎么去啊,有知道地址的么
We’re going to play on Huaguo Mount this
帮忙翻译一下英文.谢谢
自行车机械碟刹碟片问题? 5分
N76多少钱啊水货山东缁博那有买
推荐资讯
小屁孩日记电影里的格雷最后和谁在一起?
显示器!~专家来看看!!
c0nstellati0n什么意思
宫颈癌前病变全切后会复发么?
找一个带火的字或者有火的意思做名字用
我的电脑的液晶屏花了
大家帮我看看这个怎么弄?
health是名词还是副词?
去慕田峪长城70岁老人可以可以免票吗?
一首韩国歌曲 男的演唱 中间的高潮部分是na n
日产经典轩逸抗造吗?
什么是小鬼?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?