Autor Beitrag
bf109g.01
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Fr 09.09.11 20:26 
Hallo. Ich möchte folgendes basteln:
Mir schwebt da vor, eine Art Quiz / Muliple Choice Tester / whatever. zu basteln.

Diese besteht aus 2 großen Teilen:
1. Der Abfragebereich.
Hier wird einfach nur der Fragenkatalog angezeigt, der Nutzer setzt seine Multiple Choice Kreuzchen und bekommt seine Auswertung.

2. Der Editier-Bereich:
Die Anwendung soll die Möglichkeit bieten, Fragen & Kategorien zu erstellen, zu editieren, gezielt zu suchen, zu löschen usw, die dann gespeichert werden. Die Idee dahinter ist, dass sich jeder Nutzer seinen eigenen Lern-/Spaß-/WasAuchImmer-Fragenkatalog erstellen können soll.

Jetzt bin ich immer noch schwer am überlegen, wie ich das ganze realisieren soll. Im Moment stehe ich bei statischen Arrays mit Records drinnen, wobei jedes Record alle Eigenschaften einer einzelnen Frage speichert (Frage, alle Antworten, welche richtig sind, die Fragenkategorie, den Lösungstext,...). Dies ist mitunter ziemlich schlecht.

Ich suche im Prinzip noch nach dem richtigen Konzept, denn ich weiß, dass es so geht, aber mancherlei ist so eine erbärmliche Handarbeit, dass ich denke, das müsste doch auch anders gehen.

Welche Möglichkeiten habe ich da, das am besten (d.h. bequemsten) umzusetzen?

1. Dynam. Arrays:
Nur so lang, wie Fragen vorhanden sind -> vernünftieger Speicherplatzverbrauch (die leere Datei vom statischen Array ist 300 KB groß). Können auch beliebig viele Fragen sein, beim Statischen steht die Zahl ja mit dem kompilieren fest.

2. Statische Arrays:
Deutlich (!) einfacher abzuspeichern und zu laden.

3. TList
Nie mit gearbeitet, aber die Möglichkeiten Elemente zu löschen und einzufügen sind deutlich leicher. Klingt also nicht schlecht.

4. Datenbanken?
Gar keine Ahnung von. Deshalb frage ich ja, obs ne Option wäre...

5. ???

Vielen Dank für die Unterstützung, bevor ich jetzt stundenlang in eine Sackgasse hineinarbeite oder es unnötig schwer mache.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 09.09.11 20:50 
Moin!

Warum nicht objektorientiert? Erstelle eine Klasse TQuestion, die Instanzen verwaltest du in einer TObjectList, fertig. Dem TQuestion-Objekt verpasst du eine Lade-/Speicher-Methode und die Klammotten würde ich in eine einfache Textdatei mit zeilenorientiertem Layout speichern (Tipp: man kann auch sehr bequem StringListen in einer Zeile per .CommaText laden/speichern). Also z.B.:

1. Zeile: Die Frage
2. Zeile: Die Antworten als CommaText
3. Zeile: Die Nummer der richtigen Antwort (0-basiert)

Ein Datensatz besteht also aus 3 Zeilen. Davon so viele, wie Fragen da sind. :idea:

Eine DB würde ich dafür nicht unbedingt nehmen, das ist Kanonen auf Spatzen. ;)

cu
Narses

//EDIT: Das hier mal gesehen? :lupe: ;)

_________________
There are 10 types of people - those who understand binary and those who don´t.
bf109g.01 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Sa 10.09.11 21:34 
Lieber Narses, danke für deine ausführliche Antwort. Sie entspricht genau dem, was ich erwartet / erhofft habe.
Ich muss zugeben, ich bin nicht präzise genug gewesen, was so geplant ist.
Das Projekt ist nämlich deutlich umfangreicher:

- Die Bearbeitung und Eingabe wird und soll auch nur über die interne Maske möglich sein.
Ziel: UserA erstellt einen Fragenkatalog, der dank Passwortschutz von UserB benutzt, aber nicht verändert werden kann.
- Die Erstellung der Fragenkategorien verdient besondere Aufmerksamkeit:
Sobald eine unbekannte Kategorie in der Maske eingetippt wird, wird diese im Kategorienverzeichnis eingefügt. Hier werden wieder für jede Kategorie alle Kategorienparameter wie bei den Fragen in einer Maske bearbeitet. Bspw. ein Bild, eine Hintergrundfarbe.
Ziel: Bsp. Alle Fragen der Kategorie „Natur“ haben einen grünen Hintergrund und ein Blümchenbild, alle „Technik“-Fragen einen stahlgrauen und einen Kran als Bild.
- Zur Bearbeitung der Fragen, müssen diese der Übersicht halber sowohl nach Kategorien gefiltert angezeigt werden können (Anklicken in der Filterlistbox, lädt die Frage zum Bearbeiten in die Maske), auch soll eine Wortsuche möglich werden.
- Jede Frage soll beliebig 2 bis 6 Antworten haben können, von denen beliebig 1 bis 5 richtig sein können sollen.

Zur Veranschaulichung habe ich einen Screenshot der Benutzeroberfläche gemacht.
Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.

Natürlich kann ich da falsch liegen, aber wenn man diese Kriterien mit einbezieht, erscheint mir dein Lösungsvorschlag nicht mehr ganz optimal, oder…?
Evtl. unterschätze ich einfach die Möglichkeiten so einer Textdatei...
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 10.09.11 23:13 
Moin!

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
wenn man diese Kriterien mit einbezieht, erscheint mir dein Lösungsvorschlag nicht mehr ganz optimal, oder…?
Evtl. unterschätze ich einfach die Möglichkeiten so einer Textdatei...
Du verwechselst da was, die Textdatei ist nur der Kontainer für den Transport von Session zu Session, das Interessante ist doch das TQuestion-Objekt und die Klasse, die diese Objekte verwaltet. :idea: Hier sind dir doch kaum Grenzen gesetzt, ganz unabhängig vom später verwendeten Dateiformat. :nixweiss:

Ich würde zunächst mal das Objekt designen und mir dann erst Gedanken darüber machen, wie man das Laden/Speichern kann.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.