Verbesserungsvorschläge bitte!
-
Hi wollte gerne Verbesserungsvorschläge haben!
MAIN.CPP
[cpp] #include "Func.h" int main() { while(menu()!=true) { menu(); } cout << "Aufwiedersehen!"<<endl; return 0; } [/cpp]
DYNAMICARRAY.H
[cpp] class DynamicArray { private: int ERHOEHEN; Worker *pWorker; int topIndex; int max; public: DynamicArray(int Startwert) { ERHOEHEN = 1; max = Startwert; pWorker = new Worker[max]; topIndex = -1; }; ~DynamicArray() { delete [] pWorker; }; void push(Worker arbeiter) { topIndex++; if(topIndex == max) { Worker* tmp = pWorker; max += ERHOEHEN; pWorker = new Worker[max]; for(int i=0; i<topIndex; i++) pWorker[i] = tmp[i]; delete [] tmp; } pWorker[topIndex] = arbeiter; }; void GetthePushed() { if(topIndex+1>0) { cout << "Es sind folgende Arbeiter Angelegt: "<<endl; for(int i=0;i<topIndex+1;i++) { cout << "["<<i+1<<"] "<< pWorker[i].GetVname() <<endl; } cout << "\nWelchen Arbeiter wollen Sie anzeigen/bearbeiten ?"<<endl << "Zum Abbrechen einfach 0 eingeben."<<endl; cout << "Arbeiter: "; unsigned int WorkerC; cin >> WorkerC; cin.clear(); system("cls"); if((++topIndex>=WorkerC)&&(WorkerC>0)) { WorkerC -= 1; WorkerMenu(WorkerC); int mChoice=1; while(mChoice!=0) { cout << "\n[1]Ein Arbeiter zur"<<Umlaut::ue<<"ck\t[2]Bearbeiten\t" <<"[3]Einen Arbeiter weiter"<<endl; cout << "\t\t\t[0] Beenden"<<endl; cout << "\t\t\tAuswahl: "; cin >> mChoice; string Vn,Nn,A,L; //ZUR BEARBEITUNG CASE 2 switch(mChoice) { case 1: if(WorkerC>0) { WorkerC-=1; system("cls"); WorkerMenu(WorkerC); } else { system("cls"); WorkerMenu(WorkerC); } break; case 2: system("cls"); cout << "Bitte korrekt ausf"<<Umlaut::ue<<"llen! "<<endl; cout << "Vorname: " << pWorker[WorkerC].GetVname() <<"\t\tVorname: ";cin>>Vn; cout << "\nNachname: "<< pWorker[WorkerC].GetNname() <<"\t\tNachname: ";cin>>Nn; cout << "\nAlter: "<< pWorker[WorkerC].GetAge() <<"\t\tAlter: ";cin>>A; cout << "\nLohn: "<< pWorker[WorkerC].GetSalary()<<"\t\tLohn: ";cin>>L; pWorker[WorkerC].SetSalary(L); pWorker[WorkerC].SetAge(A); pWorker[WorkerC].ChangeVname(Vn); pWorker[WorkerC].ChangeNname(Nn); system("cls"); WorkerMenu(WorkerC); break; case 3: if(++WorkerC!=topIndex) { system("cls"); WorkerMenu(WorkerC); } else { WorkerC-=1; system("cls"); WorkerMenu(WorkerC); } break; case 0: WorkerC = 0; break; default: WorkerC = 0; break; } } } else { cout << "Falsche Eingabe"; Sleep(5000); } } else { cout << "Noch kein Arbeiter in der Akte !!!"<<endl<<endl << "Weiter mit beliebiger Taste"<<endl; getch(); } system("cls"); } void WorkerMenu(int WorkerC) { cout << "Vorname: "<< pWorker[WorkerC].GetVname() <<endl << "Nachname: "<< pWorker[WorkerC].GetNname() <<endl << "Alter: "<< pWorker[WorkerC].GetAge() <<endl << "Lohn: "<< pWorker[WorkerC].GetSalary() <<endl; } }; [/cpp]
FUNK.H
[cpp] #include "WorkerUmlaute.h" #include "DynamicArray.h" #include <climits> DynamicArray DArray(0); void CreateWorker(); bool menu(); void CreateWorker() { Worker newWorker(1); DArray.push(newWorker); system("cls"); } bool menu() { bool fQuit = false; int cChoice; system("cls"); cout << "1. Arbeiter anzeigen"<<endl << "2. Arbeiter erzeugen"<<endl << "0. Beenden"<<endl<<endl << "Auswahl: "; while(!(cin>>cChoice)) { cin.clear(); cin.ignore(INT_MAX,'\n'); system("cls"); cout << "1. Arbeiter anzeigen"<<endl << "2. Arbeiter erzeugen"<<endl << "0. Beenden"<<endl<<endl << "Auswahl: "; } switch(cChoice) { default: break; case 1: system("cls"); DArray.GetthePushed(); break; case 2: system("cls"); CreateWorker(); break; case 0: fQuit = true; break; } return fQuit; } [/cpp]
WorkerUmlaute
[cpp] #include <iostream> #include <string> #include <conio.h> #include <windows.h> using namespace std; namespace Umlaut { const unsigned char AE = static_cast<unsigned char>(142); const unsigned char ae = static_cast<unsigned char>(132); const unsigned char OE = static_cast<unsigned char>(153); const unsigned char oe = static_cast<unsigned char>(148); const unsigned char UE = static_cast<unsigned char>(154); const unsigned char ue = static_cast<unsigned char>(129); const unsigned char ss = static_cast<unsigned char>(225); } class Worker { private: string Salary; string Age; string Vname; string Nname; public: Worker(); Worker(int); ~Worker(); Worker(const Worker&); Worker& operator=(const Worker&); void SetSalary(string SSele) { Salary = SSele; } void SetAge(string SAge) { Age = SAge;} void ChangeVname(string SVname) { Vname = SVname; } void ChangeNname(string SName) { Nname = SName; } string GetSalary() const { return Salary;} string GetAge() const { return Age; } string GetVname() const { return Vname; } string GetNname() const { return Nname; } }; Worker::Worker() { system("cls"); } Worker::Worker(int) { cout << "Vorname: ";cin >> Vname; cin.clear(); cout << "\nNachname: ";cin >> Nname; cin.clear(); cout << "\nLohn: ";cin >> Salary; cin.clear(); cout << "\nAlter: ";cin >> Age; cin.clear(); cout << endl; system("cls"); } Worker::~Worker(){} Worker::Worker(const Worker& rhs) { this->operator=(rhs); } Worker& Worker::operator=(const Worker& rhs) { if(this == &rhs) return *this; Salary = rhs.GetSalary(); Age = rhs.GetAge(); Vname = rhs.GetVname(); Nname = rhs.GetNname(); return *this; } [/cpp]
Ich hätte da noch eine bitte, ich habe "jetzt lerne ich c++" gelesen und würde noch gerne andere sachen lernen. Was schlagt ihr vor ?
z.b. vectoren , interatoren , STL list
und ich bräuchte noch Templetes tutsGroßen dank schonmal !
-
Warum schreibst du:
while(menu()!=true) { menu(); }
es reicht doch:
while(!menu());
Sonst rufst du ja menu zweimal pro Durchlauf auf...
Und für 'DynamicArray' bietet sich optimal ein Template an. Tutorials findest
du bestimmt per Suche im Forum. Ansonsten wird wohl auch die STL dir
entsprechendes bieten: vector ist ein dynamisches Array.