Rezervační systém
Veřejné metody | Seznam všech členů
Dokumentace třídy CQueryabstract

Třída určující klientské rozhraní mezi databází a zbytkem programu. ...

#include <Query.h>

Diagram dědičnosti pro třídu CQuery
CClientQuery CMemoryDb

Veřejné metody

virtual ~CQuery ()=0
 destruktor ...
 
virtual unsigned AddCity (const char *pszName)=0
 přidání města ...
 
virtual bool AddCityAlias (const char *pszName, unsigned uiId)=0
 přidání zkratky k nějakému existujícímu městu ...
 
virtual bool DeleteCity (const char *pszName)=0
 smazání města podle jména ...
 
virtual unsigned FindCity (const char *pszName)=0
 nalezení města podle názvu ...
 
virtual bool CityInfo (unsigned uiCity, RCityInfo *prInfo, unsigned *puiLinesOut, unsigned *puiLinesIn)=0
 získání informací o městě ...
 
virtual unsigned AddBusPlan (const char *pszName, unsigned uiSeats, const CBlobEx< std::string > *cData)=0
 přidání plánu autobusu ...
 
virtual bool DeleteBusPlan (const char *pszName)=0
 smazání plánu autobusu ...
 
virtual unsigned FindBusPlan (const char *pszName)=0
 nalezení plánu autobusu ...
 
virtual bool BusPlanInfo (unsigned uiPlan, RPlanInfo *prInfo, unsigned *puiBuses, CBlobEx< std::string > *cData)=0
 získání informací o plánu ...
 
virtual unsigned AddBus (const RBusInfo *prBus)=0
 přidání autobusu ...
 
virtual bool DeleteBus (unsigned uiBus)=0
 smazání autobusu ...
 
virtual unsigned FindBus (unsigned uiFrom, unsigned uiTo, time_t tLeaveTime)=0
 nalezení autobusu ...
 
virtual bool BusInfo (unsigned uiBus, RBusInfo *prInfo, bool *pfEnabled, unsigned *puiSeats, std::list< unsigned > *cFreeSeats)=0
 získání informací o autobusu ...
 
virtual bool EnableBus (unsigned uiBus)=0
 povolení autobusu ...
 
virtual bool DisableBus (unsigned uiBus)=0
 zakázání autobusu ...
 
virtual unsigned NewCustomer (void)=0
 unikátní ID pro nového zákazníka ...
 
virtual bool AskSeats (unsigned uiBus, std::list< unsigned > *cSeats, unsigned uiCustomer)=0
 dočasné zamluvení sedadel ...
 
virtual bool LockSeats (unsigned uiBus, std::list< unsigned > *cSeats, unsigned uiCustomer)=0
 trvalá rezervace sedadel ...
 
virtual bool UnlockSeats (unsigned uiBus, std::list< unsigned > *cSeats, unsigned uiCustomer)=0
 zrušení rezervace sedadel ...
 
virtual unsigned NextBus (unsigned uiBus)=0
 nalezení dalšího autobusu v pořadí ...
 
virtual unsigned NextCity (unsigned uiCity)=0
 nalezení dalšího města v pořadí ...
 
virtual unsigned NextPlan (unsigned uiPlan)=0
 nalezení dalšího plánu v pořadí ...
 
virtual bool ListCity (const char *pszFrom, std::string *strName)=0
 nalezení dalšího města v abecedním pořadí ...
 
virtual bool ListAlias (const char *pszFrom, std::string *strAlias, std::string *strCity)=0
 nalezení dalšího aliasu města v abecedním pořadí ...
 

Detailní popis

Třída určující klientské rozhraní mezi databází a zbytkem programu.

Tato třída poskytuje pouze seznam čistě virtuálních metod, které je třeba implementovat pro každou databázi, se kterou budeme chtít pracovat. Každá implementace databáze by měla být potomkem této třídy, nicméně rozhraní samo nijak neurčuje detaily ani pro databázový stroj ani pro uložení dat.

Dokumentace konstruktoru a destruktoru

CQuery::~CQuery ( )
inlinepure virtual

destruktor

Destruktor je deklarován jako virtuální, sám neprovádí žádnou činnost.

Dokumentace k metodám

virtual unsigned CQuery::AddBus ( const RBusInfo prBus)
pure virtual

přidání autobusu

Vytvoření autobusu s uvedenými daty a jeho přidání do databáze. Identifikační číslo (položka uiId struktury RBusInfo) nemusí být vyplněno, neboť dojde k jeho naplnění jedinečným číslem až při zpracování požadavku.

Parametry
[in]prBusstruktura RBusInfo s daty potřebnými k vytvoření nového autobusu,
Návratová hodnota
ID nově vloženého autobusu nebo 0 v případě chyby (snaha o zavedení duplicitního autobusu)

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::AddBusPlan ( const char *  pszName,
unsigned  uiSeats,
const CBlobEx< std::string > *  cData 
)
pure virtual

přidání plánu autobusu

Parametry
[in]pszNamenázev plánu/typu autobusu
[in]uiSeatspočet sedadel
[in]cDatabinární data rozvržení sedadel
Návratová hodnota
unikátní číslo přidaného plánu nebo číslo již existujícího plány se zadaným jménem

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::AddCity ( const char *  pszName)
pure virtual

přidání města

Parametry
[in]pszNamejméno města
Návratová hodnota
unikátní číslo nově přidaného města či číslo již dříve existujícího města

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::AddCityAlias ( const char *  pszName,
unsigned  uiId 
)
pure virtual

přidání zkratky k nějakému existujícímu městu

Parametry
[in]pszNamenázev zkratky či dalšího názvu
[in]uiIdID existujícího města, se kterým chceme propojit tuto zkratku
Návratová hodnota
úspěch operace - false v případě, že jméno již existuje (jako město či alias) nebo pokud město s ID není v databázi

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::AskSeats ( unsigned  uiBus,
std::list< unsigned > *  cSeats,
unsigned  uiCustomer 
)
pure virtual

dočasné zamluvení sedadel

Dočasné zamluvení sedadel, které po určitém čase vyprší.

Parametry
[in]uiBusID autobusu
[in,out]cSeatsseznam sedadel k rezervaci, neúspěšná sedadla budou smazána ze seznamu
[in]uiCustomerID zákazníka
Návratová hodnota
úspěch operace - false, pokud autobus není nalezen nebo se operace nezdařila pro všechna sedadla

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::BusInfo ( unsigned  uiBus,
RBusInfo prInfo,
bool *  pfEnabled,
unsigned *  puiSeats,
std::list< unsigned > *  cFreeSeats 
)
pure virtual

získání informací o autobusu

Parametry
[in]uiBusID autobusu
[out]prInfostruktura RBusInfo, která bude naplněná daty
[out]pfEnabledpřepínač, zda jsou povoleny změny v autobusu
[out]puiSeatspočet sedadel autobusu
[out]cFreeSeatsseznam volných sedadel
Návratová hodnota
úspěch operace - false, nebyl-li autobus nalezen
Poznámka
Výstupní parametry mohou být i NULL.

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::BusPlanInfo ( unsigned  uiPlan,
RPlanInfo prInfo,
unsigned *  puiBuses,
CBlobEx< std::string > *  cData 
)
pure virtual

získání informací o plánu

Parametry
[in]uiPlanID plánu autobusu
[out]prInfostruktura RPlanInfo naplněná daty
[out]puiBusespočet autobusů využívajících tento plán
[out]cDatabinární data s rozložením sedadel
Návratová hodnota
úspěch operace - false, pokud plán nebyl nalezen
Poznámka
Výstupní parametry mohou být i NULL.

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::CityInfo ( unsigned  uiCity,
RCityInfo prInfo,
unsigned *  puiLinesOut,
unsigned *  puiLinesIn 
)
pure virtual

získání informací o městě

Parametry
[in]uiCityID města
[out]prInfostruktura RCityInfo k vyplnění daty
[out]puiLinesOutpočet autobusů odjíždějících z tohoto města
[out]puiLinesInpočet autobusů přijíždějících do tohoto města
Návratová hodnota
úspěch operace - false, pokud město nebylo nalezeno
Poznámka
Výstupní parametry mohou být i NULL.

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::DeleteBus ( unsigned  uiBus)
pure virtual

smazání autobusu

Parametry
[in]uiBusID autobusu určeného ke smazání
Návratová hodnota
úspěch operace

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::DeleteBusPlan ( const char *  pszName)
pure virtual

smazání plánu autobusu

Vymazání plánu autobusu z kontajneru, může být provedeno pouze v případě, že neexistuje žádný autobus s tímto plánem.

Parametry
[in]pszNamenázev plánu autobusu
Návratová hodnota
úspěch operace

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::DeleteCity ( const char *  pszName)
pure virtual

smazání města podle jména

Provede smazání města z kontajneru a zároveň vymazání všech případných aliasů názvu města.

Parametry
[in]pszNamenázev či alias města
Návratová hodnota
úspěch operace - false v případě, že město není v databázi nebo existují autobusové linky, které město používají

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::DisableBus ( unsigned  uiBus)
pure virtual

zakázání autobusu

Zakáže provádět změny v rezervacích.

Parametry
[in]uiBusID autobusu
Návratová hodnota
úspěch operace - false, nebyl-li autobus nalezen

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::EnableBus ( unsigned  uiBus)
pure virtual

povolení autobusu

Povolí provádět změny v rezervacích.

Parametry
[in]uiBusID autobusu
Návratová hodnota
úspěch operace - false, nebyl-li autobus nalezen

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::FindBus ( unsigned  uiFrom,
unsigned  uiTo,
time_t  tLeaveTime 
)
pure virtual

nalezení autobusu

Funkce pro nalezení autobusu z města uiFrom do města uiTo a s časem odjezdu rovným nebo nejbližším větším času tLeaveTime.

Parametry
[in]uiFromID výchozího města
[in]uiToID cílového města
[in]tLeaveTimečas, od kterého hledáme shodu (tj. dolní hranice času odjezdu)
Návratová hodnota
ID nalezeného autobusu nebo 0

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::FindBusPlan ( const char *  pszName)
pure virtual

nalezení plánu autobusu

Hledání plánu autobusu podle zadaného jména.

Parametry
[in]pszNamenázev plánu autobusu
Návratová hodnota
ID plánu, 0 v případě neúspěchu

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::FindCity ( const char *  pszName)
pure virtual

nalezení města podle názvu

Hledání města probíhá nejprve v normálních názvech měst a v případě neúspěchu ve zkratkách (aliasech)

Parametry
[in]pszNamenázev či alias města
Návratová hodnota
ID nalezeného města nebo 0 v případě neúspěchu

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::ListAlias ( const char *  pszFrom,
std::string *  strAlias,
std::string *  strCity 
)
pure virtual

nalezení dalšího aliasu města v abecedním pořadí

Najde další alias v abecedním pořadí.

Parametry
[in]pszFromalias, od kterého hledáme následující
[out]strAliasalias dalšího města v pořadí
[out]strCityjméno města odpovídající aliasu
Návratová hodnota
úspěch operace (false pro dosažení konce)

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::ListCity ( const char *  pszFrom,
std::string *  strName 
)
pure virtual

nalezení dalšího města v abecedním pořadí

Najde další město v abecedním pořadí.

Parametry
[in]pszFromnázev města, od kterého hledáme následující
[out]strNamejméno dalšího města v pořadí
Návratová hodnota
úspěch operace (false pro dosažení konce)

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::LockSeats ( unsigned  uiBus,
std::list< unsigned > *  cSeats,
unsigned  uiCustomer 
)
pure virtual

trvalá rezervace sedadel

Parametry
[in]uiBusID autobusu
[in,out]cSeatsseznam sedadel k rezervaci, neúspěšná sedadla budou smazána ze seznamu
[in]uiCustomerID zákazníka
Návratová hodnota
úspěch operace - false, pokud autobus není nalezen nebo se operace nezdařila pro všechna sedadla

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::NewCustomer ( void  )
pure virtual

unikátní ID pro nového zákazníka

Operace rezervace sedadel je vždy vázána na konkrétního zákazníka identifikovaného jedinečným číslem. Díky tomu pak může zákazník své rezervace dodatečně zrušit nebo potvrdit dočasnou rezervaci.

Návratová hodnota
unikátní číslo zákazníka

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::NextBus ( unsigned  uiBus)
pure virtual

nalezení dalšího autobusu v pořadí

Najde další autobus podle ID.

Parametry
[in]uiBusID autobusu, od kterého hledáme následující
Návratová hodnota
ID nalezeného autobusu nebo 0

Pomocí této metody je možné sekvenčně procházet kontajner autobusů (zapouzdřený ve třídě CBuses). Odpovídající kousek kódu může vypadat např. následovně

unsigned uiId = 0;
while((uiId = cQuery->NextBus(uiId)) != 0) {
// zpracování autobusu s číslem uiId
}

Metodu můžeme využít např. v situaci, kdy potřebujeme zakázat rezervace ve všech autobusech, které odjíždějí během následující hodiny (abychom mohli předat řidičům konečný seznam rezervovaných sedadel).

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::NextCity ( unsigned  uiCity)
pure virtual

nalezení dalšího města v pořadí

Najde další město podle ID.

Parametry
[in]uiCityID města, od kterého hledáme následující
Návratová hodnota
ID nalezeného města nebo 0

Implementováno v CMemoryDb a CClientQuery.

virtual unsigned CQuery::NextPlan ( unsigned  uiPlan)
pure virtual

nalezení dalšího plánu v pořadí

Najde další plán podle ID.

Parametry
[in]uiPlanID plánu, od kterého hledáme následující
Návratová hodnota
ID nalezeného plánu nebo 0

Implementováno v CMemoryDb a CClientQuery.

virtual bool CQuery::UnlockSeats ( unsigned  uiBus,
std::list< unsigned > *  cSeats,
unsigned  uiCustomer 
)
pure virtual

zrušení rezervace sedadel

Parametry
[in]uiBusID autobusu
[in,out]cSeatsseznam sedadel k uvolnění, neúspěšná sedadla budou smazána ze seznamu
[in]uiCustomerID zákazníka
Návratová hodnota
úspěch operace - false, pokud autobus není nalezen nebo se operace nezdařila pro všechna sedadla
Pozor
K úspěšnému zrušení rezervace je nutné mít zákaznické ID, se kterým byla provedena rezervace.

Implementováno v CMemoryDb a CClientQuery.


Dokumentace pro tuto třídu byla generována z následujícího souboru: