Fuhrparkverwaltung

Vaiper

Mitglied
Hallo Liebe Kommunity,

in meiner Ausbildung zum Kauffmänischen Assitenten für Wirtschaftsinformatik musste ich für ein Lernfeld eine Fuhrparkverwaltung schreiben. Und da ich weiß das Ihr mehr Plan habt als ich stelle ich sie einfach mal so rein wie ich sie abgegeben habe vieleicht habt ihr ja noch nen paar Ideen was man noch besser machen kann. Mfg Vaiper


main.cpp
C++:
//Fuhrparkverwaltung von Sven Timmermann und Björn Gerdes


//Einbinden der Headerdateien
//*******************************
		
			#include <iostream> 
			#include <fstream>
			#include <process.h>

//******************************* 
//Einbinden der eigenen Headerdateien
//*******************************
			
			#include "head.h"
			#include "eingabe.h"
			#include "speicher.h"

//********************************

			using namespace std; 

//********************************




//************************************************************** 
// Hauptfunktion 
		

				
				int main() 

					{ 
							system( "title Fuhrparkverwaltung (C) by Bjoern und Sven");
							printf("%s%s%s%s%s"," Datum: ", __DATE__, " Zeit: ", __TIME__,"\n");
							printf("\n\n");

							int i; 
							// Alle Daten werden aus der Datei in die Tabelle übernommen 
									fuhrparkdaten[i].fp_lesen(); 

								int wahl; 

								do 
									{ 
									
										printf("\n\n"); 
										printf( "Programm zur Fuhrparkverwaltung\n\n"); 
										printf( " 1) Daten eingeben\n"); 
										printf( " 2) Daten anzeigen\n"); 
										printf( " 3) Programmende\n"); 
										printf( "\n\n"); 
										printf( " Ihre Eingabe lautet: " );cin >> wahl; 
										
										//Bildschrim Clearen
										system("cls");

										switch(wahl) 

									{ 

							case 1: 

									{ 
		
										fuhrparkdaten[i].fp_ein(satz_zahl); 
										satz_zahl++; 
							
							break; 
							
									} 

							case 2: 
									
									{ 
				
								int ind = 0;
										printf("\n\n");
										printf("%s%i%s", "Welchen Datensatz zwischen 1 und ",satz_zahl, " m\x94"); 
										printf("chten Sie sehen? ") ; 
										scanf("%i", &ind); 
										system("cls"); 
										fuhrparkdaten[i].fp_zeig(ind-1); 

							break; 
								
									} 
					
										} 


										} 

							while (wahl != 3); 
							fuhrparkdaten[i].fp_speicher(); 
							return 0; 
							
							}

head.cpp

C++:
//Fuhrparkverwaltung von Sven Timmermann und Björn Gerdes


//Einbinden der Headerdateien
//*******************************
		
			#include <iostream> 
			#include <fstream>
			#include <process.h>

//*******************************

			using namespace std; 

//******************************* 



// Basisklasse Fuhrpark 
	class fuhrpark 
		{ 
				public: //damit man auf die Variablen zugreifen kann 

						char hersteller[20]; 
						char modell[20]; 
						char kmst[10]; 
						char typ[10]; 
						char farbe[15]; 
						char kz[20];
						char ps[5];
						char hgeschw[20];


				public: //Funktionen werden bekannt gemacht 

						int fp_ein(int index); 
						int fp_zeig(int index); 
						int fp_lesen(); 
						int fp_speicher(); 

		}; 

				class fuhrpark fuhrparkdaten[10]; //Datentyp "fuhrpark" wird festgelegt
				int i=i;


eingabe.h

C++:
//Fuhrparkverwaltung von Sven Timmermann und Björn Gerdes


//Einbinden der Headerdateien
//*******************************
		
			#include <iostream> 
		  	#include <fstream>
			#include <process.h>

//*******************************

			using namespace std; 

//******************************* 






// Eingabe der Fahrzeuge 
			int fuhrpark::fp_ein(int index) //erst wird die class angesprochen, dann "::", 
				
				{ //Name der Funktion 

						system("cls");

						printf("\n");

						printf("Eingabe der Fahrzeugdaten");
						printf("\n\n");

								printf("Hersteller:\t\t\t\t");
									scanf("%s", &fuhrparkdaten[index].hersteller);

								printf( "Modell:\t\t\t\t\t"); 
									scanf("%s", &fuhrparkdaten[index].modell);

								printf( "Kilometerstand:\t\t\t\t"); 
									scanf("%s", &fuhrparkdaten[index].kmst); 
						
								printf( "Typ ( Benzin, Super, Diesel, Erdgas ):\t"); 
									scanf("%s", &fuhrparkdaten[index].typ); 
								
								printf( "Farbe:\t\t\t\t\t"); 
									scanf("%s", &fuhrparkdaten[index].farbe); 
								
								printf( "Kennzeichen:\t\t\t\t"); 
									scanf("%s", &fuhrparkdaten[index].kz);
								
								printf( "PS:\t\t\t\t\t");
									scanf("%s", &fuhrparkdaten[index].ps);
								
								printf( "Hoechstgeschwindigkeit:\t\t\t");
									scanf("%s", &fuhrparkdaten[index].hgeschw);

		return 0; //da sich void in int geändert hat, muss auch 

			} //ein Rückgabewert eingegeben werden 


//-------------------------------------------------- 
//Ausgabe der Fahrzeugdaten 

			int fuhrpark::fp_zeig(int index) 

			{ 

					printf("\n\n"); 
					
							printf( "Hersteller:\t\t\t\t"); 
								printf("%s%s", fuhrparkdaten[index].hersteller,"\n") ; 
					
							printf( "Modell:\t\t\t\t\t"); 
								printf("%s%s", fuhrparkdaten[index].modell ,"\n"); 
							
							printf( "Kilometerstand:\t\t\t\t"); 
								printf("%s%s",fuhrparkdaten[index].kmst ,"\n"); 
							
							printf( "Typ ( Benzin, Super, Diesel, Erdgas ):\t"); 
								printf("%s%s",fuhrparkdaten[index].typ ,"\n"); 
							
							printf( "Farbe\t\t\t\t\t"); 
								printf("%s%s",fuhrparkdaten[index].farbe ,"\n"); 
							
							printf( "Kennzeichen:\t\t\t\t"); 
								printf("%s%s",fuhrparkdaten[index].kz ,"\n"); 
					
							printf( "PS:\t\t\t\t\t"); 
								printf("%s%s",fuhrparkdaten[index].ps ,"\n"); 
							
							printf( "Hoechstgeschwindigkeit:\t\t\t");
									printf("%s%s", &fuhrparkdaten[index].hgeschw,"\n");


								
					printf("\n\n"); 
		return 0; 

			}


speicher.cpp

C++:
//Fuhrparkverwaltung von Sven Timmermann und Björn Gerdes


//Einbinden der Headerdateien
//*******************************
		
			#include <iostream> 
			#include <fstream>
			#include <process.h>

//*******************************

			using namespace std; 

//******************************* 


		int satz_zahl = 0; 
//-------------------------------------------------- 
// Fahrzeugdaten lesen 
		 
		int fuhrpark:: fp_lesen() 

				{ 

					fstream datei; 
						datei.open("fuhrpark.bat", ios::in); 
						datei >> satz_zahl; 

						printf("%s%i%s", "In der Datei befindet sich ", satz_zahl, " Datens\x84tze\n"); 

							for (int i=0; i<=satz_zahl; i++) 
				{ 

							datei >> fuhrparkdaten[i].hersteller; 
									
							datei >> fuhrparkdaten[i].modell; 

							datei >> fuhrparkdaten[i].kmst; 

							datei >> fuhrparkdaten[i].typ; 

							datei >> fuhrparkdaten[i].farbe; 
							
							datei >> fuhrparkdaten[i].kz; 

							datei >> fuhrparkdaten[i].ps;

							datei >> fuhrparkdaten[i].hgeschw;

				} 

							datei.close(); 

					return satz_zahl; 

				} 

//-------------------------------------------------- 
// Fahrzeugdaten speichern 

		int fuhrpark:: fp_speicher() 

			{ 
			
				fstream datei; 

							datei.open("fuhrpark.bat", ios::out); 

							datei << satz_zahl << endl; 



		for (int i=0; i<=satz_zahl; i++) 

			{ 
	
							datei << fuhrparkdaten[i].hersteller << endl; 

							datei << fuhrparkdaten[i].modell << endl; 

							datei << fuhrparkdaten[i].kmst << endl; 

							datei << fuhrparkdaten[i].typ << endl; 

							datei << fuhrparkdaten[i].farbe << endl; 

							datei << fuhrparkdaten[i].kz << endl; 

							datei << fuhrparkdaten[i].ps;

							datei << fuhrparkdaten[i].hgeschw;

			} 
	
							datei.close(); 

			return 0; 

		}

Also an Alle die das noch gebrauchen könnt, Viel Spaß damit!
 
Zuletzt bearbeitet:
Nun, der Gebrauch der Funktion
Code:
int fuhrpark::fp_zeig(int index)    
fuhrparkdaten[i].fp_zeig(ind-1);

zeigt deutlich das Du noch nicht verstanden hast worum es bei objektorientiertem Programmieren geht. Einerseits wählst Du mit dem ersten Teil des Aufrufs ein Fahrzeug aus deinem Fuhrpark aus ( fuhrparkdaten[ i ] ), stellst dann aber ein anderes Fahrzeug des Fuhrparks dar ( fp_zeig(ind-1); ) Daraus ergibt sich der nächste Fehler:

Du benutzt nur eine Klasse (Furhpark), obwohl die Aufgabenstellugn mindestens zwei Klassen erfordern würde (Fuhrpark, Fahrzeug). Der Fuhrpark würde dabei nur die Liste der Fahrzeuge verwalten, Fahrzeug jeweils ein einzelnes Fahrzeug berschreiben.

Du benutzt sehr viele globale Variablen, was zuminidest bei der gegebenen Aufgabenstellung ein klarer Designfehler ist.

Du machst keine "boundary checks". Der Benutzer kann also beliebige Werte eingeben (->Programmabsturz bei Fehleingabe)

Du hast einen Deadlock: while (wahl != 3); aka Endlosschleife wenn die Eingabe nicht 3 ist.

Du benutzt intensiv "Trivialkommentierung". Überflüssig und eher hinderlich, weil man vor lauter KOmmentierung aufhört selbige zu lesen und damit früher oder später einen wichtigen Kommentar übersieht.

Du benutzt nicht initialisierte Variablen (int i; oder int i=i; ). Accident waiting to happen...


So, das sollte erstmal reichen ;)
 
Zurück