[PASCAL]Baza danych - wyszukiwanie, sortowanie

0

Mam pewien problem. Moim zadaniem na zaliczenie semestru jest zrobienie bazy danych która umozliwi zalożenie nowej bazy,dodanie nowych elementów do istniejącej bazy, wypisanie wszystkich elementów, sortowanie elementów w bazie i wyszukanie konkretnego elementu. Z pierwszymi 3 sie uporałem pozostało mi sortowanie i wyszukiwarka.

Oto kod:

program baza1;
uses Crt;
type
   dane= record
   Producent:string[26];
   Typ:string[20];
   Model : string[20];
   Naped : string[50];
   Pojemnosc : integer;
   RokProdukcji : integer;
   end;

var
   pracownik : dane;
   baza : file of dane;
   opcja : byte;
   nazwa : string[12];
   odp,koniec : char;
   licznik,ster,tryb : integer;




    procedure pracow;
    begin
     with pracownik do
     begin
        write('Producent  :');   readln(producent);
        write('Typ  :'); readln(typ);
        write('Model  :');  readln(model);
        write('Napęd  :'); readln(naped);
        write('Pojemność:'); readln(pojemnosc);
        write('Rok produkcji:'); readln(rokprodukcji);
     end
   end;

   procedure wprowadz;
   begin
     write('Podaj nazwe pliku:  ');
     readln(nazwa);
     writeln;
     writeln('Wprowadź dane do bazy!');
     writeln;
     assign(baza,nazwa);
     rewrite(baza);
     seek(baza,filesize(baza));
      repeat
       pracow;
       write(baza,pracownik);
       writeln;
       write(    'Następny? (T/N) ');
       readln(odp);
      until odp<> 't';
       close(baza);
   end;

   procedure dopisz;
   begin
     write('Podaj nazwe pliku: ');
     readln(nazwa);
     writeln;
     writeln('Wprowadzanie danych o pracowniku');
     writeln;
     assign(baza,nazwa);
     reset(baza);
     seek(baza,filesize(baza));
      repeat
       pracow;
       write(baza,pracownik);
       writeln;
       write('     Nastepny? (T/N)');
       readln(odp);

      until odp<>'t';
      close(baza);
   end;


   procedure wypisz;
   var
    l_linii : integer;

   begin
     licznik:=1;
     write('Podaj nazwę pliku : ');  readln(nazwa);
     assign(baza,nazwa);
     reset(baza);
     while not eof(baza) do
     begin
       read(baza,pracownik);
       with pracownik do
         begin
         writeln;
         writeln(licznik);
         writeln('       Producent: ',producent);
         writeln('       Typ: ',   typ);
         writeln('       Wiek: ',      model);
         writeln('       Napęd: ' ,  naped);
         writeln('       Pojemność: ' ,  pojemnosc);
         writeln('       Rok produkcji: ' ,  rokprodukcji);
         end;

         licznik:=licznik+1;
         if licznik mod 6 = 0 then readln;
     end
   end;


 begin
 repeat
   textbackground(15);
   textcolor(0);
   clrscr;
   writeln;
   writeln;
   writeln('           Baza danych - motocykle');
   writeln;
   writeln;
   writeln('  1:  Zakładanie nowej bazy danych');
   writeln('  2:  Dopisywanie danych do istniejącej bazy');
   writeln('  3:  Wyświetlanie zawartości bazy danych');
   writeln;
   write('    Podaj nr opcji: ');
   readln(opcja);
   writeln;

 case opcja of

   1 : wprowadz;
   2 : dopisz;
   3 : wypisz;
 else
   writeln(' Nie ma takiej opcji ! ');
 end;
   writeln;
   writeln('   Koniec programu? (t/n)');
   readln(koniec);
 until koniec <>'n'
 end.

Bardzo prosze o pomoc .. Myśle nad tym juz z tydzien i nie mam pojęcia jak to napisać .. a chciałbym zaliczyc ten semestr ..

0

jeżeli chodzi o wyszukiwanie ..
to może stwórz sobie jakąś zmienną typu "dane" i wczytuj z pliku po kolei każdy rekord i sprawdzaj czy zawarte w nim informacje są zgodne z tymi które użytkownik chce znaleźć :P

co do sortowania to w internecie jest sporo artykułów o sortowaniu, chociażby:
http://4programmers.net/Delphi/Gotowce/Alfabetyczne_sortowanie_b%C4%85belkowe

1 użytkowników online, w tym zalogowanych: 0, gości: 1