使用类和多文件编译

来源:互联网 发布:阿里云cdn审核 编辑:程序博客网 时间:2024/05/16 15:33
#ifndef DUO_H_INCLUDED
#define DUO_H_INCLUDED


#include <string>
#include <iostream>
class Stock
{
private:
    string company;
    long shares;
    double share_val;
    double total_val;
    void set_tot()
    {
        total_val=shares*share_val;
    }
public:
    void acquire(const string & co,long n,double pr);
    void buy(long num,double price);
    void sell(long num,double price);
    void update(double price);
    void show();
};


#endif // DUO_H_INCLUDED


#include <iostream>
#include <windows.h>
#include "duo.h"
using namespace std;
void Stock::acquire(const::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! "
                <<"Transaction 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 purchased can't be negative! "
                <<"Transaction is aborted.\n";
    }
    else if(num>shares)
    {
        cout<<"You can't sell more than you have! "
        <<"Transaction is aborted.\n";
    }
    else
    {
        shares -=num;
        share_val= price;
        set_tot();
    }
}
void Stock::update(double price)
{
    share_val = price;
    set_tot();
}
void Stock::show()
{
    std::cout<<"Company: "<<company
    <<" Shares: "<<shares <<'\n'
    <<" Share Price: $"<<share_val
    <<" Total Worth: $"<<total_val<<'\n';
}
int main()
{
  Stock a;
  a.acquire("NanoSmart",20,12.50);
  a.show();
  a.buy(15,18.125);
  a.show();
  a.sell(400,20.00);
  a.show();
  a.buy(300000,40.125);
  a.show();
  a.sell(300000,0.125);
  a.show();
  system("PAUSE");
    return 0;
}