<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hausaufgaben Verwaltungs Programm]]></title><description><![CDATA[<p>Hi, ich hatte heute in der Schule eine Idee (nachdem ich mal wieder Mathe Hausaufgaben vergessen hatte :P), und zwar möchte ich eine Anwendung programmieren bei der ich am Anfang des Tages abgefragt werde welche neuen Hausaufgaben hinzugekommen sind, danach soll Angezeigt werden welche noch alle zu erledigen sind für den nächsten tag. Und das soll am besten alles mit der Windows Uhr synchronisiert werden sodass man am Anfang halt immer Stundenplan gerecht genau die Fächer abgefragt wird, die man auch hatte.<br />
Bin noch ziemlicher c++ Anfänger, aber denke doch das ich die Idee irgendwie Verwirklichen kann,<br />
hat von euch jemand Tipps wie ich diese Sache am besten angehe?</p>
<p>Gruß<br />
Manuh</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174643/hausaufgaben-verwaltungs-programm</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 01:28:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174643.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Mar 2007 14:03:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 14:03:48 GMT]]></title><description><![CDATA[<p>Hi, ich hatte heute in der Schule eine Idee (nachdem ich mal wieder Mathe Hausaufgaben vergessen hatte :P), und zwar möchte ich eine Anwendung programmieren bei der ich am Anfang des Tages abgefragt werde welche neuen Hausaufgaben hinzugekommen sind, danach soll Angezeigt werden welche noch alle zu erledigen sind für den nächsten tag. Und das soll am besten alles mit der Windows Uhr synchronisiert werden sodass man am Anfang halt immer Stundenplan gerecht genau die Fächer abgefragt wird, die man auch hatte.<br />
Bin noch ziemlicher c++ Anfänger, aber denke doch das ich die Idee irgendwie Verwirklichen kann,<br />
hat von euch jemand Tipps wie ich diese Sache am besten angehe?</p>
<p>Gruß<br />
Manuh</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237487</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Thu, 01 Mar 2007 14:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 14:18:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Auch wenn es nerct, aber du solltest dir Tutorials durchlesen und dann konkrete Fragen stellen. Wenn du das ganze nicht nur in der Konsole, sondern in Win-Look machen willst, kommt natürlich noch mehr Arbeit auf dich zu, aber es macht Spass, also ran an die Buletten.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237501</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 01 Mar 2007 14:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 14:25:03 GMT]]></title><description><![CDATA[<p>Ich wollte zunächst erstmal ein Simples Konsolen Programm schreiben, die Zeit hab ich nun mittels:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
#include &lt;time.h&gt;

using namespace std;

int main(){
time_t timestamp;
struct tm *dolle_zeit;
timestamp = time(0);
dolle_zeit = localtime(&amp;timestamp);
printf(&quot;%d.%d.%d&quot;, dolle_zeit-&gt;tm_mday,dolle_zeit-&gt;tm_mon +1,dolle_zeit-&gt;tm_year+1900 );
cout&lt;&lt;&quot;           Willkommen zum Hausaufgaben Verwalter&quot;&lt;&lt;endl;

cout&lt;&lt;&quot;&quot;&lt;&lt;endl;
system(&quot;PAUSE&quot;);
}
</code></pre>
<p>eingefügt, ich weiß nun nur nich genau wie es verwirklicht werden soll, dass es mittels Datum den Stundenplan scannen kann, und wie ich dann danach abgefragt werden kann.<br />
Ich schaue mich ja schon viel in Tutorials um, nur ich denke das man durch selbst geschriebene Programme die meiste Erfahrung gewinnt und es auch mehr Spaß macht da die Idee von einem selbst kommt.</p>
<p>Gruß<br />
Manuh</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237511</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Thu, 01 Mar 2007 14:25:03 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 14:37:13 GMT]]></title><description><![CDATA[<p>Generell würde ich nicht C und C++ Code mischen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237529</guid><dc:creator><![CDATA[Thracian]]></dc:creator><pubDate>Thu, 01 Mar 2007 14:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 14:52:30 GMT]]></title><description><![CDATA[<p>Ist</p>
<pre><code class="language-cpp">time_t timestamp;
struct tm *dolle_zeit;
timestamp = time(0);
dolle_zeit = localtime(&amp;timestamp);
printf(&quot;%d.%d.%d&quot;, dolle_zeit-&gt;tm_mday,dolle_zeit-&gt;tm_mon +1,dolle_zeit-&gt;tm_year+1900 );
</code></pre>
<p>etwa c++? Ich habe diesen Code im Internet gefunden</p>
<p>Gruß<br />
Manuh</p>
<p>PS: Weil soweit ich weiß ist printf() auch eine c++ Funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237542</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Thu, 01 Mar 2007 14:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 15:57:05 GMT]]></title><description><![CDATA[<p>Mein Vorschlag, entwerfe erst mal eine Struktur und eine Klasse , mach dir Gedanken über die Aufgaben die deine Klasse erledigen muss und welche Funktionen sie brauchen wird und stell hier deinen Entwurf für die Klasse vor.<br />
Mal als Beispiel:</p>
<pre><code class="language-cpp">struct aufgabe_termin
{
    time_t timestamp; 
    string hausaufgabe;

};

class hausaufgaben
{
public:
    hausaufgaben() { dateneinlesen();}
    ~hausaufgaben() { datensichern();}

    void eingabe();
    void ausgabe();

private:
    vector&lt;aufgabe_termin&gt; mycontainer;   // dafür brauchste die struct
                                          // ... wird Zauberei!
    void dateneinlesen();
    void datensichern();
    void sortieren();
    void suchen();
};
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237589</guid><dc:creator><![CDATA[123]]></dc:creator><pubDate>Thu, 01 Mar 2007 15:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 16:40:19 GMT]]></title><description><![CDATA[<blockquote>
<p>PS: Weil soweit ich weiß ist printf() auch eine c++ Funktion</p>
</blockquote>
<p>Hmm ... ganz ehrlich? NEIN!</p>
<p>Hmm ... die Zeitfunktionen sind nun mal alle in C ...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;

int main()
{
	time_t	time_current;
	time(&amp;time_current);

	std::cout &lt;&lt; &quot;-\t\tWillkommen zum Hausaufgaben Verwalter\t\t-&quot; &lt;&lt; std::endl;
	std::cout &lt;&lt; ctime(&amp;time_current) &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>sollte es aber dennoch heißen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237614</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 01 Mar 2007 16:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 18:23:28 GMT]]></title><description><![CDATA[<p>123 schrieb:</p>
<blockquote>
<p>Mein Vorschlag, entwerfe erst mal eine Struktur und eine Klasse , mach dir Gedanken über die Aufgaben die deine Klasse erledigen muss und welche Funktionen sie brauchen wird und stell hier deinen Entwurf für die Klasse vor.<br />
Mal als Beispiel:</p>
<pre><code class="language-cpp">struct aufgabe_termin
{
    time_t timestamp; 
    string hausaufgabe;

};

class hausaufgaben
{
public:
    hausaufgaben() { dateneinlesen();}
    ~hausaufgaben() { datensichern();}
    
    void eingabe();
    void ausgabe();

private:
    vector&lt;aufgabe_termin&gt; mycontainer;   // dafür brauchste die struct
                                          // ... wird Zauberei!
    void dateneinlesen();
    void datensichern();
    void sortieren();
    void suchen();
};
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Danke auch wenn ich mit meinen Kenntnissen noch nicht soweit bin das genau zu kapieren, ich werde es denke mal trotzdem irgendwie benutzen wenn ichs dank Eurer Hilfe shcaffen werde, ich möchte auch nicht unbedingt das der Stundenplan erst im Programm abgefragt wird sondern schon vordefiniert ist, das mit dem Nachträglichen selbst bestimmung des Stundenplans kann ich später noch machen.</p>
<p>Speichern soll er es einfach in einer Lesbaren .txt datei, die nicht per Algorythmus verschlüsselt werden soll.</p>
<p>Die eingabe der neuen Hausaufgabe mache ich doch dann nun am besten mit einem<br />
cin&gt;&gt;eingabe oder? Brauch ich denn nicht für jede Hausaufgabe eine neue Deklaration weil wenn ich dann z.b. die Deutschhausaufgaben in der Eingabe definiere ist dort ja kein Platz mehr für andere Fächer oder sehe ich hier was falsch?<br />
Gruß und vielen Dank<br />
Manuel!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237658</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Thu, 01 Mar 2007 18:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 18:34:01 GMT]]></title><description><![CDATA[<p>Hi,<br />
so leid es mir tut, aber evtl. solltest du erstmal die Grundlagen lernen dein angesprochenes &quot;Problem&quot; lässt sich übrigens mit Array oder der STL ohne Probleme lösen.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237664</guid><dc:creator><![CDATA[Blubbbb]]></dc:creator><pubDate>Thu, 01 Mar 2007 18:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 18:34:50 GMT]]></title><description><![CDATA[<p>hmm`? naja er hat dir da eigentlich mehr so nen pseudocode geliefert ... genau so müssen die Punktionen natürlich nicht aussehen ... aber mal sein Ansatz erklärt:</p>
<pre><code class="language-cpp">struct aufgabe_termin // Jede einzellne Hausaufgabe
{
    time_t timestamp; // Der Zeitpunkt der Aufgabe
    string hausaufgabe; // Und was du machen sollst ...

};

class hausaufgaben
{
public:
    hausaufgaben() { dateneinlesen();} // Halt beim erstellen der Klasse direkt mal die Daten(also die ganzen Hausaufgaben) einlesen
    ~hausaufgaben() { datensichern();} // Und beim zerstören auch wieder alles speichern ...

    void eingabe(); // halt ne neue hausaufgabe eingeben ...
    void ausgabe(); // alle hausaufgaben ausgeben ...

private:
    std::vector&lt;aufgabe_termin&gt; mycontainer; // Ein Vektor ist sozusagen ein dynamischer Array ... vereinfacht fürs Verständnis ;) ... also da packst du dann mit push_back ne neue Hausaufgabe rein ... 
    void dateneinlesen(); // Die Funktion zum einlesen der Hausaufgaben (siehe kontruktor)
    void datensichern(); // Zum Speichern(siehe Destruktor) 
    void sortieren(); // Die Hausaufgaben nach irgendwelchen Kriterien sortieren ...
    void suchen(); // Nach irgendwas suchen ...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1237665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237665</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 01 Mar 2007 18:34:50 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 19:22:46 GMT]]></title><description><![CDATA[<p>Ich hab jetzt den Aufbau so übernommen, jedoch weiß ich nicht wie ich die Funktion einbauen kann, das er die Hausaufgaben einliest, und dann auch am richtigen Wochentag ausgibt, hier mal mein bisheriger Sourcecode:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;conio.h&gt;

using namespace std;
struct aufgabe_termin // Jede einzellne Hausaufgabe
{
    time_t timestamp; // Der Zeitpunkt der Aufgabe
    string hausaufgabe; // Und was du machen sollst ...

};

class hausaufgaben
{
public:
    hausaufgaben() { dateneinlesen();} // Halt beim erstellen der Klasse direkt mal die Daten(also die ganzen Hausaufgaben) einlesen
    ~hausaufgaben() { datensichern();} // Und beim zerstören auch wieder alles speichern ...

    void eingabe(); // halt ne neue hausaufgabe eingeben ...
    void ausgabe(); // alle hausaufgaben ausgeben ...

private:

    void dateneinlesen(); // Die Funktion zum einlesen der Hausaufgaben (siehe kontruktor)
    void datensichern(); // Zum Speichern(siehe Destruktor)
    void sortieren(); // Die Hausaufgaben nach irgendwelchen Kriterien sortieren ...
    void suchen(); // Nach irgendwas suchen ...
};

int main(){
    int auswahl;

    time_t    time_current;
    time(&amp;time_current);

    std::cout &lt;&lt; &quot;-\t\tWillkommen zum Hausaufgaben Verwalter\t\t-&quot; &lt;&lt; std::endl&lt;&lt;endl&lt;&lt;endl;

    std::cout &lt;&lt; &quot;Heute ist &quot;;
    std::cout &lt;&lt; ctime(&amp;time_current) &lt;&lt; std::endl;
    cout&lt;&lt;&quot;Was moechtest du tun:&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;1. Hausaufgaben eingeben&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;2. Hausaufgaben erledigen&quot;&lt;&lt;endl;
    cin&gt;&gt;auswahl;
    cout&lt;&lt;&quot;Du hast dich fuer &quot;&lt;&lt;auswahl&lt;&lt;&quot; entschieden&quot;&lt;&lt;endl;
    cout&lt;&lt;&quot;Viel Spass!&quot;&lt;&lt;endl;

getch();
    cout&lt;&lt;&quot;Fuer Heute sind folgende Aufgaben zu erledigen: &quot;&lt;&lt;endl;
    cout&lt;&lt;ausgabe&lt;&lt;endl;

if (auswahl==1)
{ cout&lt;&lt;eingabe&lt;&lt;endl;
}
if (auswahl==2)
{
    cout&lt;&lt;ausgabe&lt;&lt;endl;
}    
else 
{ 
    cout&lt;&lt;&quot;Falsche Eingabe, bitte Programm erneut ausfueren&quot;&lt;&lt;endl;
}

   system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1237691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237691</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Thu, 01 Mar 2007 19:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 19:42:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
using namespace std;

struct aufgabe_termin 
{ 
    int Unterrichtsfach;
    time_t timestamp; 
    string hausaufgabe; 

}; 

class hausaufgaben 
{ 
public: 
    hausaufgaben() {}  //dateneinlesen();} 
    ~hausaufgaben() {} //datensichern();} 

    void eingabe(); 
    void ausgabe(); 

private: 
    vector&lt;aufgabe_termin&gt; mycontainer;   // dafür brauchste die struct 
    aufgabe_termin mystruct ;              // ... wird Zauberei! 
    void dateneinlesen(); 
    void datensichern(); 
    void sortieren(); 
    void suchen(); 
}; 

void hausaufgaben::eingabe()
{
    char a = 0;

    cout &lt;&lt; &quot;Deutsch = 1, Physik = 2 usw.&quot; &lt;&lt; endl;
    do
    {
        cout &lt;&lt; &quot;Bitte Nummer fuer Unterrichtsfach eingeben: &quot; &lt;&lt; endl;
        cin  &gt;&gt; mystruct.Unterrichtsfach;
        // Hier wär ne Reaktion auf falsche Eingabe angezeigt
        // Die Eingabefunktion braucht weiterhin Hausaufgabe und timestamp
        // ...
        // ...

        mycontainer.push_back(mystruct);

        cout &lt;&lt; &quot;Weitere Hausaufgaben eingeben? J/N&quot; &lt;&lt; endl;

        cin &gt;&gt; a;

    }while(a == 'J' || a == 'j');
}

int main() 
{ 

   hausaufgaben my; 

   my.eingabe();

}
</code></pre>
<p>Dann schreib mal die eingabe() Funktion fertig und teste Sie, poste sie, wenn du sie fertig hast. Versuch auch Fehler bei der Eingabe abzufangen.<br />
mfg Mit welchem Compiler und Betriebssystem arbeitest du? Mich wundert das getch(); und system() in deinem Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237708</guid><dc:creator><![CDATA[123]]></dc:creator><pubDate>Thu, 01 Mar 2007 19:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 20:19:53 GMT]]></title><description><![CDATA[<p>Ich benutz den Dev-C++ Compiler und Windows XP,<br />
ich weiß noch nicht genau wie ich die Eingabe Funktion schreiben soll, da ich noch nicht sehr gut in C++ bin, ich probier aber mal das beste</p>
<p>Gruß<br />
manuh</p>
<p>Edit: Soll ich für jedes Fach extra eine &quot;void eingabe&quot; schreiben, oder gibt es eine Möglichkeit alles in eines zu packen, anonsten müsste ich jedes Fach einzeln Definieren, damit man da dann seine Hausaufgaben rein schreibem kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237732</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Thu, 01 Mar 2007 20:19:53 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 20:36:18 GMT]]></title><description><![CDATA[<p>Iksde schrieb:</p>
<blockquote>
<p>Ich benutz den Dev-C++ Compiler und Windows XP,<br />
Soll ich für jedes Fach extra eine &quot;void eingabe&quot; schreiben, oder gibt es eine Möglichkeit alles in eines zu packen, anonsten müsste ich jedes Fach einzeln Definieren, damit man da dann seine Hausaufgaben rein schreibem kann</p>
</blockquote>
<p>Nein brauchst Du nicht!</p>
<pre><code class="language-cpp">struct aufgabe_termin 
{ 
    int Unterrichtsfach; // = Sortierkriterium
    time_t timestamp;    // = Sortierkriterium
    string hausaufgabe; 
};
</code></pre>
<p>das wird nach jeder Eingabe in den vector gepusht und ist erstmal verstaut.<br />
Schreib die Eingabefunktion so wie du es für richtig hälst.<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237748</guid><dc:creator><![CDATA[123]]></dc:creator><pubDate>Thu, 01 Mar 2007 20:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 21:26:53 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;

struct work_entry
{
    unsigned short	subject;
    time_t			timestamp;
	std::string		work;

	work_entry() : subject(0), timestamp(0) {}
};

class HomeworkManager
{
public:
    HomeworkManager() {}  //dateneinlesen();}
    ~HomeworkManager() {} //datensichern();}

public:
	void insert_item(const work_entry&amp;);
	void show_item(const short); // -1 == all entrys

public:
	void sort(const bool); // ascending

public:
	bool read_file(const std::string&amp;);
	bool write_file(const std::string&amp;);

private:
	std::vector&lt;work_entry&gt;		m_works;
};

void HomeworkManager::insert_item(const work_entry&amp; entry)
{
	m_works.push_back(entry);
}

void HomeworkManager::show_item(const short id)
{
	if (id == -1)
	{
		for (size_t item = 0; item &lt; m_works.size(); ++item)
			std::cout &lt;&lt; m_works[item].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[item].timestamp &lt;&lt; std::endl;
	}
	else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
	{
		std::cout &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].timestamp &lt;&lt; std::endl;
	}
}

bool my_sort_asc(const work_entry&amp; l, const work_entry&amp; r)
{
	return l.timestamp &lt; r.timestamp;
}

bool my_sort_desc(const work_entry&amp; l, const work_entry&amp; r)
{
	return l.timestamp &gt; r.timestamp;
}

void HomeworkManager::sort(const bool ascending)
{
	std::sort(m_works.begin(), m_works.end(), (ascending == true ? my_sort_asc : my_sort_desc));
}

int main()
{
	HomeworkManager manager;

	char a = '\0';

	std::cout &lt;&lt; &quot;Deutsch = 1, Physik = 2 usw.&quot; &lt;&lt; std::endl;
    do
    {
		work_entry entry;
		std::cout &lt;&lt; &quot;Bitte Nummer fuer Unterrichtsfach eingeben: &quot; &lt;&lt; std::endl;
		std::cin &gt;&gt; entry.subject;
		// usw ...

		manager.insert_item(entry);

		std::cout &lt;&lt; &quot;Weitere Hausaufgaben eingeben? J/N&quot; &lt;&lt; std::endl;

		std::cin &gt;&gt; a;

    } while(a == 'J' || a == 'j');

	manager.show_item(-1);
}
</code></pre>
<p>... hab jetzt nur die Klasse korrigiert und die daraus folgenden Funktionsänderungen auch in der main geändert ... aber da lässt sich noch einiges rausholen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237776</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 01 Mar 2007 21:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Thu, 01 Mar 2007 21:41:51 GMT]]></title><description><![CDATA[<p>so ..</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;ctime&gt;

struct work_entry
{
    unsigned short	subject;
    time_t			timestamp;
	std::string		work;

	work_entry() : subject(0), timestamp(0) {}
};

class HomeworkManager
{
public:
    HomeworkManager() {}  //dateneinlesen();}
    ~HomeworkManager() {} //datensichern();}

public:
	void insert_item(const work_entry&amp;);
	void show_item(const short); // -1 == all entrys

public:
	void add_subject(const std::string&amp;);
	void list_subjects(void);

public:
	void sort(const bool); // ascending

public:
	bool read_file(const std::string&amp;);
	bool write_file(const std::string&amp;);

private:
	std::vector&lt;work_entry&gt;		m_works;
	std::vector&lt;std::string&gt;	m_subjects;
};

void HomeworkManager::insert_item(const work_entry&amp; entry)
{
	m_works.push_back(entry);
}

void HomeworkManager::show_item(const short id)
{
	if (id == -1)
	{
		for (size_t item = 0; item &lt; m_works.size(); ++item)
			std::cout &lt;&lt; m_works[item].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[item].timestamp &lt;&lt; std::endl;
	}
	else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
	{
		std::cout &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].timestamp &lt;&lt; std::endl;
	}
}

bool my_sort_asc(const work_entry&amp; l, const work_entry&amp; r)
{
	return l.timestamp &lt; r.timestamp;
}

bool my_sort_desc(const work_entry&amp; l, const work_entry&amp; r)
{
	return l.timestamp &gt; r.timestamp;
}

void HomeworkManager::sort(const bool ascending)
{
	std::sort(m_works.begin(), m_works.end(), (ascending == true ? my_sort_asc : my_sort_desc));
}

void HomeworkManager::add_subject(const std::string&amp; subject)
{
	m_subjects.push_back(subject);
}

void HomeworkManager::list_subjects(void)
{
	std::cout &lt;&lt; &quot;* Subjects: &quot; &lt;&lt; std::endl;
	for (size_t item = 0; item &lt; m_subjects.size(); ++item)
		std::cout &lt;&lt; &quot;\t&quot; &lt;&lt; (item + 1) &lt;&lt; &quot;: &quot; &lt;&lt; m_subjects[item] &lt;&lt; std::endl;
}

int main()
{
	HomeworkManager manager;
	manager.add_subject(&quot;Deutsch&quot;);
	manager.add_subject(&quot;Physik&quot;);
	manager.add_subject(&quot;Mathematik&quot;);

	std::cout &lt;&lt; &quot;-\t\tHomeworkManager V0.1\t\t-&quot; &lt;&lt; std::endl;
	unsigned short selection = 0;
	while (selection != 3)
	{
		std::cout &lt;&lt; &quot;* Menu&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(1) Add new item&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(2) Show items&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(3) Exit&quot; &lt;&lt; std::endl;

		std::istringstream ss;
		std::string string_input;

		do {
			std::getline(std::cin, string_input);
			ss.clear();
			ss.str(string_input);
			ss &gt;&gt; selection;
		} while (!ss || selection &gt; 3);

		switch (selection)
		{
		case 1:
			{
				std::cout &lt;&lt; &quot;* New entry: &quot; &lt;&lt; std::endl;
				manager.list_subjects();
				work_entry entry;
				std::cout &lt;&lt; &quot;\n\tUnterrichtsfach: &quot; &lt;&lt; std::flush;
				do {
					std::getline(std::cin, string_input);
					ss.clear();
					ss.str(string_input);
					ss &gt;&gt; entry.subject;
				} while (!ss);
				std::cout &lt;&lt; &quot;\tWork: &quot; &lt;&lt; std::flush;
				std::getline(std::cin, entry.work);
				entry.timestamp = time(NULL);
				manager.insert_item(entry);
			} break;
		case 2:
			{
				manager.show_item(-1);
			} break;
		}
	}
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237781</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 01 Mar 2007 21:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Fri, 02 Mar 2007 20:31:59 GMT]]></title><description><![CDATA[<p>Ich hab das mal kopier und eingefügt aber bekomm bei</p>
<pre><code class="language-cpp">std::istringstream ss;
</code></pre>
<p>Leider immer ein Compiler Error :</p>
<pre><code>103 C:\Dev-Cpp\et+.cpp aggregate `std::istringstream ss' has incomplete type and  cannot be defined
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1238301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238301</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Fri, 02 Mar 2007 20:31:59 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Fri, 02 Mar 2007 21:25:44 GMT]]></title><description><![CDATA[<p>Nimm &lt;sstream&gt; ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238323</guid><dc:creator><![CDATA[egon2]]></dc:creator><pubDate>Fri, 02 Mar 2007 21:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Fri, 02 Mar 2007 21:31:09 GMT]]></title><description><![CDATA[<p>nur oben<br />
#include &lt;sstream&gt; zusätzlich einfügen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238325</guid><dc:creator><![CDATA[egon2]]></dc:creator><pubDate>Fri, 02 Mar 2007 21:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Fri, 02 Mar 2007 21:35:09 GMT]]></title><description><![CDATA[<p>Dankeschön das Programm funktioniert bis jetzt ganz gut, allerdings ist irgendein Fehler drin, da immer wenn ich die Eingegebenen Hausaufgaben anschauen möchte, nur eine Zahl dortsteht wo eigentlich das Fach stehen sollte,<br />
wenn ich folgenden Code:</p>
<pre><code class="language-cpp">void HomeworkManager::show_item(const short id)
{
    if (id == -1)
    {
        for (size_t item = 0; item &lt; m_works.size(); ++item)
            std::cout &lt;&lt; m_works[item].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[item].timestamp &lt;&lt; std::endl;
    }
    else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
    {
        std::cout &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].timestamp &lt;&lt; std::endl;
    }
}
</code></pre>
<p>in</p>
<pre><code class="language-cpp">void HomeworkManager::show_item(const short id)
{
    if (id == -1)
    {
        for (size_t item = 0; item &lt; m_works.size(); ++item)
            std::cout &lt;&lt; m_works[item].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[item].subject &lt;&lt; std::endl;
    }
    else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
    {
        std::cout &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].subject &lt;&lt; std::endl;
    }
}
</code></pre>
<p>änder, steht dort dann auch nur die Zahl die dem Fach zugeordnet wurde!</p>
<p>Vielen Dank schonmal!</p>
<p>Gruß<br />
Manuh</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238329</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Fri, 02 Mar 2007 21:35:09 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Sat, 03 Mar 2007 01:12:03 GMT]]></title><description><![CDATA[<p>(D)Evil wenn du schon kein using namespace std; benutzen tust warum machst du dann nicht einfach using std::cout, wenn du nicht den ganzen namensbereich einbinden willst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238374</guid><dc:creator><![CDATA[Stelfer]]></dc:creator><pubDate>Sat, 03 Mar 2007 01:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Sat, 03 Mar 2007 08:47:36 GMT]]></title><description><![CDATA[<p>Ja das ist das Problem ... du sollst den Code nicht übernehmen ... nimm ihn einfach als Beispiel ...</p>
<pre><code class="language-cpp">void HomeworkManager::show_item(const short id)
{
    if (id == -1)
    {
        for (size_t item = 0; item &lt; m_works.size(); ++item)
            std::cout &lt;&lt; m_works[item].timestamp &lt;&lt; &quot; | &quot; &lt;&lt; m_works[item].work &lt;&lt; &quot; | &quot; &lt;&lt; (m_works[item].subject &gt; m_subjects.size() ? &quot;Unknown&quot; : m_subjects[m_works[item].subject - 1]) &lt;&lt; std::endl;
    }
    else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
    {
        std::cout &lt;&lt; m_works[id].timestamp &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; (m_works[id].subject &gt; m_subjects.size() ? &quot;Unknown&quot; : m_subjects[m_works[id].subject - 1]) &lt;&lt; std::endl;
    }
}
</code></pre>
<p>So ... damit du das auch vestehst ...</p>
<pre><code class="language-cpp">if (m_works[item].subject &gt; m_subjects.size()) // Er soll gucken, ob die ID, die als Fach vom Benutzer
    // angegeben wurde, überhaupt als Fach bei uns registriert ist ...
    std::cout &lt;&lt; &quot;Unknown&quot;; // Ist es nicht der Fall soll er &quot;Unknown&quot; ausgeben, d.h. wir wissen es halt 
    // nicht wie das Fach heißt ...
else
    m_subjects[m_works[item].subject - 1] // An sonsten wissen wir halt wie es heißt und wir wollen, 
    // das er uns den Namen ausgibt. Also nehmen wir die ID des Faches und geben die einfach mal aus ;) 
    // Und das -1 kommt da noch hin, weil wir beim ausgeben der Subject-Liste hingegangen sind und
    // haben einfach eins dazu addiert ... das muss hier wieder wech ;)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1238401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238401</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 03 Mar 2007 08:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Sat, 03 Mar 2007 09:41:01 GMT]]></title><description><![CDATA[<p>Danke, solangsam versteh ich den groben Aufbau des Programmes auch!<br />
Nun habe ich das Programm auf meinen Stundenplan abgestimmt, und es wird auch nicht mehr die ID, sondern das Fach angezeigt wenn ich mir meine Hausaufgaben anzeigen lasse, nun brauch ich aber noch eine Funktion womit ich die Hausaufgabe als erledigt markieren kann, damit sie aus dem Speicher verschwindet.</p>
<p>So sieht mein Sourcecode bis jetzt aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;ctime&gt;
#include &lt;sstream&gt;

using namespace std;

struct work_entry
{
    unsigned short    subject;
    time_t            timestamp;
    std::string        work;

    work_entry() : subject(0), timestamp(0) {}
};

class HomeworkManager
{
public:
    HomeworkManager() {}  //dateneinlesen();}
    ~HomeworkManager() {} //datensichern();}

public:
    void insert_item(const work_entry&amp;);
    void show_item(const short); // -1 == all entrys

public:
    void add_subject(const std::string&amp;);
    void list_subjects(void);

public:
    void sort(const bool); // ascending

public:
    bool read_file(const std::string&amp;);
    bool write_file(const std::string&amp;);

private:
    std::vector&lt;work_entry&gt;        m_works;
    std::vector&lt;std::string&gt;    m_subjects;
};

void HomeworkManager::insert_item(const work_entry&amp; entry)
{
    m_works.push_back(entry);
}

void HomeworkManager::show_item(const short id)
{
    if (id == -1)
    {
        for (size_t item = 0; item &lt; m_works.size(); ++item)
            std::cout &lt;&lt; m_works[item].work &lt;&lt; &quot; - &quot; &lt;&lt; (m_works[item].subject &gt; m_subjects.size() ? &quot;Unbekannt&quot; : m_subjects[m_works[item].subject - 1]) &lt;&lt; std::endl;
    }
    else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
    {
        std::cout &lt;&lt; m_works[id].timestamp &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; (m_works[id].subject &gt; m_subjects.size() ? &quot;Unbekannt&quot; : m_subjects[m_works[id].subject - 1]) &lt;&lt; std::endl;
    }
}

bool my_sort_asc(const work_entry&amp; l, const work_entry&amp; r)
{
    return l.timestamp &lt; r.timestamp;
}

bool my_sort_desc(const work_entry&amp; l, const work_entry&amp; r)
{
    return l.timestamp &gt; r.timestamp;
}

void HomeworkManager::sort(const bool ascending)
{
    std::sort(m_works.begin(), m_works.end(), (ascending == true ? my_sort_asc : my_sort_desc));
}

void HomeworkManager::add_subject(const std::string&amp; subject)
{
    m_subjects.push_back(subject);
}

void HomeworkManager::list_subjects(void)
{
    std::cout &lt;&lt; &quot;* Subjects: &quot; &lt;&lt; std::endl;
    for (size_t item = 0; item &lt; m_subjects.size(); ++item)
        std::cout &lt;&lt; &quot;\t&quot; &lt;&lt; (item + 1) &lt;&lt; &quot;: &quot; &lt;&lt; m_subjects[item] &lt;&lt; std::endl;
}

int main()
{
    HomeworkManager manager;

    manager.add_subject(&quot;Deutsch&quot;);
    manager.add_subject(&quot;Englisch&quot;);
    manager.add_subject(&quot;Mathematik&quot;);
    manager.add_subject(&quot;Technik&quot;);
    manager.add_subject(&quot;Geschichte&quot;);
    manager.add_subject(&quot;Medien&quot;);
    manager.add_subject(&quot;Kunst&quot;);
    manager.add_subject(&quot;Religion&quot;);
    manager.add_subject(&quot;Biologie&quot;);
    manager.add_subject(&quot;Erdkunde&quot;);
    manager.add_subject(&quot;Sport&quot;);
    manager.add_subject(&quot;Politik&quot;);
    manager.add_subject(&quot;Chemie&quot;);
    std::cout &lt;&lt; &quot;-\t\tHomeworkManager V0.1\t\t-&quot; &lt;&lt; std::endl;
    unsigned short selection = 0;
    while (selection != 3)
    {
        std::cout &lt;&lt; &quot;* Menu&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;\t(1) Add new item&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;\t(2) Show items&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;\t(3) Exit&quot; &lt;&lt; std::endl;

        std::istringstream ss;
        std::string string_input;

        do {
            std::getline(std::cin, string_input);
            ss.clear();
            ss.str(string_input);
            ss &gt;&gt; selection;
        } while (!ss || selection &gt; 3);

        switch (selection)
        {
        case 1:
            {
                std::cout &lt;&lt; &quot;* New entry: &quot; &lt;&lt; std::endl;
                manager.list_subjects();
                work_entry entry;
                std::cout &lt;&lt; &quot;\n\tUnterrichtsfach: &quot; &lt;&lt; std::flush;
                do {
                    std::getline(std::cin, string_input);
                    ss.clear();
                    ss.str(string_input);
                    ss &gt;&gt; entry.subject;
                } while (!ss);
                std::cout &lt;&lt; &quot;\tWork: &quot; &lt;&lt; std::flush;
                std::getline(std::cin, entry.work);
                entry.timestamp = time(NULL);
                manager.insert_item(entry);
            } break;
        case 2:
            {
                manager.show_item(-1);
            } break;
        }
    }
}
</code></pre>
<p>Wisst ihr wie ich das machen könnte?<br />
Vielen Dank schonmal</p>
<p>Gruß<br />
Manuh</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238414</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Sat, 03 Mar 2007 09:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Sat, 03 Mar 2007 11:09:12 GMT]]></title><description><![CDATA[<p>Ja ich weiß wie man das machen könnte ... also ich hab dir jetzt hier mal eine Speicherfunktion usw. hinzugefügt. Du darfst den Code allerdings nicht kopieren, denn du sollst ihn verstehen!</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &quot;homeworkmanager.h&quot;

int main()
{
	HomeworkManager manager(&quot;test.svf&quot;);
	/* Das nur beim 1. mal ausführen ... danach rausnehmen, da auch die Fächer aus der Datei ausgelesen werden ... das erlaubt dir bsw dem User eine Funktion zum hinzufügen von eigenen Fächern zu bieten ...
	manager.add_subject(&quot;Deutsch&quot;);
	manager.add_subject(&quot;Physik&quot;);
	manager.add_subject(&quot;Mathematik&quot;);
	*/

	std::cout &lt;&lt; &quot;-\t\tHomeworkManager V0.1\t\t-&quot; &lt;&lt; std::endl;
	unsigned short selection = 0;
	unsigned short menu_item_count = 0;
	do
	{
		menu_item_count = 0;
		std::cout &lt;&lt; &quot;* Menu&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(&quot; &lt;&lt; ++menu_item_count &lt;&lt; &quot;) Add new item&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(&quot; &lt;&lt; ++menu_item_count &lt;&lt; &quot;) Show items&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(&quot; &lt;&lt; ++menu_item_count &lt;&lt; &quot;) Sort&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(&quot; &lt;&lt; ++menu_item_count &lt;&lt; &quot;) Mark as done!&quot; &lt;&lt; std::endl;
		std::cout &lt;&lt; &quot;\t(&quot; &lt;&lt; ++menu_item_count &lt;&lt; &quot;) Exit&quot; &lt;&lt; std::endl;

		std::istringstream ss;
		std::string string_input;

		do {
			std::cout &lt;&lt; &quot;\tInput: &quot; &lt;&lt; std::flush;
			std::getline(std::cin, string_input);
			ss.clear();
			ss.str(string_input);
			ss &gt;&gt; selection;
		} while (!ss || selection &gt; menu_item_count);

		switch (selection)
		{
		case 1:
			{
				std::cout &lt;&lt; &quot;* New entry: &quot; &lt;&lt; std::endl;
				manager.list_subjects();
				work_entry entry;
				do {
					std::cout &lt;&lt; &quot;\n\tSubject: &quot; &lt;&lt; std::flush;
					std::getline(std::cin, string_input);
					ss.clear();
					ss.str(string_input);
					ss &gt;&gt; entry.subject;
				} while (!ss);
				std::cout &lt;&lt; &quot;\tWork: &quot; &lt;&lt; std::flush;
				std::getline(std::cin, entry.work);
				entry.timestamp = time(NULL);
				manager.insert_item(entry);
			} break;
		case 2:
			{
				std::cout &lt;&lt; &quot;* Show Item: &quot; &lt;&lt; std::endl;
				std::cout &lt;&lt; &quot;\t(-1) All Items&quot; &lt;&lt; std::endl;
				std::cout &lt;&lt; &quot;\t(x) Item number&quot; &lt;&lt; std::endl;
				short item = -1;
				do {
					std::cout &lt;&lt; &quot;\n\tInput: &quot; &lt;&lt; std::flush;
					std::getline(std::cin, string_input);
					ss.clear();
					ss.str(string_input);
					ss &gt;&gt; item;
				} while (!ss || item &lt; -1);
				manager.show_item(item);
				manager.sort(false);
			} break;
		case 3:
			{
				std::cout &lt;&lt; &quot;* Sort: &quot; &lt;&lt; std::endl;
				std::cout &lt;&lt; &quot;\t(0) Ascending&quot; &lt;&lt; std::endl;
				std::cout &lt;&lt; &quot;\t(1) Descending&quot; &lt;&lt; std::endl;
				bool sort = false;
				do {
					std::cout &lt;&lt; &quot;\tInput: &quot; &lt;&lt; std::flush;
					std::getline(std::cin, string_input);
					ss.clear();
					ss.str(string_input);
					ss &gt;&gt; sort;
				} while (!ss);
				manager.sort(!sort);
			} break;
		case 4:
			{
				std::cout &lt;&lt; &quot;* Mark as done: &quot; &lt;&lt; std::endl;
				unsigned short id = 0;
				do {
					std::cout &lt;&lt; &quot;\tItem-ID: &quot; &lt;&lt; std::flush;
					std::getline(std::cin, string_input);
					ss.clear();
					ss.str(string_input);
					ss &gt;&gt; id;
				} while (!ss);
				manager.delete_item(--id);
			} break;
		}
	} while (selection != menu_item_count);
	return 0;
}
</code></pre>
<p>HomeworkManager.h</p>
<pre><code class="language-cpp">#if !defined(HOMEWORK_MANAGER_H__INCLUDED)
#define HOMEWORK_MANAGER_H__INCLUDED

#pragma once

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;ctime&gt;
#include &lt;fstream&gt;

struct work_entry
{
    unsigned short    subject;
    time_t            timestamp;
    std::string        work;

    work_entry() : subject(0), timestamp(0) {}
};

class HomeworkManager
{
public:
	HomeworkManager(const std::string&amp;);
    ~HomeworkManager();

public:
    void insert_item(const work_entry&amp;);
    void show_item(const short); // -1 == all entrys
    bool delete_item(const unsigned short&amp;);

public:
    void add_subject(const std::string&amp;);
    void list_subjects(void);

public:
    void sort(const bool);

public:
    bool read_file(const std::string&amp;);
    bool write_file(const std::string&amp;);

private:
    std::vector&lt;work_entry&gt;		m_works;
    std::vector&lt;std::string&gt;		m_subjects;
    const std::string			m_filename;
};

#endif // HOMEWORK_MANAGER_H__INCLUDED
</code></pre>
<p>HomeworkManager.h</p>
<pre><code class="language-cpp">#include &quot;HomeworkManager.h&quot;

HomeworkManager::HomeworkManager(const std::string&amp; filename) : m_filename(filename)
{
	read_file(m_filename);
}

HomeworkManager::~HomeworkManager(void)
{
	write_file(m_filename);
}

void HomeworkManager::insert_item(const work_entry&amp; entry)
{
    m_works.push_back(entry);
}

void HomeworkManager::show_item(const short id)
{
	if (id == -1)
	{
		for (size_t item = 0; item &lt; m_works.size(); ++item)
			std::cout &lt;&lt; &quot;ID: &quot; &lt;&lt; (item + 1) &lt;&lt; &quot; :: &quot; &lt;&lt; m_works[item].timestamp &lt;&lt; &quot; | &quot; &lt;&lt; m_works[item].work &lt;&lt; &quot; | &quot; &lt;&lt; (m_works[item].subject &gt; m_subjects.size() ? &quot;Unknown&quot; : m_subjects[m_works[item].subject - 1]) &lt;&lt; std::endl;
	}
	else if (id &gt; 0 &amp;&amp; static_cast&lt;unsigned short&gt;(id) &lt; m_works.size())
	{
		std::cout &lt;&lt; m_works[id].timestamp &lt;&lt; &quot; | &quot; &lt;&lt; m_works[id].work &lt;&lt; &quot; | &quot; &lt;&lt; (m_works[id].subject &gt; m_subjects.size() ? &quot;Unknown&quot; : m_subjects[m_works[id].subject - 1]) &lt;&lt; std::endl;
	}
}

bool my_sort_asc(const work_entry&amp; l, const work_entry&amp; r)
{
    return l.timestamp &lt; r.timestamp;
}

bool my_sort_desc(const work_entry&amp; l, const work_entry&amp; r)
{
    return l.timestamp &gt; r.timestamp;
}

void HomeworkManager::sort(const bool ascending)
{
    std::sort(m_works.begin(), m_works.end(), (ascending == true ? my_sort_asc : my_sort_desc));
}

void HomeworkManager::add_subject(const std::string&amp; subject)
{
    m_subjects.push_back(subject);
}

void HomeworkManager::list_subjects(void)
{
    std::cout &lt;&lt; &quot;* Subjects: &quot; &lt;&lt; std::endl;
    for (size_t item = 0; item &lt; m_subjects.size(); ++item)
        std::cout &lt;&lt; &quot;\t&quot; &lt;&lt; (item + 1) &lt;&lt; &quot;: &quot; &lt;&lt; m_subjects[item] &lt;&lt; std::endl;
} 

bool HomeworkManager::write_file(const std::string&amp; filename)
{
	std::ofstream file_stream;
	file_stream.open(filename.c_str(), std::ios::out | std::ios::binary);

	if (file_stream.is_open() == false || file_stream.good() == false)
		return false;

	// File Content:
	//		size_t				Subject Count
	//		size_t				Item Count
	//		Item:
	//			time_t				time
	//			size_t				string_len
	//			char[string_len]	work
	//			unsigned short		subject
	//		Subject:
	//			size_t				string_len
	//			char[string_len]	subject

	size_t subject_count = m_subjects.size();
	file_stream.write(reinterpret_cast&lt;char*&gt;(&amp;subject_count), sizeof(size_t));
	if (file_stream.good() == false)
		return false;

	size_t works_count = m_works.size();
	file_stream.write(reinterpret_cast&lt;char*&gt;(&amp;works_count), sizeof(size_t));
	if (file_stream.good() == false)
		return false;

	for (size_t item = 0; item &lt; works_count; ++item)
	{
		char*	item_work		= const_cast&lt;char*&gt;(m_works[item].work.c_str());
		size_t	item_work_len	= m_works[item].work.length();
		file_stream.write(reinterpret_cast&lt;char*&gt;(&amp;m_works[item].timestamp), sizeof(time_t));
		file_stream.write(reinterpret_cast&lt;char*&gt;(&amp;item_work_len), sizeof(size_t));
		file_stream.write(item_work, item_work_len);
		file_stream.write(reinterpret_cast&lt;char*&gt;(&amp;m_works[item].subject), sizeof(unsigned short));

		if (file_stream.good() == false)
			return false;
	}

	for (size_t item = 0; item &lt; subject_count; ++item)
	{
		char*	item_subject		= const_cast&lt;char*&gt;(m_subjects[item].c_str());
		size_t	item_subject_len	= m_subjects[item].length();
		file_stream.write(reinterpret_cast&lt;char*&gt;(&amp;item_subject_len), sizeof(size_t));
		file_stream.write(item_subject, item_subject_len);
	}

	file_stream.close();

	return true;
}

bool HomeworkManager::read_file(const std::string&amp; filename)
{
	std::ifstream file_stream;
	file_stream.open(filename.c_str(), std::ios::in | std::ios::binary);

	if (file_stream.is_open() == false || file_stream.good() == false)
		return false;

	size_t subject_count = 0;
	file_stream.read(reinterpret_cast&lt;char*&gt;(&amp;subject_count), sizeof(size_t));
	if (file_stream.good() == false)
		return false;
	m_subjects.reserve(subject_count);

	size_t works_count = 0;
	file_stream.read(reinterpret_cast&lt;char*&gt;(&amp;works_count), sizeof(size_t));
	if (file_stream.good() == false)
		return false;
	m_works.reserve(works_count);

	for (size_t item = 0; item &lt; works_count; ++item)
	{
		size_t			item_work_len	= 0;
		work_entry		entry;

		file_stream.read(reinterpret_cast&lt;char*&gt;(&amp;entry.timestamp), sizeof(time_t));
		file_stream.read(reinterpret_cast&lt;char*&gt;(&amp;item_work_len), sizeof(size_t));
		char * item_work = new char [item_work_len + 1];
		file_stream.read(item_work, item_work_len);
		item_work[item_work_len] = '\0';
		file_stream.read(reinterpret_cast&lt;char*&gt;(&amp;entry.subject), sizeof(unsigned short));

		entry.work = item_work;
		m_works.push_back(entry);
		delete [] item_work;

		if (file_stream.good() == false)
			return false;
	}

	for (size_t item = 0; item &lt; subject_count; ++item)
	{
		size_t	item_subject_len	= 0;
		file_stream.read(reinterpret_cast&lt;char*&gt;(&amp;item_subject_len), sizeof(size_t));
		char* item_subject = new char [item_subject_len + 1];
		file_stream.read(item_subject, item_subject_len);
		item_subject[item_subject_len] = '\0';
		std::string item_string(item_subject);
		m_subjects.push_back(item_string);
		delete [] item_subject;
	}

	file_stream.close();

	return true;
}

bool HomeworkManager::delete_item(const unsigned short&amp; id)
{
	std::vector&lt;work_entry&gt;::iterator it = m_works.begin() + (id - 1);
    m_works.erase(it);
	return true;
}
</code></pre>
<p>Wenn ich nen Fehler drin hab müsst ihr bescheid sagen ... Version 1.0 ...</p>
<p><strong>Edit</strong><br />
Hatte bei der Show items einen Fehler drin und hab dir die delete Funktion noch hinzugefügt ... achja und bei der Ausgabe von allen Items auch direkt noch die ID mit ausgeben lassen, damit der Benutzer auch weiß was er für Nummern bei show item und delete item angeben muss ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238440</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 03 Mar 2007 11:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Sat, 03 Mar 2007 20:00:27 GMT]]></title><description><![CDATA[<p>Ich werde es nicht kopieren, versprochen!<br />
Nur könntest du vielleicht ein paar Kommentare hinter dem Sourcecode geben damit ich weiß wo was zu da ist? Ich versteh bis jetzt nämlich fast gar nix!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238663</guid><dc:creator><![CDATA[Iksde]]></dc:creator><pubDate>Sat, 03 Mar 2007 20:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Hausaufgaben Verwaltungs Programm on Sun, 04 Mar 2007 10:18:28 GMT]]></title><description><![CDATA[<p>Hmm ja kein Problem ... welche Funktion verstehst du denn nicht? Die zum Speicher/Laden? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Oder welche?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238820</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 04 Mar 2007 10:18:28 GMT</pubDate></item></channel></rss>