Bálozók

A sikeres Java kurzus elvégzése után hatalmas bált szerveznek. Ezen lesz bálkirálynő választás is. Írjon Java programot a bál szimulálására!

Minden egyes bálozót egyértelműen jellemez a neve és a belépéskor kapott sorszáma. Belépéskor mindenkinek van zsebpénze. Ebből tudnak majd fizetni, de kívülről már nem kaphatnak több pénzt.

Az est folyamán mindegyikük táncol(), mindenki fogyaszt() (ha tud), és mindenki szavaz()hat egy lányra. (Egyszerre egyre, de elvileg akárhányszor szavazhat.) Minden egyes táncoláskor eggyel növekszik a táncai száma. Szavazáskor a paraméterben adott lány szavazatot kap. Fogyasztani pedig nyilván csak akkor tud, ha még ki tudja fizetni a metódus paraméterében szereplő árat.

A lányok szavazatot kap()hatnak. Ekkor szavazataik száma eggyel nő.

Kiíratáskor majd azt kell megadni, hogy az illető fiú vagy lány, a nevét, sorszámát, és azt, hogy hányszor táncolt.

A vezérlő osztályban a szükséges adatok beállítása után léptesse be() a bálozókat – olvassa be az adataikat egy adatfájlból (pl. balozok.txt – adatszerkezet: név;fiú/lány;zsebpénz).

Ezután bálozzanak() egészen hajnalig (ezt most úgy szimulálja, hogy a véletlen dönti el, hogy vége van-e vagy nincs). Eközben egy-egy véletlenül kiválasztott bálozó fizessen véletlen értékben, feltéve persze, hogy tud még fizetni. Ha nem, akkor jelezze. Egy másik véletlenül kiválasztott bálozó próbáljon meg szavazni egy véletlenül kiválasztott emberre. Ha lányt választott, akkor szavazzon rá, ha történetesen fiút, akkor kapjon egy rosszalló hiba­üzenetet. Egy harmadik véletlenül választott szavazó pedig táncoljon. (Programozási szem­pontból lényegtelen, de ha akarja, választhat egynél több táncost is.)

Végül összesítse a bál tapasztalatait: írassa ki, hogy ki mennyit költött, illetve melyik lány hány szavazatot kapott.

Ki(k) lett(ek) a bálkirálynő(k)?

Mennyi volt a büfé összes bevétele? (Összes költekezés.)

Írassa ki a bál résztvevőit

a) táncok száma szerint csökkenően;

b) fogyasztás szerint növekvően;

c) szavazatszám szerint csökkenően rendezve.

Hölgyválasz: vagyis el lehessen dönteni, hogy szerepel-e a bálozók között egy adott fiú.


Adatfájl: balozok.txt


A feladat megoldása előtt, illetve közben célszerű átnézni a következő fogalmakat:

öröklődés, absztrakt osztály, fájlból való olvasás, kivételkezelés, jUnit teszt, enum - ezekhez pl. itt találhat referenciákat:

http://java.progtanulo.hu/

https://docs.oracle.com/javase/10/

http://www.theorphys.elte.hu/fizinf/HaloAdat/tananyag/java/4_OBJEKTUM2/index.html

http://www.tutorialspoint.com/java/java_files_io.htm (most ennél kevesebb is elég)

https://www.tutorialspoint.com/java/java_exceptions.htm

http://tutorials.jenkov.com/java-exception-handling/index.html

http://tutorials.jenkov.com/java-unit-testing/index.html

http://tutorials.jenkov.com/java/enums.html

https://beginnersbook.com/2014/09/java-enum-examples/


de persze bármely más, a témával foglalkozó anyag is jó lehet.


Egy lehetséges megoldás olvasható a következő pdf fájlban. Próbálja meg megérteni és megoldani a leírtak alapján.

balozok.pdf