Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<conio.h>
- using namespace std;
- const char * crt = "\n---------------------------\n";
- struct Datum
- {
- int dan, mjesec, godina;
- void unos()
- {
- cout << "Unesite dd/mm/gg" << endl;
- cin >> dan >> mjesec >> godina;
- cin.ignore();
- }
- void ispis()
- {
- cout << dan << "/" << mjesec << "/" << godina;
- }
- bool poredjenje(Datum OD, Datum DO)
- {
- if (godina > OD.godina && godina < DO.godina)
- {
- return true;
- }
- else
- if (godina == OD.godina || godina == DO.godina)
- {
- if (mjesec > OD.mjesec && mjesec < DO.mjesec)
- {
- return true;
- }
- else
- if (mjesec == OD.mjesec || mjesec == DO.mjesec)
- {
- if (dan > OD.dan && dan < DO.dan)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- return false;
- }
- };
- struct PolozeniPredmet
- {
- char * nazivPredmeta;
- int ocjena;
- Datum datumPolaganja;
- char * napomena;
- void Dealociraj()
- {
- delete[]nazivPredmeta; nazivPredmeta = nullptr;
- delete[]napomena; napomena = nullptr;
- }
- };
- struct Student
- {
- char * imePrezime;
- PolozeniPredmet polozeni[40];
- int brojPolozenih;
- };
- int PrikaziMenu()
- {
- int izbor;
- cout << crt << "\t::MENU::" << crt;
- cout << "1. Dodaj studenta" << endl;
- cout << "2. Dodaj polozeni predmet" << endl;
- cout << "3. Pretraga" << endl;
- cout << "4. Kraj" << crt;
- do {
- cout << "Vas izbor -> ";
- cin >> izbor;
- cin.ignore();
- } while (izbor < 1 || izbor>4);
- system("cls");
- return izbor;
- }
- /*UKOLIKO SMATRATE DA JE POTREBNO ZADATAK MOZETE PROSIRITI DODATNIM FUNKCIONALNOSTIMA, ALI PROSIRENJA MORAJU PRATITI ADEKVATNI KOMENTARI*/
- void Login(const char *password)
- {
- char *temp, znak=0;
- int i = 0;
- temp = new char[strlen(password) + 1];
- do
- {
- while (znak != 13)
- {
- znak = _getch();
- cout << "-";
- temp[i++] = znak;
- }
- temp[i - 1] = 0;
- if (strcmp(password, temp) == 0)
- {
- cout << "Uspjesan login" << endl;
- return;
- }
- else
- {
- cout << "Neispravan password, pokusajte ponovo" << endl;
- i = 0;
- znak=0;
- }
- } while (temp != password);
- }
- void DodajStudenta(Student *&s)
- {
- s = new Student;
- char temp[200];
- int brPredmeta;
- cout << "Unesite ime i prezime" << endl;
- cin.getline(temp, 200);
- s->imePrezime = new char[strlen(temp) + 1];
- strcpy_s(s->imePrezime, strlen(temp) + 1, temp);
- cout << "Koliko predmeta dodajete ?" << endl;
- cin >> brPredmeta;
- cin.ignore();
- s->brojPolozenih=brPredmeta;
- for (int i = 0; i < brPredmeta; i++)
- {
- cout << "Unesite naziv "<<i+1<<". predmeta" << endl;
- cin.getline(temp, 200);
- s->polozeni[i].nazivPredmeta = new char[strlen(temp) + 1];
- strcpy_s(s->polozeni[i].nazivPredmeta, strlen(temp) + 1, temp);
- cout << "Unesite datum polaganja" << endl;
- s->polozeni[i].datumPolaganja.unos();
- cout << "Unesite ocjenu" << endl;
- cin >> s->polozeni[i].ocjena;
- cin.ignore();
- cout << "Unesite napomenu" << endl;
- cin.getline(temp, 200);
- s->polozeni[i].napomena = new char[strlen(temp) + 1];
- strcpy_s(s->polozeni[i].napomena, strlen(temp) + 1, temp);
- }
- }
- void DodajPolozeniPredmet(Student **s, int trenutnoS)
- {
- char temp[100];
- int indeks = -1;
- bool nadjen = false;
- cout << "Unesite ime i prezime studenta kome zelite dodati polozeni predmet" << endl;
- cin.getline(temp, 100);
- for (int i = 0; i < trenutnoS; i++)
- {
- if (strcmp(s[i]->imePrezime, temp) == 0)
- {
- cout << "STUDENT PRONADJEN..." << endl;
- indeks = i;
- break;
- }
- }
- if (indeks != -1)
- {
- cout << "Unesite naziv predmeta kojeg zelite dodati" << endl;
- cin.getline(temp, 100);
- int brPolozenih = s[indeks]->brojPolozenih;
- s[indeks]->polozeni[brPolozenih].nazivPredmeta = new char[strlen(temp) + 1];
- strcpy_s(s[indeks]->polozeni[brPolozenih].nazivPredmeta, strlen(temp) + 1, temp);
- cout << "Unesite datum polaganja" << endl;
- s[indeks]->polozeni[brPolozenih].datumPolaganja.unos();
- cout << "Unesite ocjenu" << endl;
- cin >> s[indeks]->polozeni[brPolozenih].ocjena;
- cin.ignore();
- cout << "Unesite napomenu" << endl;
- cin.getline(temp, 100);
- s[indeks]->polozeni[brPolozenih].napomena = new char[strlen(temp) + 1];
- strcpy_s(s[indeks]->polozeni[brPolozenih].napomena, strlen(temp) + 1, temp);
- s[indeks]->brojPolozenih++;
- }
- else
- cout << "Ne postoji student sa tim imenom" << endl;
- }
- void Pretraga(Student **s, int trenutnoS)
- {
- Datum OD, DO;
- int izbor;
- bool nadjenDatum = false, nadjenaNapomena = false;
- do
- {
- cout << "Unesite (1) za pretragu po datumu, (2) za po napomeni" << endl;
- cin >> izbor;
- cin.ignore();
- } while (izbor != 1 && izbor != 2);
- if (izbor == 1)
- {
- cout << "Unesite datum OD ->" << endl;
- OD.unos();
- cout << "Unesite datum DO ->" << endl;
- DO.unos();
- cout << "U periodu od ";
- OD.ispis();
- cout << " do ";
- DO.ispis();
- cout << " ispit su polozili sljedeci studenti:" << endl;
- for (int i = 0; i < trenutnoS; i++)
- {
- for (int j = 0; j < s[i]->brojPolozenih; j++)
- {
- if (s[i]->polozeni[j].datumPolaganja.poredjenje(OD, DO))
- {
- cout << s[i]->imePrezime << "->" << s[i]->polozeni[j].nazivPredmeta << "(" << s[i]->polozeni[j].ocjena << ")" << endl;
- nadjenDatum = true;
- }
- }
- }
- if (nadjenDatum == false)
- cout << "Niko od studenata nije polozio u tom periodu" << endl;
- }
- else if (izbor == 2)
- {
- char temp[200];
- cout << "Unesite tekst za pretragu" << endl;
- cin.getline(temp, 200);
- cout << "Trazeni sadrzaj " << temp << " u napomeni posjeduju sljedeci studenti: " << endl;
- for (int i = 0; i < trenutnoS; i++)
- {
- for (int j = 0; j < s[i]->brojPolozenih; j++)
- {
- if (strstr(s[i]->polozeni[j].napomena, temp)!=nullptr)
- {
- cout << s[i]->imePrezime << " -> " << s[i]->polozeni[j].nazivPredmeta << endl;
- nadjenaNapomena = true;
- }
- }
- }
- if (nadjenaNapomena == false)
- cout << "Trazeni sadrzaj ne postoji" << endl;
- }
- }
- void Dealociraj(Student **s, int trenutnoS)
- {
- for (int i = 0; i < trenutnoS; i++)
- {
- delete[] s[i]->imePrezime; s[i]->imePrezime = nullptr;
- for (int j = 0; j < s[i]->brojPolozenih; j++)
- {
- s[i]->polozeni[j].Dealociraj();
- }
- }
- }
- void main()
- {
- const int maxStudenata = 6;
- int trenutnoStudenata = 0, izbor = 0;
- Student * studentiIgodina[maxStudenata];
- char validPass[] = "ispitPRII2017";
- /*VRSITI VALIDACIJU KORISNIKOVIH UNOSA TE GA ONEMOGUCITI DA UNOSI VRIJEDNOSTI KOJE NISU VALIDNE*/
- do {
- /*
- za pristup aplikaciji zahtijevati logiranje,
- prilikom unosa password maskirati koristeci crticu (-)
- */
- cout << "Unesite password za pristup aplikaciji" << endl;
- Login(validPass);
- izbor = PrikaziMenu();
- if (izbor == 1) {
- DodajStudenta(studentiIgodina[trenutnoStudenata]);
- /*
- Ime i prezime -> Denis Mušic
- Koliko predmeta dodajete -> 1
- Naziv predmeta -> Uvod u informacijske tehnologije
- Datum polaganja -> 11 4 2017
- Ocjena -> 6
- Napomena -> seminarski rad nije sadrzavao sve zahtijevane funkcionalnosti
- */
- trenutnoStudenata++;
- }
- else if (izbor == 2) {
- DodajPolozeniPredmet(studentiIgodina, trenutnoStudenata);
- /*
- Ime i prezime -> Denis Music
- STUDENT PRONADJEN....
- Naziv predmeta -> Racunarske mreze
- Datum polaganja -> 10 4 2017
- Ocjena -> 7
- Napomena -> studentu dodijeljen seminarski rad na temu OSI modela
- */
- }
- else if (izbor == 3) {
- Pretraga(studentiIgodina, trenutnoStudenata);
- /*
- Pratraga (1. Datumu polaganja, 2. Napomeni) -> 1
- Unesite datum OD -> 12 1 2017
- Unesite datum DO -> 14 4 2017
- U periodu od 12.1.2017 do 14.4.2017 ispite su polozili sljedeci studenti:
- 1. Denis Music -> Racunarske mreze (7) Prosjek studenta: 6.5
- 2. Denis Music -> Uvod u informacijske tehnologije (6) Prosjek studenta: 6.5
- 3. Adel Handzic -> Baze podataka (9) Prosjek studenta: 8.7
- ----------UKOLIKO SE ODABERE OPCIJA 2---------------
- Pratraga (1. Datumu polaganja, 2. Napomeni) -> 2
- Unesite tekst -> nije sadrzavao
- Trazeni sadrzaj 'nije sadrzavao' u napomeni posjeduju sljedeci studenti:
- 1. Denis Music, predmet Uvod u informacijske tehnologije
- 2. ....
- */
- }
- else if (izbor == 4)
- return;
- } while (izbor != 4);
- /*oslobada zauzetu memoriju*/
- Dealociraj(studentiIgodina, trenutnoStudenata);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement