├── xcode.jpg
├── Android.png
├── ManualTextGerman.pdf
├── ManualTextEnglish.pdf
├── DuesseldorferSchuelerinventarInEnglish.pdf
├── DuesseldorferSchuelerinventarInGerman..pdf
├── readSEint.php
├── readNormTable.php
├── insertOrUpdateSEint.php
├── MainPage.xaml
├── README.md
├── activity_main.xml
├── ViewController.swift
├── MainPage.xaml.cs
├── MainActivity.java
├── ViewController_DB.swift
├── MainActivity_DBzugriff.java
└── Main.storyboard
/xcode.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pkoopongithub/duesseldorfer-schuelerinventar-xcode-androidstudio-xamarin/main/xcode.jpg
--------------------------------------------------------------------------------
/Android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pkoopongithub/duesseldorfer-schuelerinventar-xcode-androidstudio-xamarin/main/Android.png
--------------------------------------------------------------------------------
/ManualTextGerman.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pkoopongithub/duesseldorfer-schuelerinventar-xcode-androidstudio-xamarin/main/ManualTextGerman.pdf
--------------------------------------------------------------------------------
/ManualTextEnglish.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pkoopongithub/duesseldorfer-schuelerinventar-xcode-androidstudio-xamarin/main/ManualTextEnglish.pdf
--------------------------------------------------------------------------------
/DuesseldorferSchuelerinventarInEnglish.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pkoopongithub/duesseldorfer-schuelerinventar-xcode-androidstudio-xamarin/main/DuesseldorferSchuelerinventarInEnglish.pdf
--------------------------------------------------------------------------------
/DuesseldorferSchuelerinventarInGerman..pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pkoopongithub/duesseldorfer-schuelerinventar-xcode-androidstudio-xamarin/main/DuesseldorferSchuelerinventarInGerman..pdf
--------------------------------------------------------------------------------
/readSEint.php:
--------------------------------------------------------------------------------
1 | connect_error) {
10 | die("Verbindung zur Datenbank fehlgeschlagen: " . $conn->connect_error);
11 | }
12 |
13 | // Werte aus der Tabelle profil basierend auf profilid auslesen
14 | $profilid = $_GET["profilid"];
15 | $query = "SELECT * FROM profil WHERE profilID = $profilid";
16 | $result = $conn->query($query);
17 |
18 | if ($result->num_rows > 0) {
19 | $row = $result->fetch_assoc();
20 | $SEint = array();
21 | for ($i = 1; $i <= 36; $i++) {
22 | $SEint[$i - 1] = $row["item" . $i];
23 | }
24 |
25 | // SEint als JSON-Ausgabe senden
26 | echo json_encode($SEint);
27 | } else {
28 | echo "Keine Daten in der Tabelle gefunden.";
29 | }
30 |
31 | // Datenbankverbindung schließen
32 | $conn->close();
33 | ?>
34 |
--------------------------------------------------------------------------------
/readNormTable.php:
--------------------------------------------------------------------------------
1 | connect_error) {
10 | die("Verbindung zur Datenbank fehlgeschlagen: " . $conn->connect_error);
11 | }
12 |
13 | // Normtabelle aus Datenbank lesen und in normSE[][] einlesen
14 | $query = "SELECT * FROM normSEhs ORDER BY kompetenzID";
15 | $result = $conn->query($query);
16 |
17 | if ($result->num_rows > 0) {
18 | $rowIndex = 0;
19 | while ($row = $result->fetch_assoc()) {
20 | $normSE[$rowIndex][0] = $row["p1"];
21 | $normSE[$rowIndex][1] = $row["p2"];
22 | $normSE[$rowIndex][2] = $row["p3"];
23 | $normSE[$rowIndex][3] = $row["p4"];
24 | $normSE[$rowIndex][4] = $row["p5"];
25 | $rowIndex++;
26 | }
27 | } else {
28 | echo "Keine Daten in der Tabelle gefunden.";
29 | }
30 |
31 | // Datenbankverbindung schließen
32 | $conn->close();
33 |
34 | // normSE[][] als JSON-Ausgabe senden
35 | echo json_encode($normSE);
36 | ?>
37 |
--------------------------------------------------------------------------------
/insertOrUpdateSEint.php:
--------------------------------------------------------------------------------
1 | connect_error) {
10 | die("Verbindung zur Datenbank fehlgeschlagen: " . $conn->connect_error);
11 | }
12 |
13 | // Parameter aus der GET-Anfrage lesen
14 | $profilid = $_GET["profilid"];
15 | $SEint = explode(",", $_GET["SEint"]);
16 |
17 | if ($profilid == 0) {
18 | // Neuer Eintrag in die Tabelle profil
19 | $insertQuery = "INSERT INTO profil (userID, gruppeID, item1, item2, ..., item36) VALUES (15, 1000, ";
20 | for ($i = 0; $i < 36; $i++) {
21 | $insertQuery .= $SEint[$i];
22 | if ($i < 35) {
23 | $insertQuery .= ",";
24 | }
25 | }
26 | $insertQuery .= ")";
27 | $conn->query($insertQuery);
28 |
29 | // ID des neu eingefügten Eintrags auslesen
30 | $profilid = $conn->insert_id;
31 |
32 | echo $profilid;
33 | } else {
34 | // Aktualisierung eines bestehenden Eintrags in der Tabelle profil
35 | $updateQuery = "UPDATE profil SET ";
36 | for ($i = 0; $i < 36; $i++) {
37 | $updateQuery .= "item" . ($i + 1) . " = " . $SEint[$i];
38 | if ($i < 35) {
39 | $updateQuery .= ",";
40 | }
41 | }
42 | $updateQuery .= " WHERE profilID = $profilid";
43 | $conn->query($updateQuery);
44 |
45 | echo $profilid;
46 | }
47 |
48 | // Datenbankverbindung schließen
49 | $conn->close();
50 | ?>
51 |
--------------------------------------------------------------------------------
/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
14 |
17 |
20 |
24 |
28 |
32 |
36 |
40 |
41 |
44 |
48 |
51 |
55 |
58 |
62 |
65 |
69 |
72 |
76 |
79 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # duesseldorfer-schuelerinventar-spss-R
3 | SPSS R
4 | # duesseldorfer-schuelerinventar
5 | GERMAN
6 | Quelloffenes Persönlichkeitsinventar
7 |
8 | Seit 2012 dient das quelloffene Düsseldorfer Schülerinventar als Lernumgebung für Studenten der Sozialwissenschaften und Auszubildende der
9 | Markt- und Sozialforschung, der Anwendungsentwicklung und der Daten- und Prozessanalyse.
10 |
11 | Das Düsseldorfer Schülerinventar ist ein offenes, gültiges, genaues und unabhängiges Persönlichkeitsinventar für Schüler
12 | der Übergangsklassen (valide, reliabel, objektiv). Das Düsseldorfer Schülerinventar ist entwicklungsoffen.
13 | Wenn Sie an einem Open-Source-Projekt mitwirken, kennen Sie das intensive, persönliche Engagement, das zum Gelingen beiträgt.
14 | Viele Nutzer wissen und schätzen das. Aus der eigenen Kraft der Entwickler gelingt aber nicht alles,
15 | zumal vielfach nur das pure Interesse am Thema oder der Umgang mit Technologien die Basis abgibt.
16 | Nicht jeder Nutzer verfügt jedoch über die Fähigkeiten und die Zeit, um ein Projekt zu unterstützen.
17 | Verbales Feedback in Form von Fehlermeldungen ist sehr hilfreich. Für andere kann eine materielle Unterstützung die einzige Möglichkeit sein,
18 | sich an Open Source zu beteiligen. Gerne spreche ich mit Ihnen über Ihre Art der Unterstützung.
19 |
20 | Ich freue mich über wissenschaftliche Reanalysen und weitere Entwicklungsteams. Gerne stelle ich zu wissenschaftlichen
21 | Zwecken die SPSS- und R-Dateien zur Verfügung. Zur Weiterentwicklung stelle ich gerne die Quellcodes der Programme zur Verfügung
22 | (PHP, MySQL, Xcode, Android Studio, Xamarin, Lazarus).
23 |
24 | 
25 |
26 | ENGLISH
27 | Open source personality inventory Since 2012, the Düsseldorf school inventory, which is open source, has served as a learning environment for social science students and trainees at Market and social research, application development and data and process analysis. The Düsseldorf student inventory is an open, valid, precise and independent personality inventory for students of the transition classes (valid, reliable, objective). The Düsseldorf student inventory is open to development. If you are involved in an open source project, you know the intense, personal commitment that makes it a pleasure to succeed. Many users know and appreciate this. However, not everything can be achieved using the developers' own strength. especially since only the pure interest in the topic or the handling of technologies provides the basis. However, not every user has the skills and the time to support a project. Verbal feedback in the form of error messages is very helpful. For others, material support can be the only option participate in open source. I would be happy to talk to you about your type of support. I look forward to scientific reanalyses and further development teams. I am happy to provide scientific Purpose of the SPSS and R files available. I am happy to provide the source code of the program for further development (PHP, MySQL, Xcode, Android Studio, Xamarin, Lazarus).
28 |
29 | #The calibration sample is made up of students from the German education system with German language skills. A translation of the items formulated in German into another language only makes sense if a new calibration sample is drawn for this language and the educational system there.
30 |
31 | Die Algorithmisch rekursive Sequenzanalyse ist das einzige mir bekannte objektiv hermeneutische Verfahren, das vollständig ohne esoterische Tiefenhermeneutik auskommt, algorithmisch, evolutionär und memetisch ausgerichtet ist und einen Grammatikinduktor (Scheme) , einen Parser (Pascal) und einen Grammatiktransduktur (Lisp) bietet.
32 |
33 | Das Düsseldorfer Schülerinventar ist das einzige mir bekannte quelloffene, valide, reliable und objektive Verfahren, dessen Quellen und Quellcodes überschaubar und nachvollziehbar nachprogrammierbar sind.
34 |
35 | Ich freue mich über Erben, die die Verfahren aufgreifen, nachprogrammieren und/oder für Eigenentwicklungen davon inspirieren lassen.
36 |
37 | The algorithmic recursive sequence analysis is the only objective hermeneutic method known to me that does not require any esoteric deep hermeneutics, is algorithmically, evolutionarily and memetically oriented and offers a grammar inductor (Scheme), a parser (Pascal) and a grammar transductor (Lisp).
38 |
39 | The Düsseldorf student inventory is the only open-source, valid, reliable and objective method that I know of, whose sources and source codes are clear and understandable and can be reprogrammed.
40 |
41 | I am happy about heirs who take up the process, reprogram it and/or let it inspire them for their own developments.
42 |
--------------------------------------------------------------------------------
/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
21 |
22 |
27 |
28 |
33 |
34 |
39 |
40 |
45 |
46 |
51 |
52 |
57 |
58 |
63 |
64 |
69 |
70 |
75 |
76 |
81 |
82 |
87 |
88 |
93 |
94 |
99 |
100 |
105 |
106 |
111 |
112 |
117 |
118 |
123 |
124 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // DuesseldorferSchuelerinventarSwift
4 | //
5 | // Created by Paul Koop on 30.04.20.
6 | // Copyright © 2020 Paul Koop. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ViewController: UIViewController {
12 |
13 |
14 | //Deklaration Normtabelle N SE HS
15 | var normSE = [
16 | [21.33,25.33,29.33,33.32,37.3],
17 | [20.87,24.95,29.03,33.10,37.18],
18 | [17.93,21.37,24.80,28.23,31.67],
19 | [13.98,17.71,21.44,25.17,28.90],
20 | [15.53,18.97,22.40,25.83,29.27],
21 | [24.06,28.55,33.04,37.53,42.01]
22 | ];
23 | //Deklaration Itembezeichner
24 | var items = [
25 | "Zuverlässigkeit",
26 | "Arbeitstempo",
27 | "Arbeitsplanung",
28 | "Organisationsfähigkeit",
29 | "Geschicklichkeit",
30 | "Ordnung",
31 | "Sorgfalt",
32 | "Kreativitaet",
33 | "Problemlosefaehigkeit",
34 | "Abstarktionsvermoegen",
35 | "Selbststaendigkeit",
36 | "Belastbarkeit",
37 | "Konzentrationsfaehigkeit",
38 | "Verantwortungsbewusstsein",
39 | "Eigeninitiative",
40 | "Leistungsbereitschaft",
41 | "Auffassungsgabe",
42 | "Merkfaehigkeit",
43 | "Motivationsfaehigkeit",
44 | "Reflektionsfaehigkeit",
45 | "Teamfaehigkeit",
46 | "Hilfsbereitschaft",
47 | "Kontaktfaehigkeit",
48 | "RespektvollerUmgang",
49 | "Kommunikationsfaehigkeit",
50 | "Einfuehlungsvermoegen",
51 | "Konfliktfaehigkeit",
52 | "Kritikfaehigkeit",
53 | "Schreiben",
54 | "Lesen",
55 | "Mathematik",
56 | "Naturwissenschaften",
57 | "Fremdsprachen",
58 | "Praesentationsfaehigkeit",
59 | "PC-Kenntnisse",
60 | "FaecheruebergreifendesDenken"
61 | ];
62 | //Deklaration Punkte Item SE 1..36 Vorbelegung 2 "selten"
63 | var SEint = [
64 | 2,
65 | 2,
66 | 2,
67 | 2,
68 | 2,
69 | 2,
70 | 2,
71 | 2,
72 | 2,
73 | 2,
74 | 2,
75 | 2,
76 | 2,
77 | 2,
78 | 2,
79 | 2,
80 | 2,
81 | 2,
82 | 2,
83 | 2,
84 | 2,
85 | 2,
86 | 2,
87 | 2,
88 | 2,
89 | 2,
90 | 2,
91 | 2,
92 | 2,
93 | 2,
94 | 2,
95 | 2,
96 | 2,
97 | 2,
98 | 2,
99 | 2
100 | ];
101 | //Deklaration Punkte Kompetenzen 1..6
102 | var SEPint = [[ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0,0 ]];
103 |
104 | //Deklaration Itemnummer
105 | var itemNr = 1
106 |
107 | //---------------------------------------------
108 |
109 | @IBOutlet weak var textItemNr: UITextField!
110 |
111 | @IBOutlet weak var textItem: UITextField!
112 |
113 | @IBOutlet weak var ProgressViewKompetenz1: UIProgressView!
114 |
115 | @IBOutlet weak var ProgressViewKompetenz2: UIProgressView!
116 |
117 | @IBOutlet weak var ProgressViewKompetenz3: UIProgressView!
118 |
119 | @IBOutlet weak var ProgressViewKompetenz4: UIProgressView!
120 |
121 | @IBOutlet weak var ProgressViewKompetenz5: UIProgressView!
122 |
123 | @IBOutlet weak var ProgressViewKompetenz6: UIProgressView!
124 |
125 |
126 | @IBAction func ButtonWeiter(_ sender: UIButton) {
127 | /*
128 | a itemNr +=1;
129 | b wenn itemNr > 36 dann itemNr =1;
130 | c Kompetenzen aus Items aufsummieren
131 | d Durch Vergleich mit Normtabelle Punkte für Kompetenz bestimmen
132 | e Stand Progressbar aktualisieren
133 | */
134 |
135 | //a
136 | itemNr += 1;
137 |
138 | //b
139 | if (itemNr > 36) { itemNr = 1; }
140 | textItem.text = items[itemNr-1];
141 | textItemNr.text = String(itemNr);
142 |
143 | //c
144 |
145 | SEPint[0][0] = SEint[0] + SEint[1] + SEint[2] + SEint[3] + SEint[4] +
146 | SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9];
147 | SEPint[1][0] = SEint[10] + SEint[11] + SEint[12] + SEint[13] + SEint[14] +
148 | SEint[15] + SEint[16] + SEint[17] + SEint[18] + SEint[19];
149 | SEPint[2][0] = SEint[20] + SEint[21] + SEint[22] + SEint[23] + SEint[24] +
150 | SEint[25] + SEint[26] + SEint[27] + SEint[8] + SEint[9];
151 | SEPint[3][0] = SEint[28] + SEint[29] + SEint[30] + SEint[31] + SEint[32] +
152 | SEint[33] + SEint[34] + SEint[35];
153 | SEPint[4][0] = SEint[0] + SEint[1] +
154 | SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9] +
155 | SEint[10] + SEint[11] + SEint[13] + SEint[14];
156 | SEPint[5][0] = SEint[2] + SEint[3] + SEint[4] +
157 | SEint[8] + SEint[9] + SEint[10] +
158 | SEint[16] + SEint[17];
159 |
160 | //d
161 | var punkte = false;
162 | for k in 0...5
163 | {
164 | punkte = false;
165 | for p in 0...4
166 | {
167 | if (Double(SEPint[k][0]) < normSE[k][p])
168 | {
169 | SEPint[k][1] = p + 1;
170 | punkte = true;
171 | break;
172 | }
173 | }
174 | if (!punkte)
175 | {
176 | SEPint[k][1] = 5;
177 | }
178 | }
179 |
180 | //e
181 |
182 |
183 | ProgressViewKompetenz1.progress = Float(Double(SEPint[0][1]) * 0.2);
184 | ProgressViewKompetenz2.progress = Float(Double(SEPint[1][1]) * 0.2);
185 | ProgressViewKompetenz3.progress = Float(Double(SEPint[2][1]) * 0.2);
186 | ProgressViewKompetenz4.progress = Float(Double(SEPint[3][1]) * 0.2);
187 | ProgressViewKompetenz5.progress = Float(Double(SEPint[4][1]) * 0.2);
188 | ProgressViewKompetenz6.progress = Float(Double(SEPint[5][1]) * 0.2);
189 |
190 |
191 | }
192 |
193 |
194 |
195 | @IBAction func ButtonImmer(_ sender: UIButton) {
196 | SEint[itemNr - 1] = 4;
197 | }
198 |
199 | @IBAction func ButtonMeistens(_ sender: UIButton) {
200 | SEint[itemNr - 1] = 3;
201 | }
202 |
203 | @IBAction func ButtonSelten(_ sender: UIButton) {
204 | SEint[itemNr - 1] = 2;
205 | }
206 |
207 | @IBAction func ButtonNie(_ sender: UIButton) {
208 | SEint[itemNr - 1] = 1;
209 | }
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 | override func viewDidLoad() {
223 | super.viewDidLoad()
224 | // Do any additional setup after loading the view, typically from a nib.
225 | }
226 |
227 | override func didReceiveMemoryWarning() {
228 | super.didReceiveMemoryWarning()
229 | // Dispose of any resources that can be recreated.
230 | }
231 |
232 |
233 | }
234 |
235 |
--------------------------------------------------------------------------------
/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Xamarin.Forms;
8 |
9 | namespace DuesseldorferSchuelerinventar
10 | {
11 | [DesignTimeVisible(false)]
12 | public partial class MainPage : ContentPage
13 | {
14 | /********************************************************************************/
15 | /* Paul Koop Düsseldorfer Schülerinventar */
16 | /* Selbsteinschätzung Normtabelle HS */
17 | /********************************************************************************/
18 |
19 | //Deklaration Normtabelle N SE HS
20 | double[,] normSE = new double[,] {
21 | {21.33,25.33,29.33,33.32,37.32},
22 | {20.87,24.95,29.03,33.10,37.18},
23 | {17.93,21.37,24.80,28.23,31.67},
24 | {13.98,17.71,21.44,25.17,28.90},
25 | {15.53,18.97,22.40,25.83,29.27},
26 | {24.06,28.55,33.04,37.53,42.01}
27 |
28 | };
29 |
30 | //Deklaration Punkte Item SE 1..36
31 |
32 | string[] items = new String[] {
33 | "Zuverlaessigkeit",
34 | "Arbeitstempo",
35 | "Arbeitsplanung",
36 | "Organisationsfähigkeit",
37 | "Geschicklichkeit",
38 | "Ordnung",
39 | "Sorgfalt",
40 | "Kreativitaet",
41 | "Problemlosefaehigkeit",
42 | "Abstarktionsvermoegen",
43 | "Selbststaendigkeit",
44 | "Belastbarkeit",
45 | "Konzentrationsfaehigkeit",
46 | "Verantwortungsbewusstsein",
47 | "Eigeninitiative",
48 | "Leistungsbereitschaft",
49 | "Auffassungsgabe",
50 | "Merkfaehigkeit",
51 | "Motivationsfaehigkeit",
52 | "Reflektionsfaehigkeit",
53 | "Teamfaehigkeit",
54 | "Hilfsbereitschaft",
55 | "Kontaktfaehigkeit",
56 | "RespektvollerUmgang",
57 | "Kommunikationsfaehigkeit",
58 | "Einfuehlungsvermoegen",
59 | "Konfliktfaehigkeit",
60 | "Kritikfaehigkeit",
61 | "Schreiben",
62 | "Lesen",
63 | "Mathematik",
64 | "Naturwissenschaften",
65 | "Fremdsprachen",
66 | "Praesentationsfaehigkeit",
67 | "PC-Kenntnisse",
68 | "FaecheruebergreifendesDenken"};
69 |
70 | //Deklaration Punkte Item SE 1..36 Vorbelegung 2 "selten"
71 |
72 | int[] SEint = new int[]{
73 | 2,
74 | 2,
75 | 2,
76 | 2,
77 | 2,
78 | 2,
79 | 2,
80 | 2,
81 | 2,
82 | 2,
83 | 2,
84 | 2,
85 | 2,
86 | 2,
87 | 2,
88 | 2,
89 | 2,
90 | 2,
91 | 2,
92 | 2,
93 | 2,
94 | 2,
95 | 2,
96 | 2,
97 | 2,
98 | 2,
99 | 2,
100 | 2,
101 | 2,
102 | 2,
103 | 2,
104 | 2,
105 | 2,
106 | 2,
107 | 2,
108 | 2
109 | };
110 |
111 | //Deklaration Punkte Kompetenzen 1..6
112 |
113 | int[,] SEPint = new int[,] { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } };
114 |
115 | //Deklaration Itemnummer
116 | int itemNr;
117 |
118 | public MainPage()
119 | {
120 | InitializeComponent();
121 | itemNr = Convert.ToInt32(textItemNr.Text);
122 | }
123 |
124 |
125 | private void ButtonWeiter_Clicked(object sender, EventArgs e)
126 | {
127 | /*
128 | a itemNr +=1;
129 | b wenn itemNr > 36 dann itemNr =1;
130 | c Kompetenzen aus Items aufsummieren
131 | d Durch Vergleich mit Normtabelle Punkte für Kompetenz bestimmen
132 | e Stand Progressbar aktualisieren
133 | */
134 |
135 | //a
136 | itemNr += 1;
137 | //b
138 | if (itemNr > 36) { itemNr = 1; }
139 | textItemNr.Text = Convert.ToString(itemNr);
140 | textItem.Text = items[itemNr - 1];
141 | //c
142 |
143 |
144 | SEPint[0, 0] = SEint[0] + SEint[1] + SEint[2] + SEint[3] + SEint[4] +
145 | SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9];
146 | SEPint[1, 0] = SEint[10] + SEint[11] + SEint[12] + SEint[13] + SEint[14] +
147 | SEint[15] + SEint[16] + SEint[17] + SEint[18] + SEint[19];
148 | SEPint[2, 0] = SEint[20] + SEint[21] + SEint[22] + SEint[23] + SEint[24] +
149 | SEint[25] + SEint[26] + SEint[27] + SEint[8] + SEint[9];
150 | SEPint[3, 0] = SEint[28] + SEint[29] + SEint[30] + SEint[31] + SEint[32] +
151 | SEint[33] + SEint[34] + SEint[35];
152 | SEPint[4, 0] = SEint[0] + SEint[1] +
153 | SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9] +
154 | SEint[10] + SEint[11] + SEint[13] + SEint[14];
155 | SEPint[5, 0] = SEint[2] + SEint[3] + SEint[4] +
156 | SEint[8] + SEint[9] + SEint[10] +
157 | SEint[16] + SEint[17];
158 | //d
159 | bool punkte = false;
160 |
161 | for (int k = 0; k <= 5; k++)
162 | {
163 | punkte = false;
164 | for (int p = 0; p <= 4; p++)
165 | {
166 | if (SEPint[k, 0] < (int)normSE[k, p])
167 | {
168 | SEPint[k, 1] = p + 1;
169 | punkte = true;
170 | p = 5;
171 | }
172 | }
173 | if (!punkte)
174 | {
175 | SEPint[k, 1] = 5;
176 | }
177 | }
178 | //e
179 | progressBarKompetenz1.Progress = (SEPint[0, 1] * 0.2);
180 | progressBarKompetenz2.Progress = (SEPint[1, 1] * 0.2);
181 | progressBarKompetenz3.Progress = (SEPint[2, 1] * 0.2);
182 | progressBarKompetenz4.Progress = (SEPint[3, 1] * 0.2);
183 | progressBarKompetenz5.Progress = (SEPint[4, 1] * 0.2);
184 | progressBarKompetenz6.Progress = (SEPint[5, 1] * 0.2);
185 |
186 | }
187 |
188 | private void ButtonImmer_Clicked(object sender, EventArgs e)
189 | {
190 | SEint[itemNr - 1] = 4;
191 | }
192 |
193 | private void ButtonMeistens_Clicked(object sender, EventArgs e)
194 | {
195 | SEint[itemNr - 1] = 3;
196 | }
197 |
198 | private void ButtonSelten_Clicked(object sender, EventArgs e)
199 | {
200 | SEint[itemNr - 1] = 2;
201 | }
202 |
203 | private void ButtonNie_Clicked(object sender, EventArgs e)
204 | {
205 | SEint[itemNr - 1] = 1;
206 | }
207 |
208 | }
209 | }
210 |
211 |
--------------------------------------------------------------------------------
/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.duesseldorferschuelerinventar;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.annotation.SuppressLint;
6 | import android.os.Bundle;
7 | import android.view.View;
8 | import android.widget.Button;
9 | import android.widget.EditText;
10 | import android.widget.ProgressBar;
11 | import android.widget.TextView;
12 |
13 | public class MainActivity extends AppCompatActivity implements View.OnClickListener {
14 | /********************************************************************************/
15 | /* Paul Koop Düsseldorfer Schülerinventar */
16 | /* Selbsteinschätzung Normtabelle HS */
17 | /********************************************************************************/
18 |
19 | //Deklaration Normtabelle N SE HS
20 | double [][] normSE ={
21 | {21.33,25.33,29.33,33.32,37.32},
22 | {20.87,24.95,29.03,33.10,37.18},
23 | {17.93,21.37,24.80,28.23,31.67},
24 | {13.98,17.71,21.44,25.17,28.90},
25 | {15.53,18.97,22.40,25.83,29.27},
26 | {24.06,28.55,33.04,37.53,42.01}
27 |
28 | };
29 |
30 | //Deklaration Punkte Item SE 1..36
31 |
32 | String [] items ={
33 | "Zuverlaessigkeit",
34 | "Arbeitstempo",
35 | "Arbeitsplanung",
36 | "Organisationsfähigkeit",
37 | "Geschicklichkeit",
38 | "Ordnung",
39 | "Sorgfalt",
40 | "Kreativitaet",
41 | "Problemlosefaehigkeit",
42 | "Abstarktionsvermoegen",
43 | "Selbststaendigkeit",
44 | "Belastbarkeit",
45 | "Konzentrationsfaehigkeit",
46 | "Verantwortungsbewusstsein",
47 | "Eigeninitiative",
48 | "Leistungsbereitschaft",
49 | "Auffassungsgabe",
50 | "Merkfaehigkeit",
51 | "Motivationsfaehigkeit",
52 | "Reflektionsfaehigkeit",
53 | "Teamfaehigkeit",
54 | "Hilfsbereitschaft",
55 | "Kontaktfaehigkeit",
56 | "RespektvollerUmgang",
57 | "Kommunikationsfaehigkeit",
58 | "Einfuehlungsvermoegen",
59 | "Konfliktfaehigkeit",
60 | "Kritikfaehigkeit",
61 | "Schreiben",
62 | "Lesen",
63 | "Mathematik",
64 | "Naturwissenschaften",
65 | "Fremdsprachen",
66 | "Praesentationsfaehigkeit",
67 | "PC-Kenntnisse",
68 | "FaecheruebergreifendesDenken"};
69 |
70 | //Deklaration Punkte Item SE 1..36 Vorbelegung 2 "selten"
71 |
72 | int [] SEint = {
73 | 2,
74 | 2,
75 | 2,
76 | 2,
77 | 2,
78 | 2,
79 | 2,
80 | 2,
81 | 2,
82 | 2,
83 | 2,
84 | 2,
85 | 2,
86 | 2,
87 | 2,
88 | 2,
89 | 2,
90 | 2,
91 | 2,
92 | 2,
93 | 2,
94 | 2,
95 | 2,
96 | 2,
97 | 2,
98 | 2,
99 | 2,
100 | 2,
101 | 2,
102 | 2,
103 | 2,
104 | 2,
105 | 2,
106 | 2,
107 | 2,
108 | 2
109 | };
110 |
111 | //Deklaration Punkte Kompetenzen 1..6
112 |
113 | int [][] SEPint = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
114 |
115 |
116 | @Override
117 | protected void onCreate(Bundle savedInstanceState) {
118 | super.onCreate(savedInstanceState);
119 | setContentView(R.layout.activity_main);
120 |
121 | Button buttonImmer = findViewById(R.id.buttonImmer);
122 | buttonImmer.setOnClickListener(this);
123 |
124 | Button buttonMeistens = findViewById(R.id.buttonMeistens);
125 | buttonMeistens.setOnClickListener(this);
126 |
127 | Button buttonSelten = findViewById(R.id.buttonSelten);
128 | buttonSelten.setOnClickListener(this);
129 |
130 | Button buttonNie = findViewById(R.id.buttonNie);
131 | buttonNie.setOnClickListener(this);
132 |
133 | Button buttonWeiter = findViewById(R.id.buttonWeiter);
134 | buttonWeiter.setOnClickListener(this);
135 |
136 |
137 | }
138 |
139 | @SuppressLint("SetTextI18n")
140 | @Override
141 | public void onClick(View view) {
142 |
143 |
144 | TextView textItemNr = findViewById(R.id.textItemNr);
145 | TextView textItem = findViewById(R.id.textItem);
146 | TextView textBis = findViewById(R.id.textBis);
147 |
148 | int itemNr = Integer.parseInt(textItemNr.getText().toString());
149 | // textItemNr.setText(Integer.toString(itemNr));
150 |
151 | ProgressBar progressBarKompetenz1 = findViewById(R.id.progressBarKompetenz1);
152 | // progressBarKompetenz1.setProgress(x) und 0 <= x <= 100
153 | ProgressBar progressBarKompetenz2 = findViewById(R.id.progressBarKompetenz2);
154 | // progressBarKompetenz2.setProgress(x) und 0 <= x <= 100
155 | ProgressBar progressBarKompetenz3 = findViewById(R.id.progressBarKompetenz3);
156 | // progressBarKompetenz3.setProgress(x) und 0 <= x <= 100
157 | ProgressBar progressBarKompetenz4 = findViewById(R.id.progressBarKompetenz4);
158 | // progressBarKompetenz4.setProgress(x) und 0 <= x <= 100
159 | ProgressBar progressBarKompetenz5 = findViewById(R.id.progressBarKompetenz5);
160 | // progressBarKompetenz5.setProgress(x) und 0 <= x <= 100
161 | ProgressBar progressBarKompetenz6 = findViewById(R.id.progressBarKompetenz6);
162 | // progressBarKompetenz6.setProgress(x) und 0 <= x <= 100
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 | switch (view.getId()){
172 | case R.id.buttonImmer:
173 | //wenn itemNr >0 dann Itempunkt 4
174 | SEint[itemNr-1]=4;
175 | break;
176 |
177 | case R.id.buttonMeistens:
178 | //wenn itemNr >0 dann Itempunkt 3
179 | SEint[itemNr-1]=3;
180 | break;
181 |
182 | case R.id.buttonSelten:
183 | //wenn itemNr >0 dann Itempunkt 2
184 | SEint[itemNr-1]=2;
185 | break;
186 |
187 | case R.id.buttonNie:
188 | //wenn itemNr >0 dann Itempunkt 1
189 | SEint[itemNr-1]=1;
190 | break;
191 |
192 | case R.id.buttonWeiter:
193 | /*
194 | a itemNr +=1;
195 | b wenn itemNr > 36 dann itemNr =1;
196 | c Kompetenzen aus Items aufsummieren
197 | d Durch Vergleich mit Normtabelle Punkte für Kompetenz bestimmen
198 | e Stand Progressbar aktualisieren
199 | */
200 |
201 | //a
202 | itemNr +=1;
203 | //b
204 | if (itemNr >36) {itemNr =1;}
205 | textItemNr.setText(Integer.toString(itemNr));
206 | textItem.setText(items[itemNr-1]);
207 | //c
208 |
209 |
210 | SEPint[0][0]=SEint[0]+ SEint[1]+ SEint[2]+ SEint[3]+ SEint[4]+
211 | SEint[5]+ SEint[6]+ SEint[7]+ SEint[8]+ SEint[9];
212 | SEPint[1][0]=SEint[10]+ SEint[11]+ SEint[12]+ SEint[13]+ SEint[14]+
213 | SEint[15]+ SEint[16]+ SEint[17]+ SEint[18]+ SEint[19];
214 | SEPint[2][0]=SEint[20]+ SEint[21]+ SEint[22]+ SEint[23]+ SEint[24]+
215 | SEint[25]+ SEint[26]+ SEint[27]+ SEint[8]+ SEint[9];
216 | SEPint[3][0]=SEint[28]+ SEint[29]+ SEint[30]+ SEint[31]+ SEint[32]+
217 | SEint[33]+ SEint[34]+ SEint[35];
218 | SEPint[4][0]=SEint[0]+ SEint[1]+
219 | SEint[5]+ SEint[6]+ SEint[7]+ SEint[8]+ SEint[9]+
220 | SEint[10]+SEint[11]+ SEint[13]+ SEint[14];
221 | SEPint[5][0]=SEint[2]+ SEint[3]+ SEint[4]+
222 | SEint[8]+ SEint[9]+ SEint[10]+
223 | SEint[16]+ SEint[17];
224 | //d
225 | boolean punkte=false;
226 |
227 | for (int k=0;k<=5;k++){
228 | punkte=false;
229 | for (int p=0;p<=4;p++){
230 | if (SEPint[k][0]< (int) normSE[k][p]){
231 | SEPint[k][1]=p+1;
232 | punkte=true;
233 | p=5;
234 | }
235 | }
236 | if (!punkte){
237 | SEPint[k][1]=5;
238 | }
239 | }
240 | //e
241 | progressBarKompetenz1.setProgress(SEPint[0][1]*20);
242 | progressBarKompetenz2.setProgress(SEPint[1][1]*20);
243 | progressBarKompetenz3.setProgress(SEPint[2][1]*20);
244 | progressBarKompetenz4.setProgress(SEPint[3][1]*20);
245 | progressBarKompetenz5.setProgress(SEPint[4][1]*20);
246 | progressBarKompetenz6.setProgress(SEPint[5][1]*20);
247 |
248 |
249 | break;
250 |
251 |
252 | }
253 | }
254 | }
255 |
--------------------------------------------------------------------------------
/ViewController_DB.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // DuesseldorferSchuelerinventarSwift
4 | //
5 | // Created by Paul Koop on 30.04.20.
6 | // Copyright © 2020 Paul Koop. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ViewController: UIViewController {
12 |
13 |
14 | //Deklaration Normtabelle N SE HS
15 | var normSE = [
16 | [21.33,25.33,29.33,33.32,37.3],
17 | [20.87,24.95,29.03,33.10,37.18],
18 | [17.93,21.37,24.80,28.23,31.67],
19 | [13.98,17.71,21.44,25.17,28.90],
20 | [24.06,28.55,33.04,37.53,42.01],
21 | [15.53,18.97,22.40,25.83,29.27]
22 | ];
23 | //Deklaration Itembezeichner
24 | var items = [
25 | "Zuverlässigkeit",
26 | "Arbeitstempo",
27 | "Arbeitsplanung",
28 | "Organisationsfähigkeit",
29 | "Geschicklichkeit",
30 | "Ordnung",
31 | "Sorgfalt",
32 | "Kreativitaet",
33 | "Problemlosefaehigkeit",
34 | "Abstarktionsvermoegen",
35 | "Selbststaendigkeit",
36 | "Belastbarkeit",
37 | "Konzentrationsfaehigkeit",
38 | "Verantwortungsbewusstsein",
39 | "Eigeninitiative",
40 | "Leistungsbereitschaft",
41 | "Auffassungsgabe",
42 | "Merkfaehigkeit",
43 | "Motivationsfaehigkeit",
44 | "Reflektionsfaehigkeit",
45 | "Teamfaehigkeit",
46 | "Hilfsbereitschaft",
47 | "Kontaktfaehigkeit",
48 | "RespektvollerUmgang",
49 | "Kommunikationsfaehigkeit",
50 | "Einfuehlungsvermoegen",
51 | "Konfliktfaehigkeit",
52 | "Kritikfaehigkeit",
53 | "Schreiben",
54 | "Lesen",
55 | "Mathematik",
56 | "Naturwissenschaften",
57 | "Fremdsprachen",
58 | "Praesentationsfaehigkeit",
59 | "PC-Kenntnisse",
60 | "FaecheruebergreifendesDenken"
61 | ];
62 | //Deklaration Punkte Item SE 1..36 Vorbelegung 2 "selten"
63 | var SEint = [
64 | 2,
65 | 2,
66 | 2,
67 | 2,
68 | 2,
69 | 2,
70 | 2,
71 | 2,
72 | 2,
73 | 2,
74 | 2,
75 | 2,
76 | 2,
77 | 2,
78 | 2,
79 | 2,
80 | 2,
81 | 2,
82 | 2,
83 | 2,
84 | 2,
85 | 2,
86 | 2,
87 | 2,
88 | 2,
89 | 2,
90 | 2,
91 | 2,
92 | 2,
93 | 2,
94 | 2,
95 | 2,
96 | 2,
97 | 2,
98 | 2,
99 | 2
100 | ];
101 | //Deklaration Punkte Kompetenzen 1..6
102 | var SEPint = [[ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0, 0 ], [ 0,0 ]];
103 |
104 | //Deklaration Itemnummer
105 | var itemNr = 1
106 | //Deklaration Profilid
107 | var profilid = 0
108 |
109 | //Deklaration Normtabelle lesen
110 |
111 | func readNormTable() -> [[Double]] {
112 | let phpScriptUrl = "https://mein-duesk.org/readNormTable.php"
113 |
114 | guard let url = URL(string: phpScriptUrl) else {
115 | print("Ungültige URL: \(phpScriptUrl)")
116 | return []
117 | }
118 |
119 | do {
120 | let data = try Data(contentsOf: url)
121 | let jsonDecoder = JSONDecoder()
122 | let normSE = try jsonDecoder.decode([[Double]].self, from: data)
123 | return normSE
124 | } catch {
125 | print("Fehler beim Lesen der Normtabelle: \(error.localizedDescription)")
126 | return []
127 | }
128 | }
129 |
130 | //Deklaration Prolil lesen
131 | func readSEint(profilid: Int) -> [Int] {
132 | let phpScriptUrl = "https://mein-duesk.org/readSEint.php?profilid=\(profilid)"
133 |
134 | guard let url = URL(string: phpScriptUrl) else {
135 | print("Ungültige URL: \(phpScriptUrl)")
136 | return []
137 | }
138 |
139 | do {
140 | let data = try Data(contentsOf: url)
141 | let jsonDecoder = JSONDecoder()
142 | let SEint = try jsonDecoder.decode([Int].self, from: data)
143 | return SEint
144 | } catch {
145 | print("Fehler beim Lesen der SEint-Daten: \(error.localizedDescription)")
146 | return []
147 | }
148 | }
149 |
150 | //Deklaration Profil Einfuegen updaten
151 | func insertOrUpdateSEint(SEint: [Int], profilid: Int) -> Int? {
152 | var newProfilID: Int?
153 | let semaphore = DispatchSemaphore(value: 0)
154 |
155 | // Erstelle die URL für die PHP-Datei
156 | guard let url = URL(string: "https://mein-duesk.org/insertOrUpdateSEint.php") else {
157 | print("Fehler: Ungültige URL")
158 | return nil
159 | }
160 |
161 | // Erstelle die Anfrage
162 | var request = URLRequest(url: url)
163 | request.httpMethod = "POST"
164 |
165 | // Füge die Daten als HTTP-Body hinzu
166 | let parameters: [String: Any] = [
167 | "SEint": SEint,
168 | "profilid": profilid
169 | ]
170 | do {
171 | request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: [])
172 | } catch {
173 | print("Fehler: Fehler beim Serialisieren der Daten")
174 | return nil
175 | }
176 |
177 | // Führe die Anfrage aus
178 | let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
179 | guard let data = data, error == nil else {
180 | print("Fehler: \(error?.localizedDescription ?? "Unbekannter Fehler")")
181 | semaphore.signal()
182 | return
183 | }
184 |
185 | // Verarbeite die Antwort
186 | if let responseString = String(data: data, encoding: .utf8) {
187 | if let profilID = Int(responseString) {
188 | newProfilID = profilID
189 | } else {
190 | print("Fehler: Ungültige Profil-ID")
191 | }
192 | } else {
193 | print("Fehler: Ungültige Antwort")
194 | }
195 |
196 | semaphore.signal()
197 | }
198 |
199 | task.resume()
200 | semaphore.wait()
201 |
202 | return newProfilID
203 | }
204 |
205 |
206 | //---------------------------------------------
207 |
208 | @IBOutlet weak var textItemNr: UITextField!
209 |
210 | @IBOutlet weak var textItem: UITextField!
211 |
212 | @IBOutlet weak var ProgressViewKompetenz1: UIProgressView!
213 |
214 | @IBOutlet weak var ProgressViewKompetenz2: UIProgressView!
215 |
216 | @IBOutlet weak var ProgressViewKompetenz3: UIProgressView!
217 |
218 | @IBOutlet weak var ProgressViewKompetenz4: UIProgressView!
219 |
220 | @IBOutlet weak var ProgressViewKompetenz5: UIProgressView!
221 |
222 | @IBOutlet weak var ProgressViewKompetenz6: UIProgressView!
223 |
224 |
225 | @IBAction func ButtonWeiter(_ sender: UIButton) {
226 | /*
227 | a itemNr +=1;
228 | b wenn itemNr > 36 dann itemNr =1;
229 | c Kompetenzen aus Items aufsummieren
230 | d Durch Vergleich mit Normtabelle Punkte für Kompetenz bestimmen
231 | e Stand Progressbar aktualisieren
232 | */
233 |
234 | //a
235 | itemNr += 1;
236 |
237 | //b
238 | if (itemNr > 36) { itemNr = 1;
239 | let profilid = insertOrUpdateSEint(SEint: SEint, profilid: profilid);
240 | if (profilid > 0) {let SEinttest = readSEint(profilid: profilid);
241 | if (SEinttest != nil) {
242 | SEint = SEinttest}
243 | }
244 |
245 | }
246 | textItem.text = items[itemNr-1];
247 | textItemNr.text = String(itemNr);
248 |
249 | //c
250 |
251 | SEPint[0][0] = SEint[0] + SEint[1] + SEint[2] + SEint[3] + SEint[4] +
252 | SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9];
253 | SEPint[1][0] = SEint[10] + SEint[11] + SEint[12] + SEint[13] + SEint[14] +
254 | SEint[15] + SEint[16] + SEint[17] + SEint[18] + SEint[19];
255 | SEPint[2][0] = SEint[20] + SEint[21] + SEint[22] + SEint[23] + SEint[24] +
256 | SEint[25] + SEint[26] + SEint[27] + SEint[8] + SEint[9];
257 | SEPint[3][0] = SEint[28] + SEint[29] + SEint[30] + SEint[31] + SEint[32] +
258 | SEint[33] + SEint[34] + SEint[35];
259 | SEPint[4][0] = SEint[0] + SEint[1] +
260 | SEint[5] + SEint[6] + SEint[7] + SEint[8] + SEint[9] +
261 | SEint[10] + SEint[11] + SEint[13] + SEint[14];
262 | SEPint[5][0] = SEint[2] + SEint[3] + SEint[4] +
263 | SEint[8] + SEint[9] + SEint[10] +
264 | SEint[16] + SEint[17];
265 |
266 | //d
267 | var punkte = false;
268 | for k in 0...5
269 | {
270 | punkte = false;
271 | for p in 0...4
272 | {
273 | if (Double(SEPint[k][0]) < normSE[k][p])
274 | {
275 | SEPint[k][1] = p + 1;
276 | punkte = true;
277 | break;
278 | }
279 | }
280 | if (!punkte)
281 | {
282 | SEPint[k][1] = 5;
283 | }
284 | }
285 |
286 | //e
287 |
288 |
289 | ProgressViewKompetenz1.progress = Float(Double(SEPint[0][1]) * 0.2);
290 | ProgressViewKompetenz2.progress = Float(Double(SEPint[1][1]) * 0.2);
291 | ProgressViewKompetenz3.progress = Float(Double(SEPint[2][1]) * 0.2);
292 | ProgressViewKompetenz4.progress = Float(Double(SEPint[3][1]) * 0.2);
293 | ProgressViewKompetenz5.progress = Float(Double(SEPint[4][1]) * 0.2);
294 | ProgressViewKompetenz6.progress = Float(Double(SEPint[5][1]) * 0.2);
295 |
296 |
297 | }
298 |
299 |
300 |
301 | @IBAction func ButtonImmer(_ sender: UIButton) {
302 | SEint[itemNr - 1] = 4;
303 | }
304 |
305 | @IBAction func ButtonMeistens(_ sender: UIButton) {
306 | SEint[itemNr - 1] = 3;
307 | }
308 |
309 | @IBAction func ButtonSelten(_ sender: UIButton) {
310 | SEint[itemNr - 1] = 2;
311 | }
312 |
313 | @IBAction func ButtonNie(_ sender: UIButton) {
314 | SEint[itemNr - 1] = 1;
315 | }
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 | override func viewDidLoad() {
329 | super.viewDidLoad()
330 | // Do any additional setup after loading the view, typically from a nib.
331 | let normSEtest = readNormTable();
332 | if (normSEtest != [[]]){
333 | let normSE = normSEtest;
334 | }
335 | }
336 |
337 | override func didReceiveMemoryWarning() {
338 | super.didReceiveMemoryWarning()
339 | // Dispose of any resources that can be recreated.
340 | }
341 |
342 |
343 | }
344 |
345 |
--------------------------------------------------------------------------------
/MainActivity_DBzugriff.java:
--------------------------------------------------------------------------------
1 | package com.example.duesseldorferschuelerinventar;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | import android.annotation.SuppressLint;
6 | import android.os.Bundle;
7 | import android.view.View;
8 | import android.widget.Button;
9 | import android.widget.EditText;
10 | import android.widget.ProgressBar;
11 | import android.widget.TextView;
12 | import java.io.BufferedReader;
13 | import java.io.InputStreamReader;
14 | import java.net.HttpURLConnection;
15 | import java.net.URL;
16 |
17 | public class MainActivity extends AppCompatActivity implements View.OnClickListener {
18 | /********************************************************************************/
19 | /* Paul Koop Düsseldorfer Schülerinventar */
20 | /* Selbsteinschätzung Normtabelle HS */
21 | /********************************************************************************/
22 | //Deklaration profilid
23 | int profilid = 0;
24 |
25 | //Deklaration Normtabelle N SE HS
26 | double [][] normSE ={
27 | {21.33,25.33,29.33,33.32,37.32},
28 | {20.87,24.95,29.03,33.10,37.18},
29 | {17.93,21.37,24.80,28.23,31.67},
30 | {13.98,17.71,21.44,25.17,28.90},
31 | {24.06,28.55,33.04,37.53,42.01},
32 | {15.53,18.97,22.40,25.83,29.27}
33 |
34 |
35 | };
36 |
37 | //Deklaration Punkte Item SE 1..36
38 |
39 | String [] items ={
40 | "Zuverlaessigkeit",
41 | "Arbeitstempo",
42 | "Arbeitsplanung",
43 | "Organisationsfähigkeit",
44 | "Geschicklichkeit",
45 | "Ordnung",
46 | "Sorgfalt",
47 | "Kreativitaet",
48 | "Problemlosefaehigkeit",
49 | "Abstarktionsvermoegen",
50 | "Selbststaendigkeit",
51 | "Belastbarkeit",
52 | "Konzentrationsfaehigkeit",
53 | "Verantwortungsbewusstsein",
54 | "Eigeninitiative",
55 | "Leistungsbereitschaft",
56 | "Auffassungsgabe",
57 | "Merkfaehigkeit",
58 | "Motivationsfaehigkeit",
59 | "Reflektionsfaehigkeit",
60 | "Teamfaehigkeit",
61 | "Hilfsbereitschaft",
62 | "Kontaktfaehigkeit",
63 | "RespektvollerUmgang",
64 | "Kommunikationsfaehigkeit",
65 | "Einfuehlungsvermoegen",
66 | "Konfliktfaehigkeit",
67 | "Kritikfaehigkeit",
68 | "Schreiben",
69 | "Lesen",
70 | "Mathematik",
71 | "Naturwissenschaften",
72 | "Fremdsprachen",
73 | "Praesentationsfaehigkeit",
74 | "PC-Kenntnisse",
75 | "FaecheruebergreifendesDenken"};
76 |
77 | //Deklaration Punkte Item SE 1..36 Vorbelegung 2 "selten"
78 |
79 | int [] SEint = {
80 | 2,
81 | 2,
82 | 2,
83 | 2,
84 | 2,
85 | 2,
86 | 2,
87 | 2,
88 | 2,
89 | 2,
90 | 2,
91 | 2,
92 | 2,
93 | 2,
94 | 2,
95 | 2,
96 | 2,
97 | 2,
98 | 2,
99 | 2,
100 | 2,
101 | 2,
102 | 2,
103 | 2,
104 | 2,
105 | 2,
106 | 2,
107 | 2,
108 | 2,
109 | 2,
110 | 2,
111 | 2,
112 | 2,
113 | 2,
114 | 2,
115 | 2
116 | };
117 |
118 | //Deklaration Punkte Kompetenzen 1..6
119 |
120 | int [][] SEPint = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
121 |
122 | // Deklaration Profil Insert oder Update
123 | public int insertOrUpdateSEint(int profilid, int[] SEint) {
124 | try {
125 | String phpScriptUrl = "https://mein-duesk.org/insertOrUpdateSEint.php";
126 | String parameters = "?profilid=" + profilid + "&SEint=" + arrayToString(SEint);
127 |
128 | URL url = new URL(phpScriptUrl + parameters);
129 | HttpURLConnection connection = (HttpURLConnection) url.openConnection();
130 | connection.setRequestMethod("GET");
131 |
132 | BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
133 | String response = reader.readLine();
134 |
135 | reader.close();
136 | connection.disconnect();
137 |
138 | //System.out.println("Server Response: " + response);
139 | return Integer.parseInt(response);
140 | } catch (Exception e) {
141 | e.printStackTrace();
142 | }
143 | return -1;
144 | }
145 |
146 | private static String arrayToString(int[] array) {
147 | StringBuilder sb = new StringBuilder();
148 | for (int i = 0; i < array.length; i++) {
149 | sb.append(array[i]);
150 | if (i < array.length - 1) {
151 | sb.append(",");
152 | }
153 | }
154 | return sb.toString();
155 | }
156 | // Normtabelle einlesen
157 | public static double[][] readNormTable() {
158 | String phpScriptUrl = "https://mein-duesk.org/readNormTable.php";
159 |
160 | try {
161 | // Verbindung zum PHP-Skript herstellen
162 | URL url = new URL(phpScriptUrl);
163 | HttpURLConnection connection = (HttpURLConnection) url.openConnection();
164 | connection.setRequestMethod("GET");
165 |
166 | // Antwort des Servers abrufen
167 | int responseCode = connection.getResponseCode();
168 |
169 | // Prüfen, ob die Anfrage erfolgreich war
170 | if (responseCode == HttpURLConnection.HTTP_OK) {
171 | // Antwort lesen
172 | BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
173 | String line;
174 | StringBuilder response = new StringBuilder();
175 |
176 | while ((line = reader.readLine()) != null) {
177 | response.append(line);
178 | }
179 |
180 | reader.close();
181 | connection.disconnect();
182 |
183 | // Daten aus der Antwort parsen und in das normSE-Array einfügen
184 | String[] rows = response.toString().split(";");
185 | double[][] normSE = new double[rows.length][];
186 | for (int i = 0; i < rows.length; i++) {
187 | String[] columns = rows[i].split(",");
188 | normSE[i] = new double[columns.length];
189 | for (int j = 0; j < columns.length; j++) {
190 | normSE[i][j] = Double.parseDouble(columns[j]);
191 | }
192 | }
193 |
194 | return normSE;
195 | } else {
196 | System.out.println("Fehler beim Abrufen der Normtabelle. Serverantwort: " + responseCode);
197 | return null;
198 | }
199 | } catch (Exception e) {
200 | e.printStackTrace();
201 | return null;
202 | }
203 | }
204 |
205 | //SEint Lesen
206 | public static int[] readSEint(int profilid) {
207 | String phpScriptUrl = "https://mein-duesk.org/readSEint.php?profilid=" + profilid;
208 |
209 | try {
210 | // Verbindung zum PHP-Skript herstellen
211 | URL url = new URL(phpScriptUrl);
212 | HttpURLConnection connection = (HttpURLConnection) url.openConnection();
213 | connection.setRequestMethod("GET");
214 |
215 | // Antwort des Servers abrufen
216 | int responseCode = connection.getResponseCode();
217 |
218 | // Prüfen, ob die Anfrage erfolgreich war
219 | if (responseCode == HttpURLConnection.HTTP_OK) {
220 | // Antwort lesen
221 | BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
222 | String line;
223 | StringBuilder response = new StringBuilder();
224 |
225 | while ((line = reader.readLine()) != null) {
226 | response.append(line);
227 | }
228 |
229 | reader.close();
230 | connection.disconnect();
231 |
232 | // Daten aus der Antwort parsen und in das SEint-Array einfügen
233 | String[] values = response.toString().split(",");
234 | int[] SEint = new int[values.length];
235 | for (int i = 0; i < values.length; i++) {
236 | SEint[i] = Integer.parseInt(values[i]);
237 | }
238 |
239 | return SEint;
240 | } else {
241 | System.out.println("Fehler beim Abrufen der SEint-Werte. Serverantwort: " + responseCode);
242 | return null;
243 | }
244 | } catch (Exception e) {
245 | e.printStackTrace();
246 | return null;
247 | }
248 | }
249 |
250 |
251 | @Override
252 | protected void onCreate(Bundle savedInstanceState) {
253 | super.onCreate(savedInstanceState);
254 | setContentView(R.layout.activity_main);
255 |
256 | Button buttonImmer = findViewById(R.id.buttonImmer);
257 | buttonImmer.setOnClickListener(this);
258 |
259 | Button buttonMeistens = findViewById(R.id.buttonMeistens);
260 | buttonMeistens.setOnClickListener(this);
261 |
262 | Button buttonSelten = findViewById(R.id.buttonSelten);
263 | buttonSelten.setOnClickListener(this);
264 |
265 | Button buttonNie = findViewById(R.id.buttonNie);
266 | buttonNie.setOnClickListener(this);
267 |
268 | Button buttonWeiter = findViewById(R.id.buttonWeiter);
269 | buttonWeiter.setOnClickListener(this);
270 |
271 | double [][] normSEtest = readNormTable();
272 | if (normSEtest != null) {normSE = normSEtest;}
273 |
274 |
275 | }
276 |
277 | @SuppressLint("SetTextI18n")
278 | @Override
279 | public void onClick(View view) {
280 |
281 |
282 | TextView textItemNr = findViewById(R.id.textItemNr);
283 | TextView textItem = findViewById(R.id.textItem);
284 | TextView textBis = findViewById(R.id.textBis);
285 |
286 | int itemNr = Integer.parseInt(textItemNr.getText().toString());
287 | // textItemNr.setText(Integer.toString(itemNr));
288 |
289 | ProgressBar progressBarKompetenz1 = findViewById(R.id.progressBarKompetenz1);
290 | // progressBarKompetenz1.setProgress(x) und 0 <= x <= 100
291 | ProgressBar progressBarKompetenz2 = findViewById(R.id.progressBarKompetenz2);
292 | // progressBarKompetenz2.setProgress(x) und 0 <= x <= 100
293 | ProgressBar progressBarKompetenz3 = findViewById(R.id.progressBarKompetenz3);
294 | // progressBarKompetenz3.setProgress(x) und 0 <= x <= 100
295 | ProgressBar progressBarKompetenz4 = findViewById(R.id.progressBarKompetenz4);
296 | // progressBarKompetenz4.setProgress(x) und 0 <= x <= 100
297 | ProgressBar progressBarKompetenz5 = findViewById(R.id.progressBarKompetenz5);
298 | // progressBarKompetenz5.setProgress(x) und 0 <= x <= 100
299 | ProgressBar progressBarKompetenz6 = findViewById(R.id.progressBarKompetenz6);
300 | // progressBarKompetenz6.setProgress(x) und 0 <= x <= 100
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 | switch (view.getId()){
310 | case R.id.buttonImmer:
311 | //wenn itemNr >0 dann Itempunkt 4
312 | SEint[itemNr-1]=4;
313 | break;
314 |
315 | case R.id.buttonMeistens:
316 | //wenn itemNr >0 dann Itempunkt 3
317 | SEint[itemNr-1]=3;
318 | break;
319 |
320 | case R.id.buttonSelten:
321 | //wenn itemNr >0 dann Itempunkt 2
322 | SEint[itemNr-1]=2;
323 | break;
324 |
325 | case R.id.buttonNie:
326 | //wenn itemNr >0 dann Itempunkt 1
327 | SEint[itemNr-1]=1;
328 | break;
329 |
330 | case R.id.buttonWeiter:
331 | /*
332 | a itemNr +=1;
333 | b wenn itemNr > 36 dann itemNr =1;
334 | c Kompetenzen aus Items aufsummieren
335 | d Durch Vergleich mit Normtabelle Punkte für Kompetenz bestimmen
336 | e Stand Progressbar aktualisieren
337 | */
338 |
339 | //a
340 | itemNr +=1;
341 | //b
342 | if (itemNr >36) {
343 | itemNr =1;
344 | int profilidTest = insertOrUpdateSEint(profilid,SEint);
345 | if (profilidTest > 0){profilid = profilidTest;}
346 | int [] SEintTest = readSEint(profilid);
347 | if (SEintTest != null){SEint = SEintTest;}
348 |
349 |
350 | }
351 | textItemNr.setText(Integer.toString(itemNr));
352 | textItem.setText(items[itemNr-1]);
353 | //c
354 |
355 |
356 | SEPint[0][0]=SEint[0]+ SEint[1]+ SEint[2]+ SEint[3]+ SEint[4]+
357 | SEint[5]+ SEint[6]+ SEint[7]+ SEint[8]+ SEint[9];
358 | SEPint[1][0]=SEint[10]+ SEint[11]+ SEint[12]+ SEint[13]+ SEint[14]+
359 | SEint[15]+ SEint[16]+ SEint[17]+ SEint[18]+ SEint[19];
360 | SEPint[2][0]=SEint[20]+ SEint[21]+ SEint[22]+ SEint[23]+ SEint[24]+
361 | SEint[25]+ SEint[26]+ SEint[27]+ SEint[8]+ SEint[9];
362 | SEPint[3][0]=SEint[28]+ SEint[29]+ SEint[30]+ SEint[31]+ SEint[32]+
363 | SEint[33]+ SEint[34]+ SEint[35];
364 | SEPint[4][0]=SEint[0]+ SEint[1]+
365 | SEint[5]+ SEint[6]+ SEint[7]+ SEint[8]+ SEint[9]+
366 | SEint[10]+SEint[11]+ SEint[13]+ SEint[14];
367 | SEPint[5][0]=SEint[2]+ SEint[3]+ SEint[4]+
368 | SEint[8]+ SEint[9]+ SEint[10]+
369 | SEint[16]+ SEint[17];
370 | //d
371 | boolean punkte=false;
372 |
373 | for (int k=0;k<=5;k++){
374 | punkte=false;
375 | for (int p=0;p<=4;p++){
376 | if (SEPint[k][0]< (int) normSE[k][p]){
377 | SEPint[k][1]=p+1;
378 | punkte=true;
379 | p=5;
380 | }
381 | }
382 | if (!punkte){
383 | SEPint[k][1]=5;
384 | }
385 | }
386 | //e
387 | progressBarKompetenz1.setProgress(SEPint[0][1]*20);
388 | progressBarKompetenz2.setProgress(SEPint[1][1]*20);
389 | progressBarKompetenz3.setProgress(SEPint[2][1]*20);
390 | progressBarKompetenz4.setProgress(SEPint[3][1]*20);
391 | progressBarKompetenz5.setProgress(SEPint[4][1]*20);
392 | progressBarKompetenz6.setProgress(SEPint[5][1]*20);
393 |
394 |
395 | break;
396 |
397 |
398 | }
399 | }
400 | }
401 |
--------------------------------------------------------------------------------
/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
49 |
57 |
65 |
73 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
--------------------------------------------------------------------------------