Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int increment;
- typedef struct
- {
- int id;
- char nazwa[25];
- int ilosc;
- int cena;
- int status;
- } produkt;
- typedef struct
- {
- int nr_zamowienia;
- int ilosc;
- produkt *produkty;
- int status;
- } zamowienie;
- void menu(zamowienie *wsk)
- {
- int mode;
- printf("\nZamowienia\n\n");
- printf("1. Dodaj nowe zamowienie\n");
- printf("2. Zmien status produktu\n");
- printf("3. Przelicz status zamowienia\n");
- printf("4. Wyswietl zamowienia\n");
- printf("Opcja: ");
- scanf("%d", &mode);
- switch(mode)
- {
- case 1:
- dodaj(wsk);
- break;
- case 2:
- zmien(wsk);
- break;
- case 3:
- przelicz(wsk);
- break;
- case 4:
- wyswietl(wsk);
- break;
- }
- }
- produkt* dodaj2(produkt *wsk, zamowienie *wsk2)
- {
- wsk = (produkt*)malloc(sizeof(produkt));
- int tmp = 0;
- while(1)
- {
- printf("Czy chcesz dodac kolejny item? [T/N]: ");
- fflush(stdin);
- char D;
- scanf("%c", &D);
- if(D == 'T')
- {
- wsk = (produkt*)realloc(wsk,(tmp+1)*sizeof(produkt));
- (wsk+tmp)->id = tmp;
- printf("\n\nPodaj nazwe produktu: ");
- scanf("%s", (wsk+tmp)->nazwa);
- printf("\nPodaj cene: ");
- scanf("%d", &(wsk+tmp)->cena);
- printf("\nPodaj ilosc: ");
- scanf("%d", &(wsk+tmp)->ilosc);
- (wsk+tmp)->status = 0;
- printf("\n\nDodano produkt ID: %d\n\n", (wsk+tmp)->id);
- tmp++;
- wsk2->ilosc = tmp;
- }
- else
- {
- return wsk;
- }
- }
- }
- void dodaj(zamowienie *wsk)
- {
- system("cls");
- int offset = increment;
- (wsk+offset)->nr_zamowienia = offset;
- (wsk+offset)->produkty = dodaj2((wsk+offset)->produkty, (wsk+offset));
- (wsk+offset)->status = 0;
- printf("\n\nDodano zamowienie ID: %d\n\n", (wsk+offset)->nr_zamowienia);
- increment++;
- }
- void zmien(zamowienie *wsk)
- {
- system("cls");
- int offset;
- printf("Podaj nr zamowienia do zmiany statusu: ");
- scanf("%d", &offset);
- int n = (wsk+offset)->ilosc;
- produkt *wsk2 = (wsk+offset)->produkty;
- for(int i=0; i<n; i++)
- {
- printf("Produkt: %d Nazwa: %s Status: %d\n", i, (wsk2+i)->nazwa, (wsk2+i)->status);
- }
- int m;
- printf("Podaj nr produktu: ");
- scanf("%d", &m);
- printf("Podaj nowy status: ");
- scanf("%d", &(wsk2+m)->status);
- printf("Nowy status dla %s to %d", (wsk2+m)->nazwa, (wsk2+m)->status);
- }
- void przelicz(zamowienie *wsk)
- {
- int offset;
- printf("Podaj nr zamowienia: ");
- scanf("%d", &offset);
- int n = (wsk+offset)->ilosc;
- produkt *wsk2 = (wsk+offset)->produkty;
- int x = 1;
- for(int i=0; i<n; i++)
- {
- if((wsk2+i)->status == 0)
- {
- x = 0;
- }
- }
- if(x == 0)
- {
- (wsk+offset)->status = 0;
- }
- else
- {
- (wsk+offset)->status = 1;
- }
- printf("Status zamowienia %d wynosi %d", offset, (wsk+offset)->status);
- }
- void wyswietl(zamowienie *wsk)
- {
- int offset;
- printf("Podaj nr zamowienia: ");
- scanf("%d", &offset);
- int n = (wsk+offset)->ilosc;
- produkt *wsk2 = (wsk+offset)->produkty;
- printf("Nr zamowienia %d Ilosc %d Status %d\n\n", (wsk+offset)->nr_zamowienia, (wsk+offset)->ilosc, (wsk+offset)->status);
- for(int i=0; i<n; i++)
- {
- printf("Nr produktu %d, Nazwa %s, Cena %d, Ilosc %d, Status %d\n", (wsk2+i)->id, (wsk2+i)->nazwa, (wsk2+i)->cena, (wsk2+i)->ilosc, (wsk2+i)->status);
- }
- }
- int main()
- {
- zamowienie *zamowienia = NULL;
- zamowienia = (zamowienie*)malloc(10*sizeof(zamowienie));
- increment = 0;
- while(1)
- {
- menu(zamowienia);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement