Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program terminarz;
- uses sysutils;
- type
- wskaznik=^element;
- element = record
- notatka:string[255];
- data:record
- dzien:1..31;
- miesiac:1..12;
- rok:2013..2050;
- end;
- czas:record
- godzina:0..23;
- minuta:0..59;
- end;
- nast:wskaznik;
- end;
- type szkielet=record
- notatka:string[255];
- data:record
- dzien:1..31;
- miesiac:1..12;
- rok:2013..2050;
- end;
- czas:record
- godzina:0..23;
- minuta:0..59;
- end;
- end;
- var
- lista:wskaznik;
- poczatek:wskaznik;
- pomwsk:wskaznik;
- pomwsk2:wskaznik;
- pom:integer;
- i,j:integer;
- wybor:integer;
- ilosc:integer;
- max:integer;
- a:integer;
- procedure zapis();
- var
- plik:file of szkielet;
- baza:szkielet;
- begin
- assign(plik, 'baza.db');
- rewrite(plik);
- lista:=poczatek;
- while lista^.nast <> nil do begin
- baza.notatka := lista^.notatka;
- baza.data.dzien := lista^.data.dzien;
- baza.data.miesiac := lista^.data.miesiac;
- baza.data.rok := lista^.data.rok;
- baza.czas.godzina := lista^.czas.godzina;
- baza.czas.minuta := lista^.czas.minuta;
- write(plik, baza);
- lista := lista^.nast;
- end;
- close(plik);
- end;
- procedure odczyt();
- var
- plik:file of szkielet;
- baza:szkielet;
- begin
- if(FileExists('baza.db'))then begin
- assign(plik, 'baza.db');
- reset(plik);
- while not EOF(plik) do begin
- read(plik, baza);
- lista^.notatka:=baza.notatka;
- lista^.data.dzien:=baza.data.dzien;
- lista^.data.miesiac:=baza.data.miesiac;
- lista^.data.rok:=baza.data.rok;
- lista^.czas.godzina:=baza.czas.godzina;
- lista^.czas.minuta:=baza.czas.minuta;
- new(lista^.nast);
- lista := lista^.nast;
- end;
- lista^.nast := nil;
- close(plik);
- end else zapis();
- end;
- procedure wypelnij();
- begin
- lista:=poczatek;
- while lista^.nast <> nil do
- begin
- lista:=lista^.nast;
- end;
- write('Podaj notatke: ');
- readln(lista^.notatka);
- {$I-}
- repeat
- write('Podaj dzien (1-31): ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<1) or (pom>31) do
- begin
- Writeln('Podaj dzien z zakresu 1-31');
- readln(pom);
- end;
- lista^.data.dzien:=pom;
- {$I-}
- repeat
- write('Podaj miesiac (1-12): ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<1) or (pom>12) do
- begin
- Writeln('Podaj miesiac z zakresu 1-12');
- readln(pom);
- end;
- lista^.data.miesiac:=pom;
- {$I-}
- repeat
- write('Podaj rok (2013-2050): ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<2013) or (pom>2050) do
- begin
- Writeln('Podaj rok z zakresu 2013-2050');
- readln(pom);
- end;
- lista^.data.rok:=pom;
- {$I-}
- repeat
- write('Podaj godzine: ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<0) or (pom>23) do
- begin
- Writeln('Podaj godzine z zakresu 0-23');
- readln(pom);
- end;
- lista^.czas.godzina:=pom;
- {$I-}
- repeat
- write('Podaj minute: ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<0) or (pom>59) do
- begin
- Writeln('Podaj minute z zakresu 0-59');
- readln(pom);
- end;
- lista^.czas.minuta:=pom;
- new(lista^.nast);
- lista:=lista^.nast;
- writeln();
- lista^.nast:=nil;
- end;
- procedure licz();
- begin
- lista:=poczatek;
- ilosc:=0;
- while lista^.nast <> nil do
- begin
- ilosc:=ilosc+1;
- lista:=lista^.nast;
- end;
- writeln('ilosc to: ', ilosc);
- end;
- procedure wypisz();
- begin
- lista:=poczatek;
- i:=1;
- licz();
- if ilosc=0 then writeln('Brak rekordow do wyswietlenia!');
- while lista^.nast <> nil do
- begin
- writeln('Termin nr. ', i);
- writeln(#9'Notatka: ', lista^.notatka);
- writeln(#9'Data: ', lista^.data.dzien,'.', lista^.data.miesiac,'.', lista^.data.rok);
- write(#9'Godzina: ', lista^.czas.godzina,':');
- if lista^.czas.godzina<10 then
- begin
- write('0');
- end;
- writeln(lista^.czas.minuta);
- writeln();
- lista:=lista^.nast;
- i:=i+1;
- end;
- writeln;
- end;
- procedure usun();
- begin
- lista:=poczatek;
- licz();
- if ilosc=0 then writeln('Brak rekord˘w do usuniecia!')
- else begin
- wypisz();
- lista:=poczatek;
- writeln('Wybierz numer terminu do usuniecia: ');
- readln(pom);
- while (pom<1) or (pom>ilosc) do
- begin
- writeln('Podaj poprawny numer terminu: ');
- readln(pom);
- end;
- for i:=1 to pom-2 do
- begin
- lista:=lista^.nast;
- end;
- lista^.nast:=lista^.nast^.nast;
- end;
- writeln;
- end;
- procedure zamiana();
- begin
- pomwsk:=lista^.nast;
- lista^.nast:=lista^.nast^.nast;
- lista^.nast^.nast:=pomwsk;
- end;
- procedure sortuj();
- begin
- lista:=poczatek;
- pomwsk2:=lista^.nast;
- licz();
- for i:=1 to ilosc-1 do
- begin
- for j:=1 to ilosc-1 do
- begin
- if lista^.data.rok > lista^.nast^.data.rok then begin
- zamiana();
- end
- else if lista^.data.rok = lista^.nast^.data.rok then
- begin
- if lista^.data.miesiac > lista^.nast^.data.miesiac then begin
- zamiana();
- end
- else if lista^.data.miesiac = lista^.nast^.data.miesiac then
- begin
- if lista^.data.dzien > lista^.nast^.data.dzien then begin
- zamiana();
- end;
- end;
- end;
- lista:=lista^.nast;
- end;
- lista:=poczatek;
- end;
- end;
- procedure modyfikuj();
- begin
- lista:=poczatek;
- licz();
- if ilosc=0 then writeln('Brak rekord˘w do modyfikacji!')
- else begin
- wypisz();
- lista:=poczatek;
- writeln('Wybierz numer terminu do modyfikacji: ');
- readln(pom);
- while (pom<1) or (pom>ilosc) do
- begin
- writeln('Podaj poprawny numer terminu: ');
- readln(pom);
- end;
- for i:=1 to pom-2 do
- begin
- lista:=lista^.nast;
- end;
- writeln('Wybierz rekord do modyfikacji: 1-notatka 2-data 3-godzina');
- readln(pom);
- case pom of
- 1: begin
- write('Podaj notatke: ');
- readln(lista^.notatka);
- end;
- 2: begin
- {$I-}
- repeat
- write('Podaj dzien (1-31): ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<1) or (pom>31) do
- begin
- Writeln('Podaj dzien z zakresu 1-31');
- readln(pom);
- end;
- lista^.data.dzien:=pom;
- {$I-}
- repeat
- write('Podaj miesiac (1-12): ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<1) or (pom>12) do
- begin
- Writeln('Podaj miesiac z zakresu 1-12');
- readln(pom);
- end;
- lista^.data.miesiac:=pom;
- {$I-}
- repeat
- write('Podaj rok (2013-2050): ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<2013) or (pom>2050) do
- begin
- Writeln('Podaj rok z zakresu 2013-2050');
- readln(pom);
- end;
- lista^.data.rok:=pom;
- end;
- 3: begin
- {$I-}
- repeat
- write('Podaj godzine: ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<0) or (pom>23) do
- begin
- Writeln('Podaj godzine z zakresu 0-23');
- readln(pom);
- end;
- lista^.czas.godzina:=pom;
- {$I-}
- repeat
- write('Podaj minute: ');
- readln(pom);
- until ioresult=0;
- {$I+}
- while (pom<0) or (pom>59) do
- begin
- Writeln('Podaj minute z zakresu 0-59');
- readln(pom);
- end;
- lista^.czas.minuta:=pom;
- end;
- end;
- end;
- writeln;
- end;
- begin
- new(poczatek);
- lista:=poczatek;
- odczyt();
- repeat
- writeln('Terminarz. Wybierz operacje: ');
- writeln('1-Dodaj termin.');
- writeln('2-Wyswietl terminarz.');
- writeln('3-Usun termin.');
- writeln('4-Modyfikuj termin.');
- writeln('5-Sortuj terminarz.');
- writeln('6-licz.');
- writeln('0-Koniec programu.');
- readln(wybor);
- case wybor of
- 1: wypelnij();
- 2: wypisz();
- 3: usun();
- 4: modyfikuj();
- 5: sortuj();
- 6: licz();
- end;
- zapis();
- until wybor=0;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement