baza danych (pascal)

0

Cze,

Jestem w trakcie pisania bazy danych utknalem na procedurze pokaz_wpisy.

Proszę o pomoc wszystkich uzytkownikow.

program GAMEBASE;
uses crt;

type gry=record
nazwa:string[50];
end;

var
f:file of Gry;
{a,b:array [1..50] of Gry;}
games:Gry;
i,d1,x,ilosc:byte;
esc:char;
wybor:integer;

{procedure nowa_baza;
begin
assign(f,'gamebase.dat');
rewrite(f);
close(f);
end;}

procedure nowy_wpis;
begin
clrscr;
assign(f,'gamebase.dat');
rewrite(f);

inc(ilosc);
writeln('Nazwa gry:');
readln(games.nazwa[ilosc]);

close(f);
end;

procedure pokaz_wpisy;
begin
clrscr;
assign(f,'gamebase.dat');
reset(f);while not eof(f) do
begin
read(f,games);
writeln;
writeln('Nazwa gry: ',games.nazwa);
end;
writeln('Wcisnij ESC aby zakonczyc');
esc:=readkey;
readln;
writeln;
close(f);
end;


begin
clrscr;

repeat
Writeln('MENU');
Writeln('1 - nowy wpis');
Writeln('2 - pokaz wpisy');
Writeln('0 - zakoncz');
Writeln(' ');
Writeln('STATYSTYKI');
Writeln('W bazie znajduje sie ',ilosc,' gier');
Readln(wybor);

CASE wybor of
1 : nowy_wpis;
2 : pokaz_wpisy;
end;
until wybor=0;

end.
0

Kod nieformatowany, znaczy że nie chętnie go czytamy :P Tak do rymu.
Przeanalizuj sobie kod programu, który kiedyś napisałem za jednego - z
óśób pytających na forum, a poźniej dopisałem proste wyszukiwanie, no
i powtórze się znowu, jak nie umiesz formatować kodu samodzielnie lub
nie chce się Tobie tego robić to użyj programu z pod poniższego adresu:
http://www.mediafire.com/?0btnnnuywyn

program pierd1;

uses
  crt, dos;

type
  Osoba = record
    Imie : string[20];
    Nazwisko : string[20];
    Wiek : Byte;
  end;

const
  NazwaPliku = 'D:\imiona.dat';

var
  S : string;
  Dane : Osoba;
  I, Kod : integer;
  Plik : file of Osoba;
  Tab : array[1..2] of Osoba;

function FileExists(const FileName : string) : boolean;
var
  SR : SearchRec;
begin
  DOS.FindFirst(FileName, $3F, SR);
  if DosError = 0 then
  begin
    FileExists := (SR.Attr and $18) = 0;
  end
  else
  begin
    FileExists := False;
  end;
end;

procedure WczytajPlik;
var
  I, IleRekordow : integer;
begin
  if FileExists(NazwaPliku) = False then
  begin
    Writeln('Plik: ', NazwaPliku, ' - nie istnieje!');
    Readln;
  end
  else
  begin
    ClrScr;
    Assign(Plik, NazwaPliku);
    Reset(Plik);
    IleRekordow := FileSize(Plik);
    if IleRekordow > 0 then
    begin
      for I := 1 to IleRekordow do
      begin
        Read(Plik, Dane);
        Writeln(' Osoba numer: ', I, ' - dane:');
        Writeln(' Imie:     ', Dane.Imie);
        Writeln(' Nazwisko: ', Dane.Nazwisko);
        Writeln(' Wiek:     ', Dane.Wiek);
        Writeln;
      end;
      Readln;
    end;
  end;
end;

procedure ZapiszPlik;
begin
  ClrScr;
  Assign(Plik, NazwaPliku);
  Rewrite(Plik);
  Writeln('Wprowadz dane...');
  for I := Low(Tab) to High(Tab) do
  begin
    with Tab[I] do
    begin
      Writeln('Dane osoby numer: ', I, ' z: ', High(Tab));
      Write('Podaj imie: ');
      Readln(Imie);
      Write('Podaj nazwisko: ');
      Readln(Nazwisko);
      repeat
        Write('Podaj wiek: ');
        Readln(S);
        Val(S, Wiek, Kod)
      until (Kod = 0) and (Wiek > 0) and (Wiek < High(Wiek));
      Write(Plik, Tab[I]);
    end;
  end;
  Close(Plik);
end;

procedure SzukajOsoby;
var
  Znaleziono : boolean;
  SzukaneNazwisko : string;
  I, IleRekordow : integer;
begin
  if FileExists(NazwaPliku) = False then
  begin
    Writeln('Plik: ', NazwaPliku, ' - nie istnieje!');
    Readln;
  end
  else
  begin
    ClrScr;
    Assign(Plik, NazwaPliku);
    Reset(Plik);
    IleRekordow := FileSize(Plik);
    if IleRekordow > 0 then
    begin
      Znaleziono := False;
      Writeln('Podaj nazwisko osoby, ktora chcesz wyszukac.');
      Write('UWAGA! wielkosc liter ma znaczenie: ');
      Readln(SzukaneNazwisko);
      for I := 1 to IleRekordow do
      begin
        Read(Plik, Dane);
        Znaleziono := Dane.Nazwisko = SzukaneNazwisko;
        if Znaleziono = True then
        begin
          Break;
        end;
      end;
      if Znaleziono = True then
      begin
        Writeln(' Znaleziono osobe pod numerem: ', I, ' - dane:');
        Writeln(' Imie:     ', Dane.Imie);
        Writeln(' Nazwisko: ', Dane.Nazwisko);
        Writeln(' Wiek:     ', Dane.Wiek);
        Writeln;
      end
      else
      begin
        Writeln('Nie znaleziono osoby o nazwisku: ', SzukaneNazwisko);
        Writeln;
      end;
      Readln;
    end;
  end;
end;

procedure PokazujMenu;
var
  Odp : Char;
begin
  ClrScr;
  Writeln(' Program dla leniwego Juv3r-a');
  Writeln(' ============================');
  Writeln;
  Writeln(' Co chcesz zrobic:');
  Writeln;
  Writeln(' 1 = zapis pliku');
  Writeln(' 2 = odczyt pliku');
  Writeln(' 3 = szukaj osoby po nazwisku');
  Writeln;
  Writeln(' Kazdy inny klawisz - wyjscie z programu...');
  Odp := ReadKey;
  case Odp of
    '1' : ZapiszPlik;
    '2' : WczytajPlik;
    '3' : SzukajOsoby;
  else
    Halt;
  end;
end;

begin
  PokazujMenu;
end.

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