//--------------------------------------------------------------------------- #ifndef datumH_3435 #define datumH_3435 /* Datum.h Besitzt alle nötigen Funktionen um ein Datum darzustellen, abzuspeichern einzulesen und zu vergleichen. Anwendung: Datum.h evt. umbenennen und in den Include Pfad kopieren (oder Pfad wo Header Dateien erwartet werden) Datum.obj evt umbennen und in den Pfad für Objektdateien kopieren Dem Compiler die Objektdatei bekanntgeben Sollte in einer .cpp Datei die Uhrzeit gebraucht werden am Anfang: #include "Uhrzeit.h" und dann entweder using namespace mr; oder jedesmal mit mr::Uhrzeit aufrufen Bsp: //user.c int main() { Datum Jetzt; Jetzt.SetDatum(); //aktuelles Datum wird gesetzt cout << Jetzt << endl; //Datum wird ausgegeben ofstream Datei ("c:\\datum.dat",ios::binary|ios::out); Jetzt.Save(Datei); //Jetzt wird in datum.dat kopiert Datei.close(); Datum dMorgen; ifstream InDatei ("c:\\datum.dat",ios::binary|ios::out); dMorgen.Load(InDatei); //Datum ist in dMorgen cout << dMorgen << endl; } */ //Author: Markus Raab //Firma: Metropolitan // 24. August 2001 #include#include using namespace std; #ifdef __cplusplus namespace mr { #endif class Overflow {}; //wird bei zahlenueberlauf geworfen class Datum { private: short itsTag, itsMonat, itsJahr; public: Datum (int itsTag = 1, int itsMonat = 1, int itsJahr = 1) { if (!SetDatum(itsTag, itsMonat, itsJahr)) itsTag = itsMonat = itsJahr = 1; } //Konstruktor und Defaultkonstruktor void SetDatum(); //setzt akutelles Datum bool SetDatum(int itsTag, int itsMonat, int itsJahr); //ueberprueftes einlesen eines Datums bool SetTag(int Tag); bool SetMonat(int Monat); bool SetJahr(int Jahr); //Achtung:: IMMER zuerst Tag setzen, sonst ist Ueberpruefung bei //Monat undefiniert!!! (Februartage usw) //geschuetzte Zugriffsmethoden protected: void Tag(int tag) {itsTag = tag;} void Monat(int monat) {itsMonat = monat;} void Jahr(int jahr) {itsJahr = jahr;} //besonders schneller zugriff! Sollte NICHT verwendet werden! public: int GetTag() const {return itsTag;} int GetMonat() const {return itsMonat;} int GetJahr() const {return itsJahr;} //man kann jedes Element einzeln lesen string AsString() const; void SetString(string str); void AsChar(char * ch) const; void SetChar (char * str); int AsTage() const; int AsMonate() const; int AsJahre() const; //benoetigte Vergleichsoperatoren: bool operator != (const Datum & d) const; bool operator == (const Datum & d) const; bool operator >= (const Datum & d) const; bool operator <= (const Datum & d) const; bool operator > (const Datum & d) const; bool operator < (const Datum & d) const; //Ausgabeoperatoren fuer Console friend ostream & operator << (ostream & os, Datum & d); friend istream & operator >> (istream & is, Datum & d); //Ausgabeoperatoren fuer Dateien bool Save (ofstream & os); bool Load (ifstream & os); }; //so wird ein Schaltjahr berechnet! inline bool isLeapYear (int itsJahr) { return (itsJahr % 4 == 0 && itsJahr %100 != 0) || itsJahr % 400 == 0; } #ifdef __cplusplus } //MR ende #endif #endif