Advertisement
Guest User

Untitled

a guest
May 8th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 8.05 KB | None | 0 0
  1. program libray;    // copyright by Wojciech Glapiak
  2.  
  3. uses crt,dos;
  4.  
  5. type
  6.  uzytkownik = record
  7.   imie,nazwisko,haslo,id,data,admin,autoryzacja:string;
  8.  end;
  9.  baza_danych = file of uzytkownik;
  10.  
  11.  ksiazka = record
  12.   imie,nazwisko,tytul,sygnatura,id_user,data_wyp:string;
  13.   max_wyp,pozostalo :integer;
  14.  end;
  15.  ksiegozbior = file of ksiazka;
  16.  
  17.  
  18. var
  19.  licznik_id:text;
  20.  baza:baza_danych;
  21.  ksiazki:ksiegozbior;
  22.  book:ksiazka;
  23.  user:uzytkownik;
  24.  c,c1,c2:char;
  25.  tablica:array[1..5] of string;
  26.  y:byte;
  27.  
  28. procedure files;
  29.  begin
  30.   assign(licznik_id,'id.db');
  31.   assign(baza,'baza_danych.db');
  32.   assign(ksiazki,'ksiegozbior.db');
  33.  end;
  34.  
  35. function czas:string;
  36.  var
  37.   godz,min,sek,sek100:word;
  38.   sgodz,smin,ssek,time:string;
  39.  begin
  40.   gettime(godz,min,sek,sek100);
  41.   str(godz,sgodz);
  42.   if length(sgodz)=1 then sgodz:='0'+sgodz;
  43.   str(min,smin);
  44.   if length(smin)=1 then smin:='0'+smin;
  45.   str(sek,ssek);
  46.   if length(ssek)=1 then ssek:='0'+ssek;
  47.   time:=' '+sgodz+':'+smin+':'+ssek;
  48.   czas:=time;
  49.  end;
  50.  
  51. function data:string;
  52.  const
  53.   dni:array[0..6] of string=('Niedziela','Poniedzialek','Wtorek','Sroda','Czwartek','Piatek','Sobota');
  54.  var
  55.   rok, miesiac, dzien, dztyg:word;
  56.   sdzien,smiesiac,srok,date:string;
  57.  begin
  58.   getdate(rok, miesiac, dzien, dztyg);
  59.   str(dzien,sdzien);
  60.   if length(sdzien)=1 then sdzien:='0'+sdzien;
  61.   str(miesiac,smiesiac);
  62.   if length(smiesiac)=1 then smiesiac:='0'+smiesiac;
  63.   str(rok,srok);
  64.   date:=dni[dztyg]+' '+sdzien+'.'+smiesiac+'.'+srok;
  65.   data:=date;
  66.  end;
  67.  
  68.  
  69. procedure intro;
  70.  begin
  71.   clrscr;
  72.   writeln(data);
  73.   writeln('godzina',czas);
  74.   writeln;
  75.   writeln('Witam w programie Bibiloteka');
  76.   writeln('Zaloguj si© lub zarejestruj');
  77.   gotoxy(59,1);
  78.   writeln('Wcisnij ESC aby wyjsc');
  79.  
  80.  end;
  81.  
  82. function identyfikator:string;
  83.  var
  84.   a,b,id:string;
  85.   c,i,d,kod:integer;
  86.  begin
  87.  clrscr;
  88.   {$I-}
  89.    reset(licznik_id);
  90.    if ioresult <>0 then
  91.     begin
  92.      rewrite(licznik_id);
  93.      writeln(licznik_id,'1');
  94.     end;
  95.   {$I+}
  96.   close(licznik_id);
  97.   reset(licznik_id);
  98.   readln(licznik_id,id);
  99.   a:='cz';
  100.   a:=a+id;
  101.   c:=6-length(a);
  102.   if (c>0) then
  103.    begin
  104.     for i:=1 to c do
  105.      insert('0',a,length(a))
  106.    end;
  107.   val(id,d,kod);
  108.   inc(d);
  109.   str(d,id);
  110.   rewrite(licznik_id);
  111.   write(licznik_id,id);
  112.   close(licznik_id);
  113.   identyfikator:=a;
  114.  end;
  115.  
  116.  
  117. function first_pass(dl:byte):string;
  118.  var
  119.   a:string;
  120.   i:integer;
  121.  begin
  122.   randomize;
  123.   a:='';
  124.   for i:=1 to dl do
  125.    begin
  126.     a:=a+Chr(Ord('a')+Random(26));
  127.    end;
  128.   first_pass:=a;
  129.  end;
  130.  
  131. procedure rejestracja;
  132.  begin
  133.   clrscr;
  134.   {$I-}
  135.    reset(baza);
  136.    if ioresult <>0 then
  137.     begin
  138.      rewrite(baza);
  139.     end;
  140.    close(baza);
  141.   {$I+}
  142.   reset(baza);
  143.   while not eof(baza) do
  144.    begin
  145.     read(baza,user);
  146.    end;
  147.   user.id:=identyfikator;
  148.   writeln('Podaj imie');
  149.   readln(user.imie);
  150.   writeln('Podaj Nazwisko');
  151.   readln(user.nazwisko);
  152.   clrscr;
  153.   writeln('Witaj ',user.imie,'!');
  154.   writeln('Twoje ID sluzace do logowania to: ',user.id);
  155.   user.haslo:=first_pass(6);
  156.   writeln('Twoje haslo tymczasowe to: ',user.haslo);
  157.   user.data:=data;
  158.   writeln;
  159.   user.autoryzacja:='false';
  160.   user.admin:='false';
  161.   write(baza,user);
  162.   writeln('Konto czeka na autoryzacje przez administratora');
  163.   writeln;
  164.   writeln('Gdy administrator autoryzuje Twoje konto bedziesz mogl m.in.:');
  165.   writeln('- wypozyczyc ksiazke');
  166.   writeln('- zarzadzac kontem');
  167.   readln;
  168.  end;
  169.  
  170. procedure zakladanie;
  171.  begin
  172.   writeln('zaklad');
  173.  end;
  174.  
  175. procedure usuwanie_k;
  176.  begin
  177.   writeln('usun');
  178.  end;
  179.  
  180. procedure baza_cz;
  181.  begin
  182.   writeln('baza');
  183.  end;
  184.  
  185. procedure stan;
  186.  begin
  187.   writeln('stan');
  188.  end;
  189.  
  190. procedure bibliotekarz;
  191.  begin
  192.   clrscr;
  193.   writeln('Witamy w panelu bibliotekarza');
  194.   writeln('Wybierz jedna z ponizszych mozliwosci');
  195.   while y<>5 do
  196.   begin
  197.    tablica[1]:='     Zakladanie ksiegozbioru    ';
  198.    tablica[2]:=' Usuwanie pozycji ksiegozbioru  ';
  199.    tablica[3]:='         Baza Czytelnik&#728;w       ';
  200.    tablica[4]:='         Stan Biblioteki        ';
  201.    textcolor(15);
  202.    for y:=1 to 4 do
  203.     begin
  204.      textcolor(15);
  205.      textbackground(0);
  206.      gotoxy(23,10+y);
  207.      write(tablica[y]);
  208.     end;
  209.    y:=1;
  210.    repeat
  211.     textcolor(0);
  212.     textbackground(15);
  213.     gotoxy(23,10+y);
  214.     write(tablica[y]);
  215.     c1:=readkey;
  216.     c2:=' ';
  217.     if c1=chr(0) then c2:=readkey;
  218.     textcolor(15);
  219.     textbackground(0);
  220.     gotoxy(23,10+y);
  221.     write(tablica[y]);
  222.     if c2='H' then dec(y);
  223.     if c2='P' then inc(y);
  224.     if y=0 then y:=4;
  225.     if y=5 then y:=1;
  226.     if c1=chr(27) then exit;
  227.    until (c1=chr(27)) or (c1=chr(13));
  228.    if y=1 then zakladanie;
  229.    if y=2 then usuwanie_k;
  230.    if y=3 then baza_cz;
  231.    if y=4 then stan;
  232.   end;
  233.  end;
  234.  
  235. procedure czytelnik;
  236.  begin
  237.   clrscr;
  238.   if user.autoryzacja='false' then
  239.    writeln('Twoje konto nie jest autoryzowane przez administratora, sproboj pozniej')
  240.   else
  241.    writeln('user');
  242.  end;
  243.  
  244. procedure logowanie;
  245.  var
  246.   login,has:string;
  247.   check:byte;
  248.  begin
  249.   clrscr;
  250.   check:=0;
  251.   write('login: ');
  252.   readln(login);
  253.   clrscr;
  254.   write('haslo: ');
  255.   readln(has);
  256.   {$I-}
  257.    reset(baza);
  258.    if IOresult<>0 then
  259.     begin
  260.      writeln('Brak bazy danych, operacja niemozliwa');
  261.      writeln('Nastapi cofniecie na strone glowna');
  262.      delay(500);
  263.     end
  264.    else
  265.     begin
  266.      repeat
  267.       read(baza,user);
  268.       if (login=user.id) then
  269.        begin
  270.         if (has=user.haslo) then
  271.          begin
  272.           inc(check);
  273.           if user.admin='true' then
  274.            bibliotekarz
  275.           else
  276.            czytelnik;
  277.          end;
  278.        end;
  279.      until (check<>0) or eof(baza);
  280.     if check=0 then
  281.     writeln('Zle dane lub nie masz zalozonego konta');
  282.     close(baza);
  283.     readln;
  284.    end;
  285.   {$I+}
  286.  end;
  287.  
  288. procedure be_admin;
  289.  
  290.  const
  291.   max=5;
  292.  
  293.  var
  294.   ad,has,access:string;
  295.   check,i:byte;
  296.   c:char;
  297.  begin
  298.   clrscr;
  299.   access:='';
  300.   check:=0;
  301.   writeln('Podaj haslo: ');
  302.   for i:=1 to max do
  303.    begin
  304.     c:=readkey;
  305.     write('*');
  306.     access[i]:=c;
  307.     access:=access+access[i];
  308.    end;
  309.   if (access = 'l0pht') then
  310.    begin
  311.     clrscr;
  312.     writeln('Uwaga ten panel ingeruje gleboko w baze danych, uzywaj go rozwaznie!');
  313.     writeln('Podaj ID do zmiany konta na konto administratora');
  314.     readln(ad);
  315.     writeln('Nowe haslo');
  316.     readln(has);
  317.     {$I-}
  318.      reset(baza);
  319.      if IOresult<>0 then
  320.       writeln('Brak bazy danych, zmiana nie mozliwa')
  321.      else
  322.       begin
  323.        repeat
  324.         read(baza,user);
  325.         if (user.id=ad) then
  326.          begin
  327.           inc(check);
  328.           user.haslo:=has;
  329.           user.id:='bibliotekarz';
  330.           user.admin:='true';
  331.           user.autoryzacja:='true';
  332.          end;
  333.        until (check<>0) or eof(baza);
  334.        if check=0 then
  335.         writeln('Uzytkownik o podanym ID nie istnieje')
  336.        else
  337.         begin
  338.          writeln('Twoje NOWE ID to "bibliotekarz"');
  339.          writeln('Powodzenia w administrowaniu biblioteka');
  340.         end;
  341.        write(baza,user);
  342.        close(baza);
  343.        readln;
  344.       end;
  345.     {$I+}
  346.    end
  347.   else
  348.    exit;
  349.  end;
  350.  
  351.  
  352. procedure menu;
  353.  begin
  354.   clrscr;
  355.   intro;
  356.   writeln;
  357.   while y<>3 do
  358.   begin
  359.    tablica[1]:='        Logowanie          ';
  360.    tablica[2]:='  Rejestracja w systemie   ';
  361.    textcolor(15);
  362.    for y:=1 to 2 do
  363.     begin
  364.      textcolor(15);
  365.      textbackground(0);
  366.      gotoxy(30,10+y);
  367.      write(tablica[y]);
  368.     end;
  369.    y:=1;
  370.    repeat
  371.     textcolor(0);
  372.     textbackground(15);
  373.     gotoxy(30,10+y);
  374.     write(tablica[y]);
  375.     c1:=readkey;
  376.     c2:=' ';
  377.     if c1=chr(0) then c2:=readkey;
  378.     textcolor(15);
  379.     textbackground(0);
  380.     gotoxy(30,10+y);
  381.     write(tablica[y]);
  382.     if c2='H' then dec(y);
  383.     if c2='P' then inc(y);
  384.     if c2='M' then
  385.      begin
  386.       be_admin;
  387.       clrscr;
  388.       menu;
  389.      end;
  390.     if y=0 then y:=2;
  391.     if y=3 then y:=1;
  392.     if c1=chr(27) then exit;
  393.    until (c1=chr(27)) or (c1=chr(13));
  394.   if y=1 then logowanie;
  395.   if y=2 then rejestracja;
  396.   clrscr;
  397.   intro;
  398.   end;
  399.  end;
  400.  
  401. begin
  402.  clrscr;
  403.  files;
  404.  menu;
  405. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement