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;
}
}
}