Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef __PROGTEST__
- #include <iostream>
- #include <iomanip>
- #include <cstdlib>
- #include <cstdio>
- #include <cstring>
- #include <string>
- using namespace std;
- class InvalidCarException
- {
- public:
- InvalidCarException ( const string & rz ) :
- m_RZ ( rz ) {}
- friend ostream & operator << ( ostream & os, const InvalidCarException & e )
- { return os << e . m_RZ; }
- private:
- string m_RZ;
- };
- class InvalidDriverException
- {
- public:
- InvalidDriverException ( const string & name, const string & surname ) :
- m_Name ( name ), m_Surname ( surname ) {}
- friend ostream & operator << ( ostream & os, const InvalidDriverException & e )
- { return os << e . m_Name << ' ' << e . m_Surname; }
- private:
- string m_Name;
- string m_Surname;
- };
- class CTester;
- #endif /* __PROGTEST__ */
- class CDriver;
- class CCar;
- class CDriver
- {
- public:
- CDriver ( const string & name,
- const string & surname );
- // operator <<
- // dalsi Vase rozhrani
- friend class ::CTester;
- protected:
- struct TLog
- {
- string m_Date;
- CCar * m_Car;
- };
- string m_Name;
- string m_Surname;
- TLog * m_Log;
- int m_LogNr;
- };
- class CCar
- {
- public:
- CCar ( const string & RZ );
- // operator <<
- // dalsi Vase rozhrani
- friend class ::CTester;
- protected:
- struct TLog
- {
- string m_Date;
- CDriver * m_Driver;
- };
- string m_RZ;
- TLog * m_Log;
- int m_LogNr;
- };
- class CDatabase
- {
- public:
- CDatabase ( void );
- bool Add ( const string & date,
- const string & name,
- const string & surname,
- const string & RZ );
- const CCar & FindCar ( const string & RZ ) const;
- const CDriver & FindDriver ( const string & name,
- const string & surname ) const;
- // operator <<
- // dalsi Vase rozhrani
- friend class ::CTester;
- protected:
- CDriver ** m_Drivers;
- int m_DriversNr;
- CCar ** m_Cars;
- int m_CarsNr;
- };
- Ukázka použití tříd:
- CDatabase * a, * b, *c;
- bool st;
- a = new CDatabase;
- st = a -> Add ( "2012-03-01", "John", "Nowak", "ABC-12-34" ); // st = true
- st = a -> Add ( "2012-03-02", "John", "Nowak", "ABC-12-34" ); // st = true
- st = a -> Add ( "2012-03-03", "John", "Nowak", "DEF-56-67" ); // st = true
- st = a -> Add ( "2012-03-02", "George", "Smith", "DEF-56-67" ); // st = true
- cout << *a;
- /*
- Drivers:
- John Nowak
- 2012-03-01: ABC-12-34
- 2012-03-02: ABC-12-34
- 2012-03-03: DEF-56-67
- George Smith
- 2012-03-02: DEF-56-67
- Cars:
- ABC-12-34
- 2012-03-01: John Nowak
- 2012-03-02: John Nowak
- DEF-56-67
- 2012-03-02: George Smith
- 2012-03-03: John Nowak
- */
- cout << a -> FindCar ( "ABC-12-34" );
- /*
- ABC-12-34
- 2012-03-01: John Nowak
- 2012-03-02: John Nowak
- */
- cout << a -> FindDriver ( "John", "Nowak" );
- /*
- John Nowak
- 2012-03-01: ABC-12-34
- 2012-03-02: ABC-12-34
- 2012-03-03: DEF-56-67
- */
- cout << a -> FindCar ( "XYZ-99-88" );
- // InvalidCarException thrown, cout << e => "XYZ-99-88"
- cout << a -> FindDriver ( "John", "Smith" );
- // InvalidDriverException thrown, cout << e => "John Smith"
- delete a;
- a = new CDatabase;
- st = a -> Add ( "2012-03-01", "John", "Nowak", "ABC-12-34" ); // st = true
- st = a -> Add ( "2012-03-02", "George", "Smith", "DEF-56-67" ); // st = true
- cout << *a;
- /*
- Drivers:
- John Nowak
- 2012-03-01: ABC-12-34
- George Smith
- 2012-03-02: DEF-56-67
- Cars:
- ABC-12-34
- 2012-03-01: John Nowak
- DEF-56-67
- 2012-03-02: George Smith
- */
- st = a -> Add ( "2012-03-01", "John", "Nowak", "XYZ-99-99" ); // st = false
- st = a -> Add ( "2012-03-02", "Peter", "McDonald", "DEF-56-67" ); // st = false
- cout << *a;
- /*
- Drivers:
- John Nowak
- 2012-03-01: ABC-12-34
- George Smith
- 2012-03-02: DEF-56-67
- Cars:
- ABC-12-34
- 2012-03-01: John Nowak
- DEF-56-67
- 2012-03-02: George Smith
- */
- delete a;
- a = new CDatabase;
- b = new CDatabase;
- st = a -> Add ( "2012-03-01", "John", "Nowak", "ABC-12-34" ); // st = true
- st = a -> Add ( "2012-03-02", "John", "Nowak", "DEF-56-67" ); // st = true
- st = a -> Add ( "2012-03-01", "George", "Smith", "DEF-56-67" ); // st = true
- st = a -> Add ( "2012-03-02", "George", "Smith", "ABC-12-34" ); // st = true
- cout << *a;
- /*
- Drivers:
- John Nowak
- 2012-03-01: ABC-12-34
- 2012-03-02: DEF-56-67
- George Smith
- 2012-03-01: DEF-56-67
- 2012-03-02: ABC-12-34
- Cars:
- ABC-12-34
- 2012-03-01: John Nowak
- 2012-03-02: George Smith
- DEF-56-67
- 2012-03-01: George Smith
- 2012-03-02: John Nowak
- */
- *b = *a;
- c = new CDatabase ( *a );
- st = b -> Add ( "2012-03-03", "Homer", "Simpson", "ABC-12-34" ); // st = true
- st = c -> Add ( "2012-03-03", "Homer", "Simpson", "DEF-56-67" ); // st = true
- delete a;
- cout << *b;
- /*
- Drivers:
- John Nowak
- 2012-03-01: ABC-12-34
- 2012-03-02: DEF-56-67
- Homer Simpson
- 2012-03-03: ABC-12-34
- George Smith
- 2012-03-01: DEF-56-67
- 2012-03-02: ABC-12-34
- Cars:
- ABC-12-34
- 2012-03-01: John Nowak
- 2012-03-02: George Smith
- 2012-03-03: Homer Simpson
- DEF-56-67
- 2012-03-01: George Smith
- 2012-03-02: John Nowak
- */
- cout << *c;
- /*
- Drivers:
- John Nowak
- 2012-03-01: ABC-12-34
- 2012-03-02: DEF-56-67
- Homer Simpson
- 2012-03-03: DEF-56-67
- George Smith
- 2012-03-01: DEF-56-67
- 2012-03-02: ABC-12-34
- Cars:
- ABC-12-34
- 2012-03-01: John Nowak
- 2012-03-02: George Smith
- DEF-56-67
- 2012-03-01: George Smith
- 2012-03-02: John Nowak
- 2012-03-03: Homer Simpson
- */
- delete b;
- delete c;
Add Comment
Please, Sign In to add comment