Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- #include<fstream>
- #include<iomanip>
- #include<ctime>
- #include<stdlib.h>
- #include<chrono> //Za odredivanje tacnog trenutnog datuma
- #include<ctime>
- using namespace std;
- class Osoba{
- public:
- static int broj_unesenih_osoba;
- Osoba(string name_val="empty",string adress="empty"):
- ime_prezime{name_val},adresa{adress}{}
- Osoba(const Osoba &izvor):
- ime_prezime{izvor.ime_prezime},adresa{izvor.adresa}{}
- ~Osoba(){}
- void set_Osoba(){
- cout<<"Unesite ime i prezime potrosaca: ";getline(cin,ime_prezime);
- cout<<"Unesite mjesto prebivalista: ";getline(cin,adresa);
- }
- string get_imeprezime(){
- return ime_prezime;
- }
- string get_prebivaliste(){
- return adresa;
- }
- private:
- string ime_prezime;
- string adresa;
- };
- int Osoba::broj_unesenih_osoba=0;
- class Datum{
- public:
- void set_Datum();
- //Getteri get_unesena_godina i get_uneseni_mjesec su iskljucivo postavljeni radi provjere prilikom unosa racuna koja se vrsi unutar klase Elektroprivreda, funkciji set_Data()
- int get_unesena_godina(){
- return godina;
- }
- int get_uneseni_mjesec(){
- return mjesec;
- }
- int get_date(){
- return date;
- }
- private:
- int dan,mjesec,godina,date;
- };
- //Provjera unesenog datuma
- void Datum::set_Datum(){
- int br_dana[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30 ,31 };
- cout<<"Unesite datum izdavanja racuna\n";
- cout<<"Unesite dan: ";cin>>dan;
- cout<<"Unesite mjesec: ";cin>>mjesec;
- cout<<"Unesite godinu: ";cin>>godina;
- date=((dan*100+mjesec))*10000+godina;
- while(godina<1 || mjesec<1 || mjesec>12 || dan<1 || dan > br_dana[mjesec-1]){
- cout<<"Unijeli ste pogresan datum! Unesite datum ponovo\n";
- cout<<"Unesite dan: ";cin>>dan;
- cout<<"Unesite mjesec: ";cin>>mjesec;
- cout<<"Unesite godinu: ";cin>>godina;
- date=((dan*100+mjesec))*10000+godina;
- }
- }
- class Elektroprivreda{
- public:
- Elektroprivreda(float bill=9.99,int cm=0,int cy=2019)://Minimalna cijena struje koju treba platiti na mjesecnom nivou bez obzira na koristenje iste
- racun{bill},trenutni_mjesec{cm},trenutna_godina{cy}{}//cy-current year,cm-current month
- Elektroprivreda(const Elektroprivreda &izvor):
- racun{izvor.racun},trenutni_mjesec{izvor.trenutni_mjesec},trenutna_godina{izvor.trenutna_godina}{}
- ~Elektroprivreda(){}
- Osoba O;
- Datum D;
- //Setteri
- void set_id(){
- id=rand()%1000+100;
- }
- //Generise se trenutni mjesec 1-12 na osnovu lokalnog vremena
- void set_trenutni_mjesec(){
- time_t t = time(NULL);
- tm* timePtr = localtime(&t);
- trenutni_mjesec=timePtr->tm_mon;
- trenutni_mjesec=timePtr->tm_mon+1;
- }
- void set_racun();
- void set_Data(){
- O.set_Osoba();
- set_trenutni_mjesec();
- D.set_Datum();
- if(D.get_uneseni_mjesec()>get_trenutni_mjesec()||D.get_unesena_godina()>get_trenutna_godina()||D.get_unesena_godina()<get_trenutna_godina()){//Ako je uneseni mjesec,godina veci od generisanog mjeseca po lokalnom vremenu, korisnik se vraca na unos
- while(D.get_uneseni_mjesec()>get_trenutni_mjesec()||D.get_unesena_godina()>get_trenutna_godina()||D.get_unesena_godina()<get_trenutna_godina()){
- cout<<"Unijeli ste pogresan datum! Unesite datum ponovo\n";
- D.set_Datum();
- }
- }
- set_racun();
- }
- //Getteri
- int get_id(){
- return id;
- }
- float get_racun(){
- return racun;
- }
- int get_trenutni_mjesec(){//Vraca generisani mjesec na osnovnu lokalnog vremena
- return trenutni_mjesec;
- }
- int get_trenutna_godina(){
- return trenutna_godina;
- }
- private:
- int id;
- float racun;
- int trenutni_mjesec;
- int trenutna_godina;
- };
- void Elektroprivreda::set_racun(){
- int broj_mjeseci;//Broj mjeseci za koje korisnik treba da plati racun
- broj_mjeseci=get_trenutni_mjesec()-D.get_uneseni_mjesec();//Broj trenutnog mjeseca - broj unesenog mjeseca
- if(broj_mjeseci==0){//Ako je broj mjeseci==0, korisnik treba da plati racun samo za trenutni mjesec a ako ne uplacuje se iznos za svih n mjeseci
- cout<<"Unesite cijenu potrosene elektricne energije za "<<get_trenutni_mjesec()<<". mjesec: ";cin>>racun;
- }else{
- float suma=0;
- int mjesec_za_uplatu=D.get_uneseni_mjesec();
- for(int i=0;i<=broj_mjeseci;i++){
- cout<<"Unesite cijenu potrosene elektricne energije za "<<mjesec_za_uplatu<<" . mjesec: ";cin>>racun;
- suma=suma+racun;
- mjesec_za_uplatu++;
- }
- racun=suma;
- }
- }
- //Menu i prikaz trenutnog vremena
- void prikazi_trenutno_vrijeme_i_datum(){
- auto trenutno_vrijeme=chrono::system_clock::to_time_t(chrono::system_clock::now());
- cout<<ctime(&trenutno_vrijeme)<<endl;
- }
- int menu(){
- int izbor;
- do{
- prikazi_trenutno_vrijeme_i_datum();
- cout.width(70);cout<<"--------------------------------------\n";
- cout.width(40);cout<<"\t\tMENU\n";
- cout.width(70);cout<<"--------------------------------------\n";
- cout.width(51);cout<<"1)Unesite potrosaca\n";
- cout.width(58);cout<<"2)Ispis unesenih potrosaca\n";
- cout.width(57);cout<<"3)Ispisi racun u datoteku\n";
- cout.width(64);cout<<"4)Ispisi broj unesenih korisnika\n";
- cout.width(38);cout<<"5)Kraj\n";
- cout<<"Unesite izbor: ";cin>>izbor;cin.clear();cin.ignore(10000,'\n');
- while(!cin){
- cout<<"Pogresan unos!\nUnesite izbor: ";
- cin.clear();cin.ignore(10000,'\n');
- cin>>izbor;
- }
- return izbor;
- system("pause");
- system("cls");
- }while(1);
- }
- //Unos sadrzaja u datoteku
- void povjera_generisanog_ida(Elektroprivreda *E);
- void prva_opcija(Elektroprivreda *E){
- E->O.broj_unesenih_osoba++;
- ofstream unos("racuni.txt",ios::app);
- E->set_id();
- povjera_generisanog_ida(E);//Provjera generisanog ID-a
- E->set_Data();//Unos podataka
- //Unos podatakau datoteku racuni.txt
- unos<<"ID: "<<E->get_id()<<endl;
- unos<<"Ime: "<<E->O.get_imeprezime()<<endl;
- unos<<"Prebivaliste: "<<E->O.get_prebivaliste()<<endl;
- unos<<"Datum: "<<E->D.get_date()<<endl;
- unos<<"Racun: "<<E->get_racun()<<endl;
- unos.close();
- system("pause");
- system("cls");
- }
- void povjera_generisanog_ida(Elektroprivreda *E){
- ifstream provjera("racuni.txt");
- string rijec=" ";
- while(provjera>>rijec){
- if(rijec=="ID:"){
- provjera>>rijec;//Ako je rijec == ID: , prebaci na sljedecu rijec, a sljedeca rijec je generisani ID
- if(to_string(E->get_id())==rijec){
- do{ //Sve dok je generisani ID jednak nekom od prethodno generisanih ID-ova, generise se novi ID
- E->set_id();
- }while(to_string(E->get_id())==rijec);
- }
- }
- }
- }
- //Ispis sadrzaja koji je unesen u datoteku
- void druga_opcija(){
- ifstream ispis("racuni.txt");
- string rijec=" ";
- string line;
- cout<<" ID"<<setw(20)<<"IME I PREZIME "<<setw(20)<<"PREBIVALISTE"<<setw(20)<<"DATUM"<<setw(18)<<"CIJENA"<<endl;
- while(ispis>>rijec){
- if(rijec=="ID:"){//Ako je rijec == ID: , ispisi citav red , nakon prelaska u novi red break!
- while(getline(ispis,line)){
- cout<<" "<<line<<setw(20);
- break;
- }
- }
- if(rijec=="Ime:"){//Ako je rijec == Ime: , ispisi citav red , nakon prelaska u novi red break!
- while(getline(ispis,line)){
- cout<<line<<setw(25);
- break;
- }
- }
- if(rijec=="Prebivaliste:"){
- while(getline(ispis,line)){
- cout<<line<<setw(18);
- break;
- }
- }
- if(rijec=="Datum:"){
- while(getline(ispis,line)){
- cout<<line<<setw(15);
- break;
- }
- }
- if(rijec=="Racun:"){
- while(getline(ispis,line)){
- cout<<line<<"KM"<<endl;
- break;
- }
- }
- }
- system("pause");
- system("cls");
- }
- //Ispis racuna u datoteku
- void ispisi_id_i_imena_potrosaca();
- string provjera_unosa_ida(string uneseni_id);
- void izbor_tri(){
- ifstream sadrzaj("racuni.txt");
- string pretraga;
- ispisi_id_i_imena_potrosaca();//Ispis trenutnih osoba koje su unesene u datoteku
- cout<<"Unesite ID za ispis racuna u datoteku: ";getline(cin,pretraga);
- pretraga=provjera_unosa_ida(pretraga);//Dodijeljuje se validan id za kreiranje datoteke u kojoj ce biti podaci o racunu kojeg korisnik treba da uplati
- string line;
- string rijec=" ";
- string txt=".txt";
- while(sadrzaj>>rijec){
- if(rijec=="ID:"){
- sadrzaj>>rijec;
- if(rijec.compare(pretraga)==0){
- string kreiraj_racun=pretraga+txt;
- ofstream unesi(kreiraj_racun);
- unesi<<"---------------------------------------------------\n";
- unesi<<"\t\tElektroprivreda d.o.o\n";
- unesi<<"---------------------------------------------------\n";
- while(rijec!="Ime:"){
- sadrzaj>>rijec;
- }
- if(rijec=="Ime:"){
- while(getline(sadrzaj,line)){
- unesi<<"Ime i prezime: "<<line<<endl;
- break;
- }
- }
- while(rijec!="Prebivaliste:"){
- sadrzaj>>rijec;
- }
- if(rijec=="Prebivaliste:"){
- while(getline(sadrzaj,line)){
- unesi<<"Adresa: "<<line<<endl;
- break;
- }
- }
- while(rijec!="Racun:"){
- sadrzaj>>rijec;
- }
- if(rijec=="Racun:"){
- while(getline(sadrzaj,line)){
- unesi<<"IZNOS: "<<line<<" KM"<<endl;
- break;
- }
- }
- unesi<<"---------------------------------------------------\n";
- unesi<<endl;
- unesi<<" Pecat ovlastenog lica:________________\n";
- unesi<<endl;
- unesi<<"---------------------------------------------------\n";
- }
- }
- }
- cout<<"Racun je sacuvan u datoteci "<<pretraga+txt<<endl;
- system("pause");
- system("cls");
- }
- //Pomocna funkcija za izbor_tri
- void ispisi_id_i_imena_potrosaca(){
- ifstream ispis("racuni.txt");
- string line;
- string rijec=" ";
- cout<<"Imena potrosaca\n";
- cout<<" ID\t IME I PREZIME\n";
- while(ispis>>rijec){
- if(rijec=="ID:"){
- while(getline(ispis,line)){
- cout<<line<<setw(20);
- break;
- }
- }
- if(rijec=="Ime:"){
- while(getline(ispis,line)){
- cout<<line<<endl;
- break;
- }
- }
- }
- ispis.close();
- }
- //Pomocna funkcija za izbor 3, ako se unese nepostojeci id, korisnika se vraca na ponovni unos ida
- string provjera_unosa_ida(string uneseni_id){
- ifstream provjeri("racuni.txt");
- string rijec=" ";
- while(provjeri>>rijec){
- if(rijec=="ID:"){
- provjeri>>rijec;
- if(uneseni_id.compare(rijec)!=0){
- }else{
- return uneseni_id;
- break;
- }
- }
- }
- provjeri.close();
- }
- int main(){
- int izbor;
- Elektroprivreda *E=new Elektroprivreda;
- do{
- izbor=menu();
- if(izbor<1||izbor>4){
- break;
- }
- if(izbor==1){
- prva_opcija(E);
- }
- if(izbor==2){
- druga_opcija();
- }
- if(izbor==3){
- izbor_tri();
- }
- if(izbor==4){
- if(E->O.broj_unesenih_osoba==0){
- cout<<"Niste unijeli niti jednog potrosaca! Odaberite opciju 1 za unos\n";
- system("pause");
- system("cls");
- }else{
- cout<<"Ukupno je uneseno "<<E->O.broj_unesenih_osoba<<" potrosaca"<<endl;
- system("pause");
- system("cls");
- }
- }
- }while(1);
- return 0;
- }
Add Comment
Please, Sign In to add comment