SOISK - SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Tomasz Puchała

Rekordy pascal_2

Jak napisać program w Turbo Pascalu? 
Gotowa baza danych, gotowy program, gotowiec w Turbo Pascalu 
Jak zrobić bazę danych na rekordach w Turbo Pascalu? 
Jak napisać bazę z tabelą rekordów z danymi o samochodach(model, silnik, cena)? 

Kod:

program baza;
uses crt;

type
   { jak zadeklarować, zrobić rekord w Turbo Pascalu }
   { Jak utworzyć rekord, typ rekordowy w Pascalu? }
   { Co to jest jak wygląda record w Pascalu? }

   samochod = record
      marka, model, silnik, wyposazenie:string[20];
      cena: Real;
      ilosc:Byte;
   end;

var Klaw,                         { deklaracja zmiennych globalnych }
    Klawisz2:char;
    Licznik:byte;             { liczba rekordów w tabeli }
    t1,p1:byte;
    plik:text;
    p2:single;
    r:array[1..100] of samochod;
 


Jak zapisywać dane do rekordu? 
Kod:

{ procedura służąca do wprowadzania danych do rekordu o numerze Licznik } 
procedure wprowadz;
begin
   clrscr;                           { czyszczenie ekranu }

   Licznik:=Licznik+1;               { licznik rekordów } 
   write('Marka             : ');
   readln(r[Licznik].marka);         { readln - odczyt danej z klawyatury } 
   write('Model             : ');
   readln(r[Licznik].model);
   write('Wersja silnika    : ');    { write - wyświetlanie napisu } 
   readln(r[Licznik].silnik);
   write('Wersja wyposazenia: ');
   readln(r[Licznik].wyposazenie);
   write('Cena              : ');
   readln(r[Licznik].cena);
   write('Ilosc             : ');
   readln(r[Licznik].ilosc);
end;
 


Jak wyświetlić informację na ekranie, że baza danych jest pusta? 
Kod:

{ procedura wyświetla napisy, które mówią ze baza jest pusta } 
procedure pusta;
begin
   writeln('Baza jest aktualnie pusta. Dodaj nowe wpisy lub wczytaj juz istniejace z pliku');
   writeln;
   writeln('Nacisnij jakis klawisz...');
   Klawisz2:=readkey;       { program czeka na wcisnięcie dowolneko klawisza } 
end;
 


Jak wyświetlać zawartość rekordu? 
Kod:

{ procedura wyświetla zawartosć rekordu o numerze t1 } 
procedure wyswietl;
begin
   if Licznik=0
   then            { jeśli nie ma danych w tablicy to komunikat że baza jest pusta } 
      pusta
   else
   begin           { jesli są dane to wyświetlamy zawartosć rekordu o numerze t1 } 
      writeln('Marka             : ', r[t1].marka);
      writeln('Model             : ', r[t1].model);
      writeln('Silnik            : ', r[t1].silnik);
      writeln('Wersja wyposazenia: ', r[t1].wyposazenie);
      writeln('Cena              : ', r[t1].cena:4:2);
      writeln('Ilosc             : ', r[t1].ilosc);
      writeln('Wartosc           : '(r[t1].ilosc*r[t1].cena):4:2);
      writeln;
   end
end;
 


Jak edytować rekord? 

Kod:

procedure edytuj;
begin
  clrscr;
  if Licznik=0
  then            { jeśli nie ma danych w tablicy to komunikat że baza jest pusta } 
     pusta
  else
   begin          { edycja, zapisanie nowych danych, z klawiatury do rekordu } 
      writeln('Ktory wpis chcesz edytować (1..', Licznik, ')');
      readln(t1);
      write('Nowa marka             : ');
      readln(r[t1].marka);
      write('Noey model             : ');
      readln(r[t1].model);
      write('Nowa wersja silnika    : ');
      readln(r[t1].silnik);
      write('Nowa wersja wyposazenia: ');
      readln(r[t1].wyposazenie);
      write('Nowa cena              : ');
      readln(r[t1].cena);
      write('Nowa ilosc             : ');
      readln(r[t1].ilosc);
   end
end;
 


Jak wyświetlić zawartość tabeli rekordowej? 
Kod:

{ procedura wyświetla całą listę danych z tabeli } 
procedure wszystko;
begin
  clrscr;
  if (Licznik<>0) then
  begin
     t1:=0;
     repeat
        t1:=t1+1;
        wyswietl;
     until t1=Licznik;
  end
end;
 


Jak zapisać rekordy do pliku w Turbo Pascalu? 
Kod:

{ Procedura zapisuje dane z tablicy rekordów do pliku } 
procedure zapisz;
begin
  if Licznik=0 then
   begin
      clrscr;
      pusta;
   end
  else
   begin
      assign(plik, 'BAZA.DAN');     { przypisanie nazwy pliku do uchwytu } 
      rewrite(plik);                { otwarcie pliku do zapisu, jesli był taki plik } 
                                    { to zostanie wyczyszczony } 
      writeln(plik, Licznik);       { zapisanie ilości rekordów w tablicy } 
      t1:=0;
      repeat                        { początek petli } 
         t1:=t1+1;                  { zwiekszenie numeru przegladanego rekordu } 

         writeln(plik, r[t1].marka);           { zapis kolejnych danych do pliku } 
         writeln(plik, r[t1].model);
         writeln(plik, r[t1].silnik);
         writeln(plik, r[t1].wyposazenie);
         writeln(plik, r[t1].cena);
         writeln(plik, r[t1].ilosc);

      until t1=Licznik;             { koniec petli } 
      close(plik);                  { zamkniecie pliku po zapisie } 
   end
end;
 


Jak odczytać rekordy z pliku rekordowego w Turbo Pascalu? 
Kod:

{ wczytanie danych z pliku do tablicy rekordowej } 
procedure czytaj;
begin
  assign(plik, 'BAZA.DAN');         { przypisanie nazwy pliku do uchwytu } 
  reset(plik);                      { otwarcie pliku do odczytu } 
  readln(plik, Licznik);            { odczytanie ilości rekordów do wczytania do tablicy } 
  t1:=0;
  repeat                            { początek petli } 
    t1:=t1+1;                       { zwiekszenie numeru przegladanego rekordu } 

    readln(plik, r[t1].marka);              { danych kolejnych danych z pliku } 
    readln(plik, r[t1].model);
    readln(plik, r[t1].silnik);
    readln(plik, r[t1].wyposazenie);
    readln(plik, r[t1].cena);
    readln(plik, r[t1].ilosc);

  until t1=Licznik;                 { koniec petli } 
  close(plik);                      { zamkniecie pliku po zapisie } 
end;
 


Jak usunąć, skasować rekord z tabeli rekordów? 
Kod:

{ kasowanie rekordu z tabeli } 
procedure usun;
begin
  clrscr;
  if Licznik=0 then pusta
  else
   begin
      writeln('Podaj numer wpisu do usuniecia (1..', Licznik, ')');
      readln(t1);
   repeat
      r[t1].marka:=  r[t1+1].marka;               { Jak pobierać dane z rekordu? }
      r[t1].model:=  r[t1+1].model;
      r[t1].silnik:= r[t1+1].silnik;
      r[t1].wyposazenie:= r[t1+1].wyposazenie;
      r[t1].cena:=   r[t1+1].cena;
      r[t1].ilosc:=  r[t1+1].ilosc;
      t1:=t1+1;
   until t1=Licznik;
   Licznik:=Licznik-1;
   end
end;
 


Kod:

procedure info;
begin
  if Licznik=0 then pusta
  else
   begin
   t1:=0;
   p1:=0;
   p2:=0;
   repeat
     t1:=t1+1;
     p1:=p1+r[t1].ilosc;
     p2:=p2+(r[t1].ilosc*r[t1].cena);
   until t1=Licznik;
   if p1=1
      then writeln('Posiadasz ', p1, ' samochod o wartosci ', p2:4:2' zl.');
   if (p1=2) or (p1=3) or (p1=4)
      then writeln('Posiadasz ', p1, ' samochody o lacznej wartosci ', p2:4:2' zl.');
   if p1>=5
      then writeln('Posiadasz ', p1, ' samochodow o lacznej wartosci ', p2:4:2' zl.');

   writeln('Nacisnij jakis klawisz...');
   Klawisz2:=readkey;         { program czeka na wcisnięcie dowolneko klawisza } 
   end
end;
 


Jak zrobić proste menu tekstowe w Turbo Pascalu? 
Kod:

begin
   textbackground(lightgray);        { kolor tła rekstu } 
   textcolor(black);                 { kolor tekstu }

   Licznik:= 0;                      { zerowanie licznika rekordów }

   { pętla główna programu czekająca na wybór opcji z menu }
   repeat
      clrscr;
      writeln('1. Nowy wpis');
      writeln('2. Usun wpis');
      writeln('3. Wy&#732;wietlanie wpisu');
      writeln('4. Wy&#732;wietlanie wszystkich wpis˘w');
      writeln('5. Odczyt z pliku');
      writeln('6. Zapis do pliku');
      writeln('7. Informacje o salonie');
      writeln('8. Koniec programu');

      repeat Klaw:= readkey; until (Klaw>='1') and (Klaw<='8');     // petla czekająca na klawisz

      {wzależności jaki klawisz został wcisnięty takie procedury zostaną uruchomione}
      if Klaw='1' then wprowadz;
      if Klaw='2' then usun;
      if Klaw='3' then
        begin
           clrscr;
           write('Podaj numer wpisu (1..', Licznik, '): ');
           readln(t1);
           wyswietl;
           writeln;
           writeln('Wcisnij jakis klawisz...');
           Klawisz2:=readkey;        { program czeka na wcisnięcie dowolneko klawisza }
        end;
      if Klaw='4' then begin wszystko; info; end;
      if Klaw='5' then czytaj;
      if Klaw='6' then zapisz;
      if Klaw='7' then begin clrscr; info; end;

   until Klaw='8';     { koniec petli głównej programu}
end.
 
Ta strona internetowa została utworzona bezpłatnie pod adresem Stronygratis.pl. Czy chcesz też mieć własną stronę internetową?
Darmowa rejestracja