Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX_RESERVIERUNGEN 500
  5. #define MAX_TEXTLAENGE 100
  6. #define LEER 0
  7.  
  8. typedef struct TReservierung {
  9. char name[MAX_TEXTLAENGE];
  10. int anzahl;
  11. char kategorie;
  12.  
  13. } TReservierung;
  14.  
  15. void zuruecksetzen(TReservierung *reservierungen, int laenge);
  16.  
  17. int waehleMenupunkt();
  18.  
  19. void neueReservierung(TReservierung *reservierungen, int laenge);
  20.  
  21. int holenaechstefreieZeile(TReservierung *reservierungen, int laenge);
  22.  
  23. int speichereInDatei(char *dateiname, TReservierung *reservierungen, int laenge);
  24.  
  25. int main() {
  26. int auswahl = -1;
  27.  
  28. //Diese Variable enthält alle getätigten Reservierungen
  29. TReservierung reservierungen[MAX_RESERVIERUNGEN];
  30.  
  31. //Setze die Liste meiner Reservierungen auf einen bekannten
  32. //Ausgangszustand (da ansonsten steht "Blödsinn" drinnen)
  33. zuruecksetzen(reservierungen, MAX_TEXTLAENGE);
  34.  
  35. //nur bei 0 wird das Programm beendet - ansonsten wird die
  36. //Schleife nie verlassen
  37. while (auswahl != 0) {
  38. auswahl = waehleMenupunkt();
  39.  
  40. switch (auswahl) {
  41. case 1:
  42. //printf("Funktion zum Hinzufügen einer Reservierung aufrufen \n");
  43. neueReservierung(reservierungen, MAX_RESERVIERUNGEN);
  44. break;
  45.  
  46. case 2:
  47. printf("Funktion zum Ändern einer Reservierung aufrufen \n");
  48.  
  49. break;
  50.  
  51. case 3:
  52. printf("Funktion zum Löschen einer Reservierung aufrufen \n");
  53.  
  54. break;
  55.  
  56. case 8:
  57. printf("Funktion zum Ausgeben aller Reservierung aufrufen \n");
  58.  
  59. break;
  60.  
  61. case 9:
  62. //printf("Funktion zum Speichern aller Reservierung aufrufen \n");
  63. speichereInDatei("reservierungen.csv", reservierungen, MAX_RESERVIERUNGEN);
  64. break;
  65.  
  66. case 0:
  67. printf("AUF WIEDERSEHEN");
  68.  
  69. break;
  70.  
  71. }
  72. }
  73. return 0;
  74. }
  75.  
  76. /*
  77. * Setze alle Reservierungen auf einen bekannten Ausgangszustand
  78. * --> ansonsten steht "Blödsinn" im Array
  79. */
  80.  
  81. void zuruecksetzen(TReservierung *reservierungen, int laenge) {
  82. int i = 0;
  83.  
  84. for (i = 0; i < laenge; ++i) {
  85. reservierungen[i].anzahl = LEER;
  86. reservierungen[i].name[0] = '\0';
  87. reservierungen[i].kategorie = '-';
  88. }
  89. }
  90.  
  91. int waehleMenupunkt() {
  92. int menupunkt = -1;
  93.  
  94. while (menupunkt != 1 && menupunkt != 2 && menupunkt != 3 && menupunkt != 8 &&
  95. menupunkt != 9 && menupunkt != 0) {
  96. printf("|--------------------------------------|\n");
  97. printf("|-------------Ticketservice------------|\n");
  98. printf("|--------------------------------------|\n");
  99. printf("|---[1] Neue Reservierung--------------|\n");
  100. printf("|---[2] Reservierung ändern------------|\n");
  101. printf("|---[3] Reservierung löschen-----------|\n");
  102. printf("|---[8] Liste aller Reservierung-------|\n");
  103. printf("|---[9] Exportieren der Reservierungen-|\n");
  104. printf("|---[0] Programm beenden---------------|\n");
  105. printf("|--------------------------------------|\n");
  106. scanf("%d", &menupunkt);
  107. getchar();
  108.  
  109. if (menupunkt != 1 && menupunkt != 2 && menupunkt != 3 && menupunkt != 8 &&
  110. menupunkt != 9 && menupunkt != 0) {
  111. printf("Falsche Eingabe - Bitte erneut versuchen\n\n");
  112. }
  113. }
  114.  
  115. return menupunkt;
  116. }
  117.  
  118. void neueReservierung(TReservierung *reservierungen, int laenge) {
  119. int freieZeile = holenaechstefreieZeile(reservierungen, laenge);
  120.  
  121. if (freieZeile >= 0) { //Es können noch Reservierungen hinzugefügt werden
  122. printf("Bitte geben Sie den Namen für die Resevierung ein: ");
  123. fgets(reservierungen[freieZeile].name, MAX_TEXTLAENGE, stdin);
  124. //Problem - das eingegebene ENTER steht am Ende des Namens
  125. int anzahlZeichen = strlen(reservierungen[freieZeile].name);
  126.  
  127. if (anzahlZeichen > 0) {
  128. //Lösche das lezte Zeichen --> entferne das \n aus dem Namen!
  129. reservierungen[freieZeile].name[anzahlZeichen - 1] = '\0';
  130. }
  131.  
  132. printf("Bitte geben Sie die gewünschte Kategorie ein: ");
  133. scanf("%c", &reservierungen[freieZeile].kategorie);
  134. getchar();
  135.  
  136. printf("Bitte geben Sie die Anzahl der Karten ein: ");
  137. scanf("%d", &reservierungen[freieZeile].anzahl);
  138. getchar();
  139. }
  140. }
  141.  
  142. int holenaechstefreieZeile(TReservierung *reservierungen, int laenge) {
  143. int freieZeile = 0;
  144.  
  145. //Suche die erste Zeile die in meinen Reservierungen, die frei ist
  146. while (freieZeile < laenge && reservierungen[freieZeile].anzahl != LEER) {
  147. ++freieZeile;
  148. }
  149.  
  150. //Es gibt keine freie Zeile mehr
  151. if (freieZeile >= laenge) {
  152. freieZeile = -1;
  153. }
  154.  
  155. // hier steht in der Variable freieZeile die nächste Zeile die frei ist
  156.  
  157. return freieZeile;
  158. }
  159.  
  160. int speichereInDatei(char *dateiname, TReservierung *reservierungen, int laenge) {
  161. int i = 0;
  162. FILE *fp = NULL;
  163.  
  164. fp = fopen(dateiname, "wt");
  165.  
  166. if (fp != NULL) {
  167. while (i < laenge && reservierungen[i].anzahl != LEER) {
  168. fprintf(fp, "%s;%c;%d\n",
  169. reservierungen[i].name,
  170. reservierungen[i].kategorie,
  171. reservierungen[i].anzahl);
  172. ++i;
  173. }
  174.  
  175.  
  176. fclose(fp);
  177. }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement