Kezdőoldal » Számítástechnika » Programozás » Saját Kresz-teszt program...

Saját Kresz-teszt program C#-ban. Hogyan érdemes belefogni? (Többi lenn)

Figyelt kérdés

Egy kvíz programot szeretnék csinálni, felépítésében legjobban egy kresz tesztre hasonlít ezért fogalmaztam meg így a kérdést.

C#-ban szeretném csinálni.


A felépítés nagyjából a következő lenne:

- a kérdések egy adatbázisban lennének letárolva (3nehézség szerint)

- a program futtatásakor az adatbázisban tárolt kérdések közül randomra dobjon ki 60db kérdést (mindhárom nehézségből 20-at)

- minden kérdésre 4 válaszlehetőség lenne amiből csak 1 helyes

- bizonyos kérdésekhez képi melléklet is lenne (bonyolultságtól függően ezt lehet kihagyom)

-a teszt kitöltése időre megy (összesen 1óra)


A legelső kérdés az lenne, hogy C# nyelven van-e értelme egyáltalán belekezdeni az egészbe?

Amennyiben igen, úgy a kérdéseket milyen adatbázisban tároljam le és mi módon, hogy ezt a feladatot el tudja végezni?

Első körben szerintem ennyi, aztán később még formálódhat :)


2011. aug. 15. 22:23
 1/10 anonim ***** válasza:
Hát ez nem valami nagy dolog. Csinálsz egy adatbázis amiben a kérdések lesznek. Egy rekord lehet pl Kérdés, válasz1, válasz2, válasz3, válasz4, kép, helyes válasz sorszáma. vagy az adatbázisban az első válasz mindig a jó, és összekevered a válaszokat amikor megjeleníted. A progi meg legegyszerűbben kiraksz egy labelt ebben lezs a kérdés, alá egy pictureboxot a képnek, alulra meg 4 gombot amik alatt ott lesznek a gombhoz tartozó válasz. Ha rakattolt a gombra megnézed jó válasz tartozik-e hozzá, aztán kiválasztod a következő kérdést.
2011. aug. 16. 10:24
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

Jó meg a nehézséged is belerakod az adatbázisba, azt nem olvastam el :D

Amúgy ez elég jó kis gyakorlás. Olyan 30 perc alatt meg is lehet csinálni. Kérdéseket beleírni több idő. :D

2011. aug. 16. 10:26
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:

Ezt csak magadnak csinálod hobbinak?

Csak azért kérdezem, mert ha nem kritikus pont az, hogy az adatok védettek legyenek, akkor nem feltétlenül kell adatbázis, XML file is megteszi, a képek meg sima képfile-ok, amiknek az elérési útját az XML-ben tárolod. Egyéb esetben meg SQL Compact Edition.

És igen, a C#-nál alkalmasabbat nem nagyon találsz erre.

A db szerkezetét már a többiek leirták, uh. azzal nem vesződök :)

2011. aug. 16. 11:04
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
Adatbázis sem nagy cucc. Visual studioban alapból lehet kezelni. Csinálsz egy local database-t, összerakod az adatbázis, egy linq fájlt, hozzácsatalod adatbázist és nagyon egyszerűen kezelheted. a véletlen kiválasztást meg úgy is megtudod, hogy rendelsz uyge midnegyik kérdéshez egy elsődleges int kulcsot, uygye ha beszúrsz egy kérdést ez mindig növeled, és ha van 10 kérdésed akkor 1-10 randomszámot generálsz, és a random értékű kulcshoz tartozó rekordot választod ki. illetve a már kiválaszott kérdéseket egy listában eltárolod, és hogy tudd mely kérdések szerepeltek már és ne forduljon elő többször.
2011. aug. 16. 11:18
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:

Köszönöm a válaszokat!

Igen, ezt csak úgy magamnak csinálom gyakorlásból, mert nemrég kezdtem el C#-ozni és gyakorló feladatok között volt egy ehhez hasonló, ebből jött az ötlet, hogy kicsit bonyolítok a dolgon és csinálok egy kvízprogramot, ott meg a kresz teszt jutott elsőként eszembe.


A kérdéseket nem feltétlenül adatbázisban akarom letárolni, csak azért gondoltam arra, mert nem tudtam, hogy ha letárolom egy xml-ben akkor hogyan olvasom ki belőle egyenként a kérdést.

Amit az első válaszoló leírt módszer ígéretesnek tűnik, úgyhogy megpróbálkozom azzal.


Közben eszembe jutott még egy kérdés a programmal kapcsolatban.

Ha az adatbázisos módszert választom és elkészült a program akkor azt hogyan tudom megcsinálni, hogy el tudjam indítani egy másik gépen is (nem azon amelyiken megtalálható hozzá a teljes fejlesztő környezet) ..itt gondolom nem csak az exe-t kell elmentenem és gondolom vinnem kell valahogy az adatbázist is a programmal?

2011. aug. 16. 15:53
 6/10 anonim ***** válasza:

Pont ezért javasoltam az XML-t.. :D Egyébként XML-t olvasni/irni C#-ban nagyon könnyü. Ha mégis DB-zni akarsz, akkor meg ja, hurcolhatod a programmal együtt a DB file-t, a szükséges drivereket, stbstb.

Random kiválasztásnál meg nehogy megcsináld ezt a hülyeséget, amit irtak :D Beolvasod memóriába az egész táblát, aztán mondjuk van 200 kérdésed összesen, azok benne egy listában, és Random.Next(200)..

2011. aug. 16. 16:20
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

Értem, akkor mégiscsak egyszerűbb lenne az xml.

Egy kis segítséget tudnál adni hogy hogy kezdjek bele? mármint milyen struktúrába tároljam le őket, hogy olvastassam ki, stb?


Az a baj (legalábbis szerintem) azzal a randommal amit te mondtál, hogy nekem 3féle nehézségből vannak kérdések és minden nehézségből akarok 20at kiválasztani (egy teszt 60kérdés)

Vagy tároljam le 3xml-ben a különböző nehézségeket?

2011. aug. 16. 17:13
 8/10 anonim ***** válasza:
Hát ha xml el csinálod akkor 3 fájlal egyszerűbb. Az szerkezetét meg már leírtam. belerakod a kérdést, meg a 4 választ és kész, esetleg még azt hogy melyik a helyes válasz, meg akkor egy id-t neki.
2011. aug. 16. 17:34
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:

<?xml version="1.0" encoding="utf-8" ?>

<questions>



<question title="Az alábbi képen látható forgalmi helyzetben kinek van elsőbbsége?" difficulty="2" correctanswerid="1" picturepath="c:\kreszteszt1.jpg">

<options>

<option id="1" title="Az A jelü autónak."></option>

<option id="2" title="A B jelü autónak."></option>

<option id="3" title="A C jelü autónak."></option>

</options>

</question>


<question title="Mennyi a megengedett sebesség lakott területen belül?" difficulty="1" correctanswerid="2">

<options>

<option id="1" title="70 km/h"></option>

<option id="2" title="50 km/h"></option>

<option id="3" title="90 km/h"></option>

</options>

</question>



</questions>


Tessék, kb. igy kéne kinéznie az XML-nek.


Példa a feldolgozáshoz:

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(@"XMLFile1.xml");


XmlNodeList questionNodes = xmlDoc.SelectNodes("//question");


foreach (XmlNode questionNode in questionNodes)

{

string questionTitle = questionNode.Attributes["title"].Value;


List<string> questionOptions = new List<string>();


XmlNodeList optionNodes = questionNode.SelectNodes("options/option");


foreach (XmlNode optionNode in optionNodes)

{

int optionID = int.Parse(optionNode.Attributes["id"].Value);

string optionTitle = optionNode.Attributes["title"].Value;

}


}



Ha rám hallgatsz, én csinálnék valami Question nevü osztályt, és azokat hoznám létre az xml-ből beolvasott adatokkal.

Aztán:

Csinálsz 3 különböző List<Question> listát, amikbe nehézségi szint szerint pakolod külön-külön a Question object-eket.

Valamint: Amikor véletlenszerüen válogatod ki a kérdéseket a tesztre, akkor a következő:

Legyen egy Dictionary<string, Question> nevü Dictionary-d,

ahol a key a question title, a value meg nyilván egy Question tipusu objektum.

Ezután azt csinálod, hogy pl. mind3 nehézségi szinten 20 kérdés van, és mindegyikből akarsz választani 5-öt:

Random.Next(20), kiveszed a random szám indexén lévő kérdést az 1-es nehézségi listából.

Megnézed, hogy a dictionary-ben containsKey-el, hogy tartalmazza-e már azt a questiont, ha nem, belerakod, ha igen, akkor generálsz még egy random számot, és azzal próbálod, tehát gyakorlatilag két egymásba ágyazott ciklusod lesz, a külső 5ször fut le, a belső meg annyiszor, amig nem sikerül olyan random kérdést választania, ami még nincs benne a dictionary-ben.


Remélem, ez igy megfelel :D

2011. aug. 16. 19:11
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:

Hálám üldözni fog a sírig :)

Nagyon profi vagy. Ezer köszönet érte.

Ennél jobb példát keresve sem találtam volna az xml feltöltéshez :)


Úgy látom ez a feladat csak nekem okozott ekkora fejtörést :D ...sebaj, majd belejövök idővel.

Még egyszer köszönöm a segítséget, kérdezek ha elakadnék :)

2011. aug. 16. 19:33

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!