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 | } |