//stock.h
#ifndef STOCK_H_
#define STOCK_H_
#include<string>
class Stock
{
private:
std::string company;
int shares;
double share_val;
double total_val;
void set_tot(){total_val=shares*share_val;}
public:
Stock();
Stock(const std::string &co,long n =0,double pr =0.0);
~Stock();
void buy(long num,double price);
void sell(long num,double price);
void update(double price);
friend std::ostream & operator<<(std:: ostream & os,const Stock &st);
const Stock & topval(const Stock &s) const;
};
#endif
//stock.cpp
#include<iostream>
#include"stock.h"
Stock::Stock()
{
company = "no name";
shares = 0;
share_val =0.0;
total_val = 0.0;
}
Stock::~Stock()
{
}
Stock::Stock(const std::string &co,long n,double pr)
{
company = co;
if(n<0)
{
std::cout<<"number of shares can't be negative;"<<company<<"shares set to 0.\n";
shares = 0;
}
else
shares = n;
share_val = pr;
set_tot();}
void Stock::buy(long num,double price)
{
if(num<0)
{
std::cout<<"number of shares purchased can't be negative."<<"Transanction is aborted.\n";
}else
{
shares += num;
share_val = price;
set_tot();
}
}
void Stock::sell(long num,double price)
{
using std::cout;
if(num<0)
{
cout<<"Number of shares sold can't be negative."<<std::endl;
}
else if(num>shares)
{
cout<<"you can't sell more than you have!"<<std::endl;
}
else
{
shares-=num;
share_val = price;
set_tot();
}
}
void Stock::update(double price)
{
share_val=price;
set_tot();
}
std::ostream& operator<<(std:: ostream & os,const Stock &st)
{
os<<" shares:"<<st.shares<<" company:"<<st.company<<" share_val:"<<st.share_val<<" total:"<<st.total_val;
return os;
}
const Stock & Stock::topval(const Stock& s) const
{
if(s.total_val>total_val)
return s;
else
return *this;
}
//stock.cpp
#include<iostream>
#include"stock.h"
Stock::Stock()
{
company = "no name";
shares = 0;
share_val =0.0;
total_val = 0.0;
}
Stock::~Stock()
{
}
Stock::Stock(const std::string &co,long n,double pr)
{
company = co;
if(n<0)
{
std::cout<<"number of shares can't be negative;"<<company<<"shares set to 0.\n";
shares = 0;
}
else
shares = n;
share_val = pr;
set_tot();}
void Stock::buy(long num,double price)
{
if(num<0)
{
std::cout<<"number of shares purchased can't be negative."<<"Transanction is aborted.\n";
}else
{
shares += num;
share_val = price;
set_tot();
}
}
void Stock::sell(long num,double price)
{
using std::cout;
if(num<0)
{
cout<<"Number of shares sold can't be negative."<<std::endl;
}
else if(num>shares)
{
cout<<"you can't sell more than you have!"<<std::endl;
}
else
{
shares-=num;
share_val = price;
set_tot();
}
}
void Stock::update(double price)
{
share_val=price;
set_tot();
}
std::ostream& operator<<(std:: ostream & os,const Stock &st)
{
os<<" shares:"<<st.shares<<" company:"<<st.company<<" share_val:"<<st.share_val<<" total:"<<st.total_val;
return os;
}
const Stock & Stock::topval(const Stock& s) const
{
if(s.total_val>total_val)
return s;
else
return *this;
}
//main.cpp
#include<iostream>
#include"stock.h"
const int STKS = 4;
int main()
{
Stock stocks[STKS] = {
Stock("Nanosmart", 12,20.0),
Stock("Boffo ",200,2.0),
Stock("Monolithic",130,3.25),
Stock("Fleep ",60,6.5)
};
std::cout<<"Stock holdings"<<std::endl;
int st;
for(st = 0;st<STKS;st++)
std::cout<<stocks[st]<<std::endl;
const Stock * top = &stocks[0];
for(st = 1;st<STKS;st++)
{
top = &top->topval(stocks[st]);
}
std::cout<<"\n most valuable holding:\n";
std::cout<<*top;
system("pause");
return 0;
}
12.3
最新推荐文章于 2019-08-08 10:55:38 发布