Untitled
unknown
plain_text
2 years ago
20 kB
9
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...