You are on page 1of 21

Tehniki fakultet Biha

Elektrotehnika
Informatika

OBJEKTNO-ORJENTISANO PROGRAMIRANJE
ZADAA 1

Asistent:
Adnan Ramaki, mr.ra. i inf.

Student:
Hasan Bapi 748
Biha, Decembar 2014.

Napisati program (konzolnu aplikaciju) koja e simulirati bankarske usluge. Program


napraviti koristei mehanizam klasa u C++ programskom jeziku.
Opis:
Prilikom pokretanja programa otvara se okvir sa izbornikom koji nudi sljedee opcije:
1. Administrator
2. Klijent
3. Izlaz
Odabirom opcije 1., tj. Administrator omoguuje se administratoru sljedee:
1. Pregled svih korisnika
2. Upis novih klijenata
3. Brisanje postojeih klijenata
4. Izlaz
Administrator da bi pristupio administratorskom dijelu potrebno je da unese korisniko ime i
ifru. Ti podaci se uvaju u tekstualnoj datoteci admin.txt koja ima sljedeu strukturu:
Ime
Prezime
KorisnikoIme( Username)
ifra(Password)
Podaci o klijentima se uvaju u tekstualnoj datoteci klijenti.txt. Struktura datoteke je :
Redni broj
Ime
Prezime
Adresa
Broj rauna
Stanje na raunu
Korisniko ime
ifra
Ukoliko administrator odabere opciju 1., program treba da ispie sve klijente koji se nalaze u
datoteci klijenti.txt i to u sljedeem formatu:
Redni broj_Ime_Prezime_Adresa_Broj Racuna_Stanje na racunu.
Druga opcija treba da omogui unos novog klijenta. Trea opcija treba da unosom imena
klijenta ili broja rauna izvri njegovo uklonjanje iz datoteke.
Da bi klijent pristupio klijentskom dijelu , takoer treba da unese korisniko ime i ifru koji se
uvaju u datoteci klijenti.txt.

Klijent treba da ima sljedee opcije:


1. Pregled stanja svog rauna
2. Polaganje depozita na raun
3. Podizanje novca sa rauna
4. Izlaz
Klikom na opciju 1., potrebno je ispisati stanje rauna klijenta koji je zatraio tu operaciju.
Ukoliko se odabere opcija 2., treba da se izbaci stanje rauna i omogui unos koji eli da
uloi. Ukoliko klijent uloi neki iznos treba da se stanje aurira u datoteci klijenti.txt. Ukoliko
odabere 3., opciju treba ispisati stanje te da se omogui podizanje iznosa novca do iznosa koji
posjeduje.
Funkcionalnost programa popratiti odgovarajuim porukama u smislu da ako korisnik unese
pogreno korisniko ime ili ifru, omogui unos ponovo.

#include<iostream>
#include<fstream>
#include<string>
#include<stdlib.h>
using namespace std;
class Banka{
public:
bool Administrator1(string&);
bool Administrator2(string&);
void IspisKlijenata();
void UnosKlijenta();
int RedniBroj();
int BrojKlijenta(string&);
int BrojKlijentaPoImenu(string&);
int BrojKlijentaPoRacunu(string&);
void BrisiKlijenta1();
void BrisiKlijenta2();
bool Klijent1(string&);
bool Klijent2(string&);
void StanjeRacuna(string&);
void PolaganjeDepozita(string&);
void PodizanjeNovca(string&);
};
bool Banka::Administrator1(string & username){
fstream d;
string s[4];
d.open("admin.txt", ios_base::in);
while(d.eof()!=true)
{

for(int i=0; i<4; i++){


getline(d,s[i]);
if(s[i]==username){
return true;

}}

return false;

d.close(); }
bool Banka::Administrator2(string & password){
fstream d;
string s[4];
d.open("admin.txt", ios_base::in);
while(d.eof()!=true){
for(int i=0; i<4; i++){
getline(d,s[i]);
if(s[i]==password){
return true;}}
return false; }
d.close(); }
void Banka::IspisKlijenata(){
fstream f;
string linija[8];
int br=0;
f.open("klijenti.txt", ios_base::in);
while(!f.eof()){
for(int i=0; i<8; i++){
getline(f, linija[i]);
if(i!=6 && i!=7){
cout<<linija[i]<<" "; }}
cout<<endl; }
f.close(); }

int Banka::RedniBroj(){
fstream d;
string s[8];
int br=0;
int rbr;
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true) {
for(int i=0; i<8; i++){
getline(d,s[i]),
br++; }}
rbr= atoi(s[0].c_str());
return rbr; }
int Banka::BrojKlijenta(string &username){
fstream d;
string s[8];
int vrati;
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
for(int i=0; i<8; i++){
getline(d,s[i]);
if(s[i]==username){
vrati= atoi(s[0].c_str());
return vrati;}}}}
int Banka::BrojKlijentaPoImenu(string &Ime){
fstream d;
string s[8];
int vrati;
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){

for(int i=0; i<8; i++){


getline(d,s[i]);
if(s[i]==Ime){
vrati= atoi(s[0].c_str());
return vrati; }}}}
int Banka::BrojKlijentaPoRacunu(string &BrojRacuna){
fstream d;
string s[8];
int vrati;
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true) {
for(int i=0; i<8; i++) {
getline(d,s[i]);
if(s[i]==BrojRacuna){
vrati= atoi(s[0].c_str());
return vrati; }}}}
void Banka::UnosKlijenta(){
fstream d;
string Ime;
string Prezime;
string Adresa;
string BrojRacuna;
string StanjeNaRacunu;
string KorisnickoIme;
string sifra;
Banka b;
int rbr=b.RedniBroj();
int a=rbr+1;
string broj;

d.open("klijenti.txt",ios_base::out|ios_base::app);
d<<endl;
d<<a<<".";
cout<<"Unesite ime"<<endl;
cin>>Ime;
d<<endl;
d<<Ime;
cout<<"Unesite prezime"<<endl;
cin>>Prezime;
d<<endl;
d<<Prezime;
cout<<"Unesite adresu bez kucnog broja"<<endl;
cin>>Adresa;
cout<<"Unesite kucni broj"<<endl;
cin>>broj;
d<<endl;
d<<Adresa<<" "<<broj<<".";
cout<<"Unesite broj racuna"<<endl;
cin>>BrojRacuna;
d<<endl;
d<<BrojRacuna;
cout<<"Unesite stanje na racunu"<<endl;
cin>>StanjeNaRacunu;
d<<endl;
d<<StanjeNaRacunu;
cout<<"Unesite korisnicko ime"<<endl;
cin>>KorisnickoIme;
d<<endl;
d<<KorisnickoIme;

cout<<"Unesite sifru"<<endl;
cin>>sifra;
d<<endl;
d<<sifra;
d.close(); }
void Banka::BrisiKlijenta1(){
fstream d;
string Ime;
string st;
int zastava=0;
Banka b;
F:

cout<<endl;

cout<<"Unesite ime klijenta kojeg zelite obrisati:"<<endl;


cin>>Ime;
int broj=b.BrojKlijentaPoImenu(Ime);
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
getline(d,st);
if(st==Ime){
zastava++;}}
d.close();
if(zastava==1){
string s;
int br=0;
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
getline(d,s);
br++; }
d.close();

string s1[br];
d.open("klijenti.txt", ios_base::in);
int i=0;
while(d.eof()!=true){
getline(d,s1[i]);
i++; }
d.close();
for(int i=0; i<br; i++) {
if(i==broj-1){
for(int j=(broj-1)*8; j<broj*8; j++){
s1[j].clear(); }}}
string s3="";
int n=1;
char string[10];
for(int i=0; i<br; i=i+8){
if(s1[i]!=s3){
s1[i].clear();
itoa(n,string,10);
s1[i]=string;
n=atoi(s1[i].c_str());
n++; }}
d.open("klijenti.txt", ios_base::out| ios_base::trunc);
for(int i=0; i<br-1; i++){
if(s1[i]!=s3){
d<<s1[i]<<endl; }}
d<<s1[br-1];
d.close(); }
else{
cout<<"Unijeli ste pogresno ime.Pokusajte ponovo!"<<endl;

goto F;}}
void Banka::BrisiKlijenta2(){
fstream d;
string BrojRacuna;
string st;
int zastava=0;
Banka b;
T:

cout<<endl;

cout<<"Unesite broj racuna klijenta kojeg zelite obrisati:"<<endl;


cin>>BrojRacuna;
int broj=b.BrojKlijentaPoRacunu(BrojRacuna);
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
getline(d,st);
if(st==BrojRacuna){
zastava++; }}
d.close();
if(zastava==1){
string s;
int br=0;
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
getline(d,s);
br++; }
d.close();
string s1[br];
d.open("klijenti.txt", ios_base::in);
int i=0;
while(d.eof()!=true){

getline(d,s1[i]);
i++; }
d.close();
for(int i=0; i<br; i++){
if(i==broj-1){
for(int j=(broj-1)*8; j<broj*8; j++){
s1[j].clear(); }}}
string s3="";
int n=1;
char string[10];
for(int i=0; i<br; i=i+8){
if(s1[i]!=s3){
s1[i].clear();
itoa(n,string,10);
s1[i]=string;
n=atoi(s1[i].c_str());
n++; }}
d.open("klijenti.txt", ios_base::out| ios_base::trunc);
for(int i=0; i<br-1; i++){
if(s1[i]!=s3){
d<<s1[i]<<endl; }}
d<<s1[br-1];
d.close(); }
else{
cout<<"Unijeli ste pogresan broj racuna.Pokusajte ponovo!"<<endl;
goto T; }}
bool Banka::Klijent1(string & username){
fstream d;
string s[8];

d.open("klijenti.txt",ios_base::in);
while(d.eof()!=true){
for(int i=0; i<8; i++){
getline(d,s[i]);
if(s[i]==username){
return true; }}}
return false; }
bool Banka::Klijent2(string & password){
fstream d;
string s[8];
d.open("klijenti.txt",ios_base::in);
while(d.eof()!=true){
for(int i=0; i<8; i++){
getline(d,s[i]);
if(s[i]==password){
return true; }}}
return false; }
void Banka::StanjeRacuna(string & username){
fstream d;
string s[8];
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
for(int i=0; i<8; i++){
getline(d,s[i]);
if(s[i]==username){
cout<<"Gospodine "<<s[1]<<", Vase stanje na racunu je : "<<s[5]<<endl;}}}}
void Banka::PolaganjeDepozita(string& username){
fstream d;
int iznos;

int b;
cout<<"Unesite vrijednost novca koju zelite poloziti na racun:"<<endl;
cin>>iznos;
int br=0;
string s[8];
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
for(int i=0; i<8; i++){
getline(d,s[i]);
if(s[i]==username){
b= atoi(s[5].c_str()); }
br++; }}
d.close();
string s1[br];
Banka c;
cout<<"Novi iznos na racunu je : " << iznos+b<<endl;
int k=iznos+b;
char strg [10];
itoa(k,strg,10);
int i=0;
d.open("klijenti.txt",ios_base::in);
while(d.eof()!=true){
getline(d,s1[i]);
i++; }
d.close();
int broj=c.BrojKlijenta(username);
for(int j=0; j<br; j++){
if(j==((broj*8)-3)){
s1[j].clear();

s1[j]=strg; }}
d.open("klijenti.txt", ios_base::out|ios_base::trunc);
for(int i=0; i<br-1; i++){
d<<s1[i]<<"\n";}
d<<s1[br-1];
d.close();}
void Banka::PodizanjeNovca(string &username){
fstream d;
cout<<endl;
E:
cout<<"Unesite iznos koji zelite podignuti sa racuna:"<<endl;
int iznos;
cin>>iznos;
int br=0;
int b;
string s[8];
d.open("klijenti.txt", ios_base::in);
while(d.eof()!=true){
for(int i=0; i<8; i++){
getline(d,s[i]);
if(s[i]==username){
b= atoi(s[5].c_str()); }
br++;

}}

d.close();
Banka c;
if(iznos<b){
int ostatak=b-iznos;
cout<<"Novi iznos na racunu je : " << ostatak<<endl;
char strg [10];

string s1[br];
itoa(ostatak,strg,10);
int i=0;
d.open("klijenti.txt",ios_base::in);
while(d.eof()!=true){
getline(d,s1[i]);
i++; }
d.close();
int broj=c.BrojKlijenta(username);
for(int j=0; j<br; j++){
if(j==((broj*8)-3)){
s1[j].clear();
s1[j]=strg; }}
d.open("klijenti.txt", ios_base::out|ios_base::trunc);
for(int i=0; i<br-1; i++){
d<<s1[i]<<"\n"; }
d<<s1[br-1];
d.close(); }
else{
cout<<"Molimo smanjite cifru!"<<endl;
goto E;}}

int main(){
Banka b;
int odgovor;
int odgovor1;
string username;
string password;
M:

cout<<endl;

cout<<"(Odaberite nacin prijave)"<<endl;


cout<<"1. Administrator"<<endl;
cout<<"2. Klijent"<<endl;
cout<<"3. Izlaz"<<endl;
cout<<endl;
cin>>odgovor;
if(odgovor==1){
A:

cout<<endl;

cout<<"Unesite korisnicko ime:"<<endl;


cin>>username;
cout<<"Unesite sifru:"<<endl;
cin>>password;
b.Administrator1(username);
b.Administrator2(password);
if(b.Administrator1(username)==true && b.Administrator2(password)==true){
B:

cout<<endl;

cout<<"1. Pregled svih klijenata"<<endl;


cout<<"2. Unos novih klijenata"<<endl;
cout<<"3. Brisanje postojecih klijenata"<<endl;
cout<<"4. Izlaz"<<endl;
cout<<endl;
cin>>odgovor1;
if(odgovor1==1){
cout<<endl;
b.IspisKlijenata();
cout<<endl;
cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;

if(a==1){
goto B; }}
else if(odgovor1==2){
cout<<endl;
b.UnosKlijenta();
cout<<endl;
cout<<"Uspjesno ste dodali novog klijenta!"<<endl;
cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;
if(a==1){
goto B;}}
else if(odgovor1==3){
cout<<endl;
cout<<"Da li zelite da izbrisete klijenta po:"<<endl;
cout<<"1. imenu"<<endl;
cout<<"2. broju racuna"<<endl;
int od;
cin>>od;
if(od==1){
b.BrisiKlijenta1();
cout<<" Uspjesno ste obrisali klijenta!"<<endl;
cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;
if(a==1){
goto B;}}
else if(od==2){
b.BrisiKlijenta2();

cout<<" Uspjesno ste obrisali klijenta!"<<endl;


cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;
if(a==1){
goto B; }}}
else if(odgovor1==4){
goto M; }}
else{
cout<<"Pogresni podaci. Pokusajte ponovo!"<<endl;
goto A; }}
else if(odgovor==2){
C: cout<<endl;
cout<<"Unesite korisnicko ime:"<<endl;
cin>>username;
cout<<"Unesite sifru:"<<endl;
cin>>password;
b.Klijent1(username);
b.Klijent2(password);
if(b.Klijent1(username)==true && b.Klijent2(password)==true){
D:

cout<<endl;

cout<<"1. Pregled stanja racuna"<<endl;


cout<<"2. Polaganje depozita na racun"<<endl;
cout<<"3. Podizanje novca sa racuna"<<endl;
cout<<"4. Izlaz"<<endl;
cout<<endl;
cin>>odgovor1;
if(odgovor1==1){
cout<<endl;

b.StanjeRacuna(username);
cout<<endl;
cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;
if(a==1){
goto D;}}
else if(odgovor1==2){
cout<<endl;
b.StanjeRacuna(username);
cout<<endl;
b.PolaganjeDepozita(username);
cout<<endl;
cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;
if(a==1){
goto D;}}
else if(odgovor1==3){
cout<<endl;
b.StanjeRacuna(username);
cout<<endl;
b.PodizanjeNovca(username);
cout<<endl;
cout<<"Za povratak nazad pritisnute 1 "<<endl;
int a;
cin>>a;
if(a==1){
goto D;}}

else{
cout<<endl;
goto M; }}
else{
cout<<endl;
cout<<"Pogresni podaci. Pokusajte ponovo!"<<endl;
goto C; }}
else{
return 0; }}

You might also like