Bankovni Racun - II Kolokvijum

56
ΠΑΓΧΑΛΚΙΔΙΚΟΣ ΛΟΓΟΣ ΠΕΡΙΟΔΙΚΗ ΕΚΔΟΣΗ ΤΟΥ ΠΑΓΧΑΛΚΙΔΙΚΟΥ ΣΥΛΛΟΓΟΥ ΘΕΣΣΑΛΟΝΙΚΗΣ «Ο ΑΡΙΣΤΟΤΕΛΗΣ» ΜΑΝΤΩΣ ΜΑΥΡΟΓΕΝΟΥΣ 23 - Τ.Κ. 542 49, ΘΕΣΣΑΛΟΝΙΚΗ ΤΕΥΧΟΣ 17ο • Οκτώβριος - Νοέμβριος - Δεκέμβριος 2013 ΠΛΗΡΩΜΕΝΟ ΤΕΛΟΣ Θεσ/νίκης 16 Αριθμός Αδείας P R E S S P O S T P R E S S P O S T 020050 Ταχ. Γραφείο X+5

description

Zadatak programiranje

Transcript of Bankovni Racun - II Kolokvijum

Page 1: Bankovni Racun - II Kolokvijum

I Zadatak

Projektovati klasu BankovniRacun. Klasa BankovniRacun ima podatke članove imeVlasnika

(string), broj (string), stanje, trenutniMinus i kamata. Klasa BankovniRacun ima metode

oduzmiKamatu i pripisiKamatu. Metod pripisiKamatu treba da na stanje na računu doda iznos

(kamata * stanje). Metod oduzmiKamatu treba da oduzme iznos (trenutniMinus * kamata) od

stanja na računu (10 poena)

Klasa BankovniRacun ima i virtuelni metod izracunajProviziju. Provizija je 50 dinara ako je

trenutni minus manji od 1000 dinara, odnosno 3% trenutnog minusa ako je minus vedi od 1000

dinara. (5 poena)

Za klasu BankovniRacun napisati i odgovarajudi konstruktor sa argumentima (5 poena).

Iz klase BankovniRacun izvesti klasu OroceniRacun, čiji redefinisani metod izracunajProviziju

računa proviziju kao 2% stanja na računu. (5 poena)

Napisati program main u kome de se kreirati po jedan objekat osnovne klase BankovniRacun i

izvedene klase OroceniRacun i pozivati odgovarajude metode izracunajProviziju(5 poena)

II Zadatak

Napisati metod jeVIP koji ustanovljava da li se radi o VIP klijentu. VIP klijent ima stanje na

oročenom računu od barem 1 000 000 dinara i trenutniMinus od 0 dinara. (10 poena)

Za VIP klijente napisati funkciju generisiVIPKod koja generiše odgovarajudi interni bančin kod u

formatu prvo slovo imena + prvo slovo prezimena + broj računa + V (npr. za klijenta Nikolu

Vukovida sa brojem računa 1234 generisade se kod NV1234V). Upisati generisan kod u fajl

vipKlijenti.txt (10 poena) u režimu dodavanja (ios::app) (20 poena).

#include <string> #include <cstring> #include <iostream> #include <fstream> using namespace std; class BankovniRacun { protected: string imeVlasnika; string broj; double stanje; double trenutniMinus; double kamata; public: void pripisiKamatu(); void oduzmiKamatu(); virtual double izracunajProviziju(); BankovniRacun(string, string, double, double, double); bool jeVIP(); bool generisiVIPKod();

Page 2: Bankovni Racun - II Kolokvijum

}; class OroceniRacun : public BankovniRacun { public: double izracunajProviziju(); OroceniRacun(string, string, double, double, double); }; void BankovniRacun::pripisiKamatu() { stanje += stanje * kamata; } void BankovniRacun::oduzmiKamatu() { stanje -= trenutniMinus * kamata; } bool BankovniRacun::jeVIP() { bool vip = false; if(stanje >= 1000000. && trenutniMinus == 0) vip = true; return vip; } BankovniRacun::BankovniRacun(string ime, string br, double s, double min, double kam) { imeVlasnika = ime; broj = br; stanje = s; trenutniMinus = min; kamata = kam; } bool BankovniRacun::generisiVIPKod() { bool uspesno = true; ofstream file; file.open("vipKlijenti.txt", ios::app); if(!file) { cout << "Fajl ne moze da se kreira"; return false; } char c = toupper(imeVlasnika.at(0)); file << c; c = toupper(imeVlasnika.at(imeVlasnika.find(" ") + 1)); file << c; file << broj; file << 'V'; file.close(); } double BankovniRacun::izracunajProviziju() { double provizija = 50; if(trenutniMinus >= 1000) provizija = 0.03 * trenutniMinus; return provizija; } double OroceniRacun::izracunajProviziju() { return 0.02 * stanje; } OroceniRacun::OroceniRacun(string ime, string br, double s, double min, double kam) : BankovniRacun(ime, br, s, min, kam) {} int main() { BankovniRacun b("Nikola Vukovic", "1234", 1001, 0, 0.03); cout << b.izracunajProviziju() << endl;

Page 3: Bankovni Racun - II Kolokvijum

OroceniRacun o("Nikola Vukovic", "1234", 1001, 0, 0.03); cout << o.izracunajProviziju() << endl; b.generisiVIPKod(); return 0; }