ok..hvala..
evo koda koji sam uradio:
Code:
unit PRLica ;
interface
uses PLica ;
type
S25 = string [25] ;
OPRLica = object (OPLica)
constructor Init ;
destructor Done ;
procedure SetBrojZiroRacuna (bzr : S25) ;
function GetBrojZiroRacuna : S25 ;
procedure Unos ; virtual ;
procedure Prikaz ; virtual ;
private
brojZiroRacuna : S25 ;
end ;
POPRLica = ^OPRLica ;
implementation
constructor OPRLica.Init ;
begin
inherited Init ;
brojZiroRacuna := '' ;
end ;
destructor OPRLica.Done ;
begin
brojZiroRacuna := '' ;
inherited Done ;
end ;
procedure OPRLica.SetBrojZiroRacuna (bzr : S25) ;
begin
brojZiroRacuna := bzr ;
end ;
function OPRLica.GetBrojZiroRacuna : S25 ;
begin
GetBrojZiroRacuna := brojZiroRacuna ;
end ;
procedure OPRLica.Unos ;
begin
inherited Unos ;
write ('Broj ziro racuna pretplatnika:') ;
readln (brojZiroRacuna) ;
end ;
procedure OPRLica.Prikaz ;
begin
inherited Prikaz ;
write (' br.ziro.rac : ', brojZiroRacuna ) ;
end ;
end.
unit PLica ;
interface
type
S30 = string [30] ;
S40 = string [40] ;
S10 = string [10] ;
S20 = string [20] ;
OPLica = object
constructor Init ;
destructor Done ;
procedure SetNaziv (n : S30) ;
function GetNaziv : S30 ;
procedure SetAdresa (a : S40) ;
function GetAdresa : S40 ;
procedure SetBrojTelefona (bt : S10) ;
function GetBrojTelefona : S10 ;
procedure Unos ; virtual ;
procedure Prikaz ; virtual ;
private
naziv : S30 ;
adresa : S40 ;
brojTelefona : S10 ;
end ;
POPLica = ^OPLica ;
implementation
constructor OPLica.Init ;
begin
naziv := '' ;
adresa := '' ;
brojTelefona := '' ;
end ;
destructor OPLica.Done ;
begin
naziv := '' ;
adresa := '' ;
brojTelefona := '' ;
end ;
procedure OPLica.SetNaziv (n : S30) ;
begin
naziv := n ;
end ;
function OPLica.GetNaziv : S30 ;
begin
GetNaziv := naziv ;
end ;
procedure OPLica.SetAdresa (a : S40) ;
begin
adresa := a ;
end ;
function OPLica.GetAdresa : S40 ;
begin
GetAdresa := adresa ;
end ;
procedure OPLica.SetBrojTelefona (bt : S10) ;
begin
brojTelefona := bt ;
end ;
function OPLica.GetBrojTelefona : S10 ;
begin
GetBrojTelefona := brojTelefona ;
end ;
procedure OPLica.Unos ;
begin
write ('Ime - naziv pretplatnika:') ;
readln (naziv) ;
write ('Adresa pretplatnika:') ;
readln (adresa) ;
write ('Broj telefona pretplatnika:') ;
readln (brojTelefona) ;
end ;
procedure OPLica.Prikaz ;
begin
write ('Ime : ',naziv, ' adresa : ', adresa, ' br.tel : ', brojTelefona) ;
end ;
end.
Unit Pret ;
interface
uses crt, PLica, PRLica ;
type
PTListaPretplatnika = ^TListaPretplatnika ;
TListaPretplatnika = record
pretplatnik : POPLica ;
sledeci : PTListaPretplatnika ;
end ;
OPretplatnici = object
constructor Init ;
destructor Done ;
procedure GlavniMeni ;
procedure Unos ;
procedure PregledPrivatnih ;
procedure StampanjePravnih ;
procedure Izmena ;
private
Lista : PTListaPretplatnika ;
end ;
implementation
constructor OPretplatnici.Init ;
begin
Lista := nil ;
end ;
destructor OPretplatnici.Done ;
var
pom : PTListaPretplatnika ;
begin
while Lista <> nil do
begin
pom := Lista^.sledeci ;
Dispose (Lista^.pretplatnik, Done) ;
Dispose (Lista) ;
Lista := pom ;
end ;
end ;
procedure OPretplatnici.GlavniMeni ;
var
c : char ;
begin
repeat
clrscr ;
writeln ('Glavni meni') ;
writeln ;
writeln ('1. Unos novog pretplatnika') ;
writeln ('2. Prikaz pretplatnika (PRIVATNIH LICA) koji pocinju sa brojevima') ;
writeln ('3. Izmena broja pretplatnika') ;
writeln ('4. Stampanje svih pravnih lica') ;
writeln ('0. Kraj ') ;
writeln ;
write ('Izbor: ') ;
c := readkey ;
writeln (c) ;
case c of
'1': Unos ;
'2' : PregledPrivatnih ;
'3' : Izmena ;
'4' : StampanjePravnih ;
end ;
until c = '0' ;
end ;
procedure OPretplatnici.Unos ;
var
c : char ;
pom : PTListaPretplatnika ;
begin
writeln ;
repeat
write ('1 - Privatno lice 2 - Pravno lice : ') ;
c := readkey ;
writeln (c) ;
until c in ['1', '2'] ;
new (pom) ;
pom^.sledeci := Lista ;
Lista := pom ;
case c of
'1' : pom^.pretplatnik := New (POPLica, Init) ;
'2' : pom^.pretplatnik := New (POPRLica, Init) ;
end ;
pom^.pretplatnik^.Unos ;
end ;
procedure OPretplatnici.PregledPrivatnih ;
var
pom : PTListaPretplatnika ;
c : char ;
pc : string ;
bt : S10 ;
begin
writeln ;
write ('Unesite pocetne cifre telefonskog broja: ') ;
readln (pc) ;
writeln ;
pom := Lista ;
while pom <> nil do
begin
if TypeOf (pom^.Pretplatnik^) = TypeOf (OPLica) then
begin
bt := POPLica (pom^.Pretplatnik)^.GetBrojTelefona ;
if copy(bt,1,length(pc)) = pc then
begin
pom^.pretplatnik^.Prikaz ;
writeln ;
end ;
end ;
pom := pom^.sledeci ;
end ;
writeln ;
write ('Pritisnite neki taster za nastavak ...') ;
c := readkey ;
end ;
procedure OPretplatnici.Izmena ;
var
pom : PTListaPretplatnika ;
pom2 : PTListaPretplatnika ;
c : char ;
pc : string ;
bt : S10 ;
begin
writeln ;
write ('Unesite telefonski broj: ') ;
readln (pc) ;
writeln ;
pom := Lista ;
while pom <> nil do
begin
if POPLica(pom^.Pretplatnik^)^.GetBrojTelefona = pc then
begin
bt := POPLica (pom^.Pretplatnik)^.GetBrojTelefona ;
writeln(‘Unesite nov broj telefona:’);
readln(bt);
pom2 := Lista;
while (pom2 <> nil) and
(POPLica(pom^.Pretplatnik^)^.GetBrojTelefona <> bt)
do pom2:=pom2^.sledeci;
if pom2=nil then POPLica(pom^.Pretplatnik^)^.SetBrojTelefona(bt)
else writeln(‘Vec postoji pretplatnik sa tim brojem’);
end ;
pom := pom^.sledeci ;
end ;
writeln ;
write ('Pritisnite neki taster za nastavak ...') ;
c := readkey ;
end ;
procedure OPretplatnici.StampanjePravnih ;
var
pom : PTListaPretplatnika ;
c : char ;
begin
writeln ;
writeln ;
pom := Lista ;
while pom <> nil do
begin
if TypeOf (pom^.Pretplatnik^) = TypeOf (OPRLica)
begin
pom^.pretplatnik^.Prikaz ;
writeln ;
end ;
pom := pom^.sledeci ;
end ;
writeln ;
write ('Pritisnite neki taster za nastavak ...') ;
c := readkey ;
end ;
end .
Program Imenik ;
uses Pret ;
var
P : OPretplatnici ;
begin
P.Init ;
P.GlavniMeni ;
P.Done ;
end .
e sad...malo se bunim oko dela gde su uslovi....
[Ovu poruku je menjao savkic dana 09.06.2009. u 12:03 GMT+1]