Czesć! Mam do napisania projekt sklepu. Mam mieć 3 pliki rekordowe.
Magazyn- zawiera, nazwy towarów, id, ilość
Klienci: imiona, nazwiska, towar zakupiony, ilość zakupionego towaru
Sprzedaż: Nazwa, ilość, cena, id
Może mi ktoś wyjaśnić jak mam to połączyć wszystko? wg moje toku myslenia ( pewnie błędny)
1 Dodajemy towar do magazynu ( nazwa, ilość, id)
2 Sprawdzamy czy towar jest w magazynie, jeżeli jest dodajemy do sprzedaży go ( dodając cenę), jeżeli nie wypisujemy odpowiedni komunikat
3 sprzedajemy towar- tzn klient kupuje towar, podaje swoje dane oraz nazwe towaru i ilość zakupu- zapisujemy do pliku
4 zmniejszamy towar w pliku sprzedaży o tyle o ile klient zakupił towar.
Dobrze myślę? Jeżeli tak to teraz implementacja; kod jaki napisałem jednak odbiega od powyższego schematu sporo.. tzn zapisuje towary do pliku magazyn, odczytuje caly plik magazynu, dodaje klientów( bez sprawdzenia na razie czy towar istnieje) oraz odczytuje liste klientów
Problemem moim jest; Jak mam sprawdzic czy jest taki towar w magazynie? oraz jak zmniejszyć ilość towaru w sprzedaży kiedy klient kupi towar?
Nie wiem czy nie powinienem tu użyć tablic rekordowych i najpierw do nich zapisywać dane a dopiero potem do pliku...
program SKLEP;
{$mode objfpc}{$H+}
uses {$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
type
bazmagazyn =record
nazwa:string[50];
ilosc:integer;
id:integer;
rodzaj: string[30];
end;
type
bazklijent = record
imie: string [20];
nazwisko: string[30];
towar:string[50];
ilosc: word;
end;
type
bazsprzedaz= record
nazwa:string[50];
id : word;
cena: word;
end;
var
dodtowar: bazmagazyn;
dodklijent: bazklijent;
magazyn:file of bazmagazyn;
klijent: file of bazklijent;
sprzedaz: file of bazsprzedaz;
menu, menu2: byte;
maxilosc,i:word;
procedure dodaj_towar();
begin
{$I-}
assign(magazyn, 'magazyn.sdb');
reset(magazyn);
seek(magazyn,filesize(magazyn));
writeln('prosze podac nazwe towaru');
readln(dodtowar.nazwa);
writeln('podaj ilosc towaru');
readln(dodtowar.ilosc);
writeln('podaj id towaru');
readln (dodtowar.id);
write(magazyn,dodtowar);
close(magazyn);
{$I+}
end;
procedure odczytaj_dane();
var
tab: array[1..100] of bazmagazyn;
ilosc,x:integer;
begin
{$I-}
assign(magazyn,'magazyn.sdb');
reset(magazyn);
while not EOF(magazyn) do
begin
read(magazyn, dodtowar);
writeln( 'Nazwa towaru - ' , dodtowar.nazwa);
writeln('Ilosc towaru w magazynie - ' , dodtowar.ilosc);
writeln('ID towaru - ' , dodtowar.id);
writeln;
end;
close(magazyn);
{$I+}
end;
{procedure szukaj_id();
var
id:integer;
begin
assign(magazyn, 'magazyn.sdb');
reset (magazyn);
writeln('Podaj ID towaru jakiego szukasz');
readln(id);
if id= then
writeln(dodtowar.nazwa, dodtowar.ilosc, dodtowar.id)
else
writeln('brak ID');
end;
}
procedure dodaj_klijent();
var ilosc:integer;
begin
assign(klijent, 'klijent.sdb');
reset (klijent);
seek(klijent,filesize(klijent));
writeln('Podaj swoje imie');
readln(dodklijent.imie);
writeln('Podaj swoje nazwisko');
readln(dodklijent.nazwisko);
writeln('Jaki towar chcesz zakupic?');
readln(dodklijent.towar);
writeln('podaj ilosc zakupu');
readln(dodklijent.ilosc);
if ilosc<1 then writeln('przepraszamy, ale ilsoc towaru nie moze byc mniejsza od 1');
write(klijent, dodklijent);
close(klijent);
end;
procedure odczyt_klijent();
begin
assign(klijent,'klijent.sdb');
reset(klijent);
while not EOF(klijent) do
begin
read(klijent, dodklijent);
writeln( 'Imie - ', dodklijent.imie);
writeln('Nazwisko - ', dodklijent.nazwisko);
writeln('Towar - ', dodklijent.towar);
writeln( 'Ilosc - ', dodklijent.ilosc);
end;
close(klijent);
end;
begin
repeat
writeln('Witaj w bazie danych: ');
writeln(' 1 - Dodaj towar do sprzedazy');
writeln(' 2 - Odczytaj cala baze');
writeln(' 3 - Wyswietl konkretny towar po ID.');
writeln(' 4 - Edytuj towar po ID.');
writeln(' 5 - Dodaj klijenta sklepu');
writeln(' 6 - wyswietl klijentow sklepu');
writeln(' 7 - Koniec programu');
writeln;
writeln (' Prosze wybrac swoja opcje: ');
readln(menu);
case menu of
1:begin
writeln('Ile chcesz dodac towarow?');
readln(maxilosc);
for i:=1 to maxilosc do
begin
dodaj_towar;
writeln('Dziekuje, zapisano informacje do bazy');
end;
end;
2: begin
writeln('towar na magazynie to:');
odczytaj_dane;
end;
3: begin
// szukaj_id;
end;
4:begin
end;
5:begin
dodaj_klijent;
writeln('zlozono zamowienie, dziekujemy');
end;
6: begin
writeln('dane klijentow sklepu to: ');
odczyt_klijent;
end;
end;
until menu=7;
readln;
end.