Delphi - Sportska prodavnica 18-05-2012,
Elizabeta Marku?
1 of 6
Download to read offline
More Related Content
Delphi - Sportska prodavnica 18-05-2012
1. Zadatak: Sportska prodavnica
?elimo da uradimo aplikaciju pomo?u koje ?emo mo?i da izra?unamo kolko kupac
treba da plati kupljenu robu. U prodavnici se kupuju patike, trenerke, majice. Patike ko?taju
7000, trenerke 1200, majice 750. Kupac mo?e da bira jedno od tri na?ina pla?anja, pla?anje
kreditnom karticom pomo?u koje ostvaruje 5% popusta na kupljenu robu; pla?anje gotovinom
u tom su?akju nema popusta; i odlo?eno pla?anje na koje se dodaje 5%. Ako kupac vr?i
kupovinu vikendom ostvaruje popust od 10%, ako je kupac ?ak ostvaruje popust od 5%.
Zapo?nimo novi projekat. Sa padaju?eg menia File izaberimo New pa Aplication.
Dobijamo formu koja je prazna. Za ovaj zadatak treba?e nam slede?e komponente:
1. Label
2. Edit
3. ComboBox
4. RadioGroup
5. CheckBox
6. Button
Sve potrebne komponente mo?ete na?i na standardnoj kartici.
2. Komponente pore?ajte na formi kao ?to je prikazano na slede?oj slici.
Komponenti Label1 promenite opciju Caption u delu Properties, i napi?ite Naziv
proizvoda. Za Label2 stavite Kolicina, a za Label3 stavite Iznos.
Poljima Edit1 i Edit2 obri?ite tekst iz opcije Text u Properties.
Komponenti ComboBox1 obri?ite tekst u opciji Text u Properties, i kliknite na opciju
Items. Kada se otvori prozor upi?ite stavke Patike, Trenerke, Majica. Svaku u novom redu.
Indeksiranje stavki po?inje nulom rako da Patike imaju indeks 0, Trenerke indeks 1 i Majice
indeks 2.
3. Komponenti RadioGroup1 promenite opciju Caption u Pla?anje. Kliknite na opciju
Items i u novom prozoru koji ?e vam se otvoriti upi?ite stavke Kreditna kartica (-5%),
Gotovina, Odlo?eno pla?anje (+5%), svaku stavku u novom redu. Indeksiranje stavki po?inje
nulom, tako da stavka Kreditna kartica (-5%) ima indeks 0, Gotovina indeks 1, i Odlo?eno
pla?anje (+5%) indeks 2.
Komponenti CheckBox1 u Properties u opciji Caption upi?ite Vikend Akcija (-10%) i
opciji Name upi?ite vikend.
Komponenti CheckBox2 u Properties u opciji Caption upi?ite Djacki popust (-5%) i
opciji Name upi?ite djak.
Komponenti Button1 u opciji Caption upi?ite Racun.
Sada na?a forma izgleda ovako.
Sada treba da isprogramiramo dugme Button1. Sa forme uradimo dupli klik na
komponentu Button1. Otvara nam se prozor u kom pi?emo ?eljeni kod.
Potrebne su nam promenljive cena i ukupno tipa real, i kolicina i indeks tipa integer.
Promenljiva ukupno predstavlja cenu koju kupac treba da plati. I zadamo joj po?etnu vrednost
nula. Promenljiva cena nam predstavlja cenu proizvoda koji je kupljen. Kolicina predstavlja
kolicinu kupljene robe. Promenljiva Indeks vodi ra?una koji je proivod izabran ili kojim
na?inom se pla?a kupljeni proizvod.
4. Da bi videli koji je proizvod kupljen u ovom slu?aju izabran iz liste, moramo uzeti
indeks izabranog proizvoda iz liste. To ?inimo na slede?i na?in, promenljivi indeks dodelimo
vrednost ComboBox1.ItemIndex. U zavisnosti da li je indeks jednak nuli imamo da je cena
jednaka 7000 po?to su u pitanju patike, ako je indeks jednak jedinici onda su u pitanju
trenerke i njihova cena je 1200, i ako je indeks 2 onda su u pitanju majice i cena je 750.
U komponenti Edit1 se nalazi koli?ina kupljene robe. Po?to se u komponentama tipa
edit ?uvaju samo stringovi pre nego sto na?oj promeljivi kolicina dodelimo vrednost iz Edit1
polja moramo da izvr?imo pretvaranje stringa u integer. Za to nam slu?i metoda StrToInt.
Sada u promenjivoj ukupno upi?emo proizvod dva broja, cene i kolicine. Slede?e ?to
treba uraditi je izra?unati da li kupac ostvaruje neki od popusta. U komponenti RadioGroup1
mo?e da se ozna?i samo jedna od stavki. ?elimo da znamo kojim na?inom se vr?i pla?anje. U
promenljivi indeks ?emo smestiti indeks ozna?ene stavke. To posti?emo naredbom
indeks:=RadioGroup1.ItemIndex; sada ispitamo ?emu je jednak indeks, ako je nula onda je u
pitanju pla?anje kreditnom karticom i kupac ostvaruje popust od 5%, ukupno:=ukupno-
(ukupno*0.05); ako je indeks jednak jedinici nemamo potrebe da menjamo promeljivu
ukupno, ako je indeks jednak 2 onda je u pitanju odlo?eno pla?anje pa imamo naredbu
ukupno:=ukupno+(ukupno*0.05).
Proverimo sada da li je u pitanju Vikend Akcija ili Djacki popust. Sve ?to je potrebno
uraditi je da proverimo da li su ovi CheckBox-ovi ?ekirani. CheckBox1 za Vikend akciju ima
naziv vikend, pa naredbom vikend.Checked proveravamo da li je ona ?ekirana ili ne. Naredba
vra?a True ili False. Ako je ?ekirana imamo ostvarenje popusta od 10% i novo ra?unanje
promenljive ukupno naredbom ukupno:=ukupno-(ukupno*0.1);. Da li je u pitanju Djacki
popust proveravamo naredbom djak.Checked, ukoliko je True onda imamo popust od 5%
ukupno:=ukupno-(ukupno*0.05);
Na kraju treba promenljivu ukupno upisati u Edit2. Po?to je ukupno tipa real a u Edit2
mo?emo upisati samo string, potrebno je da konvertujemo naredbom
Edit2.Text:=FloatToStr(ukupno);.
5. Ceo kod.
procedure TForm1.Button1Click(Sender: TObject);
var cena, ukupno : real;
kolicina, indeks : integer;
begin
ukupno:=0;
indeks:=ComboBox1.ItemIndex;
if indeks=0 then cena:=7000;
if indeks=1 then cena:=1200;
if indeks=2 then cena:=750;
kolicina:=StrToInt(Edit1.Text);
ukupno:=cena*kolicina;
indeks:=RadioGroup1.ItemIndex;
if indeks=0 then ukupno:=ukupno-(ukupno*0.05);
if indeks=2 then ukupno:=ukupno+(ukupno*0.05);
if vikend.Checked then ukupno:=ukupno-(ukupno*0.1);
if djak.Checked then ukupno:=ukupno-(ukupno*0.05);
Edit2.Text:=FloatToStr(ukupno);
end;
Prilikom testiranja programa primeti?emo da se u komponenti Edit1 mogu uneti i
slova, decimalni brojevi ili znakovi, ?to nije po?eljno. Pa ?emo zabraniti lo? unos koriteci
proceduru Val(s,n,gr). S nam je string koji ?elimo da upisemo u n koji je tipa integer. Gr je
tipa integer i ?uva poziciju gre?ke.
Primer
Ako ?elimo da s=¡¯12b21¡¯ prebacimo u n. Prvo ?e se prebaciti 1, zatim 2, kad se stigne
do slova b koje ne mo?emo da prebacimo u n dolazi do gre?ke i onda gr uzima vrednost 3. (b
je tre?e po redu).
Ako ne dodje do gre?ke onda gr ima vrednost 0.
Proveru unosa ?emo isprogramirati na komponenti Edit1 u dogadjaju OnExit. Ukoiko
do?e do nepravilnog unosa prikaza?emo korisniku poruku da je do?lo do nepravilnog unosa
ShowMessage('Kolicina nije dobro uneta.'); , stavi?emo fokus na polje Edit1 naredbom
Edit1.SetFocus; i selektva?emo lo?e une?en tekst naredbom Edit1.SelectAll;.
6. procedure TForm1.Edit1Exit(Sender: TObject);
var s:string;
n:integer;
gr:integer;
begin
s:=Edit1.Text;
val(s,n,gr);
if gr<>0 then
begin
ShowMessage('Kolicina nije dobro uneta.');
Edit1.SetFocus;
Edit1.SelectAll;
end;
end;
Ne dopada nam se to ?to u komponenti Edit2 mo?emo unositi bilo kakav tekst. To
mo?emo zabraniti tako ?to u delu Properties opciji Enabled stavimo False.