Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define MAX_RESERVIERUNGEN 500
- #define MAX_TEXTLAENGE 100
- #define LEER 0
- typedef struct TReservierung {
- char name[MAX_TEXTLAENGE];
- int anzahl;
- char kategorie;
- } TReservierung;
- void zuruecksetzen(TReservierung *reservierungen, int laenge);
- int waehleMenupunkt();
- void neueReservierung(TReservierung *reservierungen, int laenge);
- int holenaechstefreieZeile(TReservierung *reservierungen, int laenge);
- int speichereInDatei(char *dateiname, TReservierung *reservierungen, int laenge);
- int main() {
- int auswahl = -1;
- //Diese Variable enthält alle getätigten Reservierungen
- TReservierung reservierungen[MAX_RESERVIERUNGEN];
- //Setze die Liste meiner Reservierungen auf einen bekannten
- //Ausgangszustand (da ansonsten steht "Blödsinn" drinnen)
- zuruecksetzen(reservierungen, MAX_TEXTLAENGE);
- //nur bei 0 wird das Programm beendet - ansonsten wird die
- //Schleife nie verlassen
- while (auswahl != 0) {
- auswahl = waehleMenupunkt();
- switch (auswahl) {
- case 1:
- //printf("Funktion zum Hinzufügen einer Reservierung aufrufen \n");
- neueReservierung(reservierungen, MAX_RESERVIERUNGEN);
- break;
- case 2:
- printf("Funktion zum Ändern einer Reservierung aufrufen \n");
- break;
- case 3:
- printf("Funktion zum Löschen einer Reservierung aufrufen \n");
- break;
- case 8:
- printf("Funktion zum Ausgeben aller Reservierung aufrufen \n");
- break;
- case 9:
- //printf("Funktion zum Speichern aller Reservierung aufrufen \n");
- speichereInDatei("reservierungen.csv", reservierungen, MAX_RESERVIERUNGEN);
- break;
- case 0:
- printf("AUF WIEDERSEHEN");
- break;
- }
- }
- return 0;
- }
- /*
- * Setze alle Reservierungen auf einen bekannten Ausgangszustand
- * --> ansonsten steht "Blödsinn" im Array
- */
- void zuruecksetzen(TReservierung *reservierungen, int laenge) {
- int i = 0;
- for (i = 0; i < laenge; ++i) {
- reservierungen[i].anzahl = LEER;
- reservierungen[i].name[0] = '\0';
- reservierungen[i].kategorie = '-';
- }
- }
- int waehleMenupunkt() {
- int menupunkt = -1;
- while (menupunkt != 1 && menupunkt != 2 && menupunkt != 3 && menupunkt != 8 &&
- menupunkt != 9 && menupunkt != 0) {
- printf("|--------------------------------------|\n");
- printf("|-------------Ticketservice------------|\n");
- printf("|--------------------------------------|\n");
- printf("|---[1] Neue Reservierung--------------|\n");
- printf("|---[2] Reservierung ändern------------|\n");
- printf("|---[3] Reservierung löschen-----------|\n");
- printf("|---[8] Liste aller Reservierung-------|\n");
- printf("|---[9] Exportieren der Reservierungen-|\n");
- printf("|---[0] Programm beenden---------------|\n");
- printf("|--------------------------------------|\n");
- scanf("%d", &menupunkt);
- getchar();
- if (menupunkt != 1 && menupunkt != 2 && menupunkt != 3 && menupunkt != 8 &&
- menupunkt != 9 && menupunkt != 0) {
- printf("Falsche Eingabe - Bitte erneut versuchen\n\n");
- }
- }
- return menupunkt;
- }
- void neueReservierung(TReservierung *reservierungen, int laenge) {
- int freieZeile = holenaechstefreieZeile(reservierungen, laenge);
- if (freieZeile >= 0) { //Es können noch Reservierungen hinzugefügt werden
- printf("Bitte geben Sie den Namen für die Resevierung ein: ");
- fgets(reservierungen[freieZeile].name, MAX_TEXTLAENGE, stdin);
- //Problem - das eingegebene ENTER steht am Ende des Namens
- int anzahlZeichen = strlen(reservierungen[freieZeile].name);
- if (anzahlZeichen > 0) {
- //Lösche das lezte Zeichen --> entferne das \n aus dem Namen!
- reservierungen[freieZeile].name[anzahlZeichen - 1] = '\0';
- }
- printf("Bitte geben Sie die gewünschte Kategorie ein: ");
- scanf("%c", &reservierungen[freieZeile].kategorie);
- getchar();
- printf("Bitte geben Sie die Anzahl der Karten ein: ");
- scanf("%d", &reservierungen[freieZeile].anzahl);
- getchar();
- }
- }
- int holenaechstefreieZeile(TReservierung *reservierungen, int laenge) {
- int freieZeile = 0;
- //Suche die erste Zeile die in meinen Reservierungen, die frei ist
- while (freieZeile < laenge && reservierungen[freieZeile].anzahl != LEER) {
- ++freieZeile;
- }
- //Es gibt keine freie Zeile mehr
- if (freieZeile >= laenge) {
- freieZeile = -1;
- }
- // hier steht in der Variable freieZeile die nächste Zeile die frei ist
- return freieZeile;
- }
- int speichereInDatei(char *dateiname, TReservierung *reservierungen, int laenge) {
- int i = 0;
- FILE *fp = NULL;
- fp = fopen(dateiname, "wt");
- if (fp != NULL) {
- while (i < laenge && reservierungen[i].anzahl != LEER) {
- fprintf(fp, "%s;%c;%d\n",
- reservierungen[i].name,
- reservierungen[i].kategorie,
- reservierungen[i].anzahl);
- ++i;
- }
- fclose(fp);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement