Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char * crt = "\n========================================\n";
- enum NacinStudiranja{ REDOVAN, DL };
- enum GodinaStudija{ prva = 1, druga, treca, cetvrta };
- enum Odgovori{ TACNO, NETACNO };
- int brojPitanja = 0;
- int brIndexa = 1;
- int brojAdmina = 0,brojStudenata=0;
- struct Student{
- int _brojIndeksa;
- char _imePrezime[30];
- char* korisnickoIme;
- char* password;
- bool _radioTest;
- NacinStudiranja _nacin;
- GodinaStudija _godina;
- Odgovori *_odgovori;
- };
- void registrujStudenta(Student* baza)
- {
- if (baza == nullptr)
- {
- char ime[15];
- char prezime[15];
- baza = new Student[brojStudenata + 1];
- cout << "Unesite ime studenta: ";
- cin.ignore();
- cin.getline(ime, 15);
- cout << "Unesite prezime studenta: ";
- cin.getline(prezime, 15);
- char sifra[15];
- char znak;
- int brojac = 0;
- cout << "Unesite zeljenu sifru: ";
- do
- {
- znak = _getch();
- if ((int)znak == 13)
- {
- break;
- }
- sifra[brojac] = znak;
- brojac++;
- cout << "*";
- } while (brojac < 30);
- sifra[brojac] = '\0';
- strcpy_s(baza[brojStudenata]._imePrezime, strlen(ime)+strlen(" ")+strlen(prezime) + 1, ime);
- strcat_s(baza[brojStudenata]._imePrezime, strlen(ime) + strlen(" ") + strlen(prezime) + 1, " ");
- strcat_s(baza[brojStudenata]._imePrezime, strlen(ime) + strlen(" ") + strlen(prezime) + 1, prezime);
- baza[brojStudenata].password = new char[strlen(sifra) + 1];
- strcpy_s(baza[brojStudenata].password, strlen(sifra) + 1, sifra);
- cout << endl;
- }
- }
- struct Admin{
- char * imePrezime;
- char * username;
- char * password;
- char ** pitanja=nullptr;
- Odgovori * odgovoriAdmin;
- void unos()
- {
- char tempIme[15];
- char tempPrezime[15];
- cout << "Unesite ime administratora: ";
- cin.ignore();
- cin.getline(tempIme, 15);
- cout << "Unesite prezime administratora: ";
- cin.getline(tempPrezime, 15);
- imePrezime = new char[strlen(tempIme) + strlen(tempPrezime) + 2];
- strcpy_s(imePrezime, strlen(tempIme) + strlen(tempPrezime) + 2, tempIme);
- strcat_s(imePrezime, strlen(tempIme) + strlen(tempPrezime) + 2, " ");
- strcat_s(imePrezime, strlen(tempIme) + strlen(tempPrezime) + 2, tempPrezime);
- username = new char[strlen("admin") + strlen(".") + strlen(tempIme) + 1];
- strcpy_s(username, strlen(tempIme) + strlen(tempPrezime) + strlen(".") + 1, tempIme);
- strcat_s(username, strlen(tempIme) + strlen(tempPrezime) + strlen(".") + 1, ".");
- strcat_s(username, strlen(tempIme) + strlen(tempPrezime) + strlen(".") + 1, tempPrezime);
- char sifra[15];
- char znak;
- int brojac = 0;
- cout << "Unesite zeljenu sifru: ";
- do
- {
- znak = _getch();
- if ((int)znak == 13)
- {
- break;
- }
- sifra[brojac] = znak;
- brojac++;
- cout << "*";
- } while (brojac < 30);
- sifra[brojac] = '\0';
- password = new char[strlen(sifra) + 1];
- strcpy_s(password, strlen(sifra) + 1, sifra);
- cout << endl;
- }
- bool addPitanje(){
- char temp[300];
- bool uspjeh = false;
- int tempOdg;
- cin.ignore();
- if (pitanja == nullptr)
- {
- ofstream pitanjaFile("Pitanja.txt");
- ofstream odgovoriFile("Odgovori.txt");
- pitanja = new char*[brojPitanja + 1];
- odgovoriAdmin = new Odgovori[brojPitanja + 1];
- cout << "Unesite pitanje koje zelite: " << endl;
- cin.getline(temp, 300);
- pitanja[brojPitanja] = new char[strlen(temp) + 1];
- strcpy_s(pitanja[brojPitanja], strlen(temp) + 1, temp);
- cout << "Unesite odgovor (1-DA/2-NE): ";
- do
- {
- cin >> tempOdg;
- cin.ignore();
- } while (tempOdg<1 || tempOdg>2);
- tempOdg--;
- odgovoriAdmin[brojPitanja] = (Odgovori)tempOdg;
- if (pitanjaFile.is_open() && odgovoriFile.is_open()){
- pitanjaFile << pitanja[brojPitanja] << endl;
- odgovoriFile <<odgovoriAdmin[brojPitanja] << endl;
- pitanjaFile.close();
- odgovoriFile.close();
- uspjeh = true;
- brojPitanja++;
- return uspjeh;
- }
- else {
- cout << "Doslo je do greske pri otvaranju jednog od potrebnih fileova" << endl;
- return false;
- }
- }
- ifstream pitanjaUlaz("Pitanja.txt");
- ifstream odgovoriUlaz("Odgovori.txt");
- char **tempPitanja=nullptr;
- tempPitanja = new char*[brojPitanja + 1];
- char * tempOdogovori = new char[brojPitanja + 1];
- if (pitanjaUlaz.is_open() && odgovoriUlaz.is_open()){
- cout << "Prethodna pitanja su: " << endl;
- for (int i = 0; i < brojPitanja; i++)
- {
- while (pitanjaUlaz.getline(temp, 300)){
- cout << temp << endl;
- }
- tempPitanja[i] = new char[strlen(temp + 1)];
- strcpy_s(tempPitanja[i], strlen(temp) + 1, temp);
- odgovoriUlaz >> tempOdogovori[i];
- }
- pitanjaUlaz.close();
- odgovoriUlaz.close();
- }
- else{ cout << "Doslo je do greske pri otvaranju file" << endl;
- return uspjeh;
- }
- cout << "Unesite pitanje koje zelite: " << endl;
- cin.getline(temp, 300);
- tempPitanja[brojPitanja] = new char[strlen(temp) + 1];
- strcpy_s(tempPitanja[brojPitanja], strlen(temp) + 1, temp);
- cout << "Unesite odgovor (1-DA/2-NE): ";
- do
- {
- cin >> tempOdg;
- cin.ignore();
- } while (tempOdg<1 || tempOdg>2);
- tempOdg --;
- tempOdogovori[brojPitanja] = (Odgovori)tempOdg;
- brojPitanja++;
- ofstream pitanjaFile("Pitanja.txt", ios::app);
- ofstream odgovoriFile("Odgovori.txt", ios::app);
- for (int i = 0; i < brojPitanja; i++)
- {
- pitanjaFile << tempPitanja[i]<<endl;
- odgovoriFile <<tempOdogovori[i]<<endl;
- };
- uspjeh = true;
- return uspjeh;
- }
- };
- void PrikaziPitanje(int rbPitanja, Admin neko){
- cout << crt << neko.pitanja[rbPitanja - 1] << crt;
- }
- Odgovori GetTacanOdgovor(int rbPitanja,Admin neko){
- return neko.odgovoriAdmin[rbPitanja - 1];
- }
- int GetUspjehStudenta(Odgovori odgovori[],Admin neko){
- int brojacTacnih = 0;
- for (int i = 0; i<brojPitanja; i++)
- if (odgovori[i] == GetTacanOdgovor(i + 1,neko))
- brojacTacnih++;
- return brojacTacnih;
- }
- void PokreniTest(Student & student, Admin neko){
- int unos;
- Odgovori temp;
- for (int i = 0; i<brojPitanja; i++){
- do{
- PrikaziPitanje(i + 1, neko);
- cout << "Odgovor (1.Tacno,2.Netacno): ";
- cin >> unos;
- cin.ignore();
- unos--;
- temp = (Odgovori)unos;
- } while (temp != TACNO && temp != NETACNO);
- student._odgovori[i] = temp;
- }
- student._radioTest = true;
- }
- void UnosPodataka(Student * niz, int max){
- int unos;
- for (int i = 0; i<max; i++){
- cout << crt << "\t::STUDENT " << i + 1 << "::" << crt;
- cout << "Unesite ime i prezime: ";
- cin.getline(niz[i]._imePrezime, 30);
- cout << "Unesite broj indeksa: ";
- cin >> niz[i]._brojIndeksa;
- cout << "Nacin studiranja (1.Redovan, 2.DL): ";
- cin >> unos;
- niz[i]._nacin = (NacinStudiranja)--unos;
- cout << "Nacin godinu studija (1,2,3,4): ";
- cin >> unos;
- niz[i]._godina = (GodinaStudija)--unos;
- niz[i]._radioTest = false;//tek smo kreirali studenta
- //tako da je sigurno da test nije radjen
- }
- }
- void Pretraga(Student * niz, int max,Admin neko){
- int izbor = 0;
- cout << "Izaberite nacin pretrage: " << endl;
- cout << "1. Godina studija" << endl;
- cout << "2. Nacin studiranja" << endl;
- cout << "3. Rezultatu ostvarenom na testu" << endl;
- do{
- cin >> izbor;
- } while (izbor<1 || izbor >3);
- system("cls");
- switch (izbor)
- {
- case 1: {
- cout << "Unesite zeljenu godinu studija(1/2/3): ";
- do{
- cin >> izbor;
- system("cls");
- } while (izbor<1 || izbor >3);
- for (int i = 0; i < max; i++)
- {
- if (niz[i]._godina == (GodinaStudija)izbor)
- {
- cout << niz[i]._brojIndeksa << " " << niz[i]._imePrezime << endl;
- cout << "Godina studija: " << niz[i]._godina;
- cout << "Nacin studiranja: ";
- if (niz[i]._nacin == 0)
- cout << "RREDOVAN" << endl;
- else cout << "DL" << endl;
- cout << "Radio test: ";
- if (niz[i]._radioTest)
- cout << " DA" << endl;
- else cout << "NE" << endl;
- cout << endl;
- }
- }
- }
- case 2:{
- cout << "Unesite zeljeni nacin studiranja(1-REDOVAN/2-DL): ";
- do{
- cin >> izbor;
- system("cls");
- } while (izbor<1 || izbor >2);
- izbor -= 1;
- for (int i = 0; i < max; i++)
- {
- if (niz[i]._nacin == (GodinaStudija)izbor)
- {
- cout << niz[i]._brojIndeksa << " " << niz[i]._imePrezime << endl;
- cout << "Godina studija: " << niz[i]._godina;
- cout << "Nacin studiranja: ";
- if (niz[i]._nacin == 0)
- cout << "RREDOVAN" << endl;
- else cout << "DL" << endl;
- cout << "Radio test: ";
- if (niz[i]._radioTest)
- cout << " DA" << endl;
- else cout << "NE" << endl;
- cout << endl;
- }
- }
- }
- case 3:{
- cout << "Unesite zeljeni uspjeh: ";
- do{
- cin >> izbor;
- system("cls");
- } while (izbor<1 || izbor >3);
- cout << "Studenti na trazenoj godini su: " << endl;
- cout << endl;
- for (int i = 0; i < max; i++)
- {
- if ((float)(GetUspjehStudenta(niz[i]._odgovori,neko) / 5) * 100 >=(float)izbor && niz[i]._radioTest)
- {
- cout << niz[i]._brojIndeksa << " " << niz[i]._imePrezime << endl;
- cout << "Godina studija: " << niz[i]._godina;
- cout << "Nacin studiranja: ";
- if (niz[i]._nacin == 0)
- cout << "RREDOVAN" << endl;
- else cout << "DL" << endl;
- cout << "Radio test: ";
- cout << " DA" << endl;
- cout << endl;
- }
- }
- }
- }
- //definisati funkciju(e) koja(e) ce omoguciti pretragu po:
- //1. godini studija
- //2. nacinu studiranja
- //3. rezultatima ostvarenim na testu
- //Nove funkcionalnosti dodati u funkciju PrikaziMeni
- }
- int PrikaziStudentMeni(){
- int izbor;
- do{
- cout << crt << "\t::MENI::" << crt;
- cout << "1. Pokreni test" << endl;
- cout << "2. Prikazi rezultat" << endl;
- cout << "4. Pretraga" << endl;
- cout << "5. Kraj rada" << crt;
- cout << "Unesite izbor: ";
- cin >> izbor;
- cin.ignore();
- system("cls");
- } while (izbor<1 || izbor>6);
- return izbor;
- }
- int PrikaziAdminMeni(){
- int izbor;
- do{
- cout << crt << "\t::MENI::" << crt;
- cout << "1. Pokreni test" << endl;
- cout << "2. Prikazi rezultate" << endl;
- cout << "3. Pretraga" << endl;
- cout << "4. Dodaj studenta" << endl;
- cout << "5. Dodaj pitanje" << endl;
- cout << "6. Dodaj admina" << endl;
- cout << "7. Ponisti test" << endl;
- cout << "8. Ukloni studenta" << endl;
- cout << "9. Ukloni pitanje" << endl;
- cout << "10. Kraj rada" << crt;
- cout << "Unesite izbor: ";
- cin >> izbor;
- system("cls");
- } while (izbor<1 || izbor>6);
- return izbor;
- }
- int PrikaziStudente(Student * niz, int max, int izbor){
- //pokusajte pojednostaviti definiciju funkcije, te smanjiti broj nepotrebnih //provjera
- int unos;
- bool postoji = false;
- for (int i = 0; i<max; i++){
- if (izbor == 1){
- if (niz[i]._radioTest == false){
- cout << i + 1 << ". " << niz[i]._imePrezime << endl;
- postoji = true;
- }
- }
- else
- {
- cout << i + 1 << ". " << niz[i]._imePrezime << endl;
- postoji = true;
- }
- }
- //dodati provjeru koja ce onemoguciti korisnika da unese redni
- //broj studenta koji ne zadovoljava kriterije - u zavisnosti od izbora
- //na taj nacin cemo biti u mogucnosti da izbacimo nepotrebne provjere
- //u main funkciji
- cout << crt << "Unesite redni broj studenta: ";
- cin >> unos;
- unos--;
- return unos;
- }
- int logInAdmin(Admin * baza, char * username,char * sifra)
- {
- for (int i = 0; i < brojAdmina; i++)
- {
- if (strcmp(baza[i].username, username) == 0 && strcmp(baza[i].password, sifra) == 0)
- return i;
- }
- return -1;
- }
- int logInStudent(Student * baza, char * username, char * sifra)
- {
- for (int i = 0; i < brojAdmina; i++)
- {
- if (strcmp(baza[i].korisnickoIme, username) == 0 && strcmp(baza[i].password, sifra) == 0)
- return i;
- }
- return 0;
- }
- void main()
- {
- Admin * bazaAdmina=nullptr;
- int trenutniAdmin = -1;
- Student * bazaStudenata=nullptr;
- int brojPokusaja = 0;
- int izborMod=0;
- do{
- izborMod =0;
- cout << "Zelite se logovati kao: " << endl << "1. Administrator" << endl << "2. Student" << endl;
- cout << "Unesite izbor: ";
- do{
- cin >> izborMod;
- } while (izborMod<1 || izborMod>2);
- system("cls");
- if (izborMod == 1)
- {
- if (brojAdmina == 0)
- {
- cout << "Posto se radi o prvom pokretanju, napravite admin account." << endl;
- cout << endl;
- bazaAdmina = new Admin[brojAdmina + 1];
- bazaAdmina[brojAdmina].unos();
- system("cls");
- cout << "Vas username je: " << bazaAdmina[brojAdmina].username << endl;
- cout << endl;
- brojAdmina++;
- }
- char tempUsername[30];
- char tempSifra[30];
- char znak;
- int brojac = 0;
- do {
- cout << "Unesite vas username: ";
- cin.getline(tempUsername, 30);
- cout << "Unesite vasu sifru: ";
- do
- {
- znak = _getch();
- if ((int)znak == 13)
- {
- break;
- }
- tempSifra[brojac] = znak;
- brojac++;
- cout << "*";
- } while (brojac < 30);
- tempSifra[brojac] = '\0';
- trenutniAdmin = logInAdmin(bazaAdmina, tempUsername, tempSifra);
- if (trenutniAdmin == -1)
- brojPokusaja++;
- else brojPokusaja = 0;
- cout << endl;
- } while (trenutniAdmin==(-1));
- do{
- izborMod = PrikaziAdminMeni();
- cin.ignore();
- switch (izborMod)
- {
- case 1: {
- if (bazaAdmina[trenutniAdmin].addPitanje())
- cout << "Uspjesno ste dodali pitanje." << endl;
- else cout << "Popravi" << endl;
- break;
- }
- case 10:{
- system("cls");
- cout << "Ugodan dan" << endl;
- break;
- }
- }
- }
- while (izborMod != 10);
- }
- else if (izborMod == 2)
- {
- PrikaziStudentMeni();
- }
- } while (1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement