SHOW:
|
|
- or go back to the newest paste.
| 1 | #include <stdio.h> | |
| 2 | #include <stdlib.h> | |
| 3 | #include <string.h> | |
| 4 | ||
| 5 | #define MAX1 30 | |
| 6 | #define MAX2 40 | |
| 7 | #define MAX3 20 | |
| 8 | ||
| 9 | // STRUKTURA Z INFORMACJAMI O KSIAZCE Z BIBLIOTEKI | |
| 10 | typedef struct | |
| 11 | {
| |
| 12 | char AutorB[MAX1]; | |
| 13 | char TytulB[MAX2]; | |
| 14 | int Rok; | |
| 15 | char Wydawnictwo[50]; | |
| 16 | char Typ[50]; | |
| 17 | char Wypozyczona[4];//TAK LUB NIE, jesli tak komu zostala wypozyczona | |
| 18 | char Komu[MAX3]; | |
| 19 | }Biblioteka; | |
| 20 | ||
| 21 | //STRUKTURA Z LISTA DO BIBLIOTEKI | |
| 22 | struct ListaB | |
| 23 | {
| |
| 24 | Biblioteka data; | |
| 25 | struct ListaB *next; | |
| 26 | }; | |
| 27 | typedef struct ListaB LISTAB; | |
| 28 | typedef LISTAB *ADRESB; | |
| 29 | ||
| 30 | //STRUKTURA Z INFORMACJAMI O KSIAZCE KTORA CHCEMY KUPIC | |
| 31 | typedef struct | |
| 32 | {
| |
| 33 | char AutorDK[MAX1]; | |
| 34 | char TytulDK[MAX2]; | |
| 35 | }DoKupienia; | |
| 36 | ||
| 37 | //STRUKTURA Z LISTA DO DOKUPIENIA | |
| 38 | struct ListaDK | |
| 39 | {
| |
| 40 | DoKupienia dane; | |
| 41 | struct ListaDK *nast; | |
| 42 | }; | |
| 43 | typedef struct ListaDK LISTADK; | |
| 44 | typedef LISTADK *ADRESDK; | |
| 45 | ||
| 46 | //_____________ prototypy _________________ | |
| 47 | void UsunB(ADRESB first, char Usuwany[MAX2]); | |
| 48 | void UsunDK(ADRESDK pierwszy, char Usuwany[MAX2]); | |
| 49 | ||
| 50 | //_______________________________________ | |
| 51 | void DodajKsiazkeB(ADRESB first, ADRESDK pierwszy) | |
| 52 | {
| |
| 53 | int usunzDK; | |
| 54 | //DODANIE KSIAZKI DO BILBIOTEKI | |
| 55 | ADRESB tmp; | |
| 56 | tmp = first; | |
| 57 | while(tmp->next) | |
| 58 | {
| |
| 59 | tmp = tmp->next; | |
| 60 | } | |
| 61 | tmp->next = (ADRESB)malloc(sizeof(LISTAB)); | |
| 62 | tmp = tmp->next; | |
| 63 | tmp->next = NULL; | |
| 64 | printf("Podaj nazwisko autora: ");
| |
| 65 | fflush(stdin); | |
| 66 | gets(tmp->data.AutorB); | |
| 67 | printf("Podaj tytul ksiazki: ");
| |
| 68 | fflush(stdin); | |
| 69 | gets(tmp->data.TytulB); | |
| 70 | printf("Podaj rok wydania ksiazki: ");
| |
| 71 | fflush(stdin); | |
| 72 | scanf("%d", &tmp->data.Rok);
| |
| 73 | printf("Podaj wydawnictwo: ");
| |
| 74 | fflush(stdin); | |
| 75 | gets(tmp->data.Wydawnictwo); | |
| 76 | printf("Podaj typ ksiazki (np.: kryminal, dramat, poradnik, itd.: ");
| |
| 77 | fflush(stdin); | |
| 78 | gets(tmp->data.Typ); | |
| 79 | ||
| 80 | system("cls");
| |
| 81 | printf("Ksiazka zostala dodana do listy Biblioteka.\n\n");
| |
| 82 | printf("Czy chcesz, aby dodana przez Ciebie ksiazka zostala jednoczesnie usunieta z listy 'Do kupienia'?\n\n");
| |
| 83 | printf("1. TAK \n2. NIE \n\n");
| |
| 84 | scanf("%d", &usunzDK);
| |
| 85 | switch(usunzDK) | |
| 86 | {
| |
| 87 | case 1: //ksiazka zostanie usunieta z listy DoKupienia | |
| 88 | {
| |
| 89 | if(pierwszy == NULL) | |
| 90 | {
| |
| 91 | printf("Nie mozesz usunac ksiazki, gdyz lista 'Do kupienia' jest pusta.");
| |
| 92 | puts("Nacisnij dowolny klawisz, aby powrocic do menu.");
| |
| 93 | fflush(stdin); | |
| 94 | getch(); | |
| 95 | } | |
| 96 | else | |
| 97 | {
| |
| 98 | UsunDK(pierwszy, tmp->data.TytulB); | |
| 99 | puts("Ksiazka zostala usunieta z listy DoKupienia.\n\n");
| |
| 100 | puts("Nacisnij dowolny klawisz, aby powrocic do menu.");
| |
| 101 | fflush(stdin); | |
| 102 | getch(); | |
| 103 | } | |
| 104 | }break; | |
| 105 | ||
| 106 | case 2: //ksiazka pozostanie w liscie DoKupienia | |
| 107 | {
| |
| 108 | puts("Ksiazka pozostala w liscie 'Do kupienia'.\n\n");
| |
| 109 | puts("Nacisnij dowolny klawisz, aby powrocic do menu.");
| |
| 110 | fflush(stdin); | |
| 111 | getch(); | |
| 112 | break; | |
| 113 | } | |
| 114 | ||
| 115 | case 3: //POWRÓT DO MENU | |
| 116 | {
| |
| 117 | return; | |
| 118 | } | |
| 119 | } | |
| 120 | ||
| 121 | } | |
| 122 | ||
| 123 | ||
| 124 | //____________________________________________ | |
| 125 | void DodajKsiazkeDK(ADRESDK pierwszy) | |
| 126 | {
| |
| 127 | ||
| 128 | // DODANIE KSIAZKI DO LISTY DOKUPIENIA | |
| 129 | ADRESDK pom; | |
| 130 | pom = pierwszy; | |
| 131 | while(pom->nast) | |
| 132 | {
| |
| 133 | pom->nast = pom; | |
| 134 | } | |
| 135 | pom->nast = (LISTADK*) malloc(sizeof(LISTADK)); | |
| 136 | pom = pom->nast; | |
| 137 | pom->nast = NULL; | |
| 138 | printf("Podaj nazwisko autora: ");
| |
| 139 | fflush(stdin); | |
| 140 | gets(pom->dane.AutorDK); | |
| 141 | printf("Podaj tytul: ");
| |
| 142 | fflush(stdin); | |
| 143 | gets(pom->dane.TytulDK); | |
| 144 | ||
| 145 | puts("Ksiazka zostala dodana do listy 'Do kupienia'.\n\n");
| |
| 146 | puts("Nacisnij dowolny klawisz, aby powrocic do menu.");
| |
| 147 | fflush(stdin); | |
| 148 | getch(); | |
| 149 | system("cls");
| |
| 150 | ||
| 151 | } | |
| 152 | ||
| 153 | ||
| 154 | //____________________________________________ | |
| 155 | void UsunB(ADRESB first, char Usuwany[MAX2]) | |
| 156 | {
| |
| 157 | if(first) | |
| 158 | first = first->next; | |
| 159 | ||
| 160 | while(first->next) //Sprawdzamy dla ka¿dego elementu | |
| 161 | {
| |
| 162 | if(stricmp(first->next->data.TytulB,Usuwany)==0) //Czy ten element to ten sam o którym mówmy | |
| 163 | {
| |
| 164 | ADRESB Us = first->next; //Zapamiêtujemy drania | |
| 165 | first->next = first->next->next; //Usuwamy go z spisów | |
| 166 | free(Us); //Wysy³amy zabójcê by go sprz¹tn¹æ | |
| 167 | return; //I zmywamy siê z miejsca zbrodni | |
| 168 | } | |
| 169 | ||
| 170 | first = first->next; | |
| 171 | } | |
| 172 | ||
| 173 | //Je¿eli nie ma go w liœcie to te¿ koñczymy funkcjê xD | |
| 174 | ||
| 175 | } | |
| 176 | //______________________________________________ | |
| 177 | void UsunDK(ADRESDK pierwszy, char Usuwany[MAX2]) | |
| 178 | {
| |
| 179 | ||
| 180 | if(pierwszy) | |
| 181 | pierwszy = pierwszy->nast; | |
| 182 | ||
| 183 | while(pierwszy->nast) //Sprawdzamy dla ka¿dego elementu | |
| 184 | {
| |
| 185 | if(stricmp(pierwszy->nast->dane.TytulDK,Usuwany) == 0) //Czy ten element to ten sam o którym mówmy | |
| 186 | {
| |
| 187 | ADRESDK Us = pierwszy->nast; //Zapamiêtujemy drania | |
| 188 | pierwszy->nast = pierwszy->nast->nast; //Usuwamy go z spisów | |
| 189 | free(Us); //Wysy³amy zabójcê by go sprz¹tn¹æ | |
| 190 | return; //I zmywamy siê z miejsca zbrodni | |
| 191 | } | |
| 192 | ||
| 193 | pierwszy = pierwszy->nast; | |
| 194 | } | |
| 195 | ||
| 196 | //Je¿eli nie ma go w liœcie to te¿ koñczymy funkcjê xD | |
| 197 | ||
| 198 | ||
| 199 | ||
| 200 | ||
| 201 | } | |
| 202 | ||
| 203 | //______________________________________ | |
| 204 | void Wypozyczone(ADRESB first) | |
| 205 | {
| |
| 206 | if(first) | |
| 207 | first = first->next; | |
| 208 | ||
| 209 | ADRESB tmp; | |
| 210 | tmp = first; | |
| 211 | int licznik = 1; | |
| 212 | ||
| 213 | if(tmp == NULL) | |
| 214 | {
| |
| 215 | printf("Niestety na liscie nie znajduje sie zadna ksiazka.\n\n");
| |
| 216 | return; | |
| 217 | } | |
| 218 | else | |
| 219 | {
| |
| 220 | puts("Oto ksiazki, ktore znajduja sie na liscie:\n");
| |
| 221 | while(tmp) | |
| 222 | {
| |
| 223 | printf("Ksiazka nr %d\n", licznik);
| |
| 224 | printf("Autor: %s\n", tmp->data.AutorB);
| |
| 225 | printf("Tytul: %s\n", tmp->data.TytulB);
| |
| 226 | printf("Rok wydania: %d\n", tmp->data.Rok);
| |
| 227 | printf("Wydawnictwo: %s\n", tmp->data.Wydawnictwo);
| |
| 228 | printf("Typ ksiazki: %s\n", tmp->data.Typ);
| |
| 229 | printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n");
| |
| 230 | tmp = tmp->next; | |
| 231 | licznik++; | |
| 232 | } | |
| 233 | } | |
| 234 | return; | |
| 235 | } | |
| 236 | //____________________________________________________________ | |
| 237 | void Chce(ADRESDK pierwszy) | |
| 238 | {
| |
| 239 | if(pierwszy) | |
| 240 | pierwszy = pierwszy->nast; | |
| 241 | ||
| 242 | ADRESDK pom; | |
| 243 | pom = pierwszy; | |
| 244 | int licznik = 1; | |
| 245 | ||
| 246 | if(pom == NULL) | |
| 247 | {
| |
| 248 | printf("Niestety na liscie nie znajduje sie zadna ksiazka.\n\n");
| |
| 249 | return; | |
| 250 | } | |
| 251 | else | |
| 252 | {
| |
| 253 | puts("Oto ksiazki, ktore znajduja sie na liscie:\n");
| |
| 254 | while(pom) | |
| 255 | {
| |
| 256 | printf("Ksiazka nr %d\n", licznik);
| |
| 257 | printf("Autor: %s\n", pom->dane.AutorDK);
| |
| 258 | printf("Tytul: %s\n", pom->dane.TytulDK);
| |
| 259 | printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n");
| |
| 260 | pom = pom->nast; | |
| 261 | licznik++; | |
| 262 | } | |
| 263 | } | |
| 264 | return; | |
| 265 | } | |
| 266 | ||
| 267 | //____________________________________________________________________ | |
| 268 | void SortujAutorzyB(ADRESB first) | |
| 269 | {
| |
| 270 | ADRESB Nowy = 0; //Bedziemy tu dodawac elementy od "najwiekszego". Umieszczamy na pocz¹tku listy, wiêc ostatecznie kolejka bêdzie jakby odwrócona ;) | |
| 271 | ||
| 272 | while(first->next) // Póki zosta³y jakieœ elementy na liœcie first | |
| 273 | {
| |
| 274 | ADRESB Tmp = first; // Bedziemy tym siê przemieszczaæ po liœcie | |
| 275 | ADRESB Max = first; // A tu mamy poprzedni element maksymalnego | |
| 276 | ||
| 277 | while(Tmp->next)//Póki tmp nie jest przedostatnim elementem (bo pobieramy wskaŸnik na poprzedni przed porównywanym) | |
| 278 | {
| |
| 279 | if(strcmp(Max->next->data.AutorB,Tmp->next->data.AutorB)>0) //Je¿eli "obecny" jest "wiêkszy" od minimalnego | |
| 280 | Max= Tmp; | |
| 281 | Tmp = Tmp->next; | |
| 282 | } | |
| 283 | ||
| 284 | //W tym miejscu Min wskazuje na "najwiekszy" element w liœcie A; | |
| 285 | ADRESB Buf = Max->next; //Zapamietujemy Min | |
| 286 | Max->next = Max->next->next; //Usuwamy je z pierwszej listy | |
| 287 | Buf->next = Nowy; //Te dwie linie | |
| 288 | Nowy = Buf; //Dodajemy Maxa do nowej listy | |
| 289 | } | |
| 290 | ||
| 291 | first->next = Nowy; //No i tylko przypisujemy spowrotem "now¹" listê na miejsce starej; | |
| 292 | return; //Gotowe | |
| 293 | } | |
| 294 | ||
| 295 | //____________________________________________________________________ | |
| 296 | void SortujTytulyB(ADRESB first) | |
| 297 | {
| |
| 298 | ADRESB Nowy = 0; | |
| 299 | ||
| 300 | while(first->next) | |
| 301 | {
| |
| 302 | ADRESB Tmp = first; | |
| 303 | ADRESB Max = first; | |
| 304 | ||
| 305 | while(Tmp->next) | |
| 306 | {
| |
| 307 | if(strcmp(Max->next->data.TytulB, Tmp->next->data.TytulB) > 0) | |
| 308 | Max= Tmp; | |
| 309 | Tmp = Tmp->next; | |
| 310 | } | |
| 311 | ||
| 312 | ADRESB Buf = Max->next; | |
| 313 | Max->next = Max->next->next; | |
| 314 | Buf->next = Nowy; | |
| 315 | Nowy = Buf; | |
| 316 | } | |
| 317 | ||
| 318 | first->next = Nowy; | |
| 319 | return; | |
| 320 | } | |
| 321 | //____________________________________________________________________ | |
| 322 | ||
| 323 | - | void Zapisz(ADRESB first, ADRESDK pierwszy, FILE *moon) |
| 323 | + | |
| 324 | {
| |
| 325 | if(first) | |
| 326 | first = first->next; | |
| 327 | if(pierwszy) | |
| 328 | pierwszy = pierwszy->nast; | |
| 329 | ||
| 330 | ADRESB Popf = first; //W Popf zapamiêtujemy poprzedni element | |
| 331 | while(first->next) //Póki jest nastêpny element | |
| 332 | {
| |
| 333 | first = first->next; //Przechodzimy na niego | |
| 334 | free(Popf); //Zwalniamy poprzedni | |
| 335 | Popf = first; //I zapamiêtujemy obecny | |
| 336 | } | |
| 337 | free(Popf); //Zwalniamy jeszcze ostatni element | |
| 338 | ||
| 339 | ADRESDK Popp = pierwszy; //Analogincznie | |
| 340 | while(pierwszy->nast) | |
| 341 | {
| |
| 342 | pierwszy = pierwszy->nast; | |
| 343 | free(Popp); | |
| 344 | Popp = pierwszy; | |
| 345 | } | |
| 346 | free(Popf); | |
| 347 | return; | |
| 348 | } | |
| 349 | ||
| 350 | ||
| 351 | void Zapisz(ADRESB first, ADRESDK pierwszy, char Sciezka1[], char Sciezka2[]) | |
| 352 | {
| |
| 353 | if(first) | |
| 354 | first = first->next; | |
| 355 | if(pierwszy) | |
| 356 | pierwszy = pierwszy->nast; | |
| 357 | ||
| 358 | ADRESB tmp; | |
| 359 | tmp = first; | |
| 360 | Biblioteka b; | |
| 361 | ADRESDK pom; | |
| 362 | pom = pierwszy; | |
| 363 | DoKupienia d; | |
| 364 | - | void Wczytaj(ADRESB first, ADRESDK pierwszy, char Sciezka[]) |
| 364 | + | |
| 365 | FILE *moon = fopen(Sciezka1,"wb"); | |
| 366 | ||
| 367 | //ZAPISYWANIE DANYCH 'BIBLIOTEKA' | |
| 368 | while(tmp) | |
| 369 | {
| |
| 370 | strcpy(b.AutorB, tmp->data.AutorB); | |
| 371 | - | FILE *food = fopen(Sciezka,"rb"); |
| 371 | + | |
| 372 | b.Rok = tmp->data.Rok; | |
| 373 | - | /*if(food == 0) |
| 373 | + | |
| 374 | strcpy(b.Wypozyczona, tmp->data.Wypozyczona); | |
| 375 | strcpy(b.Komu, tmp->data.Komu); | |
| 376 | strcpy(b.Typ, tmp->data.Typ); | |
| 377 | ||
| 378 | - | }*/ |
| 378 | + | |
| 379 | tmp = tmp->next; | |
| 380 | } | |
| 381 | ||
| 382 | fclose(moon); | |
| 383 | moon = fopen(Sciezka2,"wb"); | |
| 384 | //ZAPISYWANIE DANYCH 'DOKUPIENIA' | |
| 385 | while(pom) | |
| 386 | {
| |
| 387 | strcpy(d.AutorDK, pom->dane.AutorDK); | |
| 388 | strcpy(d.TytulDK, pom->dane.TytulDK); | |
| 389 | ||
| 390 | fwrite(&d, sizeof(DoKupienia), 1, moon); | |
| 391 | pom = pom->nast; | |
| 392 | } | |
| 393 | ||
| 394 | fclose(moon); | |
| 395 | } | |
| 396 | ||
| 397 | //_________________________________________________ | |
| 398 | void Wczytaj(ADRESB first, ADRESDK pierwszy, char Sciezka1[],char Sciezka2[]) | |
| 399 | {
| |
| 400 | Zwolnij(first); | |
| 401 | Zwolnij(pierwszy); | |
| 402 | ADRESB tmp, help; | |
| 403 | Biblioteka b; | |
| 404 | ADRESDK pom, rat; | |
| 405 | DoKupienia d; | |
| 406 | char nowyplik[50]; | |
| 407 | FILE *food = fopen(Sciezka1,"rb"); | |
| 408 | ||
| 409 | if(food == 0) | |
| 410 | {
| |
| 411 | printf("Pirat nie zyje! Pliku nie ma!\n\n");
| |
| 412 | getch(); | |
| 413 | return; | |
| 414 | } | |
| 415 | ||
| 416 | while(fread(&b, sizeof(Biblioteka), 1, food) == 1) | |
| 417 | {
| |
| 418 | tmp=(LISTAB*)malloc(sizeof(LISTAB)); | |
| 419 | strcpy(tmp->data.AutorB, b.AutorB); | |
| 420 | strcpy(tmp->data.TytulB, b.TytulB); | |
| 421 | tmp->data.Rok = b.Rok; | |
| 422 | strcpy(tmp->data.Wydawnictwo, b.Wydawnictwo); | |
| 423 | strcpy(tmp->data.Wypozyczona, b.Wypozyczona); | |
| 424 | strcpy(tmp->data.Komu, b.Komu); | |
| 425 | strcpy(tmp->data.Typ, b.Typ); | |
| 426 | tmp->next = NULL; | |
| 427 | ||
| 428 | first->next = tmp; | |
| 429 | first = tmp; | |
| 430 | } | |
| 431 | ||
| 432 | food = fopen(Sciezka2,"wb"); | |
| 433 | fclose(food); | |
| 434 | ||
| 435 | if(food == 0) | |
| 436 | {
| |
| 437 | printf("Pirat nie zyje! Pliku nie ma!\n\n");
| |
| 438 | getch(); | |
| 439 | return; | |
| 440 | } | |
| 441 | ||
| 442 | while(fread(&d, sizeof(DoKupienia), 1, food) == 1) | |
| 443 | {
| |
| 444 | ||
| 445 | strcpy(pom->dane.AutorDK, d.AutorDK); | |
| 446 | strcpy(pom->dane.TytulDK, d.TytulDK); | |
| 447 | ||
| 448 | - | char nazwa[50]; //nazwa jaka uzytkownik nada dla pliku |
| 448 | + | |
| 449 | ||
| 450 | pierwszy->nast = pom; | |
| 451 | pierwszy = pom; | |
| 452 | } | |
| 453 | ||
| 454 | printf("\n\nUdalo sie otworzyc plik\n\nWcisnij dowolny klawisz aby kontynuowac.\n");
| |
| 455 | getch(); | |
| 456 | system("cls");
| |
| 457 | ||
| 458 | fclose(food); //Zamykamy plik | |
| 459 | return; | |
| 460 | } | |
| 461 | ||
| 462 | //___________________________________________________________________ | |
| 463 | ||
| 464 | //____________________________________________________________________ | |
| 465 | int main() | |
| 466 | {
| |
| 467 | FILE *moon; | |
| 468 | char nazwa1[50]; //nazwa pierwszego pliku uzytkownik nada dla pliku | |
| 469 | char nazwa2[50]; //nazwa drugiego | |
| 470 | ADRESB first, tmp; | |
| 471 | first = (LISTAB*) malloc(sizeof(LISTAB)); | |
| 472 | first->next = NULL; | |
| 473 | ADRESDK pierwszy, pom; | |
| 474 | pierwszy = (LISTADK*) malloc(sizeof(LISTADK)); | |
| 475 | pierwszy->nast = NULL; | |
| 476 | ||
| 477 | int numer; | |
| 478 | int zapis; | |
| 479 | int sort; | |
| 480 | - | printf("\nPodaj nazwe pliku do wczytania: \n");
|
| 480 | + | |
| 481 | int usuwanie; | |
| 482 | int wybor; | |
| 483 | - | moon = fopen(nazwa, "rb"); |
| 483 | + | |
| 484 | - | if(moon = NULL) |
| 484 | + | |
| 485 | tmp = first; | |
| 486 | - | printf("Plik o podanej nazwie nie istnieje.\n");
|
| 486 | + | |
| 487 | printf("1. Stworz nowy plik \n2. Wczytaj plik\n\n");
| |
| 488 | scanf("%d", &wybierz);
| |
| 489 | switch(wybierz) | |
| 490 | {
| |
| 491 | - | /*else |
| 491 | + | |
| 492 | printf("\nPodaj nazwe nowego pliku: \n");
| |
| 493 | - | Wczytaj(first, pierwszy, nazwa); |
| 493 | + | |
| 494 | gets(nazwa); | |
| 495 | - | }*/ |
| 495 | + | |
| 496 | //fclose(moon); | |
| 497 | //moon = fopen(nazwa,"rb"); | |
| 498 | break; | |
| 499 | ||
| 500 | case 2: | |
| 501 | printf("\nPodaj nazwe pliku DK do wczytania: \n");
| |
| 502 | fflush(stdin); | |
| 503 | gets(nazwa1); | |
| 504 | ||
| 505 | printf("\nPodaj nazwe pliku S do wczytania: \n");
| |
| 506 | fflush(stdin); | |
| 507 | gets(nazwa2); | |
| 508 | Wczytaj(first, pierwszy, nazwa, nazwa2); | |
| 509 | system("cls");
| |
| 510 | ||
| 511 | break; | |
| 512 | ||
| 513 | } | |
| 514 | ||
| 515 | Wczytaj(first, pierwszy, nazwa); //Wczytujemy na wstepie dane | |
| 516 | ||
| 517 | do{
| |
| 518 | printf("1. Wypozyczone\n2. Ksiazki, ktore chcesz kupic\n3. Dodaj ksiazke\n4. Usun ksiazke \n5. Sortowanie\n6. Autorzy - ilosc ksiazek\n7. Najpopularniejsza kategoria\n8. Wczytaj nowy plik\n9. Zapisz i zakoncz\n\n");
| |
| 519 | {
| |
| 520 | do{
| |
| 521 | scanf("%d", &numer);
| |
| 522 | if(numer<1 || numer>9) | |
| 523 | {
| |
| 524 | printf("Zly numer. Wybierz prawidlowa kategorie\n");
| |
| 525 | } | |
| 526 | }while(numer<1 || numer>9); | |
| 527 | } | |
| 528 | ||
| 529 | system("cls");
| |
| 530 | ||
| 531 | switch(numer) | |
| 532 | {
| |
| 533 | case 1: //KSIAZKI KTORE MAM (lista Biblioteka) | |
| 534 | Wypozyczone(first); | |
| 535 | printf("\nWcisnij dowolny klawisz aby wrocic do menu.\n");
| |
| 536 | getch(); | |
| 537 | system("cls");
| |
| 538 | break; | |
| 539 | ||
| 540 | case 2: //KSIAZKI KTORE CHCE KUPIC (lista DoKupienia) | |
| 541 | Chce(pierwszy); | |
| 542 | printf("\nWcisnij dowolny klawisz aby wrocic do menu.\n");
| |
| 543 | getch(); | |
| 544 | system("cls");
| |
| 545 | break; | |
| 546 | ||
| 547 | case 3: //DODANIE KSIAZKI | |
| 548 | ||
| 549 | puts("Gdzie chcesz dodac nowa ksiazke?\n1. Biblioteka \n2. Do kupienia \n3. Powrot do menu");
| |
| 550 | int nazwa; | |
| 551 | do{
| |
| 552 | scanf("%d", &gdzieDodac);
| |
| 553 | if(gdzieDodac<1 || gdzieDodac>3) | |
| 554 | {
| |
| 555 | printf("Zly numer. Podaj prawidlowa kategorie.");
| |
| 556 | } | |
| 557 | } while(gdzieDodac<1 || gdzieDodac>3); | |
| 558 | system("cls");
| |
| 559 | switch(gdzieDodac) | |
| 560 | {
| |
| 561 | case 1: | |
| 562 | DodajKsiazkeB(first, pierwszy); | |
| 563 | break; | |
| 564 | ||
| 565 | case 2: | |
| 566 | DodajKsiazkeDK(pierwszy); | |
| 567 | break; | |
| 568 | ||
| 569 | //system("cls");
| |
| 570 | } | |
| 571 | printf("\nWcisnij dowolny klawisz aby wrocic do menu.\n");
| |
| 572 | getch(); | |
| 573 | system("cls");
| |
| 574 | break; | |
| 575 | ||
| 576 | ||
| 577 | case 4: //USUNIECIE KSIAZKI | |
| 578 | printf("Skad chcesz usunac ksiazke?\n1.Biblioteka\n2.Do kupienia\n\n");
| |
| 579 | scanf("%d", &usuwanie);
| |
| 580 | char Tytul[MAX2]; | |
| 581 | switch(usuwanie) | |
| 582 | {
| |
| 583 | case 1: | |
| 584 | printf("Podaj tytul ksiazki, ktora chcesz usunac: \n");
| |
| 585 | fflush(stdin); | |
| 586 | gets(Tytul); | |
| 587 | UsunB(first, Tytul); | |
| 588 | printf("Ksiazka zostala usunieta z listy.\n\n");
| |
| 589 | printf("\nWcisnij dowolny klawisz aby wrocic do menu.\n");
| |
| 590 | getch(); | |
| 591 | system("cls");
| |
| 592 | break; | |
| 593 | ||
| 594 | case 2: | |
| 595 | printf("Podaj tytul ksiazki ktora chcesz usunac: \n\n");
| |
| 596 | fflush(stdin); | |
| 597 | //char Tytul[MAX2]; | |
| 598 | gets(Tytul); | |
| 599 | UsunDK(pierwszy, Tytul); | |
| 600 | printf("Ksiazka zostala usunieta z listy.\n\n");
| |
| 601 | int dodajdoB; | |
| 602 | printf("Czy chcesz, aby ksiazka zostala jednoczesnie dodana do listy 'Biblioteka'? \n1. TAK \n2. NIE\n\n");
| |
| 603 | scanf("%d", &dodajdoB);
| |
| 604 | switch(dodajdoB) | |
| 605 | {
| |
| 606 | case 1: | |
| 607 | while(tmp->next) | |
| 608 | {
| |
| 609 | tmp = tmp->next; | |
| 610 | } | |
| 611 | tmp->next = (ADRESB)malloc(sizeof(LISTAB)); | |
| 612 | tmp = tmp->next; | |
| 613 | tmp->next = NULL; | |
| 614 | printf("Uzupelnij brakujace informacje o ksiazce:\n");
| |
| 615 | printf("Podaj rok wydania ksiazki: ");
| |
| 616 | fflush(stdin); | |
| 617 | scanf("%d", &tmp->data.Rok);
| |
| 618 | printf("Podaj wydawnictwo: ");
| |
| 619 | fflush(stdin); | |
| 620 | gets(tmp->data.Wydawnictwo); | |
| 621 | printf("Podaj typ ksiazki (np.: kryminal, dramat, poradnik, itd.: ");
| |
| 622 | fflush(stdin); | |
| 623 | gets(tmp->data.Typ); | |
| 624 | ||
| 625 | system("cls");
| |
| 626 | printf("Ksiazka zostala dodana do listy Biblioteka.\n\n");
| |
| 627 | break; | |
| 628 | ||
| 629 | case 2: | |
| 630 | printf("Ksiazka pozostala w liscie 'Biblioteka'");
| |
| 631 | break; | |
| 632 | }break; | |
| 633 | }break; | |
| 634 | ||
| 635 | case 5: //SORTOWANIE | |
| 636 | printf("Wedlug jakiej kategorii chcesz posortowac? \n1. Autorzy \n2. Tytuly\n");
| |
| 637 | fflush(stdin); | |
| 638 | scanf("%d", &sort);
| |
| 639 | switch(sort) | |
| 640 | {
| |
| 641 | case 1: | |
| 642 | SortujAutorzyB(first); | |
| 643 | printf("\n\nWcisnij dowolny klawisz, aby powrocic do menu.\n\n");
| |
| 644 | getch(); | |
| 645 | system("cls");
| |
| 646 | break; | |
| 647 | ||
| 648 | - | Zapisz(first, pierwszy, moon); |
| 648 | + | |
| 649 | - | puts("Plik zostal zapisany.");
|
| 649 | + | |
| 650 | printf("\n\nWcisnij dowolny klawisz, aby powrocic do menu.\n\n");
| |
| 651 | - | Zwolnij(first, pierwszy); |
| 651 | + | |
| 652 | - | Wczytaj(first, pierwszy, Tytul); |
| 652 | + | |
| 653 | break; | |
| 654 | }break; | |
| 655 | ||
| 656 | case 8: //WCZYTANIE I OPEROWANIE NA NOWYM PLIKU | |
| 657 | system("cls");
| |
| 658 | printf("Czy zapisac dotychczasowy? \n1. TAK \n2. NIE\n");
| |
| 659 | scanf("%d", &zapis);
| |
| 660 | switch(zapis) | |
| 661 | {
| |
| 662 | case 1: | |
| 663 | printf("gdzie zapisac? 1 Plik:");
| |
| 664 | fflush(stdin); | |
| 665 | gets(nazwa1); | |
| 666 | printf("gdzie zapisac? 2 Plik:");
| |
| 667 | fflush(stdin); | |
| 668 | gets(nazwa2); | |
| 669 | - | Zapisz(first, pierwszy, moon); |
| 669 | + | Zapisz(first, pierwszy, nazwa1,nazwa2); |
| 670 | puts("Plik zostal zapisany.\n");
| |
| 671 | ||
| 672 | printf("gdzie wczytac? 1 Plik:");
| |
| 673 | fflush(stdin); | |
| 674 | gets(nazwa1); | |
| 675 | printf("gdzie wczytac? 2 Plik:");
| |
| 676 | fflush(stdin); | |
| 677 | gets(nazwa2); | |
| 678 | getch(); | |
| 679 | Wczytaj(first, pierwszy, nazwa1, nazwa2); | |
| 680 | printf("\nWcisnij dowolny klawisz aby wrocic do menu.\n");
| |
| 681 | getch(); | |
| 682 | system("cls");
| |
| 683 | break; | |
| 684 | ||
| 685 | case 2: // Nie rozumiem co tu robisz | |
| 686 | printf("\nNazwa nowego pliku:");
| |
| 687 | fflush(stdin); | |
| 688 | gets(Tytul); | |
| 689 | printf("\nWcisnij dowolny klawisz aby wrocic do menu.\n");
| |
| 690 | getch(); | |
| 691 | system("cls");
| |
| 692 | break; | |
| 693 | } break; | |
| 694 | ||
| 695 | case 9: //ZAPIS DANYCH I KONIEC PROGRAMU | |
| 696 | printf("gdzie zapisac? 1 Plik:");
| |
| 697 | fflush(stdin); | |
| 698 | gets(nazwa1); | |
| 699 | printf("gdzie zapisac? 2 Plik:");
| |
| 700 | Zapisz(first, pierwszy, nazwa1, nazwa2); | |
| 701 | printf("Wszystkie dane zostaly zapisane.\nDo zobaczenia w drugim semestrze :)\n\n");
| |
| 702 | break; | |
| 703 | ||
| 704 | } | |
| 705 | ||
| 706 | }while(numer>0 && numer<9); | |
| 707 | ||
| 708 | ||
| 709 | return 0; | |
| 710 | } |