program hotel;
uses crt;
type bliczba = record
indeks:byte;
end;
type rezerwacja = record
nazwisko:string[35];
ilosc_osob:integer;
dzieci:integer;
ilosc_dni:integer;
termin:string[30];
miesiac:integer;
dzien:integer;
end;
var rezerwacje:array[1..1000] of rezerwacja;
kalendarz_pokoj1:array[1..365] of integer;
kalendarz_pokoj2:array[1..365] of integer;
kalendarz_pokoj3:array[1..365] of integer;
kalendarz_pokoj4:array[1..365] of integer;
kalendarz_pokoj5:array[1..365] of integer;
ilosc_osob, miesiac, ilosc_dni, data, dzien:integer;
a:string[3];
szukaj:string[30];
opcja:string[1];
i,b,n,c:integer; m:byte;
liczba:bliczba;
plik: file of bliczba;
label wyjdz;
var baza: file of rezerwacja;
function pobierz(typ:integer):integer;
begin
pobierz:=typ;
end;
procedure rezerwuj (var bliczba.indeks : real);
begin
begin
clrscr;
assign (baza,'rezerwacje.dat');
reset(baza);
if ioresult<>0 then rewrite(baza);
Seek(baza, FileSize(baza));
writeln ('Podaj Nazwisko rezerwujacego: ');
readln(rezerwacje[bliczba.indeks].nazwisko);
writeln ('Podaj ilosc dzieci: ');
readln(rezerwacje[bliczba.indeks].dzieci);
writeln ('Podaj ilosc osob: ');
readln(rezerwacje[bliczba.indeks].ilosc_osob);
writeln ('Podaj ilosc dni: ');
readln(rezerwacje[bliczba.indeks].ilosc_dni);
readln(rezerwacje[bliczba.indeks].miesiac);
readln(rezerwacje[bliczba.indeks].dzien);
write (baza,rezerwacje[bliczba.indeks]);
close(baza);
bliczba.indeks:=bliczba.indeks+1;
end;
end;
procedure decyzja;
begin
writeln ('Termin dostepny. Podjac rezerwacje? (tak/nie)');
readln(a);
if a='tak' then rezerwuj;
end;
procedure sprawdz_wolne;
begin
clrscr;
writeln ('Podaj dzien rezerwacji');
readln (dzien);
writeln ('Podaj ilosc dni');
readln (ilosc_dni);
writeln ('Podaj miesiac rezerwacji');
readln (miesiac);
CASE miesiac of
1: data:=dzien;
2: data:=31+dzien;
3: data:=31+28+dzien;
4: data:=2*31+28+dzien;
5: data:=2*31+30+28+dzien;
6: data:=3*31+30+28+dzien;
7: data:=3*31+2*30+28+dzien;
8: data:=4*31+2*30+28+dzien;
9: data:=5*31+2*30+28+dzien;
10: data:=5*31+3*30+28+dzien;
11: data:=6*31+3*30+28+dzien;
12: data:=6*31+4*30+28+dzien;
end;
writeln ('Podaj ilosc osob');
readln (ilosc_osob);
CASE ilosc_osob of
1: begin
for i:=1 to ilosc_dni do
begin
if (kalendarz_pokoj1[data]=1) then
begin
writeln ('Brak wolnych miejsc');
break;
end
else
data:=data+1;
end;
decyzja;
end;
2: begin
for i:=1 to ilosc_dni do
begin
if (kalendarz_pokoj2[data]=1) then
begin
writeln ('Brak wolnych miejsc');
break;
end
else data:=data+1;
end;
decyzja;
end;
3: begin
for i:=1 to ilosc_dni do
begin
if (kalendarz_pokoj3[data]=1) then
begin
writeln ('Brak wolnych miejsc');
break;
end
else data:=data+1;
end;
decyzja;
end;
4: begin
for i:=1 to ilosc_dni do
begin
if (kalendarz_pokoj4[data]=1) then
begin
writeln ('Brak wolnych miejsc');
break;
end
else data:=data+1;
end;
decyzja;
end;
end;
end;
procedure wyswietl;
begin
assign(baza,'rezerwacje.dat');
reset(baza);
writeln ('Podaj nazwisko rezerwujacego');
readln(szukaj);
while not eof(baza) do
begin
read(baza,rezerwacje[i]);
with rezerwacje[i] do
if szukaj=(rezerwacje[i].nazwisko) then
begin
write('Termin rezerwacji: '); writeln(rezerwacje[i].miesiac);
write('.',rezerwacje[i].dzien);
write('Ilosc dni: '); writeln(rezerwacje[i].ilosc_dni);
write('Ilosc osob: '); writeln(rezerwacje[i].ilosc_osob);
end;
end;
end;
procedure odczytaj;
begin
assign(baza,'rezerwacje.dat');
reset(baza);
while not eof(baza) do
begin
for i:=0 to bliczba.indeks do
begin
read(baza,rezerwacje[i]);
with rezerwacje[i] do
begin
writeln;
write('Nazwisko: '); writeln(rezerwacje[i].nazwisko);
write('Ilosc osob: '); writeln(rezerwacje[i].ilosc_osob);
write('Ilosc dni: '); writeln(rezerwacje[i].ilosc_dni);
write('Termin rezerwacji: '); writeln(rezerwacje[i].termin);
end;
end;
end;
end;
begin
clrscr;
assign(plik,'liczba.txt');
reset(plik);
if ioresult<>0 then
begin
rewrite(plik);
write(plik, '0');
end;
read(plik,bliczba.indeks);
close(plik);
repeat
writeln('Witaj w programie zarzadzania rezerwacjami w hotelu. Wybierz jedna z dostepnych opcji.');
writeln ('Dostepne opcje: rezerwuj (r), sprawdz czy sa wolne miejsca (s), odczytaj baze rezerwacji (o), zamknij program (x)');
opcja:=readkey;
case opcja of
'r': rezerwuj;
's': sprawdz_wolne;
'o': odczytaj;
end;
until (opcja='x');
assign(plik,'liczba.dtb');
rewrite(plik);
write(plik,liczba);
close(plik);
end.