Program na rezerváciu dovolenkových pobytov pre ubytovacie zariadenia
Delphi & Pascal (česká wiki)
Kategória: Programy v C, C++
Program: Cestovka.cpp, Cestovka.h, Rezerv.cpp, Rezerv.h, Ubytuj.cpp, Ubytuj.h
Súbor exe: Cestovka.exe
Potrebné: Define.h, Rezerv.dat, Ubytovne.dat
Program: Cestovka.cpp, Cestovka.h, Rezerv.cpp, Rezerv.h, Ubytuj.cpp, Ubytuj.h
Súbor exe: Cestovka.exe
Potrebné: Define.h, Rezerv.dat, Ubytovne.dat
Program na rezerváciu dovolenkových pobytov pre ubytovacie zariadenia. O dovolenkovom pobyte sú známe tieto udaje
Program umožnuje vyhľadávanie voľných pobytov v zadanej lokalite s počtom lôžok väčším alebo rovným ako zadané číslo a s cenou menšou alebo rovnou ako zadaná hodnota a rezerváciu pobytu a zrušenie rezervácie na vybraný pobyt. Na prezentáciu zoznamu pobytov je použitý spojkový zoznam a jednotlivé položky záznamov majú dynamickú veľkosť. Všetky záznamy sú uložené v súbore.
POZOR: Program si kladie za cieľ ukázať prácu so spojkovým zoznamom a súbormi. Nečakajte "vymakané" grafické rozhranie ani "myšoidné" ovládanie.
- jednoznačný identifikátor pobytu (celé číslo)
- lokalita
- typ ubytovania( chata, hotel, rodinný penzion)
- počet miest
- cena za lôžko/noc
- rezervácia
Program umožnuje vyhľadávanie voľných pobytov v zadanej lokalite s počtom lôžok väčším alebo rovným ako zadané číslo a s cenou menšou alebo rovnou ako zadaná hodnota a rezerváciu pobytu a zrušenie rezervácie na vybraný pobyt. Na prezentáciu zoznamu pobytov je použitý spojkový zoznam a jednotlivé položky záznamov majú dynamickú veľkosť. Všetky záznamy sú uložené v súbore.
POZOR: Program si kladie za cieľ ukázať prácu so spojkovým zoznamom a súbormi. Nečakajte "vymakané" grafické rozhranie ani "myšoidné" ovládanie.
/* ========================================================================== */ /* */ /* Cestovka.cpp Copyright (c) TrSek alias Zdeno Sekerak */ /* Datum:20.05.2005 http://www.trsek.com */ /* */ /* Description */ /* Program na rezervaciu dovolenkovych pobytov pre ubytovacie zariadenia */ /* */ /* O dovolenkovom pobyte su zname tieto udaje: */ /* - jednonazcny identifikator pobytu (cele cislo), */ /* - lokalita, */ /* - typ ubytovania( chata, hotel, rodinny penzion), */ /* - pocet miest, */ /* - cena za lozko/noc, */ /* - rezervacia. */ /* */ /* Program umoznuje vyhladavanie volnych pobytov v zadanej lokalite */ /* s poctom lozok vacsim alebo rovnym ako zadane cislo a s cenou mensou */ /* alebo rovnou ako zadana hodnota a rezervaciu pobytu a zrusenie rezervacie */ /* na vybrany pobyt. Na prezentaciu zoznamu pobytov je pouzity spojkovy */ /* zoznam a jednotlive polozky zaznamov maju dynamicku velkost. */ /* Vsetky zaznamy su ulozene v subore. */ /* ========================================================================== */ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include "define.h" #include "ubytuj.h" #include "rezerv.h" void Ubytovne(); void AddUbytovna(); void FindUbytovna(); void FindRezervacia(); void DeleteUbytovna(); void DeleteRezervacia(); void Rezervacie(); void Rezervuj(); char AnoNie(int typ); char* mscanf(); Ubytuj ubt; Rezerv rzv; char ch; // hlavny program main() { do{ clrscr(); ubt.Bar(); rzv.Bar(); printf("\n"); printf("-------------\n"); printf("1. Ubytovne\n"); printf("2. Rezervacie\n"); printf("0. Koniec\n"); printf("-------------\n"); printf("Zadaj volbu:"); ch=getch(); if(ch=='1') Ubytovne(); if(ch=='2') Rezervacie(); } while(ch!='0'); return 0; } // praca s ubytovnami void Ubytovne() { do{ clrscr(); ubt.Bar(); ubt.Show(); printf("1. Pridat novu ubytovnu\n"); printf("2. Zmazat aktualnu ubytovnu\n"); printf("3. Hladat podla kriterii\n"); printf("4. Rezervuj ubytovanie\n"); printf("5. Prejdi na prvy\n"); printf("6. Prejdi na predosly\n"); printf("7. Prejdi na nasledovny\n"); printf("8. Prejdi na posledny\n"); printf("9. Hlavne menu\n\n"); printf("Zadaj volbu:"); ch=getch(); if(ch=='1') AddUbytovna(); if(ch=='2') DeleteUbytovna(); if(ch=='3') FindUbytovna(); if(ch=='4') Rezervuj(); if(ch=='5') ubt.MoveFirst(); if(ch=='6') ubt.MovePrev(); if(ch=='7') ubt.MoveNext(); if(ch=='8') ubt.MoveLast(); } while(ch!='9'); } // zisti ci na ubytovni nevysi rezervacia // a polozi otravnu otazku ano/nie void DeleteUbytovna(void) { if( ubt.GetInt(6)!=0 ) { printf("\nNa ubytovni je rezervacia, najprv zrus rezervaciu.\n"); AnoNie(0); } else { printf("\nSi si isty ze mam zmazat ubytovnu?\n"); if( AnoNie(1)) ubt.Delete(); } } // tak zrusim rezervaciu void DeleteRezervacia() { printf("\nSi si isty ze mam zmazat rezervaciu?\n"); if( AnoNie(1)) { // najprv v ubytovniach ubt.Find(0, 1, rzv.Get(2)); ubt.OdRezervuj( rzv.GetInt(3)); rzv.Delete(); ubt.Find(-1, 0, ""); } } // pridaj ubytovnu void AddUbytovna() { clrscr(); ubt.AddNew(); printf("Zadaj ubytovnu:\n\n"); for( int i=1; i<ubt.GetPocetId(); i++ ) { printf("%s:", ubt.GetName(i)); ubt.Insert(i, mscanf()); } } // hladanie podla kriterii void FindUbytovna() { int find_id; char find_sign; int i; clrscr(); ubt.Bar(); ubt.Find(-1,0,""); // najprv zrusi podmienku printf("\nZadaj podmienku pre\n"); printf("-------------------\n"); for( i=0; i<ubt.GetPocetId(); i++ ) printf("%d. %s\n", i, ubt.GetName(i)); printf("9. Hlavne menu - zrusit podmienku\n"); printf("Zadaj volbu:"); find_id = getch()-'0'; if( find_id==9 ) return; printf("\n\nZadaj znamienko\n"); printf("---------------\n"); for( i=1; i<=6; i++ ) printf("%d. %s\n", i, ubt.GetSign(i)); printf("9. Hlavne menu - zrusit podmienku\n"); printf("Zadaj volbu:"); find_sign = getch()-'0'; if( find_sign==9 ) return; // doplni posledny clanok a spusti podmienku printf("\n\nDokonci podmienku: %s %s ", ubt.GetName(find_id), ubt.GetSign(find_sign)); ubt.Find(find_id, find_sign, mscanf()); } // hladanie podla kriterii void FindRezervacia() { int find_id; char find_sign; int i; clrscr(); rzv.Bar(); rzv.Find(-1,0,""); // najprv zrusi podmienku printf("\nZadaj podmienku pre\n"); printf("-------------------\n"); for( i=0; i<rzv.GetPocetId(); i++ ) printf("%d. %s\n", i, rzv.GetName(i)); printf("9. Hlavne menu - zrusit podmienku\n"); printf("Zadaj volbu:"); find_id = getch()-'0'; if( find_id==9 ) return; printf("\n\nZadaj znamienko\n"); printf("---------------\n"); for( i=1; i<=6; i++ ) printf("%d. %s\n", i, rzv.GetSign(i)); printf("9. Hlavne menu - zrusit podmienku\n"); printf("Zadaj volbu:"); find_sign = getch()-'0'; if( find_sign==9 ) return; // doplni posledny clanok a spusti podmienku printf("\n\nDokonci podmienku: %s %s ", rzv.GetName(find_id), rzv.GetSign(find_sign)); rzv.Find(find_id, find_sign, mscanf()); } // menu rezervacie void Rezervacie() { do{ clrscr(); rzv.Bar(); rzv.Show(); // najdi a zobraz ubytovnu ubt.Find(0, 1, rzv.Get(2)); ubt.Show(1); printf("1. Rezervuj ubytovanie\n"); printf("2. Zrusit rezervaciu\n"); printf("3. Hladat podla kriterii\n"); printf("5. Prejdi na prvy\n"); printf("6. Prejdi na predosly\n"); printf("7. Prejdi na nasledovny\n"); printf("8. Prejdi na posledny\n"); printf("9. Hlavne menu\n\n"); printf("Zadaj volbu:"); ch=getch(); if(ch=='1') Rezervuj(); if(ch=='2') DeleteRezervacia(); if(ch=='3') FindRezervacia(); if(ch=='4') Rezervuj(); if(ch=='5') rzv.MoveFirst(); if(ch=='6') rzv.MovePrev(); if(ch=='7') rzv.MoveNext(); if(ch=='8') rzv.MoveLast(); } while(ch!='9'); // zrus podmienku ubt.Find(-1, 1, ""); } // urobi rezervaciu void Rezervuj(void) { int pocet; clrscr(); printf("Rezervacia", ubt.GetPocet()); ubt.Show(); printf("Zadaj pocet miest ktore chces rezervovat:"); pocet = atoi( mscanf()); // kontrola if( pocet<= ubt.GetInt(5)) { ubt.Rezervuj(pocet); // sekcia rezervacie rzv.AddNew(); printf("Zadaj meno na ktore mam rezervovat:"); rzv.Insert(1, mscanf()); rzv.Insert(2, ubt.Get(0)); // id ubytovne rzv.Insert(3, ubt.ToStr(pocet)); } else { printf("Tolko miest nieje volnych"); getch(); return; } } // cakam na klaves char AnoNie(int typ) { if( typ==0 ) { printf("Stlac akykolvek klaves."); getch(); return 0; } if( typ==1 ) { printf("Vyber klaves [Ano/Nie]"); while(( (ch=getch())!='a') && (ch!='A') && (ch!='n') && (ch!='N')); if((ch=='a') || (ch=='A')) return true; } return false; } // nahrada za scanf aby vedel citat cez medzery char* mscanf() { int x=0; char text[MAX_STR]; do { text[x++] = getchar(); } while( text[x-1] != '\n'); // takyto text text[x-1]='\0'; return text; }