Mit Pfeiltasten Befehle Steuern
-
Hi Leute,
ich habe eine kurze Frage, später vielleicht noch etwas mehr.
Ich möchte eine kleines Konsolen Programm zur Verwaltung meiner Finanzen schreiben. Ich weiß da reichen Excel Tabellen und es gibt auch gute Programme aber ich möchte ein eigenes und dabei möchte ich auch noch weiter Programmieren lernen.
Ausgangslage: Ich befinde mich auf dem Startbildschirm der Konsole. Auf diesem Bildschirm, kann ich 2 oder 3 Funktionen auswählen. Z.B. Kontoüberischt,Einkommen,Ausaben.
Da ich die eingabe nicht durch eingabe von buchstaben oder zahlen steuern will, dachte ich mir könnte ich es docha uch ganz normal mit Pfeiltasten machen. Also das dann die Markierung (dieser weiße Balken) standard mäßig auf dem ersten Auswahlpunkt ist und ich mit den Pfeiltasten dann auswählen kann. Die Wahl wird mit Enter bestätigt.
Wie bekomme ich so eine Auswahl hin?
Da ich grad dabei bin kann ich auch gleich die zweite Frage stellen.
Ich habe hier eine Funktion umsatz(). Hier möchte ich alle Daten zu den Umsätzen eingeben. Wie bekomme ich es hin, dass ich immer unter der jeweiligen Überschrift etwas eingebe und den Betrag dann zB auch an eine andere Funktion weiter geben kann.
Dazu kommt noch, dass alles gespeichert werden soll und ich es bei jedem Aufruf zur verfügung habe.Hier mal der kurze Anfang der Funktion.
[cpp] void umsatz() { //Hier werden noch Variablen für die einzugebenen Daten angelegt cout << " Tag \t " << " Datum \t " << " Grund \t " << " Betrag \t " << endl; cout << endl; cin >> //ab hier sollen die oben genannten Daten eingegeben werden } [/cpp]
Danke für Hilfe!
-
Srry aber ich hab nicht viel Zeit grad, drum nur ne sehr schlechte erklärung.
Also zur 1. Frage mit gotoxy() in der Konsole zurück springen und dann das was momentan ausgewählt ist mit nem anderen Hintergrund schreiben( mit SetBKColor() ) und das immer wieder bis der Benutzer enter gedrückt hat.
Also nochmal srry dafür das es so wenig geht aber ich hab so etwas schon mal gemacht und ich geb dir morgen dann mal Source.
mfg tobZel
-
Dank dir erstmal, warte dann mal auf morgen. Vielleicht weiß ja auch noch jemad anderes etwas! Allerdings klingt das ziemlich umständlich ist es vielleicht mit BUchstaben oder Zahlen doch liechter?
-
ich find's nicht umständlich, hab' ich früher ständig so gemacht.
Eventuell:
#include <iostream> #include <vector> #include <string> // compiler specific: #include <conio.h> // platform specific: #include <windows.h> using namespace std; enum arrow_t { ARROW_NOARROW = 0x00, ARROW_UP = 0x48, ARROW_DOWN = 0x50, ARROW_LEFT = 0x4B, ARROW_RIGHT = 0x4D }; arrow_t get_arrow_key( ) { arrow_t arrow = ARROW_NOARROW; switch( getch( ) ) { case ARROW_UP: arrow = ARROW_UP; break; case ARROW_DOWN: arrow = ARROW_DOWN; break; case ARROW_LEFT: arrow = ARROW_LEFT; break; case ARROW_RIGHT: arrow = ARROW_RIGHT; break; default: arrow = ARROW_NOARROW; break; } return arrow; } void gotoxy( int x, int y ) { COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), pos ); } size_t menu( vector< string > &items ) { size_t current_selected = 0; size_t selected = 0; int ch; do { for( unsigned int i = 0; i < items.size( ); ++i ) { if( i == current_selected ) { SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED ); } else { SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED ); } gotoxy( 0, i ); cout << items[ i ] << endl; } ch = getch( ); if( ch == '\r' ) { selected = current_selected + 1; } else if( ch == 0xE0 ) { switch( get_arrow_key( ) ) { case ARROW_UP: if( current_selected == 0 ) { current_selected = items.size( ) - 1; } else { --current_selected; } break; case ARROW_DOWN: if( current_selected == items.size( ) - 1 ) { current_selected = 0; } else { ++current_selected; } break; } } } while( !selected ); SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED ); return selected; } int main( ) { vector< string > items; items.push_back( "Kontoueberischt" ); items.push_back( "Einkommen" ); items.push_back( "Ausaben" ); items.push_back( "Beenden" ); size_t selection = menu ( items ); cout << endl << "Sie haben Menuepunkt " << selection << " gewählt!" << endl; }
Greetz, Swordfish