Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
- typedef struct student{
- char ime[20];
- char prez[20];
- char brind[10];
- int godupis;
- struct student *next;
- }Student;
- void dodajS(Student **, char *, char *,char *, int , int );
- void prikazS(Student *);
- int brojs(Student *);
- void brisanjePoInd(Student **,char *);
- void sacuvajS(Student *);
- void ucitavanjeS(Student **);
- void brisanjeS(Student **);
- int main()
- {
- Student *lista=NULL;
- ucitavanjeS(&lista);
- int a,godupp,pozp;
- char s[10],imep[20],prezp[20],brinp[20];
- do
- {
- printf("\n\tOpcije:\n\t1. Prikaz svih studenata:\n\t2. Broj studenata\n\t3. Dodavanje studenta\n\t4. Brisanje studenta po indeksu\n\t5. Brisanje studenata\n\t6. Sacuvavanje studenata\n\t7. Izlaz\n\n>>>>");
- scanf("%d",&a);
- switch(a)
- {
- case 1: prikazS(lista);
- break;
- case 2: printf("\nbroj studenta je:%d\n",brojs(lista));
- break;
- case 3: printf("unesi Ime:");
- scanf("%s",&imep);
- printf("unesi prezime:");
- scanf("%s",&prezp);
- printf("unesi broj indeksa:");
- scanf("%s",&brinp);
- printf("unesi godinu upisa:");
- scanf("%d",&godupp);
- printf("unesi poziciju studenta u listi:");
- scanf("%d",&pozp);
- dodajS(&lista,imep,prezp,brinp,godupp,pozp);
- break;
- case 4: printf("\nunesite broj indeksa:");
- scanf("%s",&s);
- brisanjePoInd(&lista,s);
- break;
- case 5: brisanjeS(&lista);
- break;
- case 6: sacuvajS(lista);
- break;
- case 7: break;
- default: printf("a da uneses neku od opcija?");
- }}while(a!=7);
- return 0;
- }
- void prikazS(Student* glava)
- {
- printf("\tPrikaz studenata:\n----------------------------------------------------\n");
- while(glava)
- {
- printf("student: %s %s %s %d\n",glava->ime,glava->prez,glava->brind, glava->godupis);
- glava=glava->next;
- }
- printf("\n----------------------------------------------------\n");
- }
- int brojs(Student *glava)
- {
- int i=0;
- while(glava)
- {
- i++;
- glava=glava->next;
- }
- return i;
- }
- void dodajS(Student **glava, char *ime, char *prez,char *brind, int godupis, int pozicija)
- {
- if((pozicija>=0) && (pozicija<=brojs(*glava)))
- {
- int i;
- Student *noviS=(Student *)malloc(sizeof(Student));
- Student *tekuci=*glava,*prethodni=*glava;
- strcpy(noviS->ime,ime);
- strcpy(noviS->prez,prez);
- strcpy(noviS->brind,brind);
- noviS->godupis=godupis;
- noviS->next=NULL;
- for(i=0;i<pozicija;i++)
- {
- prethodni=tekuci;
- tekuci=tekuci->next;
- }
- noviS->next=tekuci;
- if(tekuci==*glava)
- {
- *glava=noviS;
- }
- else
- prethodni->next=noviS;
- }
- printf("...");
- }
- void brisanjePoInd(Student **glava,char *brind1)
- {
- Student *tekuci=*glava, *prethodni=*glava,*temp=NULL;
- while(tekuci)
- {
- if(!strcmp(tekuci->brind,brind1))
- {
- temp=tekuci;
- tekuci=tekuci->next;
- if(temp==*glava)
- {
- *glava=(* glava)->next;
- }
- else
- {
- prethodni->next=tekuci;
- }
- free(temp);
- }
- else
- {
- prethodni=tekuci;
- tekuci=tekuci->next;
- }
- }
- }
- void brisanjeS(Student **glava)
- {
- Student *temp;
- while(*glava)
- {
- temp=*glava;
- *glava=(*glava)->next;
- free(temp);
- }
- }
- void ucitavanjeS(Student **glava)
- {
- FILE *f=fopen("student.txt","r");
- char ime[20],prez[20],brind[10];
- int godupis;
- while(fscanf(f,"%s %s %s %d",ime,prez,brind,&godupis)!=EOF)
- {
- dodajS(glava,ime,prez,brind,godupis, brojs(*glava));
- }
- fclose(f);
- }
- void sacuvajS(Student *glava)
- {
- FILE *f=fopen("student.txt","w");
- while(glava!=NULL)
- {
- fprintf(f,"%s %s %s %d\n",glava->ime,glava->prez,glava->brind,glava->godupis);
- glava=glava->next;
- }
- fclose(f);
- }
Add Comment
Please, Sign In to add comment