Bußgeldrechner

Vaiper

Mitglied
Hiho Liebe http://www.tutorials.de Comunity

Also ich habe nen prob mit C++ ich sitze hier in der schule und soll nen Bußgeldrechner machen das ist ja alles schön und gut.

also die aufgabe war ich sollte nen bußgeldrechner machen wo man die daten eingibt und sie auch gespeiechert werden das habe ich auch gemacht dann sollte halt an hand der angegebenen Geschwindigkeiten gleich das bußgeld mit ausgegeben werden nunja es funktioniert ja auch alles soweit aber wenn ich das programm schliese es wieder aufmache sind die daten weg! aber eigentlich sollte er sie ja speichern! vlt. habt ihr ja iwie ne idee!


C++:
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
int satz_zahl = 0;

//===================================================
			struct adressen
			 {
     					char vorname[50];
						char nachname[50];
         				char strasse[50];
      					char hnummer[50];
						char ort[50];
						char plz[50];
						char telefon[50];
						char handy[50];
						char eMail[50];
						char bday[50];
						char bort[50];
						float geschw;
						float hgesch;
				


			};
		struct adressen adressdaten[50];

//===================================================

//--------------------------------------------------

		// Eingabe der Adressen

		void adr_ein(int index)
		
			{

						   cout << " Alle Angaben bitte OHNE LEERZEICHEN eingeben " << endl;
						   cout << "= = = = = = = = = = = = = = = = = = = = = = = = = = ="<<endl;
						   cout << endl;
						   cout << endl;
						   cout << endl;

						   cout << "Vorname:\t\t";
						   cin >> adressdaten[index].vorname;
						   cout << endl;

						   cout << "Nachname:\t\t";
						   cin >> adressdaten[index].nachname;
						   cout << endl;

						   cout << "Strasse:\t\t";
						   cin >> adressdaten[index].strasse;
						   cout << endl;

						   cout << "Hausnummer:\t\t";
						   cin >> adressdaten[index].hnummer;
						   cout << endl;

						   cout << "Ort:\t\t\t";
						   cin >> adressdaten[index].ort;
						   cout << endl;

						   cout << "Postleitzahl:\t\t\t";
						   cin >> adressdaten[index].plz;
						   cout << endl;

						   cout << "Geburtsort:\t\t\t";
						   cin >> adressdaten[index].bort;
						   cout << endl;

						   cout << "Geburtstag:\t\t\t";
						   cin >> adressdaten[index].bday;
						   cout << endl;
						
						   cout << "Telefon:\t\t";
						   cin >> adressdaten[index].telefon;
						   cout << endl;

						   cout << "Handy:\t\t\t";
						   cin >> adressdaten[index].handy;
						   cout << endl;

						   cout << "eMail:\t\t\t";
						   cin >> adressdaten[index].eMail;
						   cout << endl;

						   cout << "Erlaubte Geschwindigkeit:\t\t\t";
						   cin >> adressdaten[index].hgesch;
						   cout << endl;
						   						   
						   cout << "Gefahrene Geschwindigkeit:\t\t\t";
						   cin >> adressdaten[index].geschw;
						   cout << endl;

						   


			}

//--------------------------------------------------
 
		// Adressdaten anzeigen lassen
		
		int v_ueber;
	
		void adr_zeig(int index)
			{
									   cout << "Vorname:\t\t";
									   cout << adressdaten[index].vorname;
										cout << endl;

									   cout << "Nachname:\t\t";
									   cout << adressdaten[index].nachname;
										cout << endl;

									   cout << "Strasse:\t\t";
									   cout << adressdaten[index].strasse;
										cout << endl;

									   cout << "Hausnummer:\t\t";
									   cout << adressdaten[index].hnummer;
										cout << endl;

									   cout << "Ort:\t\t\t";
									   cout << adressdaten[index].ort;
										cout << endl;

									   cout << "Postleitzahl:\t\t\t";
									   cout << adressdaten[index].plz;
									   cout << endl;

									   cout << "Geburtsort:\t\t";
									   cout << adressdaten[index].bort;
									   cout << endl;
									
									   cout << "Geburtstag:\t\t";
									   cout << adressdaten[index].bday;
									   cout << endl;

									   cout << "Telefon:\t\t";
									   cout << adressdaten[index].telefon;
										cout << endl;

									   cout << "Handy:\t\t\t";
									   cout << adressdaten[index].handy;
										cout << endl;

									   cout << "eMail:\t\t\t";
									   cout << adressdaten[index].eMail;
									   cout << endl;

										cout << "Erlaubte Geschwindigkeit:\t\t\t";
										cout << adressdaten[index].hgesch;
										cout << endl;

										cout << "Gefahrene Geschwindigkeit:\t\t\t";
										cout << adressdaten[index].geschw;
										cout << endl << endl;

										

										// Bußgeldausgabe


											//Rechnung
				
									v_ueber = adressdaten[index].geschw - adressdaten[index].hgesch;


										if (v_ueber>0 && v_ueber<=20)
											cout<<"Bußgeld: 25 Euro!\n";

										if (v_ueber>20 && v_ueber<=40)
											cout<<"Bußgeld: 50 Euro!\n";

										if (v_ueber>40)
											cout<<"Bußgeld: 80 Euro und 3 Punkte in Flensburg!\n";
											cout<<endl<<endl<<endl;

 		
		
		
		}

//--------------------------------------------------

	// Adressdaten lesen
   
		int adr_lesen()
			{
						   fstream datei;
						   datei.open("SPEICHER.dat", ios::in);
						   datei >> satz_zahl;
	    				   cout << "In der Datei befinden sich " << satz_zahl << " Datens\x84tze" << endl;

	for (int i=0; i<=satz_zahl; i++)
			 {
							datei  >> adressdaten[i].vorname;
							datei  >> adressdaten[i].nachname;
							datei  >> adressdaten[i].strasse;
							datei  >> adressdaten[i].hnummer;
							datei  >> adressdaten[i].ort;
							datei  >> adressdaten[i].plz;
							datei  >> adressdaten[i].bort;
							datei  >> adressdaten[i].bday;
							datei  >> adressdaten[i].telefon;
							datei  >> adressdaten[i].handy;
							datei  >> adressdaten[i].eMail;
							datei  >> adressdaten[i].hgesch;
							datei  >> adressdaten[i].geschw;
							
		     }
		
	   datei.close();
   
			return satz_zahl;
   }

//--------------------------------------------------

   // Adressdaten speichern

		void adr_speicher()
			{
						   fstream datei;
						   datei.open("SPEICHER.dat", ios::out);
						   datei << satz_zahl << endl;

		for (int i=0; i<=satz_zahl; i++)
			{
							
							datei  << adressdaten[i].vorname << endl;
							datei  << adressdaten[i].nachname << endl;
							datei  << adressdaten[i].strasse << endl;
   							datei  << adressdaten[i].hnummer << endl;
							datei  << adressdaten[i].ort << endl;
							datei  << adressdaten[i].plz << endl;
							datei  << adressdaten[i].bort << endl;
							datei  << adressdaten[i].bday << endl;
							datei  << adressdaten[i].telefon << endl;
							datei  << adressdaten[i].handy << endl;
							datei  << adressdaten[i].eMail << endl;
							datei  << adressdaten[i].hgesch << endl;
							datei  << adressdaten[i].geschw << endl;

			}
		
		   datei.close();
	}

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

		// Hauptfunktion
		
		int main()
	{
	

		
			
			// Alle Daten aus der Datei in die Tabelle übernehmen
				adr_lesen();

				int wahl;
					do
			{
   							cout << "Programm zur Adressverwaltung" << endl << endl;
							cout << " 1) Daten eingeben" << endl;
							cout << " 2) Daten anzeigen" << endl;
							cout << " 5) Programmende" << endl;
							cin >> wahl;


				switch(wahl)
					{
						
							case 1:
							{

								adr_ein(satz_zahl);
								satz_zahl++;

							break;
							}

							case 2:
       						{

								int ind = 0;
								cout << "Welchen Datensatz zwischen 1 und " << satz_zahl<< " m\x94";
								cout<<"chten Sie sehen?  " ;
								cin >> ind;
								adr_zeig(ind-1);

							break;
							}

					}


			}
						while (wahl != 5);
  
							adr_speicher();
  
							
			return 0;
	
	}

also er zeigt mir keine fehler meldungen an! wenn ich nun z.b. daten eingebe und sie mir dannach direkt anzeigen lasse dann funktioniert alles wie es soll :) aber sobald ich das programm geschlossen habe ( was man ja machn darf da es ja in der Speicher.bat gespeichert wird) und es wieder neu aufmachen tja dann ist alles leer nur bei geschwindigkeiten steht dann nur noch 0 drinne :(

pls helft mir :( ich hoffe ich konnte mit meiner erklärung helfen :(
 
Willkommen auf tutorials.de, Vaiper!

Zuerst mal haben die C++ Standard-Header keine .h Endung. Die C Standard-Header werden auch ohne .h Endung aber mit dem Präfix "c" eingebunden. Die Objekte und Funktionen der C++ Standardbibliothek sind im Namensraum std definiert:
C++:
#include <iostream>
#include <fstream>
#include <cstdio>

using namespace std;
Dann schreibst du immer einen Eintrag zuviel in die Datei weil deine Schleifenbedingung bzw. Initialisierung falsch ist:
C++:
for (int i = 1; i <= satz_zahl; i++) ...

Wenn die Daten Leerzeichen enthalten wird das Einlesen nicht funktionieren weil immer wortweise eingelesen wird und die Leerzeichen als Trennzeichen fungieren. Verwende besser die getline Methode. Außerdem solltest du immer prüfen ob überhaupt der Datensatz komplett gelesen werden konnte:
C++:
datei.getline(adressdaten[i].vorname, sizeof(adressdaten[i].vorname));
datei.getline(adressdaten[i].nachname, sizeof(adressdaten[i].nachname));
...
datei >> adressdaten[i].geschw;

if (datei) { // prüfen ob alles geklappt hat
  return satz_zahl;
} else {
  return -1; // Fehler
}
Das gilt natürlich auch für alle anderen Variablen die eingelesen werden:
C++:
if (cin >> ind) {
  adr_zeig(ind-1);
} else {
  cerr << "bitte eine Ziffer eingeben." << endl;
  cin.clear();
}
Ansonsten hat es aber bei mir funktioniert. Hast du mal die Datei angeschaut ob da Datensätze drinstehen?

Gruß
 

Neue Beiträge

Zurück