# Studium Projekt - Komplexe Umfrageseite



## Enis (16. Mrz 2022)

Hi,

ich habe im Rahmen meines Studiums ein Projekt, welches ich realisieren soll und benötige Hilfe dabei.

Es muss eine "Umfrageseite" erstellt werden, auf der man sich ein Profil anlegen kann und ca. 80 Fragen beantworten muss. Es soll eine Übersichtsseite von den ganzen Profilen geben und eigene Profilseiten, wo man die Frage-Antworten des Profils dargestellt werden. Der Profilinhaber soll in der Lage sein, seine Antworten bearbeiten zu können. Das eigentliche Problem ist es, dass die Fragen unterschiedliche Antwortmöglichkeiten haben. Es gibt Textfelder, Radiobuttons, Checkboxen und spezielle Antwortmöglichkeiten, wo mehrere Fragen miteinander verknüpft sind. Aufgrund dessen bin ich überfragt, wie man das ganze am besten angeht und realisieren kann. Ich würde ungerne die Fragen inkl. den Antwortmöglichkeiten "statisch" in der HTML darstellen. Es sollen auch verschiedene Rollen geben:
Admin -> kann jedes Profil anschauen + bearbeiten
User -> kann andere Profile anschauen + eigenes Profil bearbeiten
Externe Viewer ohne Account -> kann andere Profile anschauen



Bei den Technologien hatte ich an Java (Springboot) und Angular gedacht, da ich hier am meisten Erfahrung habe.



Vielen Dank im voraus!


----------



## Apple’s Jünger (16. Mrz 2022)

Welche Art von Hilfe benötigst du?


----------



## Enis (16. Mrz 2022)

Ich brauche einen Ansatz wie ich es am besten angehen kann. Beispielsweise beim darstellen und Speichern der Fragen und Antworten und den Zugriff auf diese.


----------



## Enis (16. Mrz 2022)

Apple’s Jünger hat gesagt.:


> Welche Art von Hilfe benötigst du?


Ich brauche einen Ansatz wie ich es am besten angehen kann. Beispielsweise beim darstellen und Speichern der Fragen und Antworten und den Zugriff auf diese.


----------



## Apple’s Jünger (16. Mrz 2022)

Wir müssen uns anschauen, welche Form die Fragen haben. Eine Eingabe hat ein Label und eine Eingabefläche. Die Eingabefläche kann trivial ein Textfeld, Mehrzeiligestextfeld oder Datum oder sowas sein.  Dann etwas "komplexer" eine Auswahlbox mit mehreren Alternativen; als Radiobox, Checkbox oder Dropdown. Diese haben verschiedene Antwortmöglichkeiten.

Dann könnte ich mir sowas wie AbstractField mit String fieldLabel und InputWidget inputWidget erstellen.

Das InputWidget könnte via StrategyPattern injected werden bei der Erstellung des Formulars aus einer XML Datei. 

Da kann man sich bei jedem GUIFramework anschauen, wie das geht. Am einfachsten wohl anhand JComponent.

Ich gehe davon aus, dass du das ganze relational speichern willst. Dennoch würde ich dir hier raten einen Blick auf NOSQL DBs zu werfen, weil diese sowohl die Definition als auch die Persistenz verschiedener Fragebögen besser hinbekommen, wenn diese unstrukturiert sind. Unstrukturiert in dem Sinne, dass ein Formular X Felder beinhaltet und ein anderey Y Felder. Geht aber auch relational.


----------



## Enis (18. Mrz 2022)

Apple’s Jünger hat gesagt.:


> Wir müssen uns anschauen, welche Form die Fragen haben. Eine Eingabe hat ein Label und eine Eingabefläche. Die Eingabefläche kann trivial ein Textfeld, Mehrzeiligestextfeld oder Datum oder sowas sein.  Dann etwas "komplexer" eine Auswahlbox mit mehreren Alternativen; als Radiobox, Checkbox oder Dropdown. Diese haben verschiedene Antwortmöglichkeiten.
> 
> Dann könnte ich mir sowas wie AbstractField mit String fieldLabel und InputWidget inputWidget erstellen.
> 
> ...


Bei den Fragen gibt es als Eingabe: TextBoxen, Radiobuttons, Checkboxen und Checkboxen kombiniert mit Textfeldern. 
Die Fragen haben meistens unterschiedliche Felderanzahlen und es gibt Fragen die kombinierte Fragens sind. Da das eine Webanwendung werden soll, kommt ein GUIFramework wie JComponent nicht in Frage.


----------



## Apple’s Jünger (18. Mrz 2022)

Ja, Ok. Ich sagte ja nicht du sollst JComponent nehmen. Das ist uralt und hat hier kein Anwendungsgebiet. Aber die Implementierung ist smart. Die solltest du dir anschauen. 

Im übrigen musst du eine konkrete Frage stellen.


----------

