Untitled
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...