Modena
Lieutenant
- Registriert
- Okt. 2003
- Beiträge
- 974
Hab hier ein Quelltext in c++, jedoch bekomme ich ihn halt nicht zum laufen. Vieleicht könnt ihr mit bitte helfen und findet den Fehler.
Code:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <stdlib.h>
//---------------------------------------------------------------------------
#pragma argsused
struct TKundensatz
{
int Nummmer;
char Name[20];
float Umsatz;
};
TKundensatz Kundensatz;
void OeffneDatei(const string Dname, fstream& f, const ios::open_mode m)
{
f.open(Dname.c_str(),m | ios::binary);
if (!f)
{
cout<<"Programmabbruch: Fehler beim der Datei"<<Dname;
exit(1);
}
}
void OeffneDateiNeu(string& Dname, fstream& f)
{
char taste;
cout<<"Name der Datei (z.B. Kunden.dat): ";
getline(cin,Dname,'\n');
f.open(Dname.c_str(),ios::in|ios::binary);
if(f)
{
f.close();
do
{
cout<<"Datei existiert schon, neu anlegen (j/n)? ";cin>>taste;
taste=toupper(taste);
}
while(taste!='J' && taste!='N');
cin.ignore();
if(taste='J')
{
OeffneDatei(Dname,f,ios::out|ios::trunc);
f.close();
}
}
else f.close();
}
void SchliesseDatei(const string& Dname,fstream& f)
{
f.close();
coust<<"Datei "<<Dname<<" geschlossen.\n";
}
void SatzAnzeigen(TKundensatz k)
{
cout.precision(3);
cout<<"Kundennummer: "<<k.Nummer<<endl;
cout<<"Name: "<<k.Name<<endl;
cout<<"Umsatz bisher: "<<k.Umsatz<<endl;
}
void Schreiben(string Dname, fstream& f)
{
TKundensatz k;
string NameStr;
OeffneDatei(Dname,f,ios::out|ios::app);
while(true)
{
cout<<"\nKundennummer (0=Ende): "; cin>>k.Nummer;
cin.ignore();
if(!k.Nummer break;
cout<<"Name des Kunden: ";
getline(cin,NameStr,'\n');
strcpy(k.Name,NameStr.substr(0,19).c_str());
cout<<"Umsatz in DM: "; cin>>k.Umsatz;
f.write((char*)&k,sizeof(k));
}
f.close();
}
void Auflisten(const string& Dname, fstream& f)
{
int SatzNr;
TKundensatz k;
OeffneDatei(Dname,f,ios::in);
SatzNr=0;
cout<<"\nSatznummer Kundennummer Name Umsatz\n";
while(f.read((char*)&k,sizeof(k))
{
cout<<setw(6)<<SatzNr++<<": "
<<setw(7)<<k.Nummer<<" "<<setw(19);
cout.sctf(ios::left,ios::adjustfield);
cout<<k.Name<<" "<<setw(8);
cout.setf(ios::right,ios::adfustfield);
cout<<k.Umsatz<<endl;
}
cin.ignore();
f.close();
}
void Suchen(const string& Dname, fstream& f)
{
string NameSuch;
bool fund=false;
TKundensatz k;
OeffneDatei(Dname,f,ios::in);
cin.ignore();
cout<<"Kundenname als Suchbegriff: ";
getline(cin,NameSuch,'\n');
while(!fund&&f.read((char*)&k,sizeof(k)))
if(NameSuch==k.Name) fund=true;
if(fund)
{
SatzAnzeigen(k);
}
else
{
cout<<"Satz"<<NameSuch<<" nicht vorhanden.\n";
NameSuch="0";
}
f.close();
}
void Aendern(const string& Dname, fstream& f)
{
int SatzNr;
TKundensatz k;
string NameStr;
OeffneDatei(Dname,f,ios::in|ios::out);
cout<<"Satznummer(0,1,2,...): "; cin<<SatzNr;
if(!f.seekp(SatzNr*siteof(k)))
{
cout<<"Datensatz Nr."<<SatzNr<<"existiert nicht\n";
return;
}
f.read((char*)&k,sizeof(k));
cout.precision(3);
cout<<"Kundennummer bisher : "<<k.Nummer<<" - neu: ";
cin>>k.Nummer; cin.ignore();
cout<<"Name des Kunden bisher: "<<k.Name<< " - neu: ";
getline(cin,NameStr,'\n');
strcpy(k.Name,NameStr.substr(0,19).c_str());
cout<<"Umsatz: "<<k.Umsatz<<" - neu: ";
cin>>k.Umsatz; cin.ignore();
f.skeep(SatzNr*sizeof(k));
if (f.write((char*)&k,sizeof(k)))
cout<<"Satz wurde geaendert.\n";
else
cout<<"Satz konnte nicht geaendert werden.\n";
f.close();
}
void Menue(string& Dname, fstream& f)
{
char Wahl;
do
{
cout<<"\nZur Menueanzeige Return druecken! "; cin.get();
cout<<"\n===================================================\n";
cout<<"Datei in Bearbeitung: "<<DName<<endl;
cout<<"0 Ende: Programm beenden\n";
cout<<"1 Schreiben: Neue Datensaetze an Datei anhaengen\n";
cout<<"2 Auflisten: Alle Datensaetze seriell lesen\n";
cout<<"3 Suchen: Datensatz suchen und lesen\n";
cout<<"4 Neu: Neue Datei bearbeiten\n";
cout<<"===================================================\n";
cout<<"Bitte waehlen: "; Wahl=cin.get();
cin.ignore();
switch(Wahl)
{
case '1': Schreiben(Dname,f); break;
case '2': Auflisten(Dname,f); break;
case '3': Suchen(Dname,f); break;
case '4': Aendern(Dname,f); break;
case '5': SchliesseDatei(Dname,f); break;
}
}
while(Wahl!='0');
}
int main(int argc, char* argv[])
{
Menue(Dnaem,f);
return 0;
}
//---------------------------------------------------------------------------