#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGHT 45 /*maksymalna dlugosc ciagu znakow, ustaw wedlug mniemania*/
typedef struct firma {
char nazwa_firmy[MAX_LENGHT];
int data_powstania;
float fundusze;
int pracownicy;
char branza[MAX_LENGHT];
char miejscowosc[MAX_LENGHT];
char email[MAX_LENGHT];
}info_firma;
typedef struct wlasciciel {
char imie[MAX_LENGHT];
char nazwisko[MAX_LENGHT];
int wiek;
}info_wlasciciel;
typedef struct wezel{
info_firma dane;
info_wlasciciel dane1;
struct wezel *next;
}wezel;
wezel *start=NULL;
void inicjuj(){
start = malloc (sizeof(struct wezel));
start->next=start;
start->next=NULL;
}
info_firma czytaj()
{
info_firma a;
info_wlasciciel b;
printf("Podaj imie: ");
scanf("%s", &b.imie);
printf("Podaj nazwisko: ");
scanf("%s", &b.nazwisko);
printf("Podaj wiek: ");
scanf("%d", &b.wiek);
printf("Podaj dane firmy\n");
printf("\t Nazwa firmy: ");
scanf("%s", &a.nazwa_firmy);
printf("\t Data powstania: ");
scanf("%d", &a.data_powstania);
printf("\t Branza: ");
scanf("%s", &a.branza);
printf("\t Liczba pracowników: ");
scanf("%d", &a.pracownicy);
printf("\t Miejscowosc firmy: ");
scanf("%s", &a.miejscowosc);
printf("\t E-mail: ");
scanf("%s", &a.email);
printf("\t Fundusze firmy: ");
scanf("%f", &a.fundusze);
printf("\n\n");
return a;
}
void dodaj(info_wlasciciel a)
{
wezel *pom;
wezel *wesz;
wesz = start;
char c;
/*trzeba znalezc miejsce dla wstawianego elementu*/
while(wesz->next!=start)
{
printf("Leci");
wesz = wesz->next;
}
pom = (wezel*) malloc(sizeof(wezel)); //tak jak Ty alokuje pamiec na wezel
wesz -> next = pom; //podpinamy wskazniki na nowy element
pom -> next = start; //zapetlamy liste
pom -> dane1 = a;
scanf("%c%c",&c,&c);
}
int policz(wezel *start)
{
int ile = 0;
while(start->next != start)
{
ile++;
start = start->next;
}
return ile;
}
void wypisz() {
int i=0;
struct wezel *pom=start;
system("cls");
while(pom!=NULL) {
i++;
printf("Rekord nr %d:\n", i);
printf("Imie wlasciciela: %s\n",pom->dane1.imie);
printf("Nazwisko wlasciciela: %s\n",pom->dane1.nazwisko);
printf("Nazwa firmy: %d\n",pom->dane1.wiek);
printf("Data powstania firmy: %d\n",pom->dane.data_powstania);
printf("Imie wlasciciela: %s\n",pom->dane.branza);
printf("Nazwisko wlasciciela: %s\n",pom->dane.email);
printf("Nazwa firmy: %f\n",pom->dane.fundusze);
printf("Data powstania firmy: %d\n",pom->dane.miejscowosc);
printf("Nazwa firmy: %d\n",pom->dane.nazwa_firmy);
printf("Data powstania firmy: %d\n",pom->dane.pracownicy);
printf("\n");
pom=pom->next;
}
fflush(stdin);
fgetc(stdin);
}
void sortuj(wezel *start)
{
wezel *nowystart=NULL;
wezel *max, *poprzmax, *pom;
while(start)
{
max=start;
poprzmax=NULL;
pom=start;
while(pom->next)
{
if (pom->next->dane.pracownicy>max->dane.pracownicy)
{
poprzmax=pom->next;
max=pom->next;
}
pom=pom->next;
}
if (poprzmax)
{
poprzmax->next=max->next;
}
else
{
start=max->next;
max->next=nowystart;
nowystart=max;
}
start=nowystart;
}
}
void usun_firme(wezel *pom)
{
pom=start;
start=pom->next;
free(pom);
}
void zdp()
{
char nazwap[]="wynik.txt";
wezel *pom=start;
FILE *plik;
plik=fopen(nazwap,"wt");
while(pom!=NULL)
{
fprintf("%s %s %d %s %d %s %d %s %s %f\n", pom->dane1.imie, pom->dane1.nazwisko, pom->dane1.wiek, pom->dane.nazwa_firmy, pom->dane.data_powstania, pom->dane.branza, pom->dane.pracownicy, pom->dane.miejscowosc, pom->dane.email, pom->dane.fundusze);
pom=pom->next;
}
fclose(plik) ;
}
void wdzp()
{
wezel a;
FILE *plik;
plik=fopen(plik,"rt");
fscanf(plik, "%s" , &a.dane1.imie);
fscanf(plik, "%s" , &a.dane1.nazwisko);
fscanf(plik, "%d" , &a.dane1.wiek);
fscanf(plik, "%s" , &a.dane.branza);
fscanf(plik, "%d" , &a.dane.data_powstania);
fscanf(plik, "%s" , &a.dane.email);
fscanf(plik, "%f" , &a.dane.fundusze);
fscanf(plik, "%s" , &a.dane.miejscowosc);
fscanf(plik, "%s" , &a.dane.nazwa_firmy);
fscanf(plik, "%d" , &a.dane.pracownicy);
fclose(plik);
}
int main()
{
system("cls");
inicjuj();
int z;
char a;
while(1)
{
int z;
printf("\n--------------------------------- BAZA DANYCH ----------------------------------\n");
printf("1. Dodaj nowa firme i wlasciciela\n");
printf("2. Usun istniejaca firme\n");
printf("3. Wyszukaj podana firme\n");
printf("4. Posortuj dane\n");
printf("5. Wypisz dane\n");
printf("6. Zapisz dane do pliku\n");
printf("7. Wczytaj dane z pliku\n");
printf("8. Wyjscie\n\n");
printf("Wybierz interesujaca Cie opcje: ");
scanf("%d",&z);
switch (z)
{
case 1: czytaj(); break;
case 2: usun_firme(czytaj); break;
case 3: break;
case 4: sortuj(NULL); break;
case 5: wypisz(); break;
case 6: zdp(); break;
case 7: wdzp(); break;
case 8: return 0; break;
}
}
}