musti Geschrieben 13. Mai 2011 Geschrieben 13. Mai 2011 Hallo Informatiker, ich habe ein kleines Problem. Ich habe ein Programm geschrieben, wobei man ein Guthaben- und Darlehenkonto anlegen kann. Und diese Berechnet werden. Man kann auch die Anfangs-Konto-Stände in eine Datei schreiben und auslesen. Mir fehlt aber, das man den Namen des Kontoinhabers eingeben kann. Wie könnte ich dies am besten lösen? Der Name soll in einem eigenen Array vorbesetzt werden und alle Ausgaben aus dem Hauptprogramm, die ein Konto betreffe, sollen auch den Namen des Inhabers haben. #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define KONTANZ 10 #define BANKNR 10000 #define DARLEHENSZINS 0.05 #define GUTHABENZINS 0.03 struct Konto { char *namptr; /*Name des Besitzers */ unsigned int kontoNr; /*Kontonummer*/ char artDktos; /*Art des kontos*/ float kontoStd; /*Kontostand*/ float zinsSz; /*Zinssatz*/ unsigned int laufZt; /*Laufzeit*/ float annuitaet; /*Annuität*/ }; // Globale Variablen // struct Konto Konten[10]; int f=0; char eingabe; FILE *speicher; // Funktions Prototypen // int KontoAnlegen(void); int getKontoByNr(int KontoNr); int BerechneGutKonto(int); int BerechneDaKonto(int); void SchreibeDatei(int Kontonummer); void oeffneDatei(char dateiname[]); //----------------------------------------------------------------------------// int main(int argc, char *argv[]) { int i; int zahl; int anfang = 1; int berechnung; float berechne; int nBerechnung; printf("\n\t Struktur Kontodaten,"); printf("\n\tvon xyz\n"); printf("\tuebersetzt am %s", __DATE__); printf("\tum %s Uhr", __TIME__); printf("\n\n"); /* Führt den Vorgang solange aus bis Exit gedrückt wurde */ while(anfang !=0) { printf("\t(1) Konto anlegen (2) Konto berechnen (3) Exit \n\t " "(4) Konto in Datei schreiben (5) Konto aus Datei auslesen"); scanf("%i",&zahl); if(zahl == 1) { int Ergebnis; do { Ergebnis = KontoAnlegen(); switch(Ergebnis) { case 0: printf("\tGuthabenkonto wurde erfolgreich angelegt.\n\n"); break; case 1: printf("\tDarlehenskonto wurde erfolgreich angelegt.\n\n"); break; case 2: printf("\tFehler beim erstellen des Kontos. \n \t" "Bitte ueberpruefen sie ihre Eingabe\n\n"); break; } } while(Ergebnis == 2); } else if (zahl == 2) { printf("\tBitte kontoNr eingeben: "); scanf("%i",&berechnung); nBerechnung = BerechneGutKonto(berechnung); nBerechnung = BerechneDaKonto(berechnung); switch(nBerechnung) { case 0: printf("\n\t Guthabenkonto erfolgreich berechnet.\n\n"); break; case 1: printf("\n\t Darlehen erfolgreich berechnet.\n\n"); break; case 2: printf("\n\t Unendliche Wiederholzahlen\n\n"); break; default: printf("\n\t Unbekannter Fehler\n\n"); break; } } else if(zahl == 3) { anfang = 0; } else if(zahl ==4) { printf("\tBitte kontoNr eingeben: "); scanf("%i", &berechnung); SchreibeDatei(berechnung); } else if(zahl == 5) { char dateiname[100]; printf("Bitte geben Sie einen Dateinamen an "); scanf("%s",&dateiname); oeffneDatei(dateiname); } else { printf("\tFalsche Eingabe, bitte wiederholen sie die Eingabe richtig.\n"); }//Ende Auswahl Prüfung } //while system("PAUSE"); return 0; } //----------------------------------------------------------------------------// int BerechneGutKonto(int KontoNummer) { // Ermittelt das Konto zur KontoNummer struct Konto AktKonto = Konten[getKontoByNr(KontoNummer)]; printf("\n"); /* Berechnung für Guthabenkonto */ if(AktKonto.artDktos == 'g') { int i; /* Index */ for(i = 1; i <= AktKonto.laufZt; i++) { AktKonto.kontoStd = AktKonto.kontoStd*(1+AktKonto.zinsSz); printf("\t Zwischen-Ergebnis zinsSchl = %f\n", AktKonto.kontoStd); } printf("\n\t Endkontostandt %f",AktKonto.kontoStd); return 0; } }// int BerechneGutKonto(int KontoNummer) //----------------------------------------------------------------------------// int BerechneDaKonto(int KontoNummer) { // Ermittelt das Konto zur KontoNummer struct Konto AktKonto = Konten[getKontoByNr(KontoNummer)]; printf("\n"); // Berechnung für Darlehenskonto // if(AktKonto.artDktos == 'd') { // Fehlerbehandlung von Endlosschleifen // if(AktKonto.kontoStd*(AktKonto.zinsSz + 0.01) >= AktKonto.annuitaet) { return 2; } if(AktKonto.kontoStd*(AktKonto.zinsSz + 0.01) <= AktKonto.annuitaet) { float i; /* zaehlt Jahre */ float zinsBez = 0; /* bis dahin bezahlten Zinsen */ for(i=1;AktKonto.kontoStd >= AktKonto.annuitaet;i++) { zinsBez = zinsBez + AktKonto.kontoStd * AktKonto.zinsSz; AktKonto.kontoStd = AktKonto.kontoStd * (1 + AktKonto.zinsSz) - AktKonto.annuitaet; printf("\n\t ZwischenErg: Restdarlehen = %.2f, bez.Zinsen gesamt = %.2f", AktKonto.kontoStd,zinsBez); } printf("\n\t Tilgung im %.1f ten Jahr\n",i); return 1; } else { return 3; } } } // int BerechneDaKonto(int KontoNummer) // --------------------------------------------------------------------------- // // Ermittelt Konto mithilfe der KontoNummer // int getKontoByNr(int KontoNr) { int i; //Durchläuft alle Konten bis die Kontonummer gefunden wurde // for(i=0; i < sizeof(Konten); i++) { if(KontoNr == Konten[i].kontoNr) { return i; // Gibt dann Konten Index aus // } } } // Ende int getKontoByNr(int KontoNr) // -------------------------------------------------------------------------- // // Funktion zum Anlegen der Konten.Gibt je nach Status eine Prüfziffer wieder // int KontoAnlegen(void) { printf("\n\tKontoart g fuer Guthaben, d fuer Darlehen = "); scanf("%s",&eingabe); int NameIndex; char Name[25]; switch(eingabe) { // Bei Wahl eines Guthabenkontos // case 'g': Konten[f].artDktos ='g'; printf("\n\t\tKontonummer = "); scanf("%i",&Konten[f].kontoNr); printf("\n\t\tKontostand = "); scanf("%f",&Konten[f].kontoStd); Konten[f].zinsSz= GUTHABENZINS; printf("\n\t\tLaufzeit= "); scanf("%i",&Konten[f].laufZt); Konten[f].annuitaet=0; f++; printf("\n\n"); return 0; break; // Bei Wahl eines Darlehenkontos // case 'd': Konten[f].artDktos='d'; printf("\n\t\tKontonummer = "); scanf("%i",&Konten[f].kontoNr); printf("\n\t\tKontostand = "); scanf("%f",&Konten[f].kontoStd); Konten[f].zinsSz=DARLEHENSZINS; Konten[f].laufZt=0; printf("\n\t\tAnnuitaet = "); scanf("%f",&Konten[f].annuitaet); f++; printf("\n\n"); return 1; break; // Bei sonstigen Eingaben // default: return 2; break; } } // Ende int KontoAnlegen(void) //----------------------------------------------------------------------------// //Funktion zum schreiben von Kontaktdaten in eine Datei // void SchreibeDatei(int Kontonummer) { struct Konto AktKonto = Konten[getKontoByNr(Kontonummer)]; speicher = fopen("Kontodaten.txt","a"); system("cls"); if(AktKonto.artDktos == 'g') { fprintf(speicher, "Kontonummer:\t%i\n", AktKonto.kontoNr); fprintf(speicher, "Kontostand:\t%.2f\n", AktKonto.kontoStd); fprintf(speicher, "KontoArt:\t%c\n", AktKonto.artDktos); fprintf(speicher, "Zinsen:\t%.2f\n", AktKonto.zinsSz); fprintf(speicher, "Laufzeit:\t%i\n", AktKonto.laufZt); fclose(speicher); } else if(AktKonto.artDktos == 'd') { fprintf(speicher, "Kontonummer:\t%i\n", AktKonto.kontoNr); fprintf(speicher, "Kontostand:\t%.2f\n", AktKonto.kontoStd); fprintf(speicher, "KontoArt:%c\n", AktKonto.artDktos); fprintf(speicher, "Zinsen:\t%.2f\n", AktKonto.zinsSz); fprintf(speicher, "Annuität:\t%i\n", AktKonto.annuitaet); fclose(speicher); } } //---------------------------------------------------------------------------// //Öffnet eine Datei und gibt sie am Bildschrim wieder// void oeffneDatei(char dateiname[]) { FILE *stream; if((stream = fopen(dateiname,"r")) == NULL) { printf("Fehler beim oeffnen"); exit(1); } int ch; ch = fgetc(stream); while(!feof(stream)) { putchar(ch); ch = fgetc(stream); } fclose(stream); } Ich wäre auf eure Hilfe sehr Dankbar. Mir geht es jetzt nur noch darum, das man den Namen des Kontoinhabers eingeben kann. LG Musti Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.