Untitled

 avatar
unknown
plain_text
2 years ago
20 kB
8
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define l 30
typedef struct dostawcy {
    char imie[l];
    char nazwisko[l];
    char firma[l];
    char adres[l];
    char miasto[l];
    int id;
    char asortyment[l];
} Dos;

typedef struct towary {
    int id;
    char nazwa[l];
    int stan;
} Tow;

int main(){
    int n=0, m=0, odp=0, odpSort=0,odpMod=0, x, i, j, rozmiar, d, szuk, war;
    Dos pomDos;
    Tow pomTow;
    FILE *fd = fopen("C:/sklepZOO/dos.txt", "r");
    if (fd == NULL) {
        printf("Nie udalo sie otworzyc pliku.\n");
        return 1;
    }
    FILE *ft = fopen("C:/sklepZOO/tow.txt", "r");
    if (ft == NULL) {
        printf("Nie udalo sie otworzyc pliku.\n");
        return 1;
    }

    Dos* dos=(Dos*)malloc(sizeof(Dos));//tworzenie tablicy danych dostawcow
    while(!feof(fd)){
        fscanf(fd, "%s %s %s %s %s %d %s", &dos[n].imie, &dos[n].nazwisko, &dos[n].firma, &dos[n].adres, &dos[n].miasto, &dos[n].id, &dos[n].asortyment);
        n++;
        dos=(Dos*)realloc(dos,sizeof(Dos)*(n+1));
    }
    if(n!=0){
        dos=(Dos*)realloc(dos,sizeof(Dos)*(n));//!!funkcja wykorzystywana do powiekszania i zmniejszania tablicy dostawcow!!
    }

    Tow* tow=(Tow*)malloc(sizeof(Tow));//tworzenie tablicy danych towarow
    while(!feof(ft)){
        fscanf(ft, "%d %s %d", &tow[m].id, &tow[m].nazwa, &tow[m].stan);
        m++;
        tow=(Tow*)realloc(tow,sizeof(Tow)*(m+1));
    }
    if(m!=0){
        tow=(Tow*)realloc(tow,sizeof(Tow)*(m));//!!funkcja wykorzystywana do powiekszania i zmniejszania tablicy towarow!!
    }
    fclose(fd);
    fclose(ft);

    while(odp!=10){
        printf("\nWybierz co chcesz zrobic:\n\t1.Wypisanie posortowanych danych\n\t2.Wprowadzenie danych\n\t3.Kasowanie danych\n\t4.Modyfikacja danych\n\t5.Sprzedanie towaru\n\t6.Usuniecie sprzedanych towarow\n\t7.Przyjecie towaru\n\t8.Wyswietlenie brakujacych towarow\n\t9.Zapis plikow\n\t10.Wyjscie z programu");
        scanf("%d",&odp);
        switch(odp)
        {
            case 1://wypisanie posortowanych danych danych
                printf("\nCo chcesz wyswietlic 1.dane dostawcow 2.dane towarow");
                scanf("%d",&x);
                if(x==1){
                	printf("\nPo czym chcesz posortowac?:\n\t1.Imie\n\t2.Nazwisko\n\t3.Firma\n\t4.Adres\n\t5.Miasto\n\t6.Id\n\t7.Asortyment");
                	scanf("%d",&odpSort);
                	rozmiar=n;
                	for(i=0;i<n;i++)
				    {
				        j=0;
				        while(j<rozmiar-1)
				        {
							switch(odpSort)
							{
								case 1:
									war=stricmp(dos[j].imie,dos[j+1].imie);
									break;
								case 2:
									war=stricmp(dos[j].nazwisko,dos[j+1].nazwisko);
									break;
								case 3:
									war=stricmp(dos[j].firma,dos[j+1].firma);
									break;
								case 4:
									war=stricmp(dos[j].adres,dos[j+1].adres);
									break;
								case 5:
									war=stricmp(dos[j].miasto,dos[j+1].miasto);
									break;
								case 6:
									if(dos[j].id>dos[j+1].id){
                                        war=1;
									}
									else{
                                        war=0;
									}
									break;
								case 7:
									war=stricmp(dos[j].asortyment,dos[j+1].asortyment);
									break;
								default:
									war=0;
									break;
							}
				            if(war>0)
				            {
				                pomDos=dos[j];
				                dos[j]=dos[j+1];
				                dos[j+1]=pomDos;
				            }
				            j++;

				        }
				        rozmiar--;
				    }
					printf("\nLista imion, nazwisk, nazw firm, adresow, identyfikatorow i asortymenu:\n");
                    for(i=0;i<n;i++){
                        printf("%s %s %s %s %s %d %s\n", dos[i].imie, dos[i].nazwisko, dos[i].firma, dos[i].adres, dos[i].miasto, dos[i].id, dos[i].asortyment);
                    }
                }
                else if(x==2){
                    printf("\nPo czym chcesz posortowac?:\n\t1.Id\n\t2.Nazwa\n\t3.Stan");
                	scanf("%d",&odpSort);
                	rozmiar=m;
                	for(i=0;i<m;i++)
				    {
				        j=0;
				        while(j<rozmiar-1)
				        {
							switch(odpSort)
							{
								case 1:
								    if(tow[j].id>tow[j+1].id){
                                        war=1;
									}
									else{
                                        war=0;
									}
									break;
								case 2:
									war=stricmp(tow[j].nazwa,tow[j+1].nazwa);
									break;
								case 3:
								    if(tow[j].stan>tow[j+1].stan){
                                        war=1;
									}
									else{
                                        war=0;
									}
									break;
								default:
									war=0;
									break;
							}
				            if(war>0)
				            {
				                pomTow=tow[j];
				                tow[j]=tow[j+1];
				                tow[j+1]=pomTow;
				            }
				            j++;

				        }
				        rozmiar--;
				    }
					printf("\nLista identyfikatorow nazw towarow i ich stanu:\n");
                    for(int i=0;i<m;i++){
                        printf("%d %s ", tow[i].id, tow[i].nazwa);
                        if(tow[i].stan>0){
                            printf("%d sztuk\n",tow[i].stan);
                        }
                        else{
                            printf("brak towaru w magazynie\n");
                        }
                    }
                }
                else{
                    printf("Wybrano niepoprawna opcje");
                }
                break;
            case 2://wprowadzanie danych
                printf("\nCo chcesz wprowadzic 1.dane dostawcow 2.dane towarow");
                scanf("%d",&x);
                if(x==1){
                    n++;
                    dos=(Dos*)realloc(dos,sizeof(Dos)*(n));
                    printf("Wprowadz imie dostawcy");
                    scanf("%s",&dos[n-1].imie);
                    printf("Wprowadz nazwisko dostawcy");
                    scanf("%s",&dos[n-1].nazwisko);
                    printf("Wprowadz nazwe firmy");
                    scanf("%s",&dos[n-1].firma);
                    printf("Wprowadz adres(ulica+numer bez spacji)");
                    scanf("%s",&dos[n-1].adres);
                    printf("Wprowadz miasto");
                    scanf("%s",&dos[n-1].miasto);
                    do{
                        printf("Wprowadz numer identyfikacyjny dostawcy");
                        scanf("%d",&d);
                        szuk=-99;
                        for(i=0;i<n;i++){
                            if(dos[i].id==d){
                                szuk=i;
                                printf("Istnieje juz dostawca z takim identyfikatorem\n");
                            }
                        }
                    }while(szuk!=-99);
                    dos[n-1].id=d;
                    printf("Wprowadz asortyment firmy");
                    scanf("%s",&dos[n-1].asortyment);
                }
                else if(x==2){
                    m++;
                    tow=(Tow*)realloc(tow,sizeof(Tow)*(m));
                    do{
                        printf("Wprowadz numer identyfikacyjny towaru");
                        scanf("%d",&d);
                        szuk=-99;
                        for(i=0;i<n;i++){
                            if(tow[i].id==d){
                                szuk=i;
                                printf("Istnieje ju¿ towar z takim identyfikatorem\n");
                            }
                        }
                    }while(szuk!=-99);
                    tow[m-1].id=d;
                    printf("Wprowadz nazwe towaru");
                    scanf("%s",&tow[m-1].nazwa);
                    do{
                        printf("Wprowadz ilosc sztuk towaru(lub 0 jesli nie ma go w magazynie)");
                        scanf("%d",&tow[m-1].stan);
                        if(tow[m-1].stan<0){
                            printf("Wprowadzono niepoprawne dane\n");
                        }
                    }while(tow[m-1].stan<0);
                }
                else{
                    printf("Wybrano niepoprawna opcje\n");
                }
                break;
            case 3://kasowanie danych
                printf("\nCo chcesz skasowac 1.dane dostawcow 2.dane towarow");
                scanf("%d",&x);
                if(x==1){
                    printf("Dane dostawcy z jakim numerem identyfikacyjnym chcesz usunac");
                    scanf("%d",&d);
                    szuk=-99;
                    for(i=0;i<n;i++){
                        if(dos[i].id==d){
                            szuk=i;
                        }
                    }
                    if(szuk==-99){
                        printf("Nie ma takiego dostawcy");
                        break;
                    }
                    printf("Czy na pewno chesz usunac dostawce o danych %s %s %s %s %s %d %s\n1.Tak 2.Nie", dos[szuk].imie, dos[szuk].nazwisko, dos[szuk].firma, dos[szuk].adres, dos[szuk].miasto, dos[szuk].id, dos[szuk].asortyment);
                    scanf("%d", &d);
                    if(d==1){
                        n--;
                        for(i=szuk;i<n;i++){
                            dos[i]=dos[i+1];
                        }
                        dos=(Dos*)realloc(dos,sizeof(Dos)*(n));
                    }
                    else if(d==2){
                        ;
                    }
                    else{
                        printf("Wybrano niepoprawna opcje\n");
                    }
                }
                else if(x==2){
                    printf("Dane towaru z jakim numerem identyfikacyjnym chcesz usunac");
                    scanf("%d",&d);
                    szuk=-99;
                    for(i=0;i<m;i++){
                        if(tow[i].id==d){
                            szuk=i;
                        }
                    }
                    if(szuk==-99){
                        printf("Nie ma takiego towaru");
                        break;
                    }
                    printf("Czy na pewno chesz usunac towar o danych %d %s %d\n1.Tak 2.Nie", tow[szuk].id, tow[szuk].nazwa, tow[szuk].stan);
                    scanf("%d", &d);
                    if(d==1){
                        m--;
                        for(i=szuk;i<n;i++){
                            tow[i]=tow[i+1];
                        }
                        tow=(Tow*)realloc(tow,sizeof(Tow)*(m));
                    }
                    else if(d==2){
                        ;
                    }
                    else{
                        printf("Wybrano niepoprawna opcje\n");
                    }
                }
                else{
                    printf("Wybrano niepoprawna opcje\n");
                }
                break;
            case 4://modyfikacja danych
                printf("\nCo chcesz zmodyfikowac 1.dane dostawcow 2.dane towarow");
                scanf("%d",&x);
                if(x==1){
                    printf("Dane dostawcy z jakim numerem identyfikacyjnym chcesz zmodyfikowac");
                    scanf("%d",&d);
                    szuk=-99;
                    for(i=0;i<n;i++){
                        if(dos[i].id==d){
                            szuk=i;
                        }
                    }
                    if(szuk==-99){
                        printf("Nie ma takiego dostawcy");
                        break;
                    }
                    i=szuk;
                    printf("\nCo chcesz zmodyfikowac?:\n\t1.Imie\n\t2.Nazwisko\n\t3.Firma\n\t4.Adres\n\t5.Miasto\n\t6.Id\n\t7.Asortyment");
                	scanf("%d",&odpMod);
                    switch(odpMod)
							{
								case 1:
								    printf("Na jakie imie chcesz zamienic?");
								    scanf("%s",&dos[i].imie);
									break;
								case 2:
									printf("Na jakie nazwisko chcesz zamienic?");
								    scanf("%s",&dos[i].nazwisko);
									break;
								case 3:
								    printf("Na jakie nazwe firmy chcesz zamienic?");
								    scanf("%s",&dos[i].firma);
									break;
                                case 4:
								    printf("Na jaki adres chcesz zamienic?");
								    scanf("%s",&dos[i].adres);
									break;
                                case 5:
								    printf("Na jakie miasto chcesz zamienic?");
								    scanf("%s",&dos[i].miasto);
									break;
                                case 6:
                                    do{
                                        printf("Na jaki identyfikator chcesz zamienic?");
                                        scanf("%d",&d);
                                        szuk=-99;
                                        for(j=0;j<n;j++){
                                            if(dos[j].id==d){
                                                szuk=j;
                                                printf("Istnieje juz dostawca z takim identyfikatorem\n");
                                            }
                                        }
                                    }while(szuk!=-99);
                                    dos[i].id=d;
									break;
                                case 7:
								    printf("Na jaki asortyment chcesz zamienic?");
								    scanf("%s",&dos[i].asortyment);
									break;
							}
                }
                else if(x==2){
                    printf("Dane towaru z jakim numerem identyfikacyjnym chcesz zmodyfikowac");
                    scanf("%d",&d);
                    szuk=-99;
                    for(i=0;i<m;i++){
                        if(tow[i].id==d){
                            szuk=i;
                        }
                    }
                    if(szuk==-99){
                        printf("Nie ma takiego towaru");
                        break;
                    }
                    i=szuk;
                    printf("\nCo chcesz zmodyfikowac?:\n\t1.Identyfikator\n\t2.Nazwe towaru\n\t3.Stan");
                	scanf("%d",&odpMod);
                    switch(odpMod)
							{
								case 1:
								    do{
                                        printf("Na jaki identyfikator chcesz zamienic?");
                                        scanf("%d",&d);
                                        szuk=-99;
                                        for(j=0;j<m;j++){
                                            if(tow[j].id==d){
                                                szuk=j;
                                                printf("Istnieje juz towar z takim identyfikatorem\n");
                                            }
                                        }
                                    }while(szuk!=-99);
                                    tow[i].id=d;
									break;
								case 2:
									printf("Na jaka nazwe chcesz zamienic?");
								    scanf("%s",&tow[i].nazwa);
									break;
								case 3:
								    printf("Na jaka ilosc chcesz zamienic?");
								    scanf("%d",&tow[i].stan);
									break;
							}
                }
                else{
                    printf("Wybrano niepoprawna opcje\n");
                }
                break;
            case 5://sprzedanie towaru
                printf("Towar z jakim numerem identyfikacyjnym chcesz sprzedac");
                    scanf("%d",&d);
                    szuk=-99;
                    for(i=0;i<m;i++){
                        if(tow[i].id==d){
                            szuk=i;
                        }
                    }
                    if(szuk==-99){
                        printf("Nie ma takiego towaru");
                        break;
                    }
                    if(tow[szuk].stan>0){
                        do{
                            printf("Jaka ilosc chesz sprzedac");
                            scanf("%d",&d);
                            if(tow[szuk].stan<d){
                                printf("Nie ma tyle towaru w magazynie\n");
                            }
                        }while(tow[szuk].stan<d);
                        tow[szuk].stan-=d;
                    }
                    else{
                        printf("Towaru nie ma w magazynie");
                    }
                break;
            case 6://usuniecie sprzedanych towarow
                rozmiar=m;
                for(i=0;i<m;i++){
                    if(tow[i].stan==0){
                        rozmiar--;
                        for(j=i;j<rozmiar;j++){
                            tow[j]=tow[j+1];
                        }
                        i--;
                    }
                }
                tow=(Tow*)realloc(tow,sizeof(Tow)*(rozmiar));
                m=rozmiar;
                break;
            case 7://przyjecie towarow
                printf("Towar z jakim numerem identyfikacyjnym chcesz przyjac");
                    scanf("%d",&d);
                    szuk=-99;
                    for(i=0;i<m;i++){
                        if(tow[i].id==d){
                            szuk=i;
                        }
                    }
                    if(szuk==-99){
                        printf("Nie ma takiego towaru");
                        break;
                    }
                    do{
                        printf("Jaka ilosc chesz przyjac");
                        scanf("%d",&d);
                        if(d<=0){
                            printf("Wprowadzono niepoprawna liczbe\n");
                        }
                    }while(d<=0);
                        tow[szuk].stan+=d;
                break;
            case 8://wypisanie brakujacych towarow
                printf("Lista brakujacych towarow");
                for(i=0;i<m;i++){
                    if(tow[i].stan==0){
                        printf("\n%d %s", tow[i].id, tow[i].nazwa);
                    }
                }
                break;
            case 9: ;//zapis danych
                FILE *fd = fopen("C:/sklepZOO/dos.txt", "w");
                FILE *ft = fopen("C:/sklepZOO/tow.txt", "w");
                for(i=0;i<n-1;i++){
                    fprintf(fd, "%s %s %s %s %s %d %s\n", dos[i].imie, dos[i].nazwisko, dos[i].firma, dos[i].adres, dos[i].miasto, dos[i].id, dos[i].asortyment);
                }
                fprintf(fd, "%s %s %s %s %s %d %s", dos[n-1].imie, dos[n-1].nazwisko, dos[n-1].firma, dos[n-1].adres, dos[n-1].miasto, dos[n-1].id, dos[n-1].asortyment);
                for(i=0;i<m-1;i++){
                    fprintf(ft, "%d %s %d\n", tow[i].id, tow[i].nazwa, tow[i].stan);
                }
                fprintf(ft, "%d %s %d", tow[m-1].id, tow[m-1].nazwa, tow[m-1].stan);
                fclose(fd);
                fclose(ft);
                break;
            case 10://wyjscie z programu
                printf("\nCzy na pewno chcesz wyjsc z programu bez zapisania ostatnich zmian 1.Tak 2.Nie");
                scanf("%d",&x);
                if(x==1){
                    printf("Dziekujemy za korzystanie z programu!");
                }
                else if(x==2){
                    odp=0;
                }
                else{
                    printf("Wybrano niepoprawna opcje\n");
                }
                break;
            default:
                printf("Wybrano niepoprawna opcje\n");
                break;
        }
    }
    return 0;
}
Editor is loading...