#ifndef __EXERCISE1_H__
#define __EXERCISE1_H__
#include <string>
#include <iostream>
using std::string;
using std::cout;
using std::endl;
// 类CPU
//Method :设定厂商名称
//:取得厂商名称
//:取得价格
//:设定主频
//:取得价格实现方法:根据主频的范围和厂商确定(自己自由发挥)
class CPU
{
public:
CPU(){}
CPU(string tradename,double price,double df);
CPU(const CPU &c);
virtual ~CPU(){}
void SetTradeName(string str);
string& GetTradeName();
double GetPrice();
void SetDominantFrequency(double df);
double GetPriceMethod(string tradename,double df);
void print(){cout<<cpu_TradeName<<dw_cpu_Price<<dw_dominantFrequency<<endl;}
private:
string cpu_TradeName;
double dw_cpu_Price;
double dw_dominantFrequency;
};
// 类Memory
//Method :设定厂商名称
//:取得厂商名称
//:取得价格(自己自由发挥)
//:设定大小
//:取得价格实现方法:根据内存大小的范围和厂商确定
class Memory
{
public:
Memory(){}
Memory(string mtn,double mprice,double ms);
Memory(const Memory &m);
virtual ~Memory(){}
void SetTradeName(string str); //设定Memory厂商名称
string& GetTradeName(); //取得Memory厂商名称
double GetPrice(); //取得Memory价格
void SetMemorySize(double ms); //设定Memory大小
double GetPriceMethod(string tradename,double ms); //取得价格实现方法:根据内存大小的范围和厂商确定
private:
string memory_TradeName;
double memory_Price;
double memory_Size;
};
// 类MainBoard
//Method :设定厂商名称
//:取得厂商名称
//:取得价格(自己自由发挥)
//:取得价格实现方法:根据厂商确定
//:Plug(CCPU*,CMemory* )
//:SelfCheck() 检察是否plug过正确的CPU, Memory
class MainBoard
{
public:
MainBoard(){}
MainBoard(string mtn,double mprice);
MainBoard(const MainBoard &m);
virtual ~MainBoard(){}
void SetTradeName(string str); //设定MainBoard 厂商名称
string& GetTradeName(); //取得MainBoard 厂商名称
double GetPrice(); //取得MainBoard 价格
double GetPriceMethod(string tradename); //根据厂商确定
bool Plug(CPU* CCPU,Memory* CMemory); //匹配cpu和memory
bool SelfCheck(); //检察是否plug过正确的CPU, Memory
private:
string MainBoard_TradeName;
double MainBoard_Price;
};
// 类Monitor
//Method :设定厂商名称
//:取得厂商名称
//:取得价格
//:设定大小
//:设定类型:一般。液晶
//:取得价格实现方法:根据大小,是否液晶和厂商确定(自己自由发挥)
class Monitor
{
public:
Monitor(){}
Monitor(string mtn,double mprice,double ms);
Monitor(const Monitor &m);
virtual ~Monitor(){}
void SetTradeName(string str); //设定Monitor 厂商名称
char& GetTradeName(); //取得Monitor 厂商名称
double GetPrice(); //取得Monitor 价格
void SetSize(double mons); //设定Monitor 大小
void SetType(string Type); //设定Monitor 类型
bool JugdeLCD(); //判断是否是液晶显示器
double GetPriceMethod(string tradename,bool b,double mons); //根据大小,是否液晶和厂商确定
private:
string Monitor_TradeName;
double Monitor_Price;
double Monitor_Size;
string Monitor_Type;
};
//类计算机:
//包含以上几个类的成员
//Method :设定CPU主频
//:设定CPU厂商(A,B,C)
//:设定Memory大小(128,256,512)
//:设定Memory厂商(A,B,C)
//:设定显示器大小(14,15,17,19),类型(一般,液晶)
//:设定显示器厂商(A,B,C);
//:设定主版的厂商(A,B,C);
//:察看整机价格(打印到屏幕)
//:察看配置(打印到屏幕)
//:Init() (调用MainBoard.Plug())
//:Start() (调用MainBoard.SelfCheck() )
// Computer类:包含上面几个类的对象。
//写一个小程序,动态创建一个10个Computer的数组,设定察看每一台的配置,计算总价格等。
//要求正确的释放对象的数组。
class Computer
{
public:
Computer(){}
Computer(CPU c,Memory my,MainBoard mb,Monitor mr,double price);
Computer(Computer &c);
virtual ~Computer(){}
void SetCpuDF(double df); //设定CPU主频
void SetCpuTradeName(string cpu); //设定CPU 厂商名称
void SetMemorySize(); //设定Memory大小(128,256,512)
void SetMemoryTradeName(string memory); //设定CPU 厂商名称
void SetMonitorTradeName(string monitor); //设定Monitor 厂商名称
void SetMonitorSize(double mons); //设定Monitor 大小
void SetMainBoard(string mainboard); //设定主版的厂商(A,B,C);
void PrintComputerPrice(); //察看整机价格(打印到屏幕)
void SeeComputerConfiguration();
double GetComputerPrice();
void Init(); //(调用MainBoard.Plug())
void Start(); // (调用MainBoard.SelfCheck() )
private:
CPU m_cpu;
Memory m_memory;
MainBoard m_mainboard;
Monitor m_monitor;
double m_ComputerPrice;
};
#endif
//#include <iostream>
#include "exercise1.h"
//using namespace std;
CPU::CPU(string tradename,double cprice,double df)
{
cpu_TradeName=tradename;
dw_cpu_Price=cprice;
dw_dominantFrequency=df;
}
CPU::CPU(const CPU&c)
{
cpu_TradeName = c.cpu_TradeName;
dw_cpu_Price = c.dw_cpu_Price;
dw_dominantFrequency = c.dw_dominantFrequency;
}
void CPU::SetTradeName(string str)
{
cpu_TradeName = str;
}
string& CPU::GetTradeName()
{
return cpu_TradeName;
}
double CPU::GetPrice()
{
return dw_cpu_Price;
}
void CPU::SetDominantFrequency(double df)
{
dw_dominantFrequency = df;
}
double CPU::GetPriceMethod(string tradename,double df)
{
if (tradename == "inter")
{
if (df>0 && df<=100)
{
dw_cpu_Price = 400;
}
else if (df>100&&df<=150)
{
dw_cpu_Price = 500;
}
else if (df>150&&df<=200)
{
dw_cpu_Price = 600;
}
else if (df>200)
{
dw_cpu_Price = 1000;
}
}
return dw_cpu_Price;
}
//Memory
Memory::Memory(string mtn,double mprice,double ms):memory_TradeName(mtn),memory_Price(mprice),memory_Size(ms)
{
}
Memory::Memory(const Memory &m)
{
memory_TradeName = m.memory_TradeName;
memory_Price = m.memory_Price;
memory_Size = m.memory_Size;
}
void Memory::SetTradeName(string str) //设定Memory厂商名称
{
memory_TradeName = str;
}
string& Memory::GetTradeName() //取得Memory厂商名称
{
return memory_TradeName;
}
double Memory::GetPrice() //取得Memory价格
{
return memory_Price;
}
void Memory::SetMemorySize(double ms) //设定Memory大小
{
memory_Size = ms;
}
double Memory::GetPriceMethod(string tradename,double ms) //取得价格实现方法:根据内存大小的范围和厂商确定
{
if (tradename == "inter")
{
if (ms>0 && ms<=128)
{
memory_Price = 100;
}
else if (ms>128 && ms<=256)
{
memory_Price = 200;
}
else if (ms>256&&ms<=512)
{
memory_Price = 300;
}
}
return memory_Price;
}
//MainBoard
MainBoard::MainBoard(string mtn,double mprice):MainBoard_TradeName(mtn),MainBoard_Price(mprice)
{
}
MainBoard::MainBoard(const MainBoard &m)
{
MainBoard_TradeName = m.MainBoard_TradeName;
MainBoard_Price = m.MainBoard_Price;
}
void MainBoard::SetTradeName(string str) //设定MainBoard 厂商名称
{
MainBoard_TradeName = str;
}
string& MainBoard::GetTradeName() //取得MainBoard 厂商名称
{
return MainBoard_TradeName;
}
double MainBoard::GetPrice() //取得MainBoard 价格
{
return MainBoard_Price;
}
double MainBoard::GetPriceMethod(string tradename)//根据厂商确定
{
if(tradename == "华硕")
{
MainBoard_Price = 500;
}
return MainBoard_Price;
}
bool MainBoard::Plug(CPU* CCPU,Memory* CMemory) //匹配cpu和memory
{
return true;
}
bool MainBoard::SelfCheck() //检察是否plug过正确的CPU, Memory
{
return true;
}
#include "exercise1.h"
#include <istream>
using std::cout;
using std::endl;
int main()
{
CPU C("inter",2,100);
C.print();
cout<<C.GetPrice()<<endl;
Memory M("inter",2,128);
return 0;
}