• 13 odgovora
  • 19.623 pregleda
Pomoc za izradu programa porodicnog stabla 15.09.2005. u 12:25 · pre 256 meseci #1
Caos ljudi, treba da napravim neki programcic koji ce da kreira porodicno stablo, a iskreno nemam predstavu kako da sve to organizujem i odradim :(
Pa ako bi neko bio ljubazan da mi detaljno objasni kako da to odradim ili jos bolje ako bi mi neko od vas iskusnijih programera poslao gotov program koji bi mogao da samo jos malo preuredim, ili slicno... ;)
Svaka pomoc bi mi dobro dosla :)

Unapred zahvalan Vladica Savic
Potpis

My IT View Of Life-BrLOG-Delphi for PHP


» LinkedIn
Re: Pomoc za izradu programa porodicnog stabla 15.09.2005. u 14:17 · pre 256 meseci #2
>


idi na delphi-gems, to ti je maticni sajt VirtualTreeView komponente. Jes' da
mozda pocetniku nije lako snaci se sa VTV-om, ali je tamo bio jedan od primera
upotrebe VTV-a bas porodicno stablo. Nadam se da ce ti koristiti.
Re: Pomoc za izradu programa porodicnog stabla 17.09.2005. u 20:30 · pre 256 meseci #4
Ako porodicno stablo treba da sadrzi samo podatke "centralnoj osobi", njiovim roditeljima , roditeljima njihovih roditelja itd.(znaci bez brace i sestara) onda je najbolje da podatke o porodicnom stablu drzis u binarnom stablu. Ako se sluzis engleskim jezikom na www.wikipedia.org ces naci definiciju, karakteristike, realizaciju, primere...

Ako porodicno stablo treba da sadrzi podatke i o braci i sestrama... onda treba koristiti drvo umesto binarnog drveta i cini mi se (nisam nikad koristio) da je ova implementacija nesto teza ali nista nesavladivo. I ovo mozes naci na wikipediji.

Ne znam koliko imas iskustva i da li ti ovo ista pomaze? Ako treba opsirnije, reci.
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Pomoc za izradu programa porodicnog stabla 18.09.2005. u 16:18 · pre 256 meseci #5
Naravno da bi mi opsirnija pomoc dobro dosla... ;)
Dakle, dobio sam zadatak da napravim program porodicno stablo, ali nemam pojma kako da sve to odradim >bas kako sam vam i na pocetku rekao<, sto se tice brace, sestaqra, i osatale mnogobrojne rodbine, za pocetak bi bilo bolje da ih izostavimo iz ovoga da mi nebi dodatno komplikovali stvari :)
Video sam da se ovako nesto radi u Prologu, ali posto tek sad pocinjem da ucim Prolog, odlucio sam da se sa ovim problemom izborim kosteci Delphi.
Dakle p o m a g a j t e :(
Potpis

My IT View Of Life-BrLOG-Delphi for PHP


» LinkedIn
Re: Pomoc za izradu programa porodicnog stabla 19.09.2005. u 14:25 · pre 256 meseci #6
Ja sad trenuto nemam vremena pa cu se javiti za koji dan. Ti se raspitaj za bracu i sestre zato sto to BITNO menja stvari.

U koju skolu ides? (ako nije tajna)
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Pomoc za izradu programa porodicnog stabla 20.09.2005. u 09:35 · pre 256 meseci #7
Citat:
PeraKojotSuperGenije: Ti se raspitaj za bracu i sestre zato sto to BITNO menja stvari.

U koju skolu ides? (ako nije tajna)

Raspitao sam se za bracu i sestre i nazalost mora i to da se uzme u obzir... :(
Sto se skole tice nije nikakva tajna, idem u Gimnaziju Leskovac ;)

[Ovu poruku je menjao VladaLe dana 20.09.2005. u 10:37 GMT+1]

[Ovu poruku je menjao VladaLe dana 20.09.2005. u 10:38 GMT+1]
Potpis

My IT View Of Life-BrLOG-Delphi for PHP


» LinkedIn
Re: Pomoc za izradu programa porodicnog stabla 20.09.2005. u 14:20 · pre 256 meseci #10
Mozes da dobijes prinicip kako to da uradis, ali sam program... malo teze, potrudi se :)

Pitanje je kako kreirati porodicno stablo, kakva je to struktura?
Na osnovu toga kako prikazati unete podatke? Kako ih sacuvati... itd...

Porodicno stablo picinje od jednog clana: osobe (musko ili zensko) dakle imamo:

TOsoba = class (TObject)
property Ime: string read FIme write FIme;
property Musko: boolean read FMusko write FMusko;
end;

Osoba moze da stupi u brak sa drugom osobom, tzv Partner (uslov: da je suportnog pola):

TOsoba = class( TObject)
public
property Ime: string read FIme write FIme;
procedure BrakSa( aPartner: TOsoba);
property Musko: boolean read FMusko write FMusko; // true, false
end;

procedure TOsoba.BrakSa ( aPartner: TOsoba);
begin
if aPartner.Musko <> Self.Musko then // moraju da su razlicitog pola!
FDrugaOsoba := aDrugaOsoba
else
ShowMessage('Greska: ne moze osoba da bude istog pola!');
end;

Sada mogu da imaju decu (uz uslov da postoji partner), dakle imamo spisak (listu dece):

TOsoba = class( TObject)
public
property Ime: string read FIme write FIme;
procedure BrakSa( aDrugaOsoba: TOsoba);
procedure NovoDete ( aDete: TOsoba)
property Musko: boolean read FMusko write FMusko; // true, false
end;

procedure TOsoba.NovoDete( aDete: TOsoba);
begin
if Assigned( FPartner) then // ako postoji partner!
begin
if not assigned( FDeca) then
FDeca := TStringList.Create; // <--- jednostavno spisak dece!

FDeca.AddObject ( aDete.Ime, aDete);
end else begin
ShowMessage('Partner nije naveden, ne postoji!')
end;
end;

Kao sto se vidi, aDete je isto tipa TOsoba, i moze se na njega dodavati drugi partner, pa na to nadovezati jos dece itd...

Da ne smaram dalje, i ovo je suvisno, pogledaj atacment :)

PS: snimanje / ucitavanje podataka tako napravljenog drveta ... pa napravi sam :)

Takodje imas i sliku (runtime.bmp) kako izgleda aplikacija u toku rada...

Poz.





[Ovu poruku je menjao bondja dana 20.09.2005. u 15:22 GMT+1]
Re: Pomoc za izradu programa porodicnog stabla 20.09.2005. u 14:25 · pre 256 meseci #11
Sta je ustvari problem... prikazivanje ili cuvanje podataka?
Za podatke mozes iskoristiti klasu slicnu ovoj
Code:
TOsoba = class
  ID: Cardinal;
  Otac, Majka: TOsoba;
  BratSestra: array of TOsoba;
  SinCerka: array of TOsoba;
  Ime, Prezime: String;
  DatumiVremeRodjenja: TDateTime;
  .
  .
  .
end;

Kada snimas podatke na disk snimis prvo ID (sam odluci kako zelis da ga kreiras... bitno je samo da ne postoje osobe sa itim ID), ID osoba koji su roditelji, brace, sestre, sinovi, i posle snimis ime, prezime i ostale podatke koji ti trebaju.
Prikaz bi mogao da uradis samo do nekog odredjenog kolena... recimo prikazujes 5 generacija... sto je se vise udaljavas od pocetne osobe prikazujes sve manje detalja kako bi ti ostali vise prostora za ispis podataka na ekranu. Za cukunbabu je dovoljno da ispises samo ime i datum... nema potrede prikazivati njene brace i sestre... ako korisnik zeli i to da vidi pomerise kroz stablo blize njoj. Ako hoces da prikazujes kompletno stablo od recimo 5 generacija to ce biti bas komplikovano prikazati na ekranu.
Potpis
Play Store
Re: Pomoc za izradu programa porodicnog stabla 21.09.2005. u 08:30 · pre 256 meseci #13
Snimanje podataka nije bas toliki problem! Pogledaj atachment :)

Da bi prikazao bracu / seste u TOsoba dodas property:

property Roditelj: TOsoba read FRoditelj write FRoditelj;

i prosiris metodu NovoDete:

procedure TOsoba.NovoDete( aDete: TOsoba);
begin
assert( assigned( FPartner), 'Partner nije naveden, ne mogu imati decu!');

if not assigned( FDeca) then
FDeca := TStringList.Create; // <--- jednostavno: spisak dece!

FDeca.AddObject( aDete.Ime, aDete);
// da zapamtimo ko je rodtelj detetu:
aDete.Roditelj := Self; //<--- OVO JE DODATO!
end;

Tako da kada osoba hoce da sazna ko su braca i sestre, dovoljno je da pita svog roditelja da mu to izlista (pogledaj attachment).

E sada jos samo ostaje snimanje podataka u bazu. Da bi to ostvarili, potrebno je da svaka osoba dobije svoj ID, dakle dodajemo property:

property ID: integer read FID write FID;

i prosirujemo Create metodu da generise taj ID
FID := Random( MaxInt);

I to je sve! Naravno glavnu aplikaciju prosirimo da prikazuje podatke izabrane osobe, da snima i ucitava stablo...

OVO JE SADA SASVIM FUNKCIONALNA APLIKACIJA (MOZES DA PO ZELJI DODAJES JOS PODATAKA (datum rodjenja svake osobe, kada su se uzeli (brak), gde zive, odakle su... itd)

Poz!



Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme