asmodeus94

rekordyBazaPowtorzenie

Mar 5th, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 8.35 KB | None | 0 0
  1. {
  2. Napisz program, ktory bedzie baza danych oparta na rekordach.
  3. Baza ma zawierac:
  4. stringi: Imie, Nazwisko, Adres, pesel
  5. integer: rok ur, dzien, miesiac
  6. bool: kobieta
  7.  
  8. Baza ma zawierac 5 rekordow
  9. Baza ma miec menu:
  10. 1. Wypelnij (uruchomienie procedury uzupelniajacej baze)
  11. 2. Wyswietl rekord (user podaje nr)
  12. 3. Wyswietl wszystkie rekordy
  13. 4. Uzupelnij (edytuj) wybrany rekord
  14. 5. Wyzeruj rekord
  15. 6. Sprawdz poprawnosc rekordu (czy poczatek peselu to rok miesiac dzien)
  16. 7. puste
  17. 8. puste
  18. 9. puste
  19. 0. exit
  20. }
  21. program rekordy;
  22. uses crt;
  23. type
  24. baza=record
  25. imie,nazwisko,adres,pesel : string;
  26. rokUr,dzien,miesiac : integer;
  27. kobieta : boolean;
  28. end;
  29. var osoba:array [1..5] of baza;
  30. idWyb : integer;
  31. wybor : char;
  32. t     : text;
  33. sciezka : string;
  34.  
  35. procedure menu;
  36. begin
  37.     writeln('1 - wypelnij (automat)');
  38.     writeln('2 - wyswietl rekord (user podaj nr)');
  39.     writeln('3 - wyswietl wszystkie rekordy');
  40.     writeln('4 - edytuj wybrany rekord');
  41.     writeln('5 - wyzeruj rekord');
  42.     writeln('6 - sprawdz poprawnosc peselu');
  43.     writeln('7 - ustaw uchwyt do pliku tekstowego');
  44.     writeln('8 - zapisz dane do pliku');
  45.     writeln('9 - zczytaj dane z pliku');
  46.     writeln('0 - exit');
  47.     write('Wybierz: ');
  48. end;
  49. procedure wypelnij;
  50. begin
  51.      with(osoba[1]) do begin
  52.         imie:='Radoslaw';
  53.         nazwisko:='Adamowicz';
  54.         adres:='Robotniczna 25/1 Police';
  55.         pesel:='94080202317';
  56.         rokUr:=1994;
  57.         miesiac:=8;
  58.         dzien:=2;
  59.         kobieta:=false;
  60.      end;
  61.      with(osoba[2]) do begin
  62.         imie:='Ryszard';
  63.         nazwisko:='Niedostatkiewicz';
  64.         adres:='Grunwaldzka 23/15 Szczecin';
  65.         pesel:='94051402457';
  66.         rokUr:=1994;
  67.         miesiac:=5;
  68.         dzien:=14;
  69.         kobieta:=false;
  70.      end;
  71.      with(osoba[3]) do begin
  72.         imie:='Kamil';
  73.         nazwisko:='Andrusiewicz';
  74.         adres:='Hutnicza 14/4 Szczecin';
  75.         pesel:='94070502317';
  76.         rokUr:=1994;
  77.         miesiac:=7;
  78.         dzien:=5;
  79.         kobieta:=false;
  80.      end;
  81.      with(osoba[4]) do begin
  82.         imie:='Piotr';
  83.         nazwisko:='Szefler';
  84.         adres:='Robotniczna 29/1 ';
  85.         pesel:='94121402317';
  86.         rokUr:=1994;
  87.         miesiac:=12;
  88.         dzien:=14;
  89.         kobieta:=false;
  90.      end;
  91.      with(osoba[5]) do begin
  92.         imie:='Jacek';
  93.         nazwisko:='Wolny';
  94.         adres:='Niemcewicza 13/4 Szczecin';
  95.         pesel:='94110102317';
  96.         rokUr:=1994;
  97.         miesiac:=11;
  98.         dzien:=1;
  99.         kobieta:=true;
  100.      end;
  101. end;
  102. procedure wyswietlWszystko;
  103. var i,bylo:byte;
  104. begin
  105.     bylo:=0;
  106.     for i:=1 to 5 do begin
  107.         with(osoba[i]) do begin
  108.             if (imie<>'')AND(nazwisko<>'') then begin
  109.                 writeln('Imie i nazwisko: ',imie,' ',nazwisko);
  110.                 writeln('Adres: ',adres);
  111.                 writeln('Nr pesel: ',pesel);
  112.                 writeln('Rok urodzenia: ',rokUr,'-',miesiac,'-',dzien);
  113.                 write('Plec: ');if kobieta=false then writeln('Mezczyzna') ELSE
  114.                 writeln('Kobieta');
  115.                 bylo:=bylo+1;
  116.             end;
  117.         end;
  118.     end;
  119.     if bylo=0 then write('Wszystkie rekordy sa puste');
  120. end;
  121. procedure wyswietlWybranego(var idWyb:integer);
  122. begin
  123.     with(osoba[idWyb]) do begin
  124.     if (imie<>'')AND(nazwisko<>'') then begin
  125.     writeln('Imie i nazwisko: ',imie,' ',nazwisko);
  126.     writeln('Adres: ',adres);
  127.     writeln('Nr pesel: ',pesel);
  128.     writeln('Rok urodzenia: ',rokUr,'-',miesiac,'-',dzien);
  129.     write('Plec: ');if kobieta=false then writeln('Mezczyzna') ELSE
  130. writeln('Kobieta');writeln;
  131.     end;
  132. end;
  133. procedure edytujWybranego(var idWyb : integer);
  134. var kobietaCzy:integer;
  135. begin
  136.      clrscr;writeln('Edytujesz rekord o id ',idWyb);
  137.      with(osoba[idWyb]) do begin
  138.           write('Podaj imie: ');readln(imie);
  139.           write('Podaj nazwisko: ');readln(nazwisko);
  140.           write('Podaj adres: ');readln(adres);
  141.           write('Podaj nr PESEL: ');readln(pesel);
  142.           write('Podaj dzien urodzenia: ');readln(dzien);
  143.           write('Podaj miesiac urodzenia: ');readln(miesiac);
  144.           write('Podaj rok urodzenia: ');readln(rokUr);
  145.           write('Mezczyzna, czy kobieta (0-mezczyzna,1-kobieta): ');readln(kobietaCzy);
  146.           if(kobietaCzy=1) then kobieta:=true ELSE kobieta:=false;
  147.      end;
  148.      write('Rekord edytowano pomyslnie!');
  149. end;
  150. procedure zerujRekord(var idWyb : integer);
  151. begin
  152.      with(osoba[idWyb]) do begin
  153.           imie:='';
  154.           nazwisko:='';
  155.           adres:='';
  156.           pesel:='';
  157.           dzien:=0;
  158.           miesiac:=0;
  159.           rokUr:=0;
  160.           kobieta:=false;
  161.      end;
  162.      write('Rekord o nr ',idWyb,' zostal wyzerowany pomyslnie!');
  163. end;
  164. function IntToStr (I : integer) : String;
  165. var S : String;
  166. begin
  167.     Str(I,S);
  168.     IntToStr:=S;
  169. end;
  170. procedure sprawdzPoprawnoscPeselu(var idWyb : integer);
  171. var pom,pom2,pom3 : string;
  172. pom1 : extended;
  173. code : integer;
  174. rokZle,miesiacZle,dzienZle,dlPes : byte;
  175. begin
  176.      rokZle:=0;miesiacZle:=0;dzienZle:=0;dlPes:=0;
  177.      pom:=Copy(osoba[idWyb].pesel,1,2);
  178.      pom2:=intToStr(osoba[idWyb].rokUr);
  179.      pom3:=Copy(pom2,3,2);
  180.      if(pom<>pom3) then rokZle:=1;
  181.      if Length(osoba[idWyb].pesel)<>11 then dlPes:=1;
  182.      pom:=Copy(osoba[idWyb].pesel,3,2);
  183.      Val(pom,pom1,code);
  184.      if(pom1<1)OR(12<pom1)OR(pom1<>osoba[idWyb].miesiac) then miesiacZle:=1;
  185.  
  186.      pom:=Copy(osoba[idWyb].pesel,5,2);
  187.      Val(pom,pom1,code);
  188.      if(pom1<1)OR(31<pom1)OR(pom1<>osoba[idWyb].dzien) then dzienZle:=1;
  189.      if(rokZle=0)AND(miesiacZle=0)AND(dzienZle=0)AND(dlPes=0) then
  190.      write('Pesel ',osoba[idWyb].imie,' ',osoba[idWyb].nazwisko,' jest poprawny')
  191.      ELSE begin
  192.         if rokZle=1 then writeln('Podany rok w numerze pesel jest nieprawidlowy');
  193.         if miesiacZle=1 then writeln('Podany miesiac w numerze pesel jest nieprawidlowy');
  194.         if dzienZle=1 then writeln('Podany dzien w numerze pesel jest nieprawidlowy');
  195.         if dlPes=1 then writeln('Podany pesel nie ma 11 znakow');
  196.      end;
  197. end;
  198. procedure ustawUchwyt;
  199. begin
  200.      write('Podaj sciezke do pliku: ');readln(sciezka);
  201.      if sciezka<>'' then
  202.      write('Ustawiono uchwyt do pliku; sciezka: ',sciezka)
  203.      ELSE write('Nic nie napisales');
  204. end;
  205. procedure zapiszDoBazy;
  206. var i : byte;
  207. begin
  208.      assign(t,sciezka);
  209.      rewrite(t);
  210.      for i:=1 to 5 do begin
  211.           writeln(t,osoba[i].imie);
  212.           writeln(t,osoba[i].nazwisko);
  213.           writeln(t,osoba[i].adres);
  214.           writeln(t,osoba[i].pesel);
  215.           writeln(t,osoba[i].rokUr);
  216.           writeln(t,osoba[i].miesiac);
  217.           writeln(t,osoba[i].dzien);
  218.           writeln(t,osoba[i].kobieta);
  219.      end;
  220.      close(t);
  221. end;
  222. procedure wczytajZBazy;
  223. var i : byte;
  224. kobSpr : string;
  225. begin
  226.      i:=0;
  227.      assign(t,sciezka);
  228.      reset(t);
  229.      while not eof(t) do begin
  230.           i:=i+1;
  231.           readln(t,osoba[i].imie);
  232.           readln(t,osoba[i].nazwisko);
  233.           readln(t,osoba[i].adres);
  234.           readln(t,osoba[i].pesel);
  235.           readln(t,osoba[i].rokUr);
  236.           readln(t,osoba[i].miesiac);
  237.           readln(t,osoba[i].dzien);
  238.           readln(t,kobSpr);
  239.           if kobSpr = 'FALSE' then osoba[i].kobieta:=false;
  240.           if kobSpr = 'TRUE' then osoba[i].kobieta:=true;
  241.      end;
  242.      close(t);
  243. end;
  244. begin
  245.     REPEAT
  246.         clrscr;
  247.         menu;readln(wybor);
  248.         case wybor of
  249.              '1':begin
  250.                       wypelnij;
  251.              end;
  252.              '2':begin
  253.                       REPEAT write('Podaj nr porzadkowy osoby (1-5): ');readln(idWyb);clrscr;UNTIL (idWyb>=1) AND (idWyb<=5);
  254.                       wyswietlWybranego(idWyb);
  255.                       readkey;
  256.              end;
  257.              '3':begin
  258.                       wyswietlWszystko;
  259.                       readkey;
  260.              end;
  261.              '4':begin
  262.                       REPEAT write('Podaj nr porzadkowy osoby (1-5): ');readln(idWyb);clrscr;UNTIL (idWyb>=1) AND (idWyb<=5);
  263.                       edytujWybranego(idWyb);readkey;
  264.              end;
  265.              '5':begin
  266.                       REPEAT write('Podaj nr porzadkowy osoby (1-5): ');readln(idWyb);clrscr;UNTIL (idWyb>=1) AND (idWyb<=5);
  267.                       zerujRekord(idWyb);readkey;
  268.              end;
  269.              '6':begin
  270.                       REPEAT write('Podaj nr porzadkowy osoby (1-5): ');readln(idWyb);clrscr;UNTIL (idWyb>=1) AND (idWyb<=5);
  271.                       sprawdzPoprawnoscPeselu(idWyb);
  272.                       readkey;
  273.              end;
  274.              '7':begin
  275.                       ustawUchwyt;
  276.                       write('Sciezka zostala ustawiona na: ',sciezka);
  277.                       readkey;
  278.              end;
  279.              '8':begin
  280.                       zapiszDoBazy;write('Dane zostaly zapisane do pliku!');readkey;
  281.              end;
  282.              '9':begin
  283.                       wczytajZBazy;write('Dane zostaly wczytane z pliku');readkey;
  284.              end;
  285.  
  286.         end;
  287.     UNTIL wybor='0';
  288. end.
Advertisement
Add Comment
Please, Sign In to add comment