Ĺadny brzuch
Mam program taką mini baze która:
1.Dodaje nowu samochód,
2.Wyświetla wszystkie samochody,
3.Wyświetla dane wybranego samochodu,
4.Wyjście z bazy.
i musze dodać 2 rekordy, które:
-usunięcie wybranego elementu,
-zmieni zawartoś wybranego elementu
Jak będzie wyglądał taki kod tych dwóch rekordów i gdzie je wstawić.
Jeżeli potrzeba to mige wkleić kod całego obecnego programu.
i musze dodać 2 rekordy, które:
-usunięcie wybranego elementu,
-zmieni zawartoś wybranego elementu
chyba chodzi Ci o dwie procedury / funkcje a nie rekordy
Jak będzie wyglądał taki kod tych dwóch rekordów i gdzie je wstawić.
Jeżeli potrzeba to mige wkleić kod całego obecnego programu.
było by wskazane, albo chocziaż napisz jak przechowujesz bazę w pamięci podczas pracy programu i jak (jeśli zapisujesz) zapisujesz / odczytujesz z pliku
chyba czegos nie rozumiem. Jak rekord moze dodawac, usuwac czy cos tam robic?
nie wiem czy o to chodzi, ale:
stwórz tablice o ten swój rekord:
type TSamochody = record nazwa, poj_silnika, waga: string; //tu wstawiasz jakie dane maja byc o samochodzie; end; var TBaza: array of Tsamochody;
wwyswietlenie wszytskich samochodów:
var i: integer; begin for i := 0 to High(TBaza) do writeln('Samochod ', i, ' to ', TBaza[i].nazwa);
dodanie nowego:
SetLength(TBaza, High(TBaza)+1); TBaza[High(TBaza)].Nawa := 'Mercedes'; TBaza[High(TBaza)].poj_silnika := '3.0 litry'; TBaza[High(TBaza)].waga := '1200 kg';
edycja:
TBaza[numer_rekordu].Nawa := 'Mercedes'; TBaza[numer_rekordu].poj_silnika := '3.0 litry'; TBaza[numer_rekordu].waga := '1200 kg';
możesz też wyszukac to co chcesz edytowac:
var i: integer begin for i := 0 to High(TBaza) do begin if TBaza[i].Nazwa = 'Mercedes' then //wyszukanie mercedesa begin //i zamiana go na inny samochod TBaza[High(TBaza)].Nawa := 'jakis samochod'; TBaza[High(TBaza)].poj_silnika := 'jakas pojemnosc'; TBaza[High(TBaza)].waga := 'jakas waga'; Break; end; end;
naturalnie musisz ustawic wilekosc tablicy na poczatku.
ma nadzieje, że o to chodziło.
Oto program:
PROGRAM PiotrSala; USES CRT; CONST PLIK='C:\ja\ta.txt'; TYPE MODEL = RECORD MARKA:STRING; MODEL:STRING; ROK:STRING; POJEMNOSC:STRING; END; VAR B:STRING; D:TEXT; A:CHAR; R:MODEL; PL:FILE OF MODEL; BEGIN CLRSCR; ASSIGN(PL, PLIK); REPEAT CLRSCR; WRITELN('BAZA SAMOCHODOW: WYSWIETLA INFORMACJE O SAMOCHODACH NASZEJ FIRMY'); WRITELN('1-DODAJ NOWY SAMOCHOD'); WRITELN('2-WYSWIETL WSZYSTKIE SAMOCHODY'); WRITELN('3-WYSWIETL KONKRETNY SAMOCHOD'); WRITELN('4-WYJSCIE Z BAZY'); A:=(READKEY); IF A='1' THEN BEGIN {$I-}reset(pl);{$I+} IF ioresult=0 then BEGIN SEEK(PL,FILESIZE(PL) - 1); WRITELN('WPISZ DANE DOT. SAMOCHODOW'); WRITELN('PODAJ NAZWE MARKI'); READLN(R.MARKA); IF R.MARKA<>'' THEN BEGIN WRITELN('PODAJ MODEL'); READLN(R.MODEL); WRITELN('PODAJ ROK PRODUKCJI'); READLN(R.ROK); WRITELN('PODAJ POJEMNOSC'); READLN(R.POJEMNOSC); WRITE(PL,R); WRITELN('DANE ZAPISANE'); READLN; END {END OF IF} ELSE BEGIN WRITELN('BRAK DANYCH DO ZAPISANIA,POWROT DO MENU'); READLN; END {END OF ELSE} END ELSE BEGIN WRITELN('BRAK PLIKU BAZY PRZYSTEPUJE DO TWORZENIA'); REWRITE(PL); WRITELN('PODAJ DANE DO WPISANIA'); WRITELN('PODAJ NAZWE'); READLN(R.MARKA); WRITELN('PODAJ MODEL'); READLN(R.MODEL); WRITELN('PODAJ ROK'); WRITELN('PODAJ POJEMNOSC'); READLN(R.POJEMNOSC); READLN(R.ROK); WRITE(PL,R); WRITELN('DANE ZAPISANE'); READLN; END END; {END OF WYBOR 1} IF A='2' THEN BEGIN WRITELN('WYSWIETLANIE WSZYSTKICH REKORDOW'); {$I-}reset(pl);{$I+} IF ioresult=0 then BEGIN WHILE NOT EOF(PL) do BEGIN READ(PL,R); WRITELN('MARKA : ',R.MARKA); WRITELN('MODEL: ',R.MODEL); WRITELN('ROK PRODUKCJI : ',R.ROK); WRITELN('POJEMNOSC :', R.POJEMNOSC); END; END ELSE BEGIN WRITELN('BRAK PLIKU BAZY'); READLN; END; READLN; END; {END OF WYBOR 2} IF A='3' THEN BEGIN {$I-}reset(pl);{$I+} IF ioresult=0 then BEGIN WRITELN('WPISZ MARKE SAMOCHODU'); READLN(B); RESET(PL); WHILE NOT EOF(PL) DO BEGIN READ(PL,R); IF B=R.MARKA THEN BEGIN WRITELN('NAZWA ',R.MARKA); WRITELN('MODEL ',R.MODEL); WRITELN('ROK PRODUKCJI ',R.ROK); WRITELN('POJEMNOSC ',R.POJEMNOSC); END END {end of while} END; {end of ioresult} WRITELN('NACISNIJ ENTER'); READLN; END; {END OF WYBOR 3} IF A='4' THEN BEGIN WRITELN('ZAKONCZENIE PROGRAMU'); END; UNTIL A='4'; wRITE('KONIEC PRORAMU'); READLN; END.
programista1101, wiesz w Pascalu nie ma czegoś takiego jak SetLength i tablic dynamicznych tworzonych w ten sposób
Tonik spróbuj trochę zmienić ten program - rozbij go na funkcje i procedury, np:
procedure Dodaj(Modell: Model);
procedure WyswietlKonkretny(Nr: Integer);
procedure WyswietlAll;
function Menu: Integer;
itp, bo w ten sposób to się zajedziesz, a jeśli nikt nie udzieli Ci odpowiedzi co dalej, to za jakąś godzinke postaram się to zrobić
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
1.Dodaje nowu samochód,
2.Wyświetla wszystkie samochody,
3.Wyświetla dane wybranego samochodu,
4.Wyjście z bazy.
i musze dodać 2 rekordy, które:
-usunięcie wybranego elementu,
-zmieni zawartoś wybranego elementu
Jak będzie wyglądał taki kod tych dwóch rekordów i gdzie je wstawić.
Jeżeli potrzeba to mige wkleić kod całego obecnego programu.
i musze dodać 2 rekordy, które:
-usunięcie wybranego elementu,
-zmieni zawartoś wybranego elementu
chyba chodzi Ci o dwie procedury / funkcje a nie rekordy
Jak będzie wyglądał taki kod tych dwóch rekordów i gdzie je wstawić.
Jeżeli potrzeba to mige wkleić kod całego obecnego programu.
było by wskazane, albo chocziaż napisz jak przechowujesz bazę w pamięci podczas pracy programu i jak (jeśli zapisujesz) zapisujesz / odczytujesz z pliku
chyba czegos nie rozumiem. Jak rekord moze dodawac, usuwac czy cos tam robic?
nie wiem czy o to chodzi, ale:
stwórz tablice o ten swój rekord:
type TSamochody = record nazwa, poj_silnika, waga: string; //tu wstawiasz jakie dane maja byc o samochodzie; end; var TBaza: array of Tsamochody;
wwyswietlenie wszytskich samochodów:
var i: integer; begin for i := 0 to High(TBaza) do writeln('Samochod ', i, ' to ', TBaza[i].nazwa);
dodanie nowego:
SetLength(TBaza, High(TBaza)+1); TBaza[High(TBaza)].Nawa := 'Mercedes'; TBaza[High(TBaza)].poj_silnika := '3.0 litry'; TBaza[High(TBaza)].waga := '1200 kg';
edycja:
TBaza[numer_rekordu].Nawa := 'Mercedes'; TBaza[numer_rekordu].poj_silnika := '3.0 litry'; TBaza[numer_rekordu].waga := '1200 kg';
możesz też wyszukac to co chcesz edytowac:
var i: integer begin for i := 0 to High(TBaza) do begin if TBaza[i].Nazwa = 'Mercedes' then //wyszukanie mercedesa begin //i zamiana go na inny samochod TBaza[High(TBaza)].Nawa := 'jakis samochod'; TBaza[High(TBaza)].poj_silnika := 'jakas pojemnosc'; TBaza[High(TBaza)].waga := 'jakas waga'; Break; end; end;
naturalnie musisz ustawic wilekosc tablicy na poczatku.
ma nadzieje, że o to chodziło.
Oto program:
PROGRAM PiotrSala; USES CRT; CONST PLIK='C:\ja\ta.txt'; TYPE MODEL = RECORD MARKA:STRING; MODEL:STRING; ROK:STRING; POJEMNOSC:STRING; END; VAR B:STRING; D:TEXT; A:CHAR; R:MODEL; PL:FILE OF MODEL; BEGIN CLRSCR; ASSIGN(PL, PLIK); REPEAT CLRSCR; WRITELN('BAZA SAMOCHODOW: WYSWIETLA INFORMACJE O SAMOCHODACH NASZEJ FIRMY'); WRITELN('1-DODAJ NOWY SAMOCHOD'); WRITELN('2-WYSWIETL WSZYSTKIE SAMOCHODY'); WRITELN('3-WYSWIETL KONKRETNY SAMOCHOD'); WRITELN('4-WYJSCIE Z BAZY'); A:=(READKEY); IF A='1' THEN BEGIN {$I-}reset(pl);{$I+} IF ioresult=0 then BEGIN SEEK(PL,FILESIZE(PL) - 1); WRITELN('WPISZ DANE DOT. SAMOCHODOW'); WRITELN('PODAJ NAZWE MARKI'); READLN(R.MARKA); IF R.MARKA<>'' THEN BEGIN WRITELN('PODAJ MODEL'); READLN(R.MODEL); WRITELN('PODAJ ROK PRODUKCJI'); READLN(R.ROK); WRITELN('PODAJ POJEMNOSC'); READLN(R.POJEMNOSC); WRITE(PL,R); WRITELN('DANE ZAPISANE'); READLN; END {END OF IF} ELSE BEGIN WRITELN('BRAK DANYCH DO ZAPISANIA,POWROT DO MENU'); READLN; END {END OF ELSE} END ELSE BEGIN WRITELN('BRAK PLIKU BAZY PRZYSTEPUJE DO TWORZENIA'); REWRITE(PL); WRITELN('PODAJ DANE DO WPISANIA'); WRITELN('PODAJ NAZWE'); READLN(R.MARKA); WRITELN('PODAJ MODEL'); READLN(R.MODEL); WRITELN('PODAJ ROK'); WRITELN('PODAJ POJEMNOSC'); READLN(R.POJEMNOSC); READLN(R.ROK); WRITE(PL,R); WRITELN('DANE ZAPISANE'); READLN; END END; {END OF WYBOR 1} IF A='2' THEN BEGIN WRITELN('WYSWIETLANIE WSZYSTKICH REKORDOW'); {$I-}reset(pl);{$I+} IF ioresult=0 then BEGIN WHILE NOT EOF(PL) do BEGIN READ(PL,R); WRITELN('MARKA : ',R.MARKA); WRITELN('MODEL: ',R.MODEL); WRITELN('ROK PRODUKCJI : ',R.ROK); WRITELN('POJEMNOSC :', R.POJEMNOSC); END; END ELSE BEGIN WRITELN('BRAK PLIKU BAZY'); READLN; END; READLN; END; {END OF WYBOR 2} IF A='3' THEN BEGIN {$I-}reset(pl);{$I+} IF ioresult=0 then BEGIN WRITELN('WPISZ MARKE SAMOCHODU'); READLN(B); RESET(PL); WHILE NOT EOF(PL) DO BEGIN READ(PL,R); IF B=R.MARKA THEN BEGIN WRITELN('NAZWA ',R.MARKA); WRITELN('MODEL ',R.MODEL); WRITELN('ROK PRODUKCJI ',R.ROK); WRITELN('POJEMNOSC ',R.POJEMNOSC); END END {end of while} END; {end of ioresult} WRITELN('NACISNIJ ENTER'); READLN; END; {END OF WYBOR 3} IF A='4' THEN BEGIN WRITELN('ZAKONCZENIE PROGRAMU'); END; UNTIL A='4'; wRITE('KONIEC PRORAMU'); READLN; END.
programista1101, wiesz w Pascalu nie ma czegoś takiego jak SetLength i tablic dynamicznych tworzonych w ten sposób
Tonik spróbuj trochę zmienić ten program - rozbij go na funkcje i procedury, np:
procedure Dodaj(Modell: Model);
procedure WyswietlKonkretny(Nr: Integer);
procedure WyswietlAll;
function Menu: Integer;
itp, bo w ten sposób to się zajedziesz, a jeśli nikt nie udzieli Ci odpowiedzi co dalej, to za jakąś godzinke postaram się to zrobić