Jump to content

Archived

This topic is now archived and is closed to further replies.

zaqman

Rozwiązany: Baza danych w pascalu

Recommended Posts

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 to comment
Share on other sites

Co dokładnie jest nie tak? Wyskakują jakieś błędy przy kompilacji, czy też program działa, ale nie tak jak powinien? Jeśli wyskakują błędy, to chciałbym poznać ich treść.

Link to comment
Share on other sites

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 to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...