N
hallo ich habe jetzt in etwa ein programm geschrieben
ich komme allerdings mit einigen sachen nicht klar.
unsere menuepunkte waren wie folgt:
[1] Gespraech eingeben
[2] Gespraechsliste anzeigen
[3] Gespraech loeschen
[4] Gespraeche eines Monats loeschen
[5] Monatsrechnungen
[6] Programm
leider läuft es noch nicht so wie geplant kann mir herzu jemand hilfe leisten?
Programm:
#include<stdio.h>
#include<string.h>
int Puffer();
int Ausgabe(int name);
int Loeschen(int i);
struct datum
{
int tag;
int monat ;
int Jahr;
};
struct telefonat
{
int Name;
struct datum TAG ;
int Anfangsstunde;
int Minuten ;
int Sekunden;
int Entfernung;
};
int main(){
int menue;
int i;
int k;
int m;
int j;
FILE *dz;
printf("Menue: \n [1] Gespraech eingeben \n [2] Gespraechsliste anzeigen \n [3] Gespraech loeschen \n [4] Gespraeche eines Monats loeschen \n [5] Monatsrechnungen \n [6] Programm\n");
scanf("%i", &menue);
struct telefonat gespraech[100];
switch (menue)
{
case 1:
printf("Bitte Name eingeben: \n [1] Sina \n [2] Frederik \n [3] Marie \n [4] Patrick \n [5] Svenja \n [6] Selda \n "); // Einlesen der Angaben
scanf("%i", &gespraech[0].Name);
Puffer();
printf("Bitte Datum in der Form Tag/Monat/Jahr eingeben: \n");
scanf("%i/%i/%i", &gespraech[0].TAG.tag, &gespraech[0].TAG.monat, &gespraech[0].TAG.Jahr);
Puffer();
printf("Bitte Anfangsstunde eingeben: \n");
scanf("%i", &gespraech[0].Anfangsstunde);
Puffer();
printf("Bitte Anzahl voller Minuten eingeben: \n");
scanf("%i", &gespraech[0].Minuten);
Puffer();
printf("Bitte Anzahl der Sekunden eingeben: \n");
scanf("%i", &gespraech[0].Sekunden);
Puffer();
printf("Bitte Entfernung waehlen: \n [1] Ort \n [2] Fern \n [3] Ausland \n");
scanf("%i", &gespraech[0].Entfernung);
Puffer();
dz = fopen("Datei.dat", "ab+");// hier gehts weiter
fwrite(gespraech, sizeof(struct telefonat), 1, dz);
fclose(dz);
break;
case 2:
printf("Sina: | Datum | Anfangsstunde | Anzahl voller Minuten | Anzahl der Sekunden | Entfernung | Kenn-Nr. \n");
Ausgabe(1);
printf("Frederik: | Datum | Anfangsstunde | Anzahl voller Minuten | Anzahl der Sekunden | Entfernung | Kenn-Nr. \n");
Ausgabe(2);
printf("Marie: | Datum | Anfangsstunde | Anzahl voller Minuten | Anzahl der Sekunden | Entfernung | Kenn-Nr. \n");
Ausgabe(3);
printf("Patrick: | Datum | Anfangsstunde | Anzahl voller Minuten | Anzahl der Sekunden | Entfernung | Kenn-Nr. \n");
Ausgabe(4);
printf("Svenja: | Datum | Anfangsstunde | Anzahl voller Minuten | Anzahl der Sekunden | Entfernung | Kenn-Nr. \n");
Ausgabe(5);
printf("Selda: | Datum | Anfangsstunde | Anzahl voller Minuten | Anzahl der Sekunden | Entfernung | Kenn-Nr. \n");
Ausgabe(6);
break;
case 3:
printf("Kenn-Nr. des zu loeschenden Gespraechs eingeben: ");
scanf("%i", &i);
Loeschen(i);
break;
case 4:
printf("Bitte geben sie das Datum des zu loeschenden Monats in der Form Monat/Jahr an: ");
scanf("%i/%i", &m, &j);
for(k=0; k<100; k++){
if ( (gespraech[k].TAG.monat==m) && (gespraech[k].TAG.Jahr==j) )
{
Loeschen(k);
}
}
break;
case 5: break;
case 6: break;
default: printf("Bitte eine Zahl zwischen 1 - 6 eingeben");
}
return 0;
}
int Puffer(){
char z;
do{
z=getchar();
}while(z != 10);
return 0;
}
int Ausgabe(int name)
{
struct telefonat gespraech[100];
int k;
for(k=0; k<100; k++)
{
gespraech[k].Name=0;
gespraech[k].TAG.tag=0;
gespraech[k].TAG.monat=0;
gespraech[k].TAG.Jahr=0;
gespraech[k].Anfangsstunde=0;
gespraech[k].Minuten=0;
gespraech[k].Sekunden=0;
gespraech[k].Entfernung=0;
}
FILE* dz;
dz = fopen("Datei.dat", "rb");
if(dz!=NULL)
{
fread(gespraech, sizeof(struct telefonat), 100, dz);
}
fclose(dz);
int i;
int j = 0;
for(i=0; i<100; i++){
if (gespraech[i].Name==name){ // i Eintraege sind die Platzierungen auf dem Array
j+=1;
printf("%i. Gespraech: | ", j);
printf("%i/%i/%i | ", gespraech[i].TAG.tag, gespraech[i].TAG.monat, gespraech[i].TAG.Jahr);
printf("%i | " , gespraech[i].Anfangsstunde);
printf("%i | " , gespraech[i].Minuten);
printf("%i | " , gespraech[i].Sekunden);
if (gespraech[i].Entfernung == 1 ){
printf("Orts |");
}
if (gespraech[i].Entfernung == 2 ){
printf("Fern |");
}
if (gespraech[i].Entfernung == 3 ){
printf("Ausland |");
}
printf("%i \n " , i);
}
}
return 0;
}
int Loeschen(int i){
struct telefonat gespraech[100];
int k;
//int stop=0;
FILE* dz;
//gespraech[] Null setzen:
for(k=0; k<100; k++)
{
gespraech[k].Name=0;
gespraech[k].TAG.tag=0;
gespraech[k].TAG.monat=0;
gespraech[k].TAG.Jahr=0;
gespraech[k].Anfangsstunde=0;
gespraech[k].Minuten=0;
gespraech[k].Sekunden=0;
gespraech[k].Entfernung=0;
}
//gespraech[] aus Datei einlesen
dz = fopen("Datei.dat", "rb");
if(dz!=NULL)
{
fread(gespraech, sizeof(struct telefonat), 100, dz);
}
fclose(dz);
//gespraech[i] loeschen
dz = fopen("Datei.dat", "wb");
for(k=i; k<100; k++)
{
printf("%i ", k);
gespraech[k]=gespraech[k+1];
if(gespraech[k].Name!=0)
{
// stop+=1;
printf("name: %i ", gespraech[k].Name);
}
}
//neues Arrey gespraech[] in Datei schreiben
if(dz!=NULL)
{
fwrite(gespraech, sizeof(struct telefonat), 99, dz);
}
fclose(dz);
return 0;
}
ich weiss nicht wie ich die gespraechsliste erscheinen lassen kann und wie das löschen genau funktionirt