Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

zaqman

Rozwiązany: Baza danych w pascalu

Polecane posty

Witam. Potrzebuje pilnie waszej pomocy. Powiedźcie mi czemu to nie chce działać?

PROGRAM Baza;

USES crt;

TYPE

samochod=RECORD

a : String[20];

t : String[20];

s : Integer;

j : Char;

END;

CONST max_ilosc_samochodow=1000;

VAR

stan : Array[1..max_ilosc_samochodow] OF samochod;

jeden_samochod : samochod;

baza_danych : FILE OF samochod;

ilosc_rekordow,numer_rek : Integer;

nazwa : String;

dalej : Char;

PROCEDURE Czysc_bufor;

VAR

czyscidlo : Char;

BEGIN

WHILE keypressed DO czyscidlo := Readkey;

END;

PROCEDURE Sygnal;

BEGIN

Write(#7);

Write(#7);

END;

PROCEDURE Wczyt_nazwa_danych;

BEGIN

Clrscr;

Write('Podaj nazwe bazy danych z dysku = ');

Readln(nazwa);

Assign(baza_danych,nazwa);

END;

PROCEDURE Menu;

FORWARD;

PROCEDURE Wczyt_cale_dane_z_dysku_do_po;

BEGIN

Clrscr;

RESET(baza_danych);

numer_rek:=1;

WHILE NOT Eof(baza_danych) DO

BEGIN

Read(baza_danych,stan[numer_rek]);

Inc(numer_rek);

END;

Ilosc_rekordow := Pred(numer_rek);

Close(baza_danych);

END;

PROCEDURE Wyswietlanie_calej_bazy;

BEGIN

Wczyt_cale_dane_z_dysku_do_po;

Clrscr;

FOR numer_rek:=1 to ilosc_rekordow DO

BEGIN

WITH stan[numer_rek] DO

WriteLn(numer_rek,' ',a:20,' ',t:20,' ',s:6,' ',j:2);

END;

WriteLn;

WriteLn;

WriteLn('Jesli dalej wcisnij dowolny klawisz');

REPEAT UNTIL Keypressed;

Czysc_bufor;

Menu;

END;

PROCEDURE Odczyt_dane_z_dysku;

BEGIN

Clrscr;

Reset(baza_danych);

REPEAT

Clrscr;

Write('Podaj numer rekordu do odczytu : ');

ReadLn(numer_rek);

Seek(baza_danych,numer_rek-1);

Read(baza_danych,stan);

WITH samochod DO

BEGIN

WriteLn('Numer rekordu : ',numer_rek);

WriteLn;

WriteLn('Marka : ',a);

WriteLn('Model : ',t);

WriteLn('Rocznik : ',s);

WriteLn('Prebieg : ',j);

END;

WriteLn;

WriteLn;

WriteLn('Czy nowy rekord T/N');

dalej := UpCase(Readkey);

UNTIL (dalej<>'T');

Close(baza_danych);

Menu;

END;

PROCEDURE Popraw_dane_z_dysku;

VAR

readpole : Char;

pole1,pole2,pole3,pole4 : Integer;

BEGIN

Clrscr;

Reset(baza_danych);

REPEAT

Write('Podaj numer rekordu do poprawy : ');

ReadLn(numer_rek);

Seek(baza_danych,numer_rek-1);

Read(baza_danych,samochod);

WITH samochod DO

BEGIN

WriteLn('Numer rekordu : ',numer_rek);

WriteLn;

WriteLn('Numer pola');

WriteLn('1 Marka : ',a);

WriteLn('2 Model : ',t);

WriteLn('3 Rocznik : ',s);

WriteLn('4 Przebieg : ',j);

WriteLn;

WriteLn;

pole1:=0 ;pole2:=0;pole3:=0;pole4:=0;

WriteLn('Podaj numery pol do poprawy');

WriteLn('Czy pole 1 do poprawy T/N');

IF readpole='T' THEN pole1:=1;

WriteLn('Czy pole 2 do poprawy T/N');

readpole := UpCase(Readkey);

IF readpole='T' THEN pole2:=1;

WriteLn('Czy pole 3 do poprawy T/N');

readpole := UpCase(Readkey);

IF readpole='T' THEN pole3:=1;

WriteLn('Czy pole 4 do poprawy T/N');

readpole := UpCase(Readkey);

IF readpole='T' THEN pole4:=1;

IF pole1=1 THEN

BEGIN

Write('Podaj Marke : ');

ReadLn(a);

END;

IF pole2=1 THEN

BEGIN

Write('Podaj Model : ');

ReadLn(t);

END;

IF pole3=1 THEN

BEGIN

Write('Podaj rocznik : ');

ReadLn(s);

END;

IF pole4=1 THEN

BEGIN

Write('Podaj przebieg : ');

ReadLn(j);

END;

END;

Seek(baza_danych,numer_rek-1);

Write(baza_danych,samochod);

WriteLn;

WriteLn;

WriteLn('Czy nowy rekord T/N');

czysc_bufor;dalej:=UpCase(Readkey);

UNTIL (dalej<>'T');

Close(baza_danych);

Menu;

END;

PROCEDURE nowa_baza;

BEGIN

Clrscr;

Write('Podaj nazwe bazy danych, ktora utworzysz na dysku = ');

ReadLn(nazwa);

Assign(baza_danych,nazwa);

Rewrite(baza_danych);

REPEAT

Clrscr;

WITH samochod DO

BEGIN

czysc_bufor;

Write('Podaj Marke : ');

ReadLn(a);

Write('Podaj Model : ');

ReadLn(t);

Write('Podaj rocznik : ');

ReadLn(s);

Write('Podaj przebieg : ');

ReadLn(j);

END;

Write(baza_danych,jeden_samochod);

WriteLn('Czy koniec wczytywania rekordow T/N : ');

dalej:=Readkey;

UNTIL (dalej='t') OR (dalej='T');

Close(baza_danych);

Menu;

END;

PROCEDURE Menu;

VAR

nr:char;

BEGIN

Clrscr;

WriteLn('1 - Zakladanie nowej bazy');

WriteLn('2 - Odczytywanie danych o jednym rekordzie z bazy');

WriteLn('3 - Wyswietlanie calej bazy');

WriteLn('4 - Poprawianie jednego rekordu');

WriteLn('5 - Koniec programu');

WriteLn;

WriteLn;

WriteLn;

Write('Wybierz opcje nr 1,2,3,4 lub 5 = ');

nr:=Readkey;

CASE nr OF

'1':nowa_baza;

'2':odczyt_dane_z_dysku;

'3':wyswietlanie_calej_bazy;

'4':popraw_dane_z_dysku;

'5':Halt;

ELSE

BEGIN

WriteLn('Nie ma takiego numeru opcji');

Sygnal;

Delay(1000);

Clrscr;

Menu

END;

END;

END;

BEGIN{poczatek programu glownego}

wczyt_nazwa_danych;

Menu;

END.

Link do komentarza
Udostępnij na innych stronach

Wyskakują błędy przy kompilacji:

Free Pascal Compiler version 1.0.6 [2002/04/23] for i386

Copyright © 1993-2002 by Florian Klaempfl

Target OS: Win32 for i386

Compiling f:\pliki\pascal~1\baza_d~1.pas

baza_d~1.pas(21,2) Note: Local variable CZYSCIDLO is assigned but never used

baza_d~1.pas(83,24) Error: Type mismatch

baza_d~1.pas(84,17) Error: Expression type must be class or record type

baza_d~1.pas(88,23) Error: Identifier not found A

baza_d~1.pas(89,24) Error: Identifier not found T

baza_d~1.pas(90,25) Error: Identifier not found S

baza_d~1.pas(91,25) Error: Identifier not found J

baza_d~1.pas(113,28) Error: Can't read or write variables of this type

baza_d~1.pas(114,17) Error: Expression type must be class or record type

baza_d~1.pas(119,26) Error: Identifier not found A

baza_d~1.pas(120,27) Error: Identifier not found T

baza_d~1.pas(121,28) Error: Identifier not found S

baza_d~1.pas(122,29) Error: Identifier not found J

baza_d~1.pas(141,10) Error: Identifier not found A

baza_d~1.pas(146,10) Error: Identifier not found T

baza_d~1.pas(151,10) Error: Identifier not found S

baza_d~1.pas(156,10) Error: Identifier not found J

baza_d~1.pas(160,28) Error: Can't read or write variables of this type

baza_d~1.pas(179,17) Error: Expression type must be class or record type

baza_d~1.pas(183,10) Error: Identifier not found A

baza_d~1.pas(185,10) Error: Identifier not found T

baza_d~1.pas(187,10) Error: Identifier not found S

baza_d~1.pas(189,10) Error: Identifier not found J

baza_d~1.pas(237) Fatal: There were 22 errors compiling module, stopping

Link do komentarza
Udostępnij na innych stronach

Gość
Temat jest zablokowany i nie można w nim pisać.


  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...