000
17.09.2002, 17:50 Uhr
uTaNG
|
hallo, ich schreibe an einem K0nt0 Programm und bin an einer stelle angekommen wo ich nicht mehr weiter weiss. Im Unten habe ich das Programm gepostet. Ich arbeite an dem Menüpunkt 3. Der soll beinhalten: - GiroKonto • KtoNr • Stand • Zinssatz • Name • Vorname ------------------- • zahleEin • zahleAus • verzinse • belegen • drucken
Ich habe einen Vektor der den Nemen und KontoNr. +Stand speichert, aber mir fehlen die Ideen für die Methoden, damit ich den STAND (einzahlen bzw. auszahlen ) verändern kann.. Könnt ihr mir bitte helfen ?
C++: |
// ------------------------------------------------------ // k0nt0.h // Eine Klasse k0nt0 zur Darstellung einer // Liste mit Namen und k0nt0nummern. // ------------------------------------------------------
#ifndef _k0nt0_ #define _k0nt0_
#include <string> using namespace std;
#define CLS system("cls") #define PSEUDO -1 // Pseudo-Position #define MAX 100 // Maximale Anzahl Elemente // Typ eines Listen-Elementes: struct Element { string name, KtoNr,stand; };
class k0nt0 { private: Element v[MAX]; // Der Vektor und die int count; // aktuelle Anzahl Elemente
public: k0nt0(){ count = 0;}
int getCount() const { return count; }
Element *retrieve( int i ) { return (i >= 0 && i < count)? &v[i] : NULL; } bool append( const Element& el ) { return append( el.name, el.KtoNr, el.stand); } bool append( const string& name, const string& KtoNr, const string& stand); int search( const string& name) const; void print() const; int printn( const string& name) const; int printk( const string& KtoNr) const; int getNewEntries(); }; #endif // _k0nt0_
// ------------------------------------------------------- // k0nt0.cpp // Implementierung der k0nt0-Methoden. // -------------------------------------------------------
#include "k0nt0.h" // Definition der Klasse k0nt0 #include <iostream> #include <iomanip> using namespace std;
bool k0nt0::append( const string& name, // Anhängen const string& KtoNr, const string& stand) { if( count < MAX // noch Platz && name.length() > 1 // mindestens 2 Zeichen && search(name) == PSEUDO) // noch nicht vorhanden { v[count].name = name; v[count].KtoNr = KtoNr; v[count].stand = stand; ++count; return true; } return false; }
int k0nt0::search( const string& key ) const // Suchen { for( int i = 0; i < count; i++ ) // Suchen. if( v[i].name == key ) return i; // Gefunden
return PSEUDO; // Nicht gefunden }
// Hilfsfunktionen für die Ausgabe: inline void tabHeader() // Überschrift der Tabelle { cout << "\nName Konto-Nr Konto-Stand\n" "--------------------------------------------------" << endl; } inline void printline( const Element& el) // Eine Zeile { cout << left << setw(20) << setw(25) << el.name << setw(14) << el.KtoNr << el.stand << " EURO" << endl; }
void k0nt0::print() const // Alle Einträge ausgeben { if( count == 0) cout << "\nDie k0nt0-Liste ist leer!" << endl; else { tabHeader(); for( int i = 0; i < count; ++i) printline( v[i]); } }
// Einträge, die mit einer bestimmten Zeichenfolge beginnen: int k0nt0::printn( const string& name) const { int matches = 0, len = name.length(); for( int i = 0; i < count; ++i) { if( v[i].name.compare(0, len, name) == 0) { if( matches == 0) tabHeader(); // Überschrift vor // erster Ausgabe. ++matches; printline( v[i]); } } if( matches == 0) cout << "Kein passender Eintrag gefunden!" << endl;
return matches; }
int k0nt0::printk( const string& KtoNr) const { int matches = 0, len = KtoNr.length(); for( int i = 0; i < count; ++i) { if( v[i].KtoNr.compare(0, len, KtoNr) == 0) { if( matches == 0) tabHeader(); // Überschrift vor // erster Ausgabe. ++matches; printline( v[i]); } } if( matches == 0) cout << "Kein passender Eintrag gefunden!" << endl;
return matches; }
int k0nt0::getNewEntries() // Neue Einträge { // im Dialog einlesen. int inputCount = 0;
cout << "\nNeue Namen und Konto-Nummer und Konto-Stand eingeben :" "\nEnde mit leerer Eingabe" << endl; Element el; while( true) { cout << "\nNeuer Nachname, Vorname: "; cin.sync(); getline( cin, el.name); if( el.name.empty()) break; cout << "\nKonto-Nummer: "; cin.sync(); getline( cin, el.KtoNr); cout << "\nKonto-Stand: "; cin.sync(); getline( cin, el.stand ); if( !append( el)) { cout << "Name wurde nicht eingefuegt!" << endl; if( count == MAX) { cout << "Die Tabelle ist voll!" << endl; break; } if( search( el.name) != PSEUDO) cout << "Name schon vorhanden!" << endl; } else { ++inputCount; cout << "Neues Element wurde eingefuegt!" << endl; } } return inputCount; }
// ------------------------------------------------------- // k0nt0_.cpp // Mit der Klasse k0nt0 eine k0nt0-Liste verwalten. // -------------------------------------------------------
#include "k0nt0.h" // Definition der Klasse k0nt0 #include <iostream> #include <string> #include <cctype> using namespace std;
inline void weiter() { cout << "\n\nWeiter mit der Return-Taste! "; cin.sync(); cin.clear(); // Nur neue Eingabe while( cin.get() != '\n') ; }
int menu(); // Ein Kommando einlesen char header[] = "\n\n ***** k0nt0-Liste *****\n\n";
k0nt0 myfriends; // Eine Kontenliste
int main() { int aktion = 0; // Kommando string name, KtoNr; int stand; // Zum Einlesen eines Namens
myfriends.append("Helle, Fry","012345678","100");
while( aktion != '0') { aktion = menu(); CLS; cout << header << endl;
switch( aktion) { case '1': cout << "\n--- Noch nicht implementiert. ---\n ";weiter(); break; case '2': cout << "\n--- Noch nicht implementiert. ---\n ";weiter(); break; case '3': cout << "\n--- Cashkonto anlegen. ---\n "; myfriends.getNewEntries(); // Hinzufügen break; case '4': cout << "\n--- Noch nicht implementiert. ---\n ";weiter(); break; case '5': cout << "\n--- Konto finden. ---\n " "\nDie Konto-Nr eines Kontos eingeben: "; getline( cin, KtoNr); if( !KtoNr.empty()) { myfriends.printk( KtoNr); weiter(); }; break; case '6': cout << "\n--- Kunden finden. ---\n " "\nDen Anfang eines Namens eingeben: "; getline( cin, name); if( !name.empty()) { myfriends.printn( name); weiter(); } break;
case '7': myfriends.print(); // Alles anzeigen weiter(); case '0': CLS; // Beenden break; } } // Ende while
return 0; }
int menu() { static char menuStr[] = "\n\n 1 = Girokonto anlegen" "\n\n 2 = Sparkonto anlegen" "\n\n 3 = Cashkonto anlegen" "\n\n" "\n\n 4 = Buchung auf Konto unter Angabe der KtoNr" "\n\n 5 = Kontoauszug eines Kontos unter Angabe der KtoNr" "\n\n 6 = Gesamtkontostand eines Kunden nach Angabe des Namens" "\n\n 7 = Auszugsliste aller Konten ausgeben" "\n\n" "\n\n 0 = Beenden des Programms" "\n\n Ihre Wahl: ";
CLS; cout << header << menuStr;
char wahl; cin.sync(); cin.clear(); // Nur neue Eingabe if( !cin.get(wahl)) wahl = 'B'; else wahl = toupper(wahl); cin.sync(); // Eingabepuffer löschen return wahl; };
|
|