[ gaga_mn @ 13.11.2006. 12:01 ] @
| Napravila sam program koji služi za testiranje učenika.
Postavila sam list box sa pitanjima i opciona dugmad sa odgovorima. Ukoliko je pitanje tačno u labeli ispod piše «tačno je» u suprotnom «nije tačno».
Napraviću textualno polje gde će za tačan odgovor da piše 5 a za netačan 0.
Kako da napravim da mi sumira rezultat kako bi dobila score tj. da li je učenik položio test ???
Dragana
|
[ LudoA @ 13.11.2006. 13:14 ] @
Pretpostavimo je 15 i vise bodova potrebno za prolaz ucenika, onda bi to trebalo ovako izgledati:
Code:
If Text1.Text >= 15 then
MsgBox "Ucenik je polozio"
Else
MsgBox "Ucenik nije polozio"
End If
Jeli na to mislis?
[Ovu poruku je menjao LudoA dana 13.11.2006. u 14:24 GMT+1]
[ gaga_mn @ 13.11.2006. 13:17 ] @
to mi je jasno, nego kako da sumiram sve tačne udgovore??
[ LudoA @ 13.11.2006. 13:22 ] @
Evo jedan banalan primjer:
Code:
Private Sub Command1_Click()
If varOdgovor = True then
Text1.Text = Text1.Text + 5 'ako je tacan zbroji
Else
Text1.Text = Text1.Text - 5 ' ako je netacan oduzmi
End If
End Sub
[ goranvuc @ 13.11.2006. 13:28 ] @
Citat: LudoA:
Code:
...
Text1.Text = Text1.Text + 5 'ako je tacan zbroji
...
Na ovo gore se uvek najezim, ali sta cemo kada VB to dozvoljava.
Ako neces da ucis pogresno:
Code:
Private Sub Command1_Click()
If varOdgovor Then
Text1.Text = CStr(CInt(Text1.Text) + 5) 'ako je tacan zbroji
Else
Text1.Text = CStr(CInt(Text1.Text) - 5) ' ako je netacan oduzmi
End If
End Sub
[ LudoA @ 13.11.2006. 13:31 ] @
Citat: LudoA: Evo jedan banalan primjer:
:D :D :D
[ goranvuc @ 13.11.2006. 13:32 ] @
OK, ako je banalan, sorry.
[ gaga_mn @ 13.11.2006. 13:34 ] @
pa može da mi poslužiali .
Ne znam u kom trenutku i na koji događaj da napravim ovo zbrajanje.
Prvo ispitujem da li je tačan 1. odgovor, pa ako je tačan onda znači da to pitanje vredi 5 bodova. Ne znam gde čuvam taj podatak dok idem na drugo pitanje.
Napravila sam selec case kod pitanja.
case 1. pitanje , ponude mi se odgovarajući odgovori u tri opciona dugmeta. Ukoliko kliknem na ono za koje sam u kodu odredila da je tačno u labelu ispod se ispiše tačno i u tom trenutku treba negde da se sačuva tih 5 poena
case 2. pitanje...
i kad sve ispitam da mi se prikaže koliko bodova učenik ima i tek onda da mi ispiše da je položio ili ne...
Ne znam da li sam objasnila kako treba... ???
[ goranvuc @ 13.11.2006. 13:36 ] @
Citat: gaga_mn:Ne znam da li sam objasnila kako treba... ???
Nisi.
Uploaduj ovde screenshot od ekrana za pitanja, uz ovo sto si vec pitala bi trebalo da objasni kako si to zamislila.
Ako ti nije problem, stavi i ceo projekt, siguran sam da ti niko nece ukrasti.
[ gaga_mn @ 13.11.2006. 13:38 ] @
kuci mi je na racunaru a ja sam na poslu, videcu sutra ako do tad ne rešim pa ću da zakačim.
[ gaga_mn @ 13.11.2006. 13:51 ] @
pošto ovde nemam vb evo skicirala sam u formi accessa kako hocu da izgleda. Sve sam odradila samo mi fali zbrajanje svih poena po svim pitanjima.....
[ Eurora3D Team @ 13.11.2006. 13:56 ] @
Zdravo
Predpostavljam da je program u VB 6.0 posto je u ovom forumu.
Vas problem je ocigledno kako da znate kad je neko odgovorio na sva pitanja
Trebalo bi da u On_Cliclk eventu ListBox-a pratite evente izabiranja pitanja.
Kada je odgovoreno na sva pitanja rezultat ispisite u drugoj formi.
Drugi pristup je da pratite pritiskanje dugmadi sa odgovorima
Primer
Kod u glavnoj formi
'*****************************************************************
Public Odgovoreno as Integer
Public Poeni as Integer
Private Sub Form_Load
Odgovoreno = 0
Poeni =0
End Sub
Botton1_Click 'odgovor 1
If List1.Text="" Then Exit Sub ' ako nije selektovano pitanje
If List1.Text ="Pitanje za ovaj odgovor ?" then Poeni = Poeni + 5 ' ako je odgovor tacan
Button1.Enabled = False ' Ovo dugme vise nije aktivno ili Button1.Visibile = False
If Not List1.ListIndex = -1 Then List1.RemoveItem (List1.ListIndex) ' brisemo i pitanje
Odgovoreno = Odgovoreno +1 '
If Odgovoreno = BrojOdgovora Then Gotovo ' ako je ovo posledni odgovor ' Broj Odgovora zamenite sa pravim brojem
End Sub
'Ponovite gornju subrutinu za svako pitanje
Private Sub Gotovo()
Load Form2 ' druga forma za rezultate
Form2.Label1.Text = Poeni ' sa labelom za poene
Form2.Show
Unload Me
End Sub
'****************************************************************
Test programi se uglavnom prave tako da za svako pitanje postoji jedan ceo prozor (a ne ovako)
Pozdrav
Nebojsa
[ goranvuc @ 13.11.2006. 13:56 ] @
OK, sto se tice koncepta, o tome bi mogli pricati.
Resenje ti je dao @LudoA jos u prethodnom odgovoru; samo povecavas ukupnu vrednost za 5 u slucaju tacnog odgovora (ako je tekstboks za ukupno Text1). Za kompletno uradjen kod treba ili da postavis ukupan kod sa forme, ili da uploadujes projekt.
[ gaga_mn @ 13.11.2006. 14:03 ] @
hvala svima na predlozima kod kuće ću da pokušavam pa do sutra ....
cao
[ gaga_mn @ 14.11.2006. 11:19 ] @
postavila sam textualno polje txtbodovi i txtUkupan rezultat
pa je txtUkupanRezultat=txtUkupanRezultat+txtBodovi
problem je sto se bodovi ne sabiraju nego nižu jedan za drugim ???!!!
[Ovu poruku je menjao gaga_mn dana 14.11.2006. u 12:37 GMT+1]
[ Eurora3D Team @ 14.11.2006. 11:38 ] @
Tekst box sadrzaj je u obliku teksta (stringa) i ako napisete
txtUkupanRezultat+txtBodovi efekat je isti kao Ja + sam =Ja sam
Trebate da sadrzaj pretvorite u broj
Primer
txtUkupanRezultat.Text = CInt (txtUkupanRezultat.Text) + CInt (txtBodovi.Text)
Pozdrav
[ X-Cite @ 14.11.2006. 11:40 ] @
Code: txtUkupanRezultat.Text = Val(txtUkupanRezultat.Text) + Val(txtBodovi.Text)
[ goranvuc @ 14.11.2006. 11:43 ] @
;)
Eto, a lepo sam ti rekao u jednom od gornjih topika da ne ucis pogresno i pokazao kako treba, nisi nista naucila, a predajes deci ccccc.
Naravno, salim se.
[ gaga_mn @ 14.11.2006. 11:51 ] @
evo prilažem vbp
[ goranvuc @ 14.11.2006. 11:59 ] @
Sto se tice koda i koncepta, imalo bi se tu svasta ispravljati i menjati, ali sam se fokusirao na tvoj problem. Evo ti ispravljen projekat, ako nisam i ja negde u zurbi pogresio.
Nadam se da je bio dovoljno brz odgovor.
[ gaga_mn @ 14.11.2006. 12:05 ] @
hvala puno
jel možeš da mi objasniš ovo sta radi cstr i val ???
txtRezultat.Text = CStr(Val(txtRezultat.Text) + Val(txtBodovi.Text))
[ goranvuc @ 14.11.2006. 12:11 ] @
U pitanju su konverzije tipova, ukratko receno.
Na ovaj nacin se sprecava konkatenacija stringova, jer je u VB-u znak za povezivanje stringova i "+" i "&", a da bi bilo nedvosmisleno, najbolje je da koristis "&", a ja namerno nisam menjao da bi uocila problem. Zato su ti se brojevi spajali, umesto sabirali. Ja sam na ovaj nacin naterao VB da prvo sabere (a ne da spoji brojeve), pa onda dodeli Text svojstvu od Textbox-a.
Naravno da se ti izrazi mogu pisati na veliki broj nacina, ali to je neka druga prica.
Knjigu u sake, ako ces se ovim ozbiljnije baviti i kreni od osnovnih tipova, pa onda predji na "crtanje" i dogadjaje.
[ gaga_mn @ 14.11.2006. 12:41 ] @
A ako sam stavila da mi jedata format Number?? Jel on to konta??
>
[ goranvuc @ 14.11.2006. 12:45 ] @
"On" to ne konta
DataFormat sluzi za formatiranje vrednosti kada je Textbox "povezan" za polje iz rekordset-a i sl.
Textbox ima svojstvo Text koje je osnovnog tipa String "uvek i za svagda".
[ gaga_mn @ 14.11.2006. 12:49 ] @
ok, hvala puno na pomoći....
[ Eurora3D Team @ 14.11.2006. 13:16 ] @
Popravili smo vas program
Mozete da skinete zip sa http://www.extramedia.co.yu/eurora3d/files/ReIspitEM.zip
Pozdrav
Nebojsa
[ gaga_mn @ 15.11.2006. 09:06 ] @
postavila sam na kraju uslov
If txtRezultat.Text >15 Then
MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If
i ni u kom slučaju neće da prihvati da je učenik položio ??
Jel isto treba da primenim pretvaranja stringa u number i kojim načinom da primenim to ??
[ goranvuc @ 15.11.2006. 09:16 ] @
Sama si sebi odgovorila, ne znam zasto nisi probala?
Code:
If CInt(txtRezultat.Text) >= 15 Then
MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If
[ gaga_mn @ 15.11.2006. 09:20 ] @
pa probala al opet ne prihvata
[ goranvuc @ 15.11.2006. 09:23 ] @
Ko, sta, gde ne prihvata? Da li si videla i ono "=" sto sam dodao u uslov?
[ Eurora3D Team @ 15.11.2006. 09:24 ] @
Zdravo
U vasem programu ima samo 3 pitanja i rezultat nikad nije veci 0d 15
Stavite If CInt(txtRezultat.Text) = 15 Then
Pozdrav
[ gaga_mn @ 15.11.2006. 09:31 ] @
pa iako stavim >=10 opet neće da prihvati, a i ako stavim da je = 15 i u tom slučaju ne radi...
[ goranvuc @ 15.11.2006. 09:33 ] @
Kao sto sam rekao:
Citat: goranvuc: Ko, sta, gde ne prihvata?
Stavi kod.
[ gaga_mn @ 15.11.2006. 09:36 ] @
pa pobogu,
naravno da sam stavila.
Kako bi znala da ne radi ako nisam stavila kod ??!!
[ goranvuc @ 15.11.2006. 09:42 ] @
Citat: gaga_mn: pa pobogu,
naravno da sam stavila.
Kako bi znala da ne radi ako nisam stavila kod ??!!
Pa mislio sam da ga ovde stavis ;)
Eh, sta radi panika.
[ gaga_mn @ 15.11.2006. 09:53 ] @
:)) nisam u panici
Case 3
Unload Me
If CInt(txtRezultat.Text) >= 10 Then
MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If
[ goranvuc @ 15.11.2006. 09:55 ] @
A da taj "Unload Me" stavis posle?
Code:
Case 3
If CInt(txtRezultat.Text) >= 10 Then
MsgBox ("UČENIK JE POLOŽIO ISPIT")
Else
MsgBox ("UČENIK NIJE POLOŽIO ISPIT")
End If
Unload Me
Da li uopste ulazi u Case 3?
[ gaga_mn @ 15.11.2006. 10:04 ] @
> e pa to je
tnx :))
[ goranvuc @ 15.11.2006. 10:05 ] @
Da li tvoji ucenici imaju pojma koliko se ti zbog njih mucis? 
[ gaga_mn @ 15.11.2006. 10:09 ] @
:))
[ mladenovicz @ 15.11.2006. 15:44 ] @
Skoro svi problemi ovde imaju isti uzrok. U principu, UVEK bi trebalo odvojiti logiku aplikacije od UIja. U ovom konkretnom slucaju to znaci da bi trebalo uvesti promenljivu BrojPoena tipa Integer i svako dodavanje poena, poredjenje i sta god da se radi sa poenima raditi sa tom promenljivom. Text box treba koristiti SAMO za prikaz na ekranu. Sta ako se dobije zahtev da se ovaj text box zameni labelom recimo? Neki ce da kazu da ce find/replace da radi posao, ali to je losa praksa.
[ goranvuc @ 15.11.2006. 15:53 ] @
Da citiram sebe:
Citat:
OK, sto se tice koncepta, o tome bi mogli pricati.
@mladenovicz, potpuno se slazem sa tvojim komentarom. Mislim da ova tema moze da bude vrlo edukativan primer za pocetnike u VB-u, pa je bitno i da se na kraju nesto "rezimira".
[ gaga_mn @ 16.11.2006. 09:41 ] @
hvala na savetu, primenila sam i to
pozdrav
Dragana
>
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|