#include #include #include #include #include #include using namespace std; time_t toDay(time_t time) { struct tm *t = localtime(&time); t->tm_hour = t->tm_min = t->tm_sec = 0; return mktime(t); } class vokabel { public: string deutsch; string latein; int phase; int abfrage; int anzahl; void dateiAuslesen(fstream *data) { /* Pro Vokabel: Erste Zeile: Deutsch Zweite Zeile: Latein Dritte Zeile: Phase Vierte Zeile: Zeit Fünfte Zeile: Anzahl */ *data >> deutsch; //erste zeile *data >> latein; //zweite zeile *data >> phase; //dritte zeile *data >> abfrage; //vierte zeile *data >> anzahl; //fünfte zeile } void neueVokabel() { cout << "Latein:"; cin >> latein; cout << "Deutsch:"; cin >> deutsch; phase = 0; abfrage = toDay(time(NULL)); anzahl = 0; } void vokabelAnzeigen() { cout << "Latein:" << latein << endl << "Deutsch:" << deutsch << endl << "Phase:" << phase << endl << "Abfrage:" << abfrage << endl << "Anzahl:" << anzahl << endl; } void vokabelSchreiben(fstream *data) { *data << "vokabel" << endl << deutsch << endl << latein << endl << phase << endl << abfrage << endl << anzahl << endl; } void vokabelAbfrage() { string s; cout << latein << endl << "Deutsch:"; cin >> s; cout << "Lösung:" << deutsch << endl; s = ""; while (!(s=="j" || s=="n" || s=="J" || s=="N")) { cout << "Richtig? (J/N)"; cin >> s; if (!(s=="j" || s=="n" || s=="J" || s=="N")) cout << "Invalide Eingabe!" << endl; } if (s=="j" || s=="J") { if (anzahl!=3) anzahl++; } else { if (phase>0) phase--; anzahl = 0; } if (anzahl == 3) { if (phase != 6) phase++; switch (phase) { case 0: abfrage = toDay(time(NULL))+86400; //+1 tag break; case 1: abfrage = toDay(time(NULL))+259200; //+3 tage break; case 2: abfrage = toDay(time(NULL))+864000; //+10 tage break; case 3: abfrage = toDay(time(NULL))+2592000; //+30 tage break; case 4: abfrage = toDay(time(NULL))+7776000; //+90 tage break; case 5: abfrage = toDay(time(NULL))+10368000; //+120 tage break; case 6: abfrage = toDay(time(NULL))+17280000; //+200 tage break; } anzahl = 0; } cout << "Phase:" << phase << endl << "Anzahl:" << anzahl << endl; } }; class vokabelkasten { public: string abfragsprache; string istsprache; vector vokabelkarte; void kastenAuslesen(fstream *data) { vokabel neuevok; string header; while (header!="kasten") { *data >> header; if (header == "vokabel") { neuevok.dateiAuslesen(data); vokabelkarte.push_back(neuevok); //abspeichern } } } }; main() { srand(time(NULL)); time_t timer = time(NULL); timer = toDay(timer); cout << "Lateinvokabelabfrager von Sorunome" << endl << "Lade Vokabelkasten..." << endl; cout << ":)"; fstream data; // Datei-Handle data.open("data.txt", ios::in); //datei auslesen vector kasten; int i = 0; int temp = 0; vokabel neuevok; vokabelkasten neuvokkasten; string s; while(!data.eof()) { string header; data >> header; if (header == "kasten") { neuvokkasten.kastenAuslesen(&data); kasten.push_back(neuvokkasten); } } cout << ":)"; cout << kasten[0].vokabelkarte.size() << " Vokabeln fertig geladen." << endl << endl; string input; while (input !="exit") { cout << "Input:"; cin >> input; if (input == "help") { cout << endl << "Help" << endl << "exit: verlassen" << endl << "new: neue Vokabel" << endl << "print: Vokabel drucken" << endl << "edit: Vokabel editieren" << endl << "ask: Vokabel abfragen" << endl << "time: Zeit anzeigen" << endl << "start: Vokabelabfrage" << endl << endl; } if (input == "new") { cout << endl; neuevok.neueVokabel(); kasten[0].vokabelkarte.push_back(neuevok); cout << endl; } if (input == "print") { temp = 0; temp--; while (kasten[0].vokabelkarte.size()<=temp) { cout << endl << "Vokabel-ID:"; cin >> temp; if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ; } cout << endl; kasten[0].vokabelkarte[temp].vokabelAnzeigen(); cout << endl; } if (input == "edit") { temp = 0; temp--; while (kasten[0].vokabelkarte.size()<=temp) { cout << endl << "Vokabel-ID:"; cin >> temp; if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ; } cout << endl; kasten[0].vokabelkarte[temp].vokabelAnzeigen(); cout << endl; kasten[0].vokabelkarte[temp].neueVokabel(); cout << endl; } if (input == "ask") { temp = 0; temp--; while (kasten[0].vokabelkarte.size()<=temp) { cout << endl << "Vokabel-ID:"; cin >> temp; if (kasten[0].vokabelkarte.size()<=temp) cout << "Vokabel existiert nicht!" ; } cout << endl << endl; kasten[0].vokabelkarte[temp].vokabelAbfrage(); cout << endl; } if (input == "time") { cout << endl << toDay(time(NULL)) << endl; } if (input == "start") { vector abfragen; temp = toDay(time(NULL)); cout << endl << "Schlage Vokabeln nach..." << endl; for (i=0;i= kasten[0].vokabelkarte[i].abfrage) { abfragen.push_back(i); } } cout << "Fertig. " << abfragen.size() << " Vokabeln zum Abfragen." << endl; int abfragenGemischt[abfragen.size()]; for (i=0;i> s; if (!(s=="j" || s=="n" || s=="J" || s=="N")) cout << "Invalide Eingabe!" << endl; } cout << endl; if (s=="j" || s=="J") { kasten[0].vokabelkarte[abfragenGemischt[i]].vokabelAbfrage(); } else { i = abfragen.size(); } } cout << endl; } } data.close(); data.open("data.txt", ios::out); for (i=0;i