Program dziala tylko w jednym folderze.

0

Pomocy program dziala tylko w jednym folderze.

 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct baza {
        char *login;
        char *haslo;
        int upr;
        struct baza *nastepny;
};
struct baza *pierwszy=NULL;
struct baza *ostatni=NULL;

struct filmy {
    char *tytul;
    char *rezyser;
    char *aktor1;
    char *aktor2;
    char *aktor3;
    char *uzyt;
    int data;
    struct filmy *nastepny;


};

struct filmy *first=NULL;
struct filmy *last=NULL;



void przegladaj_w()
{
  struct filmy * tmp=first;
  system("cls");




  while(tmp!=NULL) {


    printf("TYTUL : %s\n",tmp->tytul);
    printf("REZYSER: %s\n",tmp->rezyser);
    printf("AKTOR: %s\n",tmp->aktor1);
    printf("AKTOR: %s\n",tmp->aktor2);
    printf("AKTOR: %s\n",tmp->aktor3);

    printf("DATA WYDANIA %d\n",tmp->data);
    printf("\n");
    tmp=tmp->nastepny;
  }
  fflush(stdin);
  fgetc(stdin);
}
void przegladaj_r()
{
  int i=0;
  struct filmy * tmp=first;
  char rez[20];
  system("cls");
  printf ("Podaj jakiego rezysera filmy chcesz wyswietlic\n");
  scanf ("%s",&rez);




  while(tmp!=NULL) {

if(strcmp(tmp->rezyser,rez)==0){
    printf("TYTUL : %s\n",tmp->tytul);
    printf("REZYSER: %s\n",tmp->rezyser);
    printf("AKTOR: %s\n",tmp->aktor1);
    printf("AKTOR: %s\n",tmp->aktor2);
    printf("AKTOR: %s\n",tmp->aktor3);

    printf("DATA WYDANIA %d\n",tmp->data);
    printf("\n\n");
    tmp=tmp->nastepny;
  }
  else {tmp=tmp->nastepny;}
  }
  fflush(stdin);
  fgetc(stdin);
}
przegladaj_a()
{
  int i=0;
  struct filmy * tmp=first;
  char rez[20];
  system("cls");
  printf ("Podaj jakiego aktora filmy chcesz wyswietlic\n");
  scanf ("%s",&rez);




  while(tmp!=NULL) {

if(strcmp(tmp->aktor1,rez)==0||strcmp(tmp->aktor2,rez)==0||strcmp(tmp->aktor3,rez)==0){
    printf("TYTUL : %s\n",tmp->tytul);
    printf("REZYSER: %s\n",tmp->rezyser);
    printf("AKTOR: %s\n",tmp->aktor1);
    printf("AKTOR: %s\n",tmp->aktor2);
    printf("AKTOR: %s\n",tmp->aktor3);

    printf("DATA WYDANIA %d\n",tmp->data);
    printf("\n\n");
    tmp=tmp->nastepny;
  }
  else {tmp=tmp->nastepny;}
  }
  fflush(stdin);
  fgetc(stdin);
}
przegladaj_d()
{
  int d,t;
  struct filmy * tmp=first;
  char rez[20];
  system("cls");
  printf ("Podaj od ktorego roku wydania chcesz wyswietlac filmy\n");
  scanf ("%d",&d);
    printf ("Podaj do ktorego roku wydania chcesz wyswietlac filmy\n");
  scanf ("%d",&t);




  while(tmp!=NULL) {

if(tmp->data<=t&&tmp->data>=d){
    printf("TYTUL : %s\n",tmp->tytul);
    printf("REZYSER: %s\n",tmp->rezyser);
    printf("AKTOR: %s\n",tmp->aktor1);
    printf("AKTOR: %s\n",tmp->aktor2);
    printf("AKTOR: %s\n",tmp->aktor3);

    printf("DATA WYDANIA %d\n",tmp->data);
    printf("\n\n");
    tmp=tmp->nastepny;
  }
  else {tmp=tmp->nastepny;}
  }
  fflush(stdin);
  fgetc(stdin);
}


void przegladaj ()
{
    int wyb2;
                printf("1 - Wyswietl wszystkie filmy\n");
                printf("2 - Wyswietl wszystkie danego rezysera\n");
                printf("3 - Wyswietl wszystkie danego aktora\n");
                printf("4 - Wyswietl wszystkie z przedzialu czasowego\n");
                printf("5 - WYJSCIE\n");
                    scanf ("%d",&wyb2);


          switch (wyb2)
                                {
                        case 1 : przegladaj_w(); break;
                        case 2 : przegladaj_r(); break;
                        case 3 : przegladaj_a(); break;
                        case 4 : przegladaj_d();break;

                        case 5 : exit(0); break;


                }

}


void usun_uzyt ()
{

FILE *p;
      char usun[20];
  struct baza * tmp=pierwszy;
  struct baza *pom;
  struct baza *som=pierwszy;

p=fopen("uzytkownicy124.txt","w");

  printf ("Podaj login uzytkownika ktorego chcesz usunac\n");
  scanf ("%s",&usun);
    while(tmp!=NULL) {
if(strcmp(tmp->login,usun)==0){
 if (tmp->upr==3){
     printf("Nie mozesz usunac ADMINISTRATORA\n");
 system("PAUSE");
fprintf (p,"%s %s %d\n",tmp->login,tmp->haslo,tmp->upr);
 }
 else {
     pom=tmp;
     tmp=tmp->nastepny;
     free(pom->login);
     free(pom->haslo);
     som=som->nastepny->nastepny;


 }


  }
  else {
    fprintf (p,"%s %s %d\n",tmp->login,tmp->haslo,tmp->upr);
      som=tmp;
      tmp=tmp->nastepny;
            }




}

}
void usun_film (char nazwa[20],int d)
{

FILE *t;
      char usun[20];
  struct filmy * tmp=first;
  struct filmy *pom;
  struct filmy *som=first;

t=fopen("filmy.txt","w");

  printf ("Podaj nazwe filmu ktory chcesz usunac\n");
  printf ("%d",d);
  scanf ("%s",&usun);
    while(tmp!=NULL) {
if(strcmp(tmp->tytul,usun)==0){
 if (d==3||strcmp(tmp->uzyt,nazwa)==0){
    pom=tmp;
     tmp=tmp->nastepny;
     free(pom->tytul);
     free(pom->rezyser);
     free(pom->aktor1);
     free(pom->aktor2);
     free(pom->aktor3);
     free(pom->uzyt);
     free(pom);

     som=som->nastepny->nastepny;

 }
 else {
     printf ("NIE MOZESZ USUNAC TEGO FILMU\n");
        system("PAUSE");
        fprintf (t,"%s %s %s %s %s %s %d\n",tmp->tytul,tmp->rezyser,tmp->aktor1,tmp->aktor2,tmp->aktor3,tmp->uzyt,tmp->data);
        tmp=tmp->nastepny;
        }

}




  else {
    fprintf (t,"%s %s %s %s %s %s %d\n",tmp->tytul,tmp->rezyser,tmp->aktor1,tmp->aktor2,tmp->aktor3,tmp->uzyt,tmp->data);
      som=tmp;
      tmp=tmp->nastepny;
            }



    }
}




doda_film(char nazwa[20])
{


    int data;
    char tytul[20],rezyser[20],aktor1[20],aktor2[20],aktor3[20];
    FILE *t;
        struct filmy *nowy;




    printf("podaj tytul[BEZ SPACJI]:\n");
        scanf ("%s",&tytul);



    printf("podaj IMIE i NAZWISKO rezysera[BEZ SPACJI]:\n");
    scanf ("%s",&rezyser);

       printf("podaj IMIE i NAZWISKO pierwszego aktora[BEZ SPACJI]:\n");
   scanf ("%s",&aktor1);
          printf("podaj IMIE i NAZWISKO drugiego aktora[BEZ SPACJI]:\n");
   scanf ("%s",&aktor2);
             printf("podaj IMIE i NAZWISKO trzeciego aktora[BEZ SPACJI]:\n");
   scanf ("%s",&aktor3);

   printf ("Podaj rok wydania\n");
   scanf ("%d",&data);




        nowy=malloc(sizeof(struct filmy));

        nowy->tytul=malloc(strlen(tytul));
        strcpy(nowy->tytul,tytul);


        nowy->rezyser=malloc(strlen(rezyser));
        strcpy(nowy->rezyser,rezyser);

        nowy->aktor1=malloc(strlen(aktor1));
        strcpy(nowy->aktor1,aktor1);

        nowy->aktor2=malloc(strlen(aktor2));
        strcpy(nowy->aktor2,aktor2);


        nowy->aktor3=malloc(strlen(aktor3));
        strcpy(nowy->aktor3,aktor3);

        nowy->uzyt=malloc(strlen(nazwa));
        strcpy(nowy->uzyt,nazwa);







        nowy->data=data;
        nowy->nastepny=NULL;

        if(first==NULL){
        first=first=nowy;

        }
        else {
        last->nastepny=nowy;
        last=nowy;
        }

  t=fopen("filmy.txt", "a+");



  while(nowy!=NULL) {



fprintf (t,"%s %s %s %s %s %s %d\n",nowy->tytul,nowy->rezyser,nowy->aktor1,nowy->aktor2,nowy->aktor3,nowy->uzyt,nowy->data);
        nowy=nowy->nastepny;

        fclose(t);

}
}
wczytaj_filmy ()
{
    struct filmy * tmp=first;
    char s[30];
    int d,i;
    FILE *t;
    t=fopen("filmy.txt", "r");



  while(!feof(t)) {
    tmp= calloc(1, sizeof(struct filmy));

    tmp->tytul=calloc(30, 1);
    fscanf(t, "%s\n", s);
    strcpy(tmp->tytul, s);

    tmp->rezyser=calloc(30, 1);
    fscanf(t, "%s\n", s);
    strcpy(tmp->rezyser, s);

    tmp->aktor1=calloc(30, 1);
    fscanf(t, "%s\n", s);
    strcpy(tmp->aktor1, s);

        tmp->aktor2=calloc(30, 1);
    fscanf(t, "%s\n", s);
    strcpy(tmp->aktor2, s);


    tmp->aktor3=calloc(30, 1);
    fscanf(t, "%s\n", s);
    strcpy(tmp->aktor3, s);


    tmp->uzyt=calloc(30, 1);
    fscanf(t, "%s\n", s);
    strcpy(tmp->uzyt, s);


    fscanf(t, "%d\n", &i);
    tmp->data=i;


        tmp->nastepny=NULL;
        if(first==NULL){
        first=last=tmp;
        }
        else {
        last->nastepny=tmp;
        last=tmp;
        }

  }
}

wczytaj_liste ()
{
    struct baza * tmp=pierwszy;
    char s[30];
    int i,d,t;
    FILE *p;
    p=fopen("uzytkownicy124.txt", "r");
       while(pierwszy!=NULL) {
    free(pierwszy->haslo);
    free(pierwszy->login);
    pierwszy=pierwszy->nastepny;
  }

  while(!feof(p)) {
    tmp= calloc(1, sizeof(struct baza));

    tmp->login=calloc(30, 1);
    fscanf(p, "%s\n", s);
    strcpy(tmp->login, s); //odwrotnie?
    tmp->haslo=calloc(30, 1);
    fscanf(p, "%s\n", s);
    strcpy(tmp->haslo, s);
    fscanf(p, "%d\n", &i);
    tmp->upr=i;


        tmp->nastepny=NULL;
        if(pierwszy==NULL){
        pierwszy=ostatni=tmp;
        //      return 0;
        }
        else {
        ostatni->nastepny=tmp;
        ostatni=tmp;
        } // koniec

  }
}
int wolny (char nazwa[20])
{
     struct baza * tmp=pierwszy;
    char s[30];
    int i,d,t;
    FILE *p;
p=fopen ("uzytkownicy124.txt", "r");
 if (p==NULL){}
 else {
       while(pierwszy!=NULL) {
    free(pierwszy->haslo);
    free(pierwszy->login);
    pierwszy=pierwszy->nastepny;
  }

  while(!feof(p)) {
    tmp= calloc(1, sizeof(struct baza));

    tmp->login=calloc(30, 1);
    fscanf(p, "%s\n", s);
    strcpy(tmp->login, s);
    tmp->haslo=calloc(30, 1);
    fscanf(p, "%s\n", s);
    strcpy(tmp->haslo, s);
    fscanf(p, "%d\n", &i);
    tmp->upr=i;


        tmp->nastepny=NULL;
        if(pierwszy==NULL){
        pierwszy=ostatni=tmp;

        }
        else {
        ostatni->nastepny=tmp;
        ostatni=tmp;
        }

  }
tmp=pierwszy;





      while(tmp!=NULL) {
      if(strcmp(tmp->login,nazwa)==0)
  {
        return 2;
        tmp=tmp->nastepny;

      }
else {

tmp=tmp->nastepny;
}
  }
  return 0;
}
}

void wypisz() {
  int i=0;
  struct baza * tmp=pierwszy;
  system("cls");
    printf ("UPRAWNIENIA 0-NIEAKTYWNY\n");
    printf ("UPRAWNIENIA 1-AKTYWNY\n");
    printf ("UPRAWNIENIA 3-ADMIN\n");



  while(tmp!=NULL) {
    i++;
    printf("UZYTKOWNIK nr %d:\n", i);
    printf("LOGIN : %s\n",tmp->login);
    printf("UPRAWNIENIA %d\n",tmp->upr);
    printf("\n");
    tmp=tmp->nastepny;
  }
  fflush(stdin);
  fgetc(stdin);


}

void kop() {

  struct baza * pmp=pierwszy;
  FILE *d;
  char login[10];
  d=fopen("uzytkownicy124.txt","w");
  printf ("Podaj login uzytkownika ktorego chcesz aktywowac\n");
  scanf("%s",&login);

  system("cls");

  while(pmp!=NULL) {
      if(strcmp(pmp->login,login)==0)
  { if(pmp->upr!=0){printf("Ten uzytkownik jest juz aktywny");
  break;

  }


    fprintf (d,"%s %s 1\n",pmp->login,pmp->haslo);
pmp=pmp->nastepny;

      }
else {

fprintf (d,"%s %s %d\n",pmp->login,pmp->haslo,pmp->upr);
pmp=pmp->nastepny;
  }
}
  fflush(stdin);
  fgetc(stdin);
}
 void has(char nazwa[20])
 {

  struct baza * tmp=pierwszy;
  FILE *d;
  char maslo[20];
  char login[20];

  d=fopen("uzytkownicy124.txt","w");

  printf ("Podaj nowe haslo\n");
  scanf("%s",&maslo);
  printf ("%s",maslo);



  while(tmp!=NULL) {
      if(strcmp(tmp->login,nazwa)==0)
  {
    printf ("MAM\n\n");
    printf ("%s\n",tmp->login);
    fprintf (d,"%s %s %d\n",tmp->login,maslo,tmp->upr);
tmp=tmp->nastepny;

      }

else {
fprintf (d,"%s %s %d\n",tmp->login,tmp->haslo,tmp->upr);
tmp=tmp->nastepny; }
  }
  fflush(stdin);
  fgetc(stdin);
}








dodaj()
{

    int upr,znaleziono=0,i,d=2;
    char login[10],haslo[20],s[30];
    FILE *p;
        struct baza *nowy;
        struct baza * tmp;

    while (d==2){
    printf("podaj login:\n");
    scanf("%s",&login);
    wolny(login);
    d=wolny(login);
    if (d==2)printf ("JEST JUZ TAKI UZYTKOWNIK BAZY\n");

    }
    printf("podaj haslo:\n");
    scanf("%s",&haslo);
    p=fopen ("uzytkownicy124.txt", "r");
    if (p==NULL) {
    upr=3;

    }
    else upr=0;


        nowy=malloc(sizeof(struct baza));

        nowy->login=malloc(strlen(login));
        strcpy(nowy->login,login);


        nowy->haslo=malloc(strlen(haslo));
        strcpy(nowy->haslo,haslo);

        nowy->upr=upr;
        nowy->nastepny=NULL;

        if(pierwszy==NULL){
        pierwszy=ostatni=nowy;
        }
        else {
        ostatni->nastepny=nowy;
        ostatni=nowy;
        }

  p=fopen("uzytkownicy124.txt", "a+");
while(nowy!=NULL) {
fprintf (p,"%s %s %d\n",nowy->login,nowy->haslo,nowy->upr);
        nowy=nowy->nastepny;

        fclose(p);
}


}
logowanie ()
{

  char s[30];
  int i,d;
  FILE *p;
  struct baza * tmp;


  system("cls");

  p=fopen("uzytkownicy124.txt", "r");
   if (p==NULL) {
   printf ("Nie ma uzytkownikow w bazie danych\n Musisz sie zarejestrowac!\n");
system("PAUSE");


   }

   else { wczytaj_liste();

        tmp=pierwszy;
        char nazwa[20];

        char haslo[20];
        int znaleziono=0;


        system("cls");

        printf("LOGIN:\n");
        scanf("%s",&nazwa);
        printf("HASLO:\n");
        scanf("%s",&haslo);
        while(tmp!=NULL){
                if(strcmp(tmp->login,nazwa)==0){
                    znaleziono=1;
               if(strcmp(tmp->haslo,haslo)==0)
                    znaleziono=2;
                    break;
                }
                tmp=tmp->nastepny;
        }
        if(znaleziono==0) {printf("Nie ma takiego uzytkownika\n"); exit (0);}
        if(znaleziono==1) {printf("ZLE HASLO"); exit (0);}
        if(znaleziono==2) {printf("ZALOGOWALES SIE!\n");}




        int wyb2=1;
        wczytaj_filmy();

                    while(wyb2!= 0)
        {
                system("cls");
                printf("\nCo chcesz robic ?\n\nTWOJ LOGIN TO %s\n",tmp->login);

                if (tmp->upr==3){printf ("ZALOGOWALES SIE JAKO ADMINISTRATOR\n");


                printf("1 - Wyswietl wszystkich uzytkownikow bazy\n");
                printf("2 - AKTYWUJ UZYTKOWNIKA\n");
                printf("3 - ZMIANA HASLA\n");
                printf("4 - DODAJ FILM\n");
                printf("5 - PRZEGLADAJ FILMY\n");
                printf("6 - USUN UZYTKOWNIKA\n");
                printf("7 - USUN FILM\n");
                printf("8 - EDYTUJ FILM\n");

                printf("9 - WYJSCIE\n");
                printf ("UWAGA ZMIANY(USUWANIE,EDYCJA)\nBEDA WIDOCZNE DOPIERO PO PONOWNYM URUCHOMIENIU PROGRAMU\n");

                scanf("%d", &wyb2);
                printf("\n");
          switch (wyb2)
                                {
                        case 1 : wypisz();break;
                        case 2 : kop(); break;
                        case 3 : has(nazwa); break;
                        case 4 :doda_film(nazwa);break;
                        case 5 :przegladaj();break;
                        case 6 :usun_uzyt();break;
                        case 7 :usun_film(nazwa,tmp->upr);break;

                        case 9 : exit(0); break;


                }

}



                if (tmp->upr==1){


                printf("1 - ZMIANA HASLA\n");
                printf("2 - DODAJ FILM\n");
                printf("3 - PRZEGLADAJ FILMY\n");
                printf("4 - USUN FILM\n");
                printf("5 - EDYTUJ FILM\n");
                printf("6 - WYJDZ\n");
                scanf("%d", &wyb2);
                printf("\n");
          switch (wyb2)
                                {


                        case 1 : has(nazwa); break;
                        case 2 :doda_film(nazwa);break;
                        case 3 :przegladaj();break;
                        case 4 :usun_film(nazwa,tmp->upr);break;

                        case 6 : exit(0); break;

                }

}





                if (tmp->upr==0){printf ("TWOJE KONTO JEST NIEAKTYWNE\n");

                printf("1 - ZMIANA HASLA\n");
                printf("2 - WYJSCIE\n");
                scanf("%d", &wyb2);
                printf("\n");
          switch (wyb2)
                                {
                        case 1 :has(nazwa); break;
                        case 2 : exit(0); break;

                }

}


        }







}
}


main ()
{
    char nazwa[20];
    int wyb1=1;


            while(wyb1!= 0)
        {
               system("cls");
                printf("\nCo chcesz robic ?\n\n");
                printf("1 - REJESTRACJA\n");
                printf("2 - LOGOWANIE\n");
                scanf("%d", &wyb1);
                printf("\n");
                switch (wyb1)
                {
                        case 1 : dodaj(); break;
                        case 2 : logowanie(); break;

                }
        }

}
0

co to znaczy "nie działa"?...
słabe formatowanie, co czyni kod nieczytelnym.
no i rozbij to na kilka plików, a jak możesz pisać obiektowo, to dodatkowo rozbij to na klasy. może wtedy da się to przeczytać.

0

Takie duże kody wrzucaj do PasteBin, ii mógłbyś to jakoś normalniej sformatować.

0

Popraw nast. błędy:

  1. stwórz sobie funckje listy: dodaj_el(int pozycja, void *dane), usun_el(struct element *wskaznik), szukaj_el(int nr_elementu). A potem zrób dopiero funkcje dodaj_film() itp.
  2. Wbrew pozorom formatowanie kodu jest bardzo ważne dla Ciebie jak i dla nas. Jeżeli kod będzie czytelny to byc może sam wyłapiesz błąd, a jeżeli nie nam łatwiej będzie go ogarnąć i Ci pomóc.
  3. Wracając do tematu cou u Ciebie znaczy "dziala w jednym folderze" ? uruchamia sie? nie wysyopuje się? wykonuje żądane operacje? opisz dokładnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1