當前位置:編程學習大全網 - 編程語言 - 關於c++的編程高速公收費系統路

關於c++的編程高速公收費系統路

Hi ,這裏給妳整理了壹段小代碼僅供參考:

ExpressManager.h

#ifndef?__EXPRESSMANAGER_H__

#define?__EXPRESSMANAGER_H__

#include?<memory>

enum?e_CarType

{

E_CARTYPE_S,

E_CARTYPE_M,

E_CARTYPE_B,

E_CARTYPE_SIZE,

};

struct?s_Car

{

float?passCharge;

float?trip?;

enum?e_CarType?type;

};

static?float?CHARGE_DEF[E_CARTYPE_SIZE]={0.3F,0.4F,0.5F};

const?int?NAME_LEN=16;

class?ExpressManager

{

public:

explicit?ExpressManager(const?char*?name="Express"):_passCharge(0.0f),_tempCharge(0.0f)

{

memcpy(?_name,name,NAME_LEN?);

}

~ExpressManager(void){}

//?pass?the?express?manager

//?@?car?the?pass?car

//?@?passCharge?the?charge?for?passing?

float?Pass(?const?struct?s_Car*?car,float?passCharge,float&?rCharge?);

//?show?the?charge?for?passing

//?@?car?the?pass?car?

float?ShowCharge(?const?struct?s_Car*?car?)?const?;

float?ShowTotal(?)?const

{?

printf("\t?Total?is:%0.2f\n",_passCharge);

return?_passCharge;

}

void?PassCar();

void?PassTest();

private:

//?caculate?the?charge?for?passing

//?@?car?the?parss?car

//?@?return?!0?,succss?to?get?the?value;?-1?,bad?data

inline?float?Caculate(?const?struct?s_Car*?car?)?const

{

return?car->trip*CHARGE_DEF[car->type];

}

float?_passCharge;

float?_tempCharge;

char?_name[NAME_LEN];

};

#endif

ExpressManager.cpp

#include?"stdafx.h"

#include?"ExpressManager.h"

//?pass?the?express?manager

//?@?car?the?pass?car

//?@?passCharge?the?charge?for?passing?

float?ExpressManager::Pass(?const?struct?s_Car*?car,float?passCharge,float&?rCharge?)

{

if(?car?!=NULL?)

{

float?need?=?Caculate(?car?);

_tempCharge+=passCharge;

if(?_tempCharge?>=?need?)

{

_passCharge?+=?need;

rCharge?=?_tempCharge?-?need;

_tempCharge?=?0;

return?true;

}

else

{

printf(?"Fail?to?pass?!?less?%0.2f\n",need-_tempCharge?);

return?false;

}

}

else

{

printf("Fail?to?pass?Null?data!\n");

}

return?false;

}

//?show?the?charge?for?passing

//?@?car?the?pass?car?

float?ExpressManager::ShowCharge(?const?struct?s_Car*?car?)?const?

{

if(?car?!=?NULL?)

{

return?Caculate(?car?);

}

else

{

printf("Fail?to?show?Null?data!\n");

return?0.0f;

}

}

void?ExpressManager::PassCar()

{

struct?s_Car?temp={0};

float?pCharge=0.0f;

float?rCharge=0.0f;

printf("plz,input?car?info!?e.?type?trip\n");

if(?scanf_s("%d?%f",&temp.type,&temp.trip?)!=?EOF?)

{

temp.passCharge?=?ShowCharge(?&temp?);

printf("plz?pay?%0.2f?for?passing\n",temp.passCharge?);

while(true)

{

if(?scanf_s(?"%f",&pCharge?)?!=?EOF?)

{

if(?Pass(?&temp,pCharge,rCharge?)?)

{

if(?rCharge==0.0f)

{

printf("congratulation!?see?you?next?time!\n");

}

else

{

printf("congratulation!?payback?you?%0.2f?see?you?next?time!\n",rCharge);

}

break;

}

}

}

}

}

void?ExpressManager::PassTest()

{

int?cmd?=?0;

while(true)

{

printf("welcome?to?%s\n",_name);

printf("\t'p'?-?pass?the?car!\n");

printf("\t's'?-?show?the?total?charge!\n");

printf("\t'q'?-?Exit!\n");

fflush(stdin);

if(?(cmd?=?getchar())?!=EOF?)

{

if(?cmd?==?'q'?)?break;

else?if(?cmd?==?'s'?)

{

ShowTotal();

}

else?if(?cmd?==?'p'?)

{

PassCar();

}

}

}

}

測試代碼:

#include?"ExpressManager.h"

#include?<stdio.h>

int?main(int?argc,?char*?argv[])

{

ExpressManager?*Express1=new?ExpressManager("G2023");

Express1->PassTest();

return?0;

}

以上代碼僅供參考,更多源碼可以聯系我,更多源碼地址:/forum.php?mod=forumdisplay&fid=48

  • 上一篇:實訓總結萬能版2000字
  • 下一篇:職場中,如何通過數字思考、決策和說服別人?
  • copyright 2024編程學習大全網