Advertisement
Roshan-S

aufgabe 6: fuenfteaufgabe.cpp

Jan 18th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.45 KB | None | 0 0
  1. #include "fuenfteAufgabe.h"
  2. #include "sechsteAufgabe.h"
  3.  
  4. void DatenVerwalten() {
  5. //******* Konstantendeklaration
  6. const int MAXHAUSANZAHL = 500;
  7. //******* Variablendeklaration
  8. char d_Menu;
  9. int anzahl = 0;
  10. bool dateiLesen = false;
  11. bool dateiSchreiben = false;
  12. bool unterprogrammende = false;
  13. string datname;
  14. haus hausliste[MAXHAUSANZAHL];
  15. // weitere Variablen nach Bedarf hinzufügen
  16. do {
  17. d_Menu = DatenMenue();
  18. // Fallunterscheidung
  19. switch (d_Menu) {
  20. case 'e':
  21. // **** Haus erfassen
  22. // Funktionsaufruf
  23. DatenErfassen(hausliste, anzahl, MAXHAUSANZAHL);
  24. break;
  25. case 'a':
  26. // **** Häuserliste ausgeben
  27. // Funktionsaufruf
  28. DatenAusgeben(hausliste, anzahl);
  29. break;
  30. case 'r':
  31. // **** Liest die Häuserliste aus einer Datei ein
  32. cout << "Bitte Name der Datei eingeben: ";
  33. cin >> datname;
  34. // Funktionsaufruf
  35. dateiLesen = WerteAusDateiLesen(hausliste, anzahl, datname, MAXHAUSANZAHL);
  36.  
  37. if (true == dateiLesen) {
  38. cout << "Alles gut beim Lesen der Datei" << endl;
  39. } else {
  40. cout << "FEHLER!!! beim Lesen der Datei" << endl;
  41. }
  42. break;
  43. case 'w':
  44. // **** Schreibt die Häuserliste in eine Datei
  45. cout << "Bitte Name der Datei eingeben: ";
  46. cin >> datname;
  47. // Funktionsaufruf
  48. dateiSchreiben = WerteInDateiSchreiben(hausliste, anzahl, datname);
  49. if (true == dateiSchreiben) {
  50. cout << "Alles gut beim Schreiben der Datei" << endl;
  51. } else {
  52. cout << "FEHLER!!! beim Schreiben der Datei" << endl;
  53. }
  54. break;
  55. case 'd':{
  56. DatenVerwaltenDynamisch();
  57. break;}
  58. case 's':/*
  59. // **** Haus suchen
  60. // Eingabe der Suchstrasse – siehe oben
  61. // Funktionsaufruf
  62. fundStelle = FindeHaus(hausliste, anzahl, suchStrasse);
  63. if (-1 == fundStelle) {
  64. // Ihre Ausgabe-Implementierung
  65. } else {
  66. // Ihre Ausgabe-Implementierung
  67. }*/
  68. cout << "Nicht implementiert! \n";
  69. break;
  70. case 'x':
  71. // **** Programm beenden
  72. cout << "*** U N T E R P R O G R A M M E N D E ***" << endl;
  73. unterprogrammende = true;
  74. break;
  75. default:
  76. // Warnhinweis
  77. cout << "Der eingegebene Wert " << d_Menu << " ist nicht gueltig!" << endl;
  78. break;
  79. } // endswitch
  80. } while (false == unterprogrammende);
  81. }
  82.  
  83. /********************************************
  84. * Daten über Tastatur Eingeben
  85. ********************************************/
  86. void DatenErfassen(haus hausliste[], int & anzahl, const int maxAnzahl) {
  87.  
  88.  
  89. if (anzahl <= maxAnzahl) {
  90.  
  91. cout << "Bitte Länge des Grundstücks eingeben: ";
  92. cin >> hausliste[anzahl].laenge;
  93. cin.ignore();
  94. cout << "Bitte Nachname des Eigentuemers eingeben: ";
  95. getline(cin, hausliste[anzahl].eigentuemer.nachname, ',');
  96. cin.ignore();
  97. cout << "Bitte Vorname des Eigentuemers eingeben: ";
  98. getline(cin, hausliste[anzahl].eigentuemer.vorname, ',');
  99. cin.ignore();
  100. cout << "Bitte Straße des Eigentuemers eingeben: ";
  101. getline(cin, hausliste[anzahl].adresse.strasse, ',');
  102. //cin.ignore();
  103. cout << "Bitte PLZ des Eigentuemers eingeben: ";
  104. cin >> hausliste[anzahl].adresse.plz;
  105. cin.ignore();
  106. cout << "Bitte Ort des Eigentuemers eingeben: ";
  107. getline(cin, hausliste[anzahl].adresse.ort, ',');
  108. //cin.ignore();
  109. cout << "Bitte Kundennummer des Eigentuemers eingeben: ";
  110. cin >> hausliste[anzahl].kundennr;
  111. //cin.ignore();
  112. cout << "Bitte Preis pro Meter des Grundstücks eingeben: ";
  113. cin >> hausliste[anzahl].preisprometer;
  114. cout << endl;
  115. hausliste[anzahl].kosten = hausliste[anzahl].preisprometer * hausliste[anzahl].laenge;
  116.  
  117. anzahl++;
  118.  
  119. } else {
  120. cout << "Die Liste ist leider voll.\n";
  121. }
  122. }
  123.  
  124. void DatenAusgeben(haus hausliste[], int anzahl) {
  125. int i = anzahl - 1;
  126. while (i >= 0) {
  127. cout << "Informationen zum Grundstück: " << i << endl;
  128. cout << "Länge des Grundstücks beträgt: " << hausliste[i].laenge << endl;
  129. cout << "Nachname des Eigentümers: " << hausliste[i].eigentuemer.nachname << endl;
  130. cout << "Vorname des Eigentümers: " << hausliste[i].eigentuemer.vorname << endl;
  131. cout << "Straße des Eigentümers: " << hausliste[i].adresse.strasse << endl;
  132. cout << "PLZ des Eigentümers: " << hausliste[i].adresse.plz << endl;
  133. cout << "Ort des Eigentümers: " << hausliste[i].adresse.ort << endl;
  134. cout << "Kundennummer des Eigentümers: " << hausliste[i].kundennr << endl;
  135. cout << "Preis pro Meter des Grundstücks: " << hausliste[i].preisprometer << endl;
  136. cout << "Kosten des Grundstücks betragen: " << hausliste[i].kosten << endl;
  137. i--;
  138. }
  139. }
  140.  
  141. /********************************************
  142. * Werte aus Datei einlesen
  143. ********************************************/
  144. bool WerteAusDateiLesen(haus hausliste[], int & anzahl, string dateiname, const int maxAnzahl) {
  145. // Variablen
  146. bool retWert = false;
  147. ifstream eingabeDatei;
  148. string zeile;
  149. int anzZeichen;
  150. int wahl;
  151. bool dateiende = false;
  152. cout << "\n\n";
  153. cout << "Wollen Sie die Liste ueberschreiben: " << endl;
  154. cout << " 1 = ja, 0 = nein: ";
  155. cin >> wahl;
  156. if (1 == wahl) {
  157. anzahl = 0; // überschreibt das existierende Array!!
  158. } else {
  159. anzahl = anzahl; // hängt an das existierende Array!!
  160. }
  161. // Datei öffnen
  162. eingabeDatei.open(dateiname, ios::in);
  163. if (true == eingabeDatei.is_open()) {
  164. // solange Dateiende nicht erreicht
  165.  
  166. while ((false == eingabeDatei.eof()) && (anzahl < maxAnzahl) && (dateiende == false)) {
  167. // Zeile einlesen
  168. getline(eingabeDatei, zeile, '\n');
  169. if (0 == zeile.length()) {
  170. dateiende = true;
  171. } else {
  172.  
  173. hausliste[anzahl].kundennr = atoi(zeile.c_str());
  174. // Zeile einlesen
  175. getline(eingabeDatei, zeile, '\n');
  176. hausliste[anzahl].preisprometer = atof(zeile.c_str());
  177. // die noch fehlenden Felder eintragen
  178. // Zeile einlesen
  179. getline(eingabeDatei, zeile, '\n');
  180. hausliste[anzahl].eigentuemer.nachname = zeile;
  181. // die noch fehlenden Felder eintragen
  182. getline(eingabeDatei, zeile, '\n');
  183. hausliste[anzahl].laenge = atoi(zeile.c_str());
  184. getline(eingabeDatei, zeile, '\n');
  185. hausliste[anzahl].eigentuemer.vorname = zeile;
  186. getline(eingabeDatei, zeile, '\n');
  187. hausliste[anzahl].adresse.strasse = zeile;
  188. getline(eingabeDatei, zeile, '\n');
  189. hausliste[anzahl].adresse.plz = atoi(zeile.c_str());
  190. getline(eingabeDatei, zeile, '\n');
  191. hausliste[anzahl].adresse.ort = zeile;
  192. getline(eingabeDatei, zeile, '\n');
  193. hausliste[anzahl].kosten = atof(zeile.c_str());
  194. // Hochzaehlen der Variable anzahl
  195. anzahl++;
  196. }
  197. } // end while ( false == eingabeDatei.eof() )
  198. // Datei schließen
  199. eingabeDatei.close();
  200. retWert = true;
  201. } else {
  202.  
  203. retWert = false;
  204. }
  205. return retWert;
  206. }
  207.  
  208. /********************************************
  209. * Werte in Datei ausgeben
  210. ********************************************/
  211. bool WerteInDateiSchreiben(haus hausliste[], int anzahl, string dateiname) {
  212. // Variablen
  213. bool retWert = false;
  214. char dateiUeberschreiben = 'n';
  215. ofstream ausgabeDatei;
  216. int i;
  217. if (0 >= anzahl) {
  218. cout << endl << "----------------------------\n";
  219. cout << " Die Liste ist leer!!!\n";
  220. cout << "----------------------------\n";
  221.  
  222. } else {
  223. cout << "Bestehende Datei ueberschreiben? (j/n): ";
  224. cin >> dateiUeberschreiben;
  225. if ('j' == dateiUeberschreiben) {
  226. // Datei öffnen
  227. ausgabeDatei.open(dateiname, ios::out);
  228. } else {
  229. // oder zum Anhaengen an eine bestehende Datei
  230. ausgabeDatei.open(dateiname, ios::app);
  231. }
  232. if (true == ausgabeDatei.is_open()) {
  233. for (i = 0; i < anzahl; i++) {
  234. // Ausgabe in die Datei
  235. // Alle Felder je in eine Zeile schreiben
  236. ausgabeDatei << hausliste[i].kundennr << endl;
  237. ausgabeDatei << hausliste[i].preisprometer << endl;
  238. ausgabeDatei << hausliste[i].eigentuemer.nachname << endl;
  239. ausgabeDatei << hausliste[i].laenge << endl;
  240. ausgabeDatei << hausliste[i].eigentuemer.vorname << endl;
  241. ausgabeDatei << hausliste[i].adresse.strasse << endl;
  242. ausgabeDatei << hausliste[i].adresse.plz << endl;
  243. ausgabeDatei << hausliste[i].adresse.ort << endl;
  244. ausgabeDatei << hausliste[i].kosten << endl;
  245.  
  246. // hier die noch fehlenden Werte eintragen
  247. } // ende for
  248. // Datei schließen
  249. ausgabeDatei.close();
  250. retWert = true;
  251. } else {
  252.  
  253. retWert = false;
  254. }
  255. }
  256. return retWert;
  257. }
  258.  
  259. char DatenMenue() {
  260. char menu = 'x';
  261. cout << "Häuseruntermenü:" << endl;
  262. cout << "e Haus erfassen" << endl;
  263. cout << "a Häuserliste ausgeben" << endl;
  264. cout << "r Häuserliste aus Datei einlesen" << endl;
  265. cout << "w Häuserliste in Datei schreiben" << endl;
  266. cout << "s Haus suchen" << endl;
  267. cout << "d Dynamische Liste" << endl;
  268. cout << "x Programm beenden" << endl;
  269. cout << "Ihre Wahl: ";
  270. cin >> menu;
  271. return menu;
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement