#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <windows.h>
#include <process.h>
#define BLACK 0
#define BLUE 1
#define GREEN 2
#define CYAN 3
#define RED 4
#define YELLOW 14
#define WHITE 15
#define BLINK 128
struct Satz
{
char Name[15];
char Vorname[10];
char Mail[25];
char ICQ[30];
} Name;
void Ende(void);
void Neu(void);
void Waehlen(void);
void Ausgabe(void);
void Append(void);
void loeschen(void);
void Suchen(void);
void main2(void);
long filesize(FILE *stream);
bool running = false;
bool start=true;
FILE *Liste;
int i=0;
char Datei[20];
char weiter='j';
int main()
{
char Wahl;
while(start)
{
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" ;
cout<<" HAUPTMENUE \n";
cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n" ;
cout << "1. Neue Datei anlegen\n";
cout << "2. Datei w\x84hlen\n";
cout << "3. Datei l\x94schen\n";
cout << "0. Programm Ende\n";
Wahl = getch();
switch (Wahl)
{
case '0':
{
Ende();
}break;
case '1':
{Neu();
}break;
case '2':
{Waehlen();
}break;
case '3':
{loeschen();
}break;
case '4':
{loeschen();
}break;
default:
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 4);
cout<< "Fatal Error!";
Sleep(3000);
}
}
getch();
return 0;
}
//------------------------------------------------------------------------------
void Ende()
{
running = false;
start=false;
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" ;
cout<<"³ E N D E ³\n";
cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n" ;
cout<<"Programm wird beendet...."<<endl;
Sleep(5000);
exit(0);
}
//------------------------------------------------------------------------------
void Neu()
{
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" ;
cout<<"³ N E U E D A T E I ³\n";
cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n" ;
cout<<"Bitte geben Sie den Dateinamen(.dat) ein: ";
cin>>Datei;
cout<<"Die Datei "<<Datei<<" wird erstellt";
Sleep(3000);
start=false;
running=true;
main2();
}
//------------------------------------------------------------------------------
void Waehlen()
{
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" ;
cout<<"³ D A T E I W \x8E H L E N ³\n";
cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n" ;
cout << "Welche Datei wollen sie oeffnen?(.dat anhaengen)";
cin>>Datei;
Liste=fopen(Datei,"r");
if(Liste==NULL)
{
cout<<"Fehler beim Anlegen der Datei !\n";
cout<<"Bitte erstellen Sie im Hauptmen\x81 eine neue Datei!\n";
Sleep(3000);
}
else
{
cout<<"Datei gefunden!";
Sleep(3000);
start=false;
running=true;
main2();
}
}
//------------------------------------------------------------------------------
void loeschen()
{
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
cout<<"³ D A T E I L \x99 S C H E N ³\n";
cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
fclose(Liste);
char befehl[50];
cout<<"Welche Datei wollen Sie l\x94schen\n";
gets(Datei);
strcpy(befehl, "del ");
strcat(befehl, Datei);
system(befehl);
cout<<"Die Datei "<<Datei<<" wurde gel\x94scht!"<<endl;
Sleep(3000);
}
void Ausgabe()
{ clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" //Rahmen mit Überschrift
<<"³ D A T E N A U S G E B E N ³\n"
<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
fflush(stdin);
fclose(Liste);
i=0;
Liste= fopen(Datei,"r+b");
cout<<"Vorname\t\tNachname\t\tE-Mail"<<endl;
for(i;(filesize(Liste)/sizeof(Satz))>i;i++) //solange die Anzahl von Datensätzen>i ist
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
fread(&Name,sizeof(Name),1,Liste); //falls Datei doch vorhanden, auslesen
cout<<setw(10)<<Name.Vorname<<" ³"
<<setw(15)<<Name.Name<<" ³"
<<setw(25)<<Name.Mail<<" ³"
<<setw(30)<<Name.ICQ<< endl;
}
cout<<"\nDatei gelesen..";
cout<<i<<" Element(e) vorhanden";
getch();
}
void Append()
{
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n";
cout<<"³ D A T E N E I N G E B E N ³\n";
cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n";
fflush(stdin);
fclose(Liste);
Liste=fopen(Datei,"ab"); // Öffnen der Binärdatei zum Schreiben
while(weiter=='j') // Wenn noch nichts drin, etwas reinschreiben:
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"\nVorname: "; gets(Name.Vorname);
cout<<"\Nachname: "; gets(Name.Name);
cout<<"E-Mail: "; gets(Name.Mail);
cout<<"ICQ: "; gets (Name.ICQ);
cout<<"Noch einen (j/n)?\n"; weiter=getch(); i++;
fwrite(&Name,sizeof(Satz),1,Liste); // am Schluss wegschreiben
}
weiter='j';
}
void Suchen()
{
char Wahl3;
fflush(stdin);
fclose(Liste);
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"
<<"³ D A T E N S U C H E N ³\n"
<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ� �ÄÄÄÄÄÄÄÄÄÄÄÙ\n";
/*cout<<"1. Nach Vornamen suchen\n"
<<"2. Nach Nachnamen suchen\n"
<<"3. Nach E-Mail suchen\n"
<<"4. Nach ICQ-Nummer suchen\n"
<<"5.Nach Datensatznummer suchen\n";
Wahl3=getch(); */
Liste=fopen(Datei,"r+b");
while(weiter=='j') // Jetzt bestimmte Daten holen
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout<<"\nWelchen Eintrag wollen Sie sehen? Nummer (1-" <<filesize(Liste)/sizeof(Satz)<<"): "; // ermittelt Zahl der Daten
cin >> i;
fseek(Liste,sizeof(Satz)*(i-1),SEEK_SET); // richtige Stelle suchen
fread(&Name,sizeof(Satz),1,Liste); // Struktur 1x lesen
cout<<Name.Vorname<<Name.Name<<"E-Mail:"<<Name.Mail<<Name.ICQ<<endl;
cout<<"Datensatz neu schreiben (j/n)?"; weiter=getch(); fflush(stdin);
if(weiter=='j')
{
cout<<"\nVorname: "; gets(Name.Vorname);
cout<<"Nachname: "; gets(Name.Name);
cout<<"E-Mail: "; gets(Name.Mail);
cout<<"ICQ: "; gets(Name.ICQ);
fseek(Liste,sizeof(Satz)*(i-1),SEEK_SET);
fwrite(&Name,sizeof(Satz),1,Liste);
}
cout<<"\nNoch einen (j/n)?"; weiter=getch();
}
}
long filesize(FILE *stream) // findet die Länge der Datei in Byte heraus
{
long curpos, length;
curpos = ftell(stream);
fseek(stream, 0L, SEEK_END);
length = ftell(stream);
fseek(stream, curpos, SEEK_SET);
return length;
}
void main2()
{
char Wahl2;
while(running)
{
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 14);
cout << "1. Datens\x84tze sortiert tabellarisch ausgeben \n";
cout << "2. Datensatz anh\x84ngen\n";
cout << "3. Datenfeldinhalt suchen und \x84ndern\n";
cout << "4. Zurueck zum Dateimen\x81\n";
cout << "0. Programm Ende\n";
Wahl2 = getch();
switch (Wahl2)
{
case '0':
{
Ende();
}break;
case '1':
{
Ausgabe();
}break;
case '2':
{
Append();
}break;
case '3':
{
Suchen();
}break;
case '4':
{
running = false;
start=true;
}break;
default:
clrscr();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HA NDLE), 4);
cout<< "Falsche Eingabe!";
Sleep(3000);
}
}
getch();
}