程序功能:
  在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0.5元,中型车每公里0.4元,小型车每公里0.3元,来车验条,根据行驶公里数即得应收款的金额。在交班时要统计出总数。
  这里简单的整理了一个ExpressManager类,具体代码如下:
  ExpressManager.h
1 #ifndef __EXPRESSMANAGER_H__
2 #define __EXPRESSMANAGER_H__
3
4 #include <memory>
5
6 enum e_CarType
7 {
8         E_CARTYPE_S,
9         E_CARTYPE_M,
10         E_CARTYPE_B,
11         E_CARTYPE_SIZE,
12 };
13
14 struct s_Car
15 {
16         float passCharge;
17         float trip ;
18         enum e_CarType type;
19
20 };
21
22 static float CHARGE_DEF[E_CARTYPE_SIZE]={0.3F,0.4F,0.5F};
23 const int NAME_LEN=16;
24
25 class ExpressManager
26 {
27
28 public:
29
30         explicit ExpressManager(const char* name="Express"):_passCharge(0.0f),_tempCharge(0.0f)
31         {
32                 memcpy( _name,name,NAME_LEN );
33         }
34
35         ~ExpressManager(void){}
36
37         // pass the express manager
38         // @ car the pass car
39         // @ passCharge the charge for passing
40         float Pass( const struct s_Car* car,float passCharge,float& rCharge );
41
42         // show the charge for passing
43         // @ car the pass car
44         float ShowCharge( const struct s_Car* car ) const ;
45
46
47         float ShowTotal( ) const
48         {
49                 printf(" Total is:%0.2f ",_passCharge);
50                 return _passCharge;
51         }
52
53         void PassCar();
54
55         void PassTest();
56
57 private:
58
59         // caculate the charge for passing
60         // @ car the parss car
61         // @ return !0 ,succss to get the value; -1 ,bad data
62         inline float Caculate( const struct s_Car* car ) const
63         {
64                 return car->trip*CHARGE_DEF[car->type];
65         }
66
67         float _passCharge;
68         float _tempCharge;
69         char _name[NAME_LEN];
70 };
71
72 #endif