Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- char * crt = "\n---------------------------\n";
- struct Datum {
- int dan, mjesec, godina;
- };
- struct PolozeniPredmet {
- char * nazivPredmeta;
- int ocjena;
- Datum datumPolaganja;
- char * napomena;
- };
- struct Student {
- char * imePrezime;
- PolozeniPredmet polozeni[40];
- int brojPolozenih;
- };
- int PrikaziMenu()
- {
- int izbor;
- cout << "1. Dodaj studenta" << endl;
- cout << "2. Dodaj polozeni predmet" << endl;
- cout << "3. Pretraga" << endl;
- cout << "4. Kraj" << endl;
- do {
- cout << "Vas izbor -> ";
- cin >> izbor;
- } while (izbor < 1 || izbor>4);
- return izbor;
- }
- void Unesi(char niz[], int velicina) {
- char znak = getchar();
- if (znak == '\n') znak = getchar();
- int i = 0;
- while (i < velicina - 1 && znak != '\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i] = '\0';
- }
- void DodajStudenta(Student *& pok)
- {
- pok = new Student;
- cout << "Unesite ime i prezime: ";
- char* s = new char[40];
- Unesi(s, 40);
- pok->imePrezime = s;
- pok->brojPolozenih = 0;
- cout << "Koliko predmeta dodajete: ";
- int br_pr; cin >> br_pr;
- for (int j = 0; j < br_pr; j++) {
- cout << "Naziv predmeta: ";
- char *pr = new char[40];
- Unesi(pr, 40);
- pok->polozeni[pok->brojPolozenih].nazivPredmeta = pr;
- cout << "Datum polaganja: ";
- int m, d, g;
- cin >> d >> m >> g;
- pok->polozeni[pok->brojPolozenih].datumPolaganja.dan = d;
- pok->polozeni[pok->brojPolozenih].datumPolaganja.mjesec = m;
- pok->polozeni[pok->brojPolozenih].datumPolaganja.godina = g;
- cout << "Ocjena: ";
- int ocjena; cin >> ocjena;
- pok->polozeni[pok->brojPolozenih].ocjena = ocjena;
- cout << "Napomena: ";
- char * napomena = new char[255];
- Unesi(napomena, 255);
- pok->polozeni[pok->brojPolozenih].napomena = napomena;
- pok->brojPolozenih = pok->brojPolozenih + 1;
- }
- }
- void Login(char sifra[])
- {
- char unesena_sifra[20];
- cout << "Unesite sifru: ";
- while (1) {
- Unesi(unesena_sifra, 20);
- if (strcmp(unesena_sifra, sifra) == 0) break;
- else cout << "Pogresna sifra, unesite ponovo: ";
- }
- }
- void Novipredmet(Student * student)
- {
- int i = student->brojPolozenih;
- if (i == 40) cout << "Student " << student->imePrezime << " ima maksimalan broj polozenih predmeta!";
- else
- {
- cout << "Naziv predmeta -> ";
- char *pr = new char[40];
- Unesi(pr, 40);
- student->polozeni[student->brojPolozenih].nazivPredmeta = pr;
- cout << "Datum polaganja -> ";
- int m, d, g;
- cin >> d >> m >> g;
- student->polozeni[student->brojPolozenih].datumPolaganja.dan = d;
- student->polozeni[student->brojPolozenih].datumPolaganja.mjesec = m;
- student->polozeni[student->brojPolozenih].datumPolaganja.godina = g;
- cout << "Ocjena -> ";
- int ocjena; cin >> ocjena;
- student->polozeni[student->brojPolozenih].ocjena = ocjena;
- cout << "Napomena -> ";
- char * napomena = new char[255];
- Unesi(napomena, 255);
- student->polozeni[student->brojPolozenih].napomena = napomena;
- student->brojPolozenih = student->brojPolozenih + 1;
- }
- }
- void DodajPolozeniPredmet(Student ** studentiIgodina, int trenutnoStudenata)
- {
- char * student = new char[50];
- cout << "Ime i Prezime -> ";
- Unesi(student, 50);
- for (int i = 0; i < trenutnoStudenata; i++)
- if (strstr(studentiIgodina[i]->imePrezime, student))
- {
- cout << "STUDENT PRONADJEN...." << endl;
- Novipredmet(studentiIgodina[i]);
- delete[] student;
- return;
- }
- delete[] student;
- cout << "STUDENT NIJE PRONADJEN....";
- }
- bool jelizmedju(Datum datumod, Datum datumdo, Datum studenta)
- {
- if (datumod.godina < studenta.godina && studenta.godina < datumdo.godina)
- return true;
- else if (datumod.godina == studenta.godina && studenta.godina == datumdo.godina)
- {
- if (datumod.mjesec < studenta.mjesec && studenta.mjesec < datumdo.mjesec)
- return true;
- else if (datumod.mjesec == studenta.mjesec && studenta.mjesec == datumdo.mjesec)
- {
- if (datumod.dan <= studenta.dan && studenta.dan <= datumdo.dan)
- return true;
- }
- }
- return false;
- }
- double prosjek(Student *pok)
- {
- double suma = 0;
- for (int i = 0; i<pok->brojPolozenih; i++)
- {
- suma += pok->polozeni[i].ocjena;
- }
- return suma / pok->brojPolozenih;
- }
- void IspisiPretragu(Student* pok, int i, int j)
- {
- cout << i << ". " << pok->imePrezime << " -> " << pok->polozeni[j].nazivPredmeta << " Prosjek studenta: " << prosjek(pok) << endl;
- }
- void IspisiPretragu2(Student * pok, int i, int j)
- {
- cout << i << ". " << pok->imePrezime << " -> " << pok->polozeni[j].nazivPredmeta << endl;
- }
- void Pretraga(Student ** studenti, int trenutnoStudenata)
- {
- cout << "Pretraga: 1 = Datumu polaganja, 2 = Napomena: ";
- int izbor;
- do {
- cin >> izbor;
- } while (izbor != 1 && izbor != 2);
- if (izbor == 1)
- {
- Datum OD, DO;
- cout << "Unesite datum OD: ";
- cin >> OD.dan >> OD.mjesec >> OD.godina;
- cout << "Unesite datum DO: ";
- cin >> DO.dan >> DO.mjesec >> DO.godina;
- int k = 1;
- cout << "U periodu od" << OD.dan << "." << OD.mjesec << "." << OD.godina << " do " << DO.dan << "." << DO.mjesec << "." << DO.godina << " ispite su polozili sljedeci studenti" << endl;
- for (int i = 0; i < trenutnoStudenata; i++)
- {
- for (int j = 0; j < studenti[i]->brojPolozenih; j++)
- {
- if (jelizmedju(OD, DO, studenti[i]->polozeni[j].datumPolaganja))
- {
- IspisiPretragu(studenti[i], k, j);
- k++;
- }
- }
- }
- }
- else if (izbor == 2) {
- cout << "Unesite tekst: ";
- char *s = new char[255];
- Unesi(s, 255);
- int k = 1;
- cout << "Trazeni sadrzaj" << s << "u napomeni posjeduju sljedeci studenti : \n";
- for (int i = 0; i < trenutnoStudenata; i++)
- {
- for (int j = 0; j < studenti[i]->brojPolozenih; j++)
- {
- if (strstr(studenti[i]->polozeni[j].napomena, s))
- {
- IspisiPretragu2(studenti[i], k, j);
- k++;
- }
- }
- }
- delete[] s;
- }
- }
- void Dealociraj(Student ** studentiIgodina, int trenutnoStudenata)
- {
- for (int i = 0; i < trenutnoStudenata; i++)
- {
- for (int j = 0; j < studentiIgodina[i]->brojPolozenih; j++)
- {
- delete[] studentiIgodina[i]->polozeni[j].nazivPredmeta;
- delete[] studentiIgodina[i]->polozeni[j].napomena;
- }
- delete[] studentiIgodina[i]->imePrezime;
- delete studentiIgodina[i];
- }
- }
- int 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 koristeći crticu (-)
- */
- Login(validPass);
- izbor = PrikaziMenu();
- if (izbor == 1) {
- DodajStudenta(studentiIgodina[trenutnoStudenata]);
- /*
- Ime i prezime -> Denis Mušić
- 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. ....
- */
- }
- } while (izbor != 4);
- /*oslobađa zauzetu memoriju*/
- Dealociraj(studentiIgodina, trenutnoStudenata);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement