You are on page 1of 5

#include <stdlib.

h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

#define MAX_STRING_LENGTH 50

void menu()
{
const char* wyswietl = " WYSWIETL ";
const char* dodaj = " DODAJ PRODUKT ";
const char* usun = " USUN PRODUKT ";
const char* zapisz = " ZAPIS ";
const char* wczytaj = " WCZYTYWANIE ";
const char* koniec = " KONIEC ";
const char* k1 = "[1]";
const char* k2 = "[2]";
const char* k3 = "[3]";
const char* k4 = "[4]";
const char* k5 = "[5]";
const char* ke = "[ESC]";

printf("___________________________________________________________________________
_____________________________________________");
printf("\n\n\t\t\t ~{{WITAMY W SYSTEMIE OBSLUGI BAZY DANYCH HURTOWNI
ELEKTROMAN}}~\n\n\n ");
printf(" %-16s%-16s %-16s %-16s%-16s %-16s\n\n", wyswietl,
dodaj, usun, zapisz, wczytaj, koniec);
printf("\t %-16s %-16s %-16s %-16s %-16s %-16s\n", k1, k2, k3, k4,
k5, ke);

printf("___________________________________________________________________________
_____________________________________________");
}

struct Produkt
{
char Typ[MAX_STRING_LENGTH];
char Marka[MAX_STRING_LENGTH];
char NrHali[MAX_STRING_LENGTH];
char NrRegalu[MAX_STRING_LENGTH];
char Cena[MAX_STRING_LENGTH];
char Dostepnosc[MAX_STRING_LENGTH];
struct Produkt* nast;
}*pierwszy = NULL, * aktualny = NULL;

void dodajProdukt()
{
Produkt* nowy = (Produkt*)malloc(sizeof(Produkt));

nowy->nast = NULL;

printf("\n\nPodaj typ produktu: ");


scanf_s("%s", nowy->Typ, MAX_STRING_LENGTH);

printf("Podaj marke produktu: ");


scanf_s("%s", nowy->Marka, MAX_STRING_LENGTH);

printf("Podaj numer hali: ");


scanf_s("%s", nowy->NrHali, MAX_STRING_LENGTH);

printf("Podaj numer regalu: ");


scanf_s("%s", nowy->NrRegalu, MAX_STRING_LENGTH);

printf("Podaj cene produktu: ");


scanf_s("%s", nowy->Cena, MAX_STRING_LENGTH);

printf("Dostepnosc (szt): ");


scanf_s("%s", nowy->Dostepnosc, MAX_STRING_LENGTH);

if (pierwszy == NULL) {
pierwszy = nowy;
}
else {
aktualny = pierwszy;
while (aktualny->nast != NULL) {
aktualny = aktualny->nast;
}
aktualny->nast = nowy;
}
printf("\nProdukt zostal dodany do bazy danych hurtowni.\n");
}

void usunProdukt()
{
if (pierwszy == NULL) {
printf("\n\nBrak produktow w bazie danych.\n");
return;
}

char typ[MAX_STRING_LENGTH], marka[MAX_STRING_LENGTH];


printf("\n\nPodaj typ produktu do usuniecia: ");
scanf_s("%s", typ, MAX_STRING_LENGTH);
printf("Podaj marke produktu do usuniecia: ");
scanf_s("%s", marka, MAX_STRING_LENGTH);

// check if the first node matches the selection criteria


if (strcmp(typ, pierwszy->Typ) == 0 && strcmp(marka, pierwszy->Marka) == 0) {
Produkt* usuwany = pierwszy;
pierwszy = pierwszy->nast;
free(usuwany);
printf("\nProdukt zostal usuniety z bazy danych hurtowni.\n");
return;
}

// traverse the linked list to find the matching node


Produkt* poprzedni = pierwszy;
aktualny = pierwszy->nast;
while (aktualny != NULL) {
if (strcmp(typ, aktualny->Typ) == 0 && strcmp(marka, aktualny->Marka) == 0)
{
Produkt* usuwany = aktualny;
poprzedni->nast = aktualny->nast;
free(usuwany);
printf("\nProdukt zostal usuniety z bazy danych hurtowni.\n");
return;
}
poprzedni = aktualny;
aktualny = aktualny->nast;
}

printf("\nNie znaleziono produktu o podanych parametrach w bazie danych.\n");


}

void Zapiszdopliku()
{
FILE* plik;
fopen_s(&plik, "hurtownia.txt", "w");

if (plik == NULL) {
printf("\n\nBlad otwarcia pliku.");
return;
}

aktualny = pierwszy;

while (aktualny != NULL) {


fprintf(plik, "%s\n%s\n%s\n%s\n%s\n%s\n", aktualny->Typ, aktualny->Marka,
aktualny->NrHali, aktualny->NrRegalu, aktualny->Cena, aktualny->Dostepnosc);
aktualny = aktualny->nast;
}

fclose(plik);

printf("\nBaza danych zostala zapisana do pliku hurtownia.txt.\n");


}
void wczytaj_z_pliku()
{

pierwszy = NULL;

FILE* plik;
char typ[MAX_STRING_LENGTH], marka[MAX_STRING_LENGTH],
nr_hali[MAX_STRING_LENGTH], nr_regalu[MAX_STRING_LENGTH], cena[MAX_STRING_LENGTH],
dostepnosc[MAX_STRING_LENGTH];

if (fopen_s(&plik, "hurtownia.txt", "r") == 0) {


while (fscanf_s(plik, "%s %s %s %s %s %s", typ, MAX_STRING_LENGTH, marka,
MAX_STRING_LENGTH, nr_hali, MAX_STRING_LENGTH, nr_regalu, MAX_STRING_LENGTH, cena,
MAX_STRING_LENGTH, dostepnosc, MAX_STRING_LENGTH) == 6) {
Produkt* nowy = (Produkt*)malloc(sizeof(Produkt));
nowy->nast = NULL;
strcpy_s(nowy->Typ, MAX_STRING_LENGTH, typ);
strcpy_s(nowy->Marka, MAX_STRING_LENGTH, marka);
strcpy_s(nowy->NrHali, MAX_STRING_LENGTH, nr_hali);
strcpy_s(nowy->NrRegalu, MAX_STRING_LENGTH, nr_regalu);
strcpy_s(nowy->Cena, MAX_STRING_LENGTH, cena);
strcpy_s(nowy->Dostepnosc, MAX_STRING_LENGTH, dostepnosc);

if (pierwszy == NULL) {
pierwszy = nowy;
}
else {
aktualny = pierwszy;
while (aktualny->nast != NULL) {
aktualny = aktualny->nast;
}
aktualny->nast = nowy;
}
}
fclose(plik);
printf("Plik hurtownia.txt zostal wczytany do bazy danych.\n");
}
else {
printf("Nie mozna otworzyc pliku: hurtownia.txt\n");
}
}

int main()
{
const char* PRODUKT = "| PRODUKT |";
const char* MARKA = "| MARKA |";
const char* NRHALI = "| NR HALI |";
const char* NRREGALU = "| NR REGALU |";
const char* CENA = "| CENA |";
const char* DOSTEPNOSC = "| DOSTEPNOSC |";
char znak;

menu();
do {
if (_kbhit()) {
znak = _getch();
switch (znak) {
case '1':
system("cls");
menu();
if (pierwszy == NULL)
printf("\n\nBrak produktow w bazie danych.");
else {
printf("\n\n\n\n %-16s %-16s %-16s %-16s %-16s%
-16s\n\n ", PRODUKT, MARKA, NRHALI, NRREGALU, CENA, DOSTEPNOSC);
const char* krecha = "|--------------|";

aktualny = pierwszy;
do {

printf("\n %-16s %-16s %-16s %-16s %-16s %-


16s", aktualny->Typ, aktualny->Marka, aktualny->NrHali, aktualny->NrRegalu,
aktualny->Cena, aktualny->Dostepnosc);
printf("\t %-16s %-16s %-16s %-16s %-16s %-
16s ", krecha, krecha, krecha, krecha, krecha, krecha);

aktualny = aktualny->nast;
} while (aktualny != NULL);

}
break;
case'2':
system("cls");
menu();
dodajProdukt();
break;

case'3':
system("cls");
menu();
usunProdukt();
break;

case'4':

system("cls");
menu();
Zapiszdopliku();
break;

case'5':
system("cls");
menu();

wczytaj_z_pliku();
break;

case 27:
return 0;
}
}
} while (true);
return 0;
}

You might also like