PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C/C++] Bankkontenverwaltungssystem [5/?]



enco
02.09.2009, 14:26
Wie versprochen werde ich ab jetzt hier meine Aufgaben posten.
Es geht um ein Bankkontenverwaltungssystem.

Ich denke jeden Dienstag werde ich diesen Thread erweitern, sofern etwas neues im Unterricht drankommt ;D

Wenn ihr eure Lösung postet, spoilert diese bitte, damit die anderen nicht gleich eine Lösung sehen.

Schaut vorbei, übt fleißig und schaut nicht sofort in die Lösungen!

Viel Spaß!

-----------------------------------------------

Hier die Aufgabentexte:
(Die Musterlösungen werden nachgereicht!) [1/4]

Aufgabe 1: Ein Bankkonto mit einer C-Struktur repräsentieren

Schreiben Sie ein Programm, das eine C-Struktur namens konto deklariert. Die Struktur soll die folgenden Informationen enthalten: Namen des Besitzers, Kontonummer und Kontostand.

Im Hauptprogramm soll ein konkretes Konto erzeugt werden, dass anschließend über die Konsole zu initialisieren ist.

Weisen Sie die Funktionalität nach, indem Sie die eingelesenen Daten auf der Konsole ausgeben.

Laden Sie den Quellcode des Programms hoch.Musterlösung



#include <stdio.h>

struct konto
{
int knr;
float kst;
char name[50];
};

int main()
{
struct konto kto;

printf("Name eingeben: ");
scanf("%s", kto.name);

printf("Kontonummer eingeben: ");
scanf("%i", &kto.knr);

printf("Kontostand eingeben: ");
scanf("%f", &kto.kst);

printf("\nAusgabe der Testdaten:\n");
printf("Name:%s\n", kto.name);
printf("Kontonummer:%i\n", kto.knr);
printf("Kontostand:%.2f\n", kto.kst);

return 0;
}

Aufgabe 2: Initialisieren und Anzeigen

Implementieren Sie die zwei Funktionen zum Einrichten bzw. Initialisieren eines Kontos und zum Ausgeben der Kontodaten auf der Konsole:Der Prototyp der Funktionen seien
void init_1( struct konto * pK ) und
void show( struct konto * pK )
Überprüfen Sie, ob die Initialisierung auch mit einer Funktion vom Prototypen
void init_2( struct konto k )
funktioniert. Können Sie sich vorstellen, warum es so nicht klappt?Schreiben Sie ein Hauptprogramm mit dem Sie die Funktionen testen:
void main() {
struct konto k1, k2;
// Initialisieren k1 mit init_1
...
// Anzeigen k1 mit show
...
// Initialisieren k2 mit init_2
...
// Anzeigen k2 mit show
...
}

Laden Sie den Quellcode des Programms hoch.

Aufgabe 3: Einzahlen, Auszahlen und Überweisen

Erweitern Sie Ihr Programm um Funktionen zum Ein- bzw. Auszahlen und zum Überweisen von Geldbeträgen von einem Konto zu einem anderen. Überlegen Sie zunächst, wie die Prototypen derartiger Funktionen aussehen müssen.

Aufgabe 4: Einlesen von bzw. Abspeichern auf der Festplatte

Schreiben Sie zwei weitere Funktionen: Eine zum Einlesen und Initialisieren eines Kontos aus einer Datei von der Festplatte, die andere zum Speichern eines Kontos in eine Datei auf der Festplatte.
Die Funktionen sollen die folgenden Prototypen haben:
void einlesen( char * dateiname, struct konto * pK )
und
void speichern( char * dateiname, struct konto * pK )
Benutzen Sie möglichst die beiden vorgegebenen Inputdateien input1.txt und input2.txt für zwei Konten.
Schreiben Sie ein Hauptprogramm in dem Sie alle Ihre Funktionen wenigstens einmal aufrufen und testen. Laden Sie die cpp-Datei hoch.
Input1.txt


Kontonummer: 4711
Kontostand: 234.67
Name des Inhabers: Frodo Baggins
Input2.txt


Kontonummer: 4712
Kontostand: -34234.67
Name des Inhabers: Samweis Gamshee


Aufgabe 5: C++ Sprachelemente nutzen

Schreiben Sie Ihr Programm um, so dass es für (File/Konsole) In- und Output die C++-Sprachelemente benutzt.
Infoblatt: Gegenüberstellung File-IO mit C und C++ (http://www.mediafire.com/?2larwwjxnyn)

blackberry
02.09.2009, 16:12
Bitteschön:

http://www.megaupload.com/?d=J7YECQFH

fred777
02.09.2009, 19:13
Ganz ehrlich, das mit den Lösungen finde ich nicht so toll, naja hier eben schnell die erste Aufgabe zusammengetipselt :>

[4/1]:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct konto {
char besitzer[30];
char kontonr[30];
char kontost[30];
};

int main(void) {
struct konto daten;
printf("\nBANKKONTENVERWALTUNG [4/1]\n\n\a");
printf("Bitte Kontobesitzer eingeben: ");
scanf("%s",daten.besitzer);
printf("Bitte Kontonummer eingeben: ");
scanf("%s",daten.kontonr);
printf("Bitte Kontostand eingeben: ");
scanf("%s",daten.kontost);

printf("\n[x] Daten wurden hinzugefuegt: \n");
printf("\nBesitzer: %s\n",daten.besitzer);
printf("KtNummer: %s\n",daten.kontonr);
printf("Kt-Stand: %s\n",daten.kontost);

return 0;
}

blackberry
02.09.2009, 19:18
http://img441.imageshack.us/img441/9884/uhgzgzu.png

freeeeeeeeeeeeeeeeeeed!
It is not a bug, it is an undocumentated feature!

EDIT:
Ich weiß, das ist mehr als nur Off-Topic, aber ich editier es ja nur rein und mach keinen neuen Post:

<BlackBerry0815>freeeeeeeeeeeed
<BlackBerry0815>wieso liegt ein gecrashtes programm in unserem haus
<fred777>Bbeeeeeeeeeeeeeeeee
<BlackBerry0815>was wer wie wo, ich war's nicht
<BlackBerry0815>freeeeeeeeeed erzähl mir was du getan hast
<BlackBerry0815>ich? ich war's nicht
<BlackBerry0815>freeeeeed, sag mir was du getan hast als ich weg war
[...]
<BlackBerry0815>nunja... ich saß in meinem zimmer
<BlackBerry0815>ja
[...]
<BlackBerry0815>und da kam plötzlich dieses programm
<fred777>und dann kam der mann
<BlackBerry0815>und ich habe A gedrückt gehalten
<fred777>ja und dann?
<BlackBerry0815>und dann enter gedrückt
<BlackBerry0815>und dann ist es abgestürzt
<fred777>oh nein, das tut programmen wehh
<BlackBerry0815>oh errrm ups das wusste ich nicht
<BlackBerry0815>ok, ich bin blöd
<tmh>Gelesen BlackBerry0815 ?
<BlackBerry0815>noch nicht
<BlackBerry0815>ich reinterpretiere gerade mit fred777 lamas mit hüten

fred777
02.09.2009, 19:21
Ich hatte keine Lust nen sizecheck durchzuführen, mach ich wenn ich mehr Zeit habe bebeeeeeeeeee :D

So für die Stofler wie Blackberry HIER EXTRA FÜR DICH:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct konto {
char besitzer[30];
char kontonr[30];
char kontost[30];
};

int main(void) {
struct konto daten;
printf("\nBANKKONTENVERWALTUNG [4/1]\n\n");
printf("Bitte Kontobesitzer eingeben: ");
scanf("%s",daten.besitzer);
if(strlen(daten.besitzer) > 30){
printf("\nOu Overflow detected!\n\a");
exit(0);}
printf("Bitte Kontonummer eingeben: ");
scanf("%s",daten.kontonr);
if(strlen(daten.kontonr) > 30){
printf("\nOu Overflow detected!\n\a");
exit(0);}
printf("Bitte Kontostand eingeben: ");
scanf("%s",daten.kontost);
if(strlen(daten.kontost) > 30){
printf("\nOu Overflow detected!\n\a");
exit(0);}

printf("\n[x] Daten wurden hinzugefuegt: \n");
printf("\nBesitzer: %s\n",daten.besitzer);
printf("KtNummer: %s\n",daten.kontonr);
printf("Kt-Stand: %s\n",daten.kontost);

return 0;
}

wacked
02.09.2009, 19:42
mhmm hab ich was überlesen? muss es straight c sein?


#include <iostream>
using namespace std;
struct KONTO{
char KontoBesitzer[50];
unsigned int KontoNummer;
float KontoStand;
};
int main(){
KONTO Konto1;
int Kontonummern=0;
cout<<"Wie heißen sie?"<<endl;
cin>>Konto1.KontoBesitzer;
Konto1.KontoBesitzer[50]=0;
Konto1.KontoNummer=Kontonummern;
Konto1.KontoStand=0.0;
cout<<"Du heißt:"<<Konto1.KontoBesitzer<<endl
<<"dein knr"<<Konto1.KontoNummer<<endl
<<"du hast"<<Konto1.KontoStand" euronen,dollars.was weiß ich";
return 0;
}edit:och ihr seid ja lustig... jetz muss ich auch noch ausgeben was was ist oder wie?

blackberry
02.09.2009, 20:02
@wacked
Der Thread-Titel heißt "[C/C++] Bankkontenverwaltungssystem [4/?]".
Also gehe ich davon aus, dass beide Sprachen erlaubt sind.

P.S.: meine Lösung ist natürlich reines C :) *angeb*

Steav
02.09.2009, 20:58
Viel Spaß falls Du bis zum Onlinebanking kommst und Dich mit HBCI / FinTS außeinandersetzen darfst^^

cyber_gh0st
03.09.2009, 16:58
// Editiert: Bitte spoilern ;D

Hi habe Aufgabe 1 (glaub ich) gelöst :

//Konto.c

#include <stdio.h>
#include <stdlib.h>

struct konto {
int kontonummer;//<-- ich muss dazu sagen dass ich noch nie ein Konto hatte und nicht wieß ob int reicht :S
char vname[30];
char nname[30];
//hoffe das reicht
}*user;

int main(void) {
user = malloc(sizeof(struct konto)+1);
FILE *usr_data;
int kontonr;
int i = 1;

//stream wird geöffnet
if ( (usr_data = fopen("usr_data.txt","a+")) == NULL) {
fprintf(stderr,"Fehler beim Öffnen der Datei :(");
exit(EXIT_FAILURE);
}


//Informationen werden abgefragt:
printf("Bitte geben sie ihren Vornamen ein:\n");
fgets((*user).vname,29,stdin);
printf("Bitte geben sie ihren Nachnamen ein:\n");
fgets((*user).nname,29,stdin);

fprintf(usr_data," nr:%i\n vname:%s\n nname:%s",i,(*user).vname, (*user).nname);
printf("Konto Erstellt");
exit(EXIT_SUCCESS);
}
//Rechtschreibefehler sind natürlich Absicht

enco
08.09.2009, 12:12
Update 08.09.09
Aufgabe 5 hinzugefügt.

Noob2323
03.04.2010, 01:01
Ich code erst seit 2 1/2 oder 3 Wochen, also ist das ganze vielleicht ein bisschen unsauber :) Beim Kontonamen darf kein Leerzeichen verwendet werden, könnte man mit c-Strings lösen aber da hatte ich keine lust mehr drauf.



//bankverwaltung.cpp
/Include nur bei vc++ studio
//#include <stdafx.h>
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;



class konto{
private: string ktname;
long ktnr;
unsigned long ktst;

public: konto(){ ktname = "Unbekannt"; ktnr = 0; ktst=0;}
~konto(){}


string get_ktname(){return ktname;}
long get_ktnr(){return ktnr;}
double get_ktst(){return ktst;}

void set_ktname(string name)
{
ktname = name;
}

void set_ktnr(long nummer)
{
ktnr = nummer;
}

void set_ktst(double stand)
{
ktst = stand;
}

void printall()
{
cout << endl << endl;
cout << "Kontoname:\t" << ktname << endl;
cout << "Kontonummer:\t" << ktnr << endl;
cout << "Kontostand:\t" << ktst << endl;
}
};

int main()
{
konto liste[100];
int auswahl;
int zaehler=0;
cout << "Willkommen Chef. Bitte wählen sie zwischen den Optionen aus!" << endl << endl;


while(1)
{
cout << "Option 1:\t Neues Konto erstellen." << endl;
cout << "Option 2:\t Kontodaten abfragen." << endl;
cout << "Option 3:\t Geldbetrag einzahlen." << endl;
cout << "Option 4:\t Geldbetrag abheben." << endl;
cout << "Option 5:\t Geldbetrag transferieren." << endl;
cout << "Option 6:\t Programm verlassen." << endl << endl;
cout << "Sie waehlen Option Nummer:\t";

cin >> auswahl;
if(auswahl == 1)
{
cout << "\n\nErstellen eines neuen Kontos eingeleitet" << endl;
cout << "__________________________________________________ __" << endl << endl;
cout << "\n\nKontoname:\t";
string kontoname;
cin >> kontoname;
liste[zaehler].set_ktname(kontoname);
liste[zaehler].set_ktnr(zaehler);

cout << "\n\nKonto wurde erfolgreich erstellt. Kontonr: " << liste[zaehler].get_ktnr() << "\n";
cout << "__________________________________________________ __";
zaehler++;
cout << endl << endl;


}
else if(auswahl == 2)
{
cout << "\n\nAbfragen der Kontodaten eingeleitet" << endl;
cout << "___________________________________________" << endl << endl;
cout << "\n\nKontonr:\t";
int nummer;
cin >> nummer;
if(nummer < 100)
liste[nummer].printall();
else
cout << "\n\nKonto nicht vorhanden";
cout << endl << endl;
}

else if(auswahl == 3)
{
cout << "\n\nEinzahlung eingeleitet." << endl;
cout << "___________________________________________"<< endl << endl;
cout << "\n\nKontonr:\t";
int nummer;
cin >> nummer;
cout << "\n\nGeldbetrag, den sie einzahlen moechten (EUR) :\t";
unsigned long betrag;
cin >> betrag;
liste[nummer].set_ktst(betrag);
cout << "\n\nEs wurden " << betrag << " Euro auf ihr Konto eingezahlt." << endl << endl;
}
else if(auswahl == 4)
{
cout << "\n\nAbheben eingeleitet." << endl;
cout << "___________________________________________" << endl << endl;
cout << "Kontonr:\t";
int nummer;
cin >> nummer;
cout << "\n\nIhr derzeitiger Kontostand: " << liste[nummer].get_ktst() << " Euro" << endl;
cout << "\n\nGeldbetrag, den sie abheben moechten (EUR) :\t";
unsigned long betrag;
cin >> betrag;
if(betrag <= liste[nummer].get_ktst())
{
liste[nummer].set_ktst((liste[nummer].get_ktst()-betrag));
cout << "\n\nSie haben " << betrag << " Euro abgehoben." << endl << endl;
cout << "Ihr neuer Kontostand:\t" << liste[nummer].get_ktst() << " Euro";
cout << endl << endl;
}
else
{
cout << "\n\nEs ist leider nicht genuegend Geld auf dem Konto vorhanden." << endl << endl;
}
}

else if(auswahl == 5)
{
cout << "\n\nGeldtransfer eingeleitet." << endl;
cout << "___________________________________________" << endl << endl;
cout << "Kontonr des Kontos, von dem ueberwiesen wird:\t";
int nummer1;
cin >> nummer1;
cout << "\n\nKontonr des Empfaengers:\t";
int nummer2;
cin >> nummer2;
cout << "\nKontostand:\t" << liste[nummer1].get_ktst() << " Euro" << endl << endl;
cout << "\nWieviel Euro moechten sie ueberweisen:\t";
unsigned long betrag;
cin >> betrag;
if(betrag <= liste[nummer1].get_ktst())
{
liste[nummer1].set_ktst((liste[nummer1].get_ktst()-betrag));
liste[nummer2].set_ktst((liste[nummer2].get_ktst()+betrag));
cout << "\n\nUeberweisung erfolgreich abgeschlossen." << endl << endl << endl;
}
else
{
cout << "Eingegebener Betrag kann nicht verarbeitet werden." << endl << endl << endl;
}
}

else if(auswahl == 6)
{
exit(1);
}
else
{
cout << "\n\n\a\a\a________________________________________ _____________________________________" << endl;
cout << "\nIhre Eingabe war fehlerhaft.\nDas Programm beendet sich innerhalb der naechsten 5 Sekunden.";
cout << "\n\n______________________________________________ _______________________________\n\n";
Sleep(5000);
exit(1);
}
}


return 0;
}


Vielleicht hilfts ja jemandem :) Hiermit sind 100 Einträge möglich.

Edit:// Bisschen alt der Thread aber egaaaal :)