Brauche hilfe bei einem Kundenverwaltungsprogramm bitte! :(



  • Moin die Herren (und evtl. auch Damen),

    ich bin Azubi zum IT-SE bei der DTAG und schreibe nun für das Berufschulfach Anwendungsentwicklung ein Programm, mit dem man Kunden verwalten kann. Das ganze wird dann in einer Datei gespeichert.

    Das heißt:

    Kundendatensätze hinzufügen (Hab ich bereits hinbekommen)

    Kundendatensätze ändern (Da steh ich absolut auf dem Schlauch)

    Kundendatensätze suchen (Auch hier hab ich keine Idee, wie ich das verwirklichen kann.)

    Kundendatensätze anzeigen (Hab ich bereits hinbekommen)

    Wie man oben sieht, habe ich keine Idee wie man so einen Datensatz quasi in der Datei ändert oder gar in der Datei sucht. (Zum Beispiel nach Eingabe der Kundennummer)

    Ich habe vorher nur hier und da ein bisschen mit Java rumgespielt und bin daher quasi neu in der C Welt.

    Nun mal bisheriger CODE:

    /* Kundenverwaltungsprogramm -> AE Projekt */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    struct {
       char vorname[20];
       char nachname[30];
       char strasse[30];
       char hausnummer[5];
       char plz[7];
       char ort[30];
       char kundennummer[10];
    } kundendaten;
    
    /******************************************************************************************************/
    
    void speichern(void) {
       FILE *save = fopen("kundendaten.dat","r+b");
       if( NULL == save ) {
          save = fopen("kundendaten.dat","w+b");
          if( NULL == save ) {
             fprintf(stderr,"Kann \"kundendaten.dat\" nicht öffnen!\n");
    
          }
       }
       /* FILE-Zeiger save auf das Ende der Datei setzen */
       fseek(save, 0, SEEK_END);
       /* Einen Kundendatensatz ans Ende von "kundendaten.dat" */
       if(fwrite(&kundendaten, sizeof(kundendaten), 1, save) != 1) {
          fprintf(stderr, "Fehler bei fwrite...!!!\n");
    
       }
       /* FILE-Zeiger wieder frei geben */
       fclose(save);
    }
    
    /*******************************************************************************************************/
    
    void ausgabe(void) {
       FILE *output = fopen("kundendaten.dat","r+b");
       if( NULL == output ) {
          fprintf(stderr,"Kann \"kundendaten.dat\" nicht öffnen!\n");
    
       }
       /* Alle Daten aus "kundendaten.dat" lesen */
       while(fread(&kundendaten, sizeof(kundendaten), 1, output) == 1) {
          printf("Vorname...........: %s",kundendaten.vorname);
          printf("Nachname..........: %s",kundendaten.nachname);
          printf("Strasse...........: %s",kundendaten.strasse);
          printf("Hausnummer........: %s",kundendaten.hausnummer);
          printf("Postleitzahl......: %s",kundendaten.plz);
          printf("Ort...............: %s",kundendaten.ort);
          printf("Kundennummer......: %s",kundendaten.kundennummer);
          printf("\n\n");
       }
       fclose(output);
    }
    
    /*******************************************************************************************************/
    
    void eingabe(void) {
       printf("Vorname...........:");
       fgets(kundendaten.vorname, sizeof(kundendaten.vorname), stdin);
       printf("Nachname..........:");
       fgets(kundendaten.nachname, sizeof(kundendaten.nachname),stdin);
       printf("Strasse...........:");
       fgets(kundendaten.strasse, sizeof(kundendaten.strasse), stdin);
       printf("Hausnummer........:");
       fgets(kundendaten.hausnummer,sizeof(kundendaten.hausnummer),stdin);
       printf("Postleitzahl......:");
       fgets(kundendaten.plz, sizeof(kundendaten.plz), stdin);
       printf("Ort...............:");
       fgets(kundendaten.ort, sizeof(kundendaten.ort), stdin);
       printf("Kundennummer......:");
       fgets(kundendaten.kundennummer, sizeof(kundendaten.kundennummer), stdin);
       speichern();
    }
    
    /*******************************************************************************************************/
    
    int main(void) {
       int wahl;
       do {
          printf("Was wollen Sie machen:\n\n");
          printf("-1- Neuen Kunden-Datensatz hinzufuegen\n");
          printf("-2- Alle Datensaetze ausgeben\n");
    	  printf("-3- Kunden suchen\n");
    	  printf("-4- Kunde aendern\n");
          printf("-5- Programm beenden\n\n");
          printf("Ihre Auswahl : ");
          do {
             scanf("%d",&wahl);
          } while(getchar() != '\n');
          switch(wahl) {
             case 1 : eingabe();
    			 break;
             case 2 : ausgabe();
    			 break;
    		 case 3 : printf("kommt noch.....\n");
    			 break;
    		 case 4 : printf("kommt noch.....\n");
    			 break;
             case 5 : printf("...Programm wird beendet\n");
    			 break;
             default: printf(">>%d<< ???\n",wahl);
          }
       } while(wahl != 5);
       return EXIT_SUCCESS;
    }
    

    Ich hoffe, einer von Ihnen oder einer von Euch kann mir auf die Sprünge helfen.

    Grüße,

    Bernd



  • Ich hoffe, das hilft dir auf die Sprünge zu kommen 😉 :

    Das verstehen musst du aber selber.

    /* Kundenverwaltungsprogramm -> AE Projekt */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct {
       char vorname[20];
       char nachname[30];
       char strasse[30];
       char hausnummer[5];
       char plz[7];
       char ort[30];
       char kundennummer[10];
    } kundendaten;
    
    /******************************************************************************************************/
    
    void speichern(int offset = -1) {
       FILE *save = fopen("kundendaten.dat","r+b");
       if( NULL == save ) {
          save = fopen("kundendaten.dat","w+b");
          if( NULL == save ) {
             fprintf(stderr,"Kann \"kundendaten.dat\" nicht öffnen!\n");
    
          }
       }
       if(offset != -1){
       	fseek(save, offset, SEEK_SET);
       }else{
       	/* FILE-Zeiger save auf das Ende der Datei setzen */
       	fseek(save, 0, SEEK_END);
       }
    
       /* Einen Kundendatensatz ans Ende von "kundendaten.dat" */
       if(fwrite(&kundendaten, sizeof(kundendaten), 1, save) != 1) {
          fprintf(stderr, "Fehler bei fwrite...!!!\n");
    
       }
       /* FILE-Zeiger wieder frei geben */
       fclose(save);
    }
    
    /*******************************************************************************************************/
    
    void ausgabe(void) {
       FILE *output = fopen("kundendaten.dat","r+b");
       if( NULL == output ) {
          fprintf(stderr,"Kann \"kundendaten.dat\" nicht öffnen!\n");
    
       }
       /* Alle Daten aus "kundendaten.dat" lesen */
       while(fread(&kundendaten, sizeof(kundendaten), 1, output) == 1) {
          printf("Vorname...........: %s",kundendaten.vorname);
          printf("Nachname..........: %s",kundendaten.nachname);
          printf("Strasse...........: %s",kundendaten.strasse);
          printf("Hausnummer........: %s",kundendaten.hausnummer);
          printf("Postleitzahl......: %s",kundendaten.plz);
          printf("Ort...............: %s",kundendaten.ort);
          printf("Kundennummer......: %s",kundendaten.kundennummer);
          printf("\n\n");
       }
       fclose(output);
    }
    
    /*******************************************************************************************************/
    
    void eingabe(void) {
       printf("Vorname...........:");
       fgets(kundendaten.vorname, sizeof(kundendaten.vorname), stdin);
       printf("Nachname..........:");
       fgets(kundendaten.nachname, sizeof(kundendaten.nachname),stdin);
       printf("Strasse...........:");
       fgets(kundendaten.strasse, sizeof(kundendaten.strasse), stdin);
       printf("Hausnummer........:");
       fgets(kundendaten.hausnummer,sizeof(kundendaten.hausnummer),stdin);
       printf("Postleitzahl......:");
       fgets(kundendaten.plz, sizeof(kundendaten.plz), stdin);
       printf("Ort...............:");
       fgets(kundendaten.ort, sizeof(kundendaten.ort), stdin);
       printf("Kundennummer......:");
       fgets(kundendaten.kundennummer, sizeof(kundendaten.kundennummer), stdin);
       speichern();
    }
    
    void aendern(void) {
    	int position = 0;
       printf("Geben Sie ein, an welcher Stelle der Kunde eingetragen wurde: ");
       scanf("%i", &position);fflush(stdin);
    
    	FILE *output = fopen("kundendaten.dat","r+b");
       if( NULL == output ) {
          fprintf(stderr,"Kann \"kundendaten.dat\" nicht öffnen!\n");
       }
    
       fseek(output, (position-1) * sizeof(kundendaten), SEEK_SET);
    
       fread(&kundendaten, sizeof(kundendaten), 1, output);
       printf("Vorname...........: %s",kundendaten.vorname);
       printf("Nachname..........: %s",kundendaten.nachname);
       printf("Strasse...........: %s",kundendaten.strasse);
       printf("Hausnummer........: %s",kundendaten.hausnummer);
       printf("Postleitzahl......: %s",kundendaten.plz);
       printf("Ort...............: %s",kundendaten.ort);
       printf("Kundennummer......: %s",kundendaten.kundennummer);
       printf("\n\n");
    
       fclose(output);
    
       printf("Bitte neue Daten eingeben:\n");
       printf("Vorname...........:");
       fgets(kundendaten.vorname, sizeof(kundendaten.vorname), stdin);
       printf("Nachname..........:");
       fgets(kundendaten.nachname, sizeof(kundendaten.nachname),stdin);
       printf("Strasse...........:");
       fgets(kundendaten.strasse, sizeof(kundendaten.strasse), stdin);
       printf("Hausnummer........:");
       fgets(kundendaten.hausnummer,sizeof(kundendaten.hausnummer),stdin);
       printf("Postleitzahl......:");
       fgets(kundendaten.plz, sizeof(kundendaten.plz), stdin);
       printf("Ort...............:");
       fgets(kundendaten.ort, sizeof(kundendaten.ort), stdin);
       printf("Kundennummer......:");
       fgets(kundendaten.kundennummer, sizeof(kundendaten.kundennummer), stdin);
       speichern((position-1) * sizeof(kundendaten));
    
    }
    
    void suchen(void){
    	char searchfor[30];
    	printf("Geben Sie ein, was gefunden werden soll: ");
    	scanf("%s", searchfor);
    
    	FILE *output = fopen("kundendaten.dat","r+b");
       if( NULL == output ) {
          fprintf(stderr,"Kann \"kundendaten.dat\" nicht öffnen!\n");
    
       }
       /* Alle Daten aus "kundendaten.dat" lesen */
       while(fread(&kundendaten, sizeof(kundendaten), 1, output) == 1) {
          if( strncmp(kundendaten.vorname, searchfor, strlen(searchfor)) == 0 ||
    			 strncmp(kundendaten.nachname, searchfor, strlen(searchfor)) == 0 ||
    			 strncmp(kundendaten.strasse, searchfor, strlen(searchfor)) == 0 ||
    			 strncmp(kundendaten.hausnummer, searchfor, strlen(searchfor)) == 0 ||
    			 strncmp(kundendaten.plz, searchfor, strlen(searchfor)) == 0 ||
    			 strncmp(kundendaten.ort, searchfor, strlen(searchfor)) == 0 ||
    			 strncmp(kundendaten.kundennummer, searchfor, strlen(searchfor)) == 0 ){
    
    			 printf("Vorname...........: %s",kundendaten.vorname);
       		 printf("Nachname..........: %s",kundendaten.nachname);
       		 printf("Strasse...........: %s",kundendaten.strasse);
       		 printf("Hausnummer........: %s",kundendaten.hausnummer);
       		 printf("Postleitzahl......: %s",kundendaten.plz);
       		 printf("Ort...............: %s",kundendaten.ort);
       		 printf("Kundennummer......: %s",kundendaten.kundennummer);
       		 printf("\n\n");
    
    		}
       }
       fclose(output);
    }
    
    /*******************************************************************************************************/
    
    int main(void) {
       int wahl;
       do {
          printf("Was wollen Sie machen:\n\n");
          printf("-1- Neuen Kunden-Datensatz hinzufuegen\n");
          printf("-2- Alle Datensaetze ausgeben\n");
          printf("-3- Kunden suchen\n");
          printf("-4- Kunde aendern\n");
          printf("-5- Programm beenden\n\n");
          printf("Ihre Auswahl : ");
          do {
             scanf("%d",&wahl);
          } while(getchar() != '\n');
          switch(wahl) {
             case 1 : eingabe();
                 break;
             case 2 : ausgabe();
                 break;
             case 3 : suchen();
                 break;
             case 4 : aendern();
                 break;
             case 5 : printf("...Programm wird beendet\n");
                 break;
             default: printf(">>%d<< ???\n",wahl);
          }
       } while(wahl != 5);
       return EXIT_SUCCESS;
    }
    


  • Hallelujah! :>

    Ich danke dir vielmals! Ich setz mich dann gleich mal ans Verstehen 😉

    Einen schönen Abend!

    Gruß, Bernd


Anmelden zum Antworten