Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class cpredmeti_zapis{
- public:
- int sifra;
- char pred[20];
- char smjer[20];
- cpredmeti_zapis(){
- sifra=-1;
- pred[0]='\0';
- smjer[0]='\0';
- }
- void unos(){
- cout<<"Sifra predmeta: ";
- cin>>sifra;
- cout<<"Naziv predmeta: ";
- cin.ignore();
- cin.getline(pred, 20);
- cout<<"Naziv smjera: ";
- cin.getline(smjer, 20);
- }
- void ispis(){
- cout<<"Sifra predmeta: "<<sifra<<endl<<"Naziv predmeta: "<<pred<<endl<<"Naziv smjera: "<<smjer<<endl<<"--------------------"<<endl;
- }
- };
- class cpredmeti{
- public:
- static int brojac;
- cpredmeti_zapis zapis;
- cpredmeti *next;
- cpredmeti *prev;
- cpredmeti(){
- next=NULL;
- prev=NULL;
- brojac++;
- }
- cpredmeti *unos(){
- cpredmeti *last=this;
- while(last->next) last=last->next;
- cpredmeti *novi;
- novi=new cpredmeti;
- last->next=novi;
- novi->prev=last;
- novi->zapis.unos();
- return novi;
- }
- int ispis(char smjer[] = "*"){
- int c=0;
- bool pom=false;
- cpredmeti *first=this;
- while(first->prev) first=first->prev;
- for (; first->next; (pom?(cout<<"Pokazivac na sljedeci element u listi: 0x"<<first->next->next<<endl):cout) && (++c) && (first=first->next) && !(pom=false))
- if((!strcmp(smjer, "*") || !strcmp(smjer, (first->next->zapis).smjer)) && (pom=true)) (first->next->zapis).ispis();
- return c;
- }
- cpredmeti *trazi(int sifra){
- cpredmeti *first=this;
- while(first->prev) first=first->prev;
- for(;first->next;first=first->next)
- if((first->next->zapis).sifra==sifra)
- return first->next;
- return NULL;
- }
- };
- class cprijave_zapis{
- public:
- int sifra_prijave;
- int sifra_predmeta;
- char mat_br[11];
- char rok[20];
- cprijave_zapis(){
- sifra_prijave=-1;
- sifra_predmeta=-1;
- mat_br[0]='\0';
- rok[0]='\0';
- cout<<"Konstruktor\n";
- }
- void unos(){
- cout<<"Sifra prijave: ";
- cin>>sifra_prijave;
- cout<<"Sifra predmeta: ";
- cin>>sifra_predmeta;
- cout<<"Maticni broj: ";
- cin.ignore();
- cin.getline(mat_br, 11);
- cout<<"Rok: ";
- cin.getline(rok, 20);
- }
- void ispis(){
- cout<<"Sifra prijave: "<<sifra_prijave<<endl<<"Sifra predmeta: "<<sifra_predmeta<<endl<<"mat_br : "<<mat_br<<endl<<"Rok: "<<rok<<endl<<"--------------------"<<endl;
- }
- };
- class cprijave{
- public:
- static int brojac;
- cprijave_zapis *zapis;
- cprijave *next;
- cprijave(){
- cout<<"Konstruktor."<<endl;
- zapis=new cprijave_zapis;
- next=NULL;
- brojac++;
- }
- cprijave *unos(){
- cprijave *last=this;
- while(last->next) last=last->next;
- cprijave *novi=new cprijave;
- last->next=novi;
- novi->zapis->unos();
- return novi;
- }
- void ispis(cpredmeti *predmeti){
- for(cprijave *last=this; last->next; cout<<(predmeti->trazi(last->next->zapis->sifra_predmeta)->zapis).smjer <<endl && (last=last->next))
- last->next->zapis->ispis();
- }
- void ispis_mbr(cpredmeti *predmeti, char mbr[]){
- for(cprijave *last=this; last->next; cout<<(predmeti->trazi(last->next->zapis->sifra_predmeta)->zapis).smjer <<endl && (last=last->next))
- if(strcmp(last->next->zapis->mat_br, mbr)==0) last->next->zapis->ispis();
- }
- };
- int cpredmeti::brojac=0;
- int cprijave::brojac=0;
- int status(int counter, char ime[]){
- if(!counter && cout<<"\n0-glava liste "<<ime<<" nije alocirana\n") return 0;
- if(counter==1 && cout<<"1-lista "<<ime<<" je prazna\n") return 1;
- cout<<"2-lista "<<ime<<" sadrzi "<<counter-1<<" "<<ime<<endl;
- return 2;
- }
- int main(){
- int izbor, pom;
- char smjer[20];
- char mbr[11];
- cpredmeti *predmeti=NULL;
- cprijave *prijave=NULL;
- cprijave *kraj=NULL;
- do{
- cout<<"1. Upis predmeta\n2. Popis predmeta po smjeru\n3. Unos / ispis prijava\n4.mog\n vas izbor?";
- cin>>izbor;
- switch(izbor){
- case 1:
- if(!status(cpredmeti::brojac, "predmeta") && (predmeti=new cpredmeti)) status(cpredmeti::brojac, "predmeta");
- predmeti->unos();
- predmeti->ispis();
- break;
- case 2:
- if(!status(cpredmeti::brojac, "predmeta")) break;
- cout<<"Naziv smjera: ";
- cin.ignore();
- cin.getline(smjer, 20);
- pom=predmeti->ispis(smjer);
- cout<<"Ukupan broj predmeta na popisu: "<<pom<<endl;
- break;
- case 3:
- if(status(cpredmeti::brojac, "predmeta")!=2 && (status(cprijave::brojac, "prijava") || cout<<"Unos prijava nije dopusten"<<endl)) break;
- if(!status(cprijave::brojac, "prijava") && (prijave=new cprijave))
- status(cprijave::brojac, "prijava");
- kraj=prijave->unos();
- while(!predmeti->trazi(kraj->zapis->sifra_predmeta) && cout<<"Ponovni upis sifre predmeta: " && (cin>>pom))
- kraj->zapis->sifra_predmeta=pom;
- prijave->ispis(predmeti);
- break;
- case 4:
- cout<<"ukupan broj prijava: "<<cprijave::brojac-1<<endl;
- cout<<"Maticni broj? ";
- cin.ignore();
- cin.getline(mbr, 11);
- prijave->ispis_mbr(predmeti, mbr);
- break;
- }
- }while(izbor!=9);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement