Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <errno.h>
  5. #define lenght_of_personal_data 15
  6.  
  7. struct klient
  8. {
  9. unsigned int numer_karty;
  10. char nazwisko[lenght_of_personal_data];
  11. char imie[lenght_of_personal_data];
  12. char telefon[10];
  13. struct klient *nastepny;
  14. };
  15.  
  16. struct ksiazka
  17. {
  18. unsigned int ID;
  19. char tytul[50];
  20. unsigned int rok;
  21. char autor[2*lenght_of_personal_data+1];
  22. char gatunek[15];
  23. unsigned char liczba_egzemplarzy;
  24. unsigned char liczba_wypozyczonych;
  25. struct ksiazka *nastepny;
  26. };
  27.  
  28. struct wypozyczenie
  29. {
  30. unsigned int numer_karty;
  31. unsigned int ID_ksiazki;
  32. unsigned char rok_od;
  33. unsigned char miesiac_od;
  34. unsigned char dzien_od;
  35. unsigned char rok_do;
  36. unsigned char miesiac_do;
  37. unsigned char dzien_do;
  38. struct wypozyczenie *nastepny;
  39. };
  40.  
  41. struct klient wczytaj_nowego_klienta()
  42. {
  43. struct klient nowy;
  44. puts("Wypełnij dane klienta: ");
  45. printf("Numer: \t");
  46. scanf("%u", &nowy.numer_karty);
  47. printf("Imie:\t ");
  48. scanf("%s", &nowy.imie);
  49. printf("Nazwisko: \t");
  50. scanf("%s", &nowy.nazwisko);
  51. do{
  52. printf("Telefon: ");
  53. scanf("%s", &nowy.telefon);
  54. }while(sprawdz_telefon(nowy.telefon)!=0);
  55. return nowy;
  56. };
  57.  
  58. int sprawdz_telefon(char telefon[])
  59. {
  60. int i = 0;
  61. for(i; i <9; i++)
  62. {
  63. if(telefon[i]>='0'&&telefon[i]<='9'){}
  64. else return -1;
  65. }
  66. if(strlen(telefon)!=9) return -2;
  67. else return 0;
  68. }
  69.  
  70. struct ksiazka wczytaj_nowa_ksiazke()
  71. {
  72. struct ksiazka nowy;
  73. puts("Wypełnij dane ksiazki: ");
  74. printf("Identyfikator: \t");
  75. scanf("%u", &nowy.ID);
  76. while(getchar()!='\n');
  77. printf("Tytul:\t ");
  78. scanf("%[^\n]s", &nowy.tytul);
  79. while(getchar()!='\n');
  80. printf("Rok wydania: \t");
  81. scanf("%u", &nowy.rok);
  82. while(getchar()!='\n');
  83. printf("Autor: ");
  84. scanf("%[^\n]s", &nowy.autor);
  85. while(getchar()!='\n');
  86. printf("Gatunek: ");
  87. scanf("%[^\n]s", &nowy.gatunek);
  88. while(getchar()!='\n');
  89. printf("Liczba egzemplarzy: ");
  90. scanf("%u", &nowy.liczba_egzemplarzy);
  91. while(getchar()!='\n');
  92. printf("Liczba wypozyczonych: ");
  93. scanf("%u", &nowy.liczba_wypozyczonych);
  94. while(getchar()!='\n');
  95. return nowy;
  96. };
  97.  
  98. struct klient *create_list_client()
  99. {
  100. struct klient *first =(struct klient *)malloc(sizeof(struct klient));
  101. if(first)
  102. {
  103. struct klient nowy;
  104. nowy = wczytaj_nowego_klienta();
  105. first->numer_karty = nowy.numer_karty;
  106. strcpy(first->imie, nowy.imie);
  107. strcpy(first->nazwisko, nowy.nazwisko);
  108. strcpy(first->telefon, nowy.telefon);
  109. first->nastepny = NULL;
  110. }
  111. return first;
  112. }
  113.  
  114. struct ksiazka *create_list_book()
  115. {
  116. struct ksiazka *first =(struct ksiazka *)malloc(sizeof(struct ksiazka));
  117. if(first)
  118. {
  119. struct ksiazka nowy;
  120. nowy = wczytaj_nowa_ksiazke();
  121. first->ID = nowy.ID;
  122. strcpy(first->tytul, nowy.tytul);
  123. first->rok = nowy.rok;
  124. strcpy(first->autor, nowy.autor);
  125. strcpy(first->gatunek, nowy.gatunek);
  126. first->liczba_egzemplarzy = nowy.liczba_egzemplarzy;
  127. first->liczba_wypozyczonych = nowy.liczba_wypozyczonych;
  128. first->nastepny = NULL;
  129. }
  130. return first;
  131. }
  132.  
  133.  
  134.  
  135. struct klient *add_node_client(struct klient *list_pointer)
  136. {
  137. struct klient *nowy_klient = (struct klient *)malloc(sizeof(struct klient));
  138. if(list_pointer && nowy_klient) {
  139. struct klient nowy;
  140. nowy = wczytaj_nowego_klienta();
  141. nowy_klient->numer_karty = nowy.numer_karty;
  142. strcpy(nowy_klient->imie, nowy.imie);
  143. strcpy(nowy_klient->nazwisko, nowy.nazwisko);
  144. strcpy(nowy_klient->telefon, nowy.telefon);
  145. nowy_klient->nastepny = list_pointer->nastepny;
  146. list_pointer->nastepny = nowy_klient;
  147. }
  148. return list_pointer;
  149. }
  150.  
  151. struct ksiazka *add_node_book(struct ksiazka *list_pointer)
  152. {
  153. struct ksiazka *nowa_ksiazka = (struct ksiazka *)malloc(sizeof(struct ksiazka));
  154. if(list_pointer && nowa_ksiazka) {
  155. struct ksiazka nowy;
  156. nowy = wczytaj_nowa_ksiazke();
  157. nowa_ksiazka->ID = nowy.ID;
  158. nowa_ksiazka->ID = nowy.ID;
  159. strcpy(nowa_ksiazka->tytul, nowy.tytul);
  160. nowa_ksiazka->rok = nowy.rok;
  161. strcpy(nowa_ksiazka->autor, nowy.autor);
  162. strcpy(nowa_ksiazka->gatunek, nowy.gatunek);
  163. nowa_ksiazka->liczba_egzemplarzy = nowy.liczba_egzemplarzy;
  164. nowa_ksiazka->liczba_wypozyczonych = nowy.liczba_wypozyczonych;
  165. nowa_ksiazka->nastepny = list_pointer->nastepny;
  166. list_pointer->nastepny = nowa_ksiazka;
  167. }
  168. return list_pointer;
  169. }
  170.  
  171.  
  172. void wyswietlanie_klient(struct klient *a){
  173. struct klient *tmp;
  174.  
  175. tmp = a;
  176. if (tmp == NULL)
  177. printf("Brak elementow, wybierz z listy:\n");
  178. else
  179. {
  180. while (tmp != NULL)
  181. {
  182. printf("ID: %u\nImie: %s\nNazwisko: %s \nTelefon: %s\n", tmp->numer_karty, tmp->imie, tmp->nazwisko, tmp->telefon);
  183. printf("\n");
  184. tmp = tmp->nastepny;
  185. }
  186. }
  187. }
  188. struct klient *find_previous_node(struct klient *list_pointer, int id)
  189. {
  190. struct klient *previous = NULL;
  191. while(list_pointer && list_pointer->numer_karty!=id) {
  192. previous=list_pointer;
  193. list_pointer=list_pointer->nastepny;
  194. }
  195. return previous;
  196. };
  197. struct klient *delete_at_front(struct klient *list_pointer)
  198. {
  199. struct klient *next = list_pointer->nastepny;
  200. free(list_pointer);
  201. return next;
  202. };
  203. struct klient *delete_node(struct klient *list_pointer, int id)
  204. {
  205. if(list_pointer) {
  206. if(list_pointer->numer_karty==id)
  207. return delete_at_front(list_pointer);
  208. else {
  209. struct list_node *previous =
  210. find_previous_node(list_pointer,id);
  211. delete_middle_or_last_node(previous);
  212. }
  213. }
  214. return list_pointer;
  215. };
  216.  
  217.  
  218.  
  219. void delete_middle_or_last_node(struct klient *previous)
  220. {
  221. struct klient *node = previous->nastepny;
  222. if(node) {
  223. previous->nastepny = node->nastepny;
  224. free(node);
  225. }
  226. }
  227. //asdasdasd
  228. struct ksiazka *find_previous_node_ksiazka(struct ksiazka *list_pointer, int id)
  229. {
  230. struct ksiazka *previous = NULL;
  231. while(list_pointer && list_pointer->ID!=id) {
  232. previous=list_pointer;
  233. list_pointer=list_pointer->nastepny;
  234. }
  235. return previous;
  236. };
  237. struct ksiazka *delete_at_front_ksiazka(struct ksiazka *list_pointer)
  238. {
  239. struct ksiazka *next = list_pointer->nastepny;
  240. free(list_pointer);
  241. return next;
  242. };
  243. struct ksiazka *delete_node_ksiazka(struct ksiazka *list_pointer, int id)
  244. {
  245. if(list_pointer) {
  246. if(list_pointer->ID==id)
  247. return delete_at_front_ksiazka(list_pointer);
  248. else {
  249. struct list_node *previous =
  250. find_previous_node_ksiazka(list_pointer,id);
  251. delete_middle_or_last_node_ksiazka(previous);
  252. }
  253. }
  254. return list_pointer;
  255. };
  256.  
  257.  
  258.  
  259. void delete_middle_or_last_node_ksiazka(struct ksiazka *previous)
  260. {
  261. struct ksiazka *node = previous->nastepny;
  262. if(node) {
  263. previous->nastepny = node->nastepny;
  264. free(node);
  265. }
  266. }
  267.  
  268.  
  269.  
  270.  
  271. void wyswietlanie_ksiazek(struct ksiazka *a){
  272. struct ksiazka *tmp;
  273.  
  274. tmp = a;
  275. if (tmp == NULL)
  276. printf("Brak elementow, wybierz z listy:\n");
  277. else
  278. {
  279. while (tmp != NULL)
  280. {
  281. printf("ID: %u\nTytul: %s\nRok: %u\nAutor: %s\nGatunek: %s\nLiczba egzemplarzy: %u\nLiczba wypozyczonych: %u\n", tmp->ID, tmp->tytul, tmp->rok, tmp->autor, tmp->gatunek, tmp->liczba_egzemplarzy, tmp->liczba_wypozyczonych);
  282. printf("\n");
  283. tmp = tmp->nastepny;
  284. }
  285. }
  286. }
  287.  
  288. void modyfikuj_klienta(struct klient *a)
  289. {
  290.  
  291. }
  292.  
  293.  
  294. int main()
  295. {
  296. system("chcp 1250>null");
  297. struct klient *a = NULL;
  298. struct ksiazka *ksiazka = NULL;
  299. unsigned int opcja = 0;
  300. unsigned char ile = 0;
  301. printf("Witamy w projekcie Wypożyczalnia książek");
  302. printf("Wybierz co chesz zrobić:\n");
  303. puts("1. Dodawanie/usuwanie/edycja/wyswietlanie klientów");
  304. puts("2. Dodawanie/usuwanie/edycja/wyswietlanie książek");
  305. puts("3. Wypożyczenie/oddanie książki");
  306. puts("4. Wyœwietlenie książek");
  307. puts("5. Wyszukanie książek");
  308. puts("6. Zapisanie/wczytanie danych o klientach, książkach i wypożyczeniach");
  309. puts("0. Wyjście");
  310. printf("Wybieram opcje nr. ");
  311. while(scanf("%u", &opcja))
  312. {
  313. int id;
  314. switch(opcja)
  315. {
  316. case 1: //klienci
  317. printf("Co teraz chcesz zrobić: \n");
  318. system("cls");
  319. printf("1. Dodawanie\n2. Usuwanie\n3. Edytowanie\n4. Wyswietlanie\n0. Powrót\n");
  320. while(scanf("%u", &opcja)!=5){
  321. switch(opcja)
  322. {
  323. case 1:
  324.  
  325. if(a==NULL)
  326. {
  327. a= create_list_client();
  328. }
  329. else
  330. {
  331. a = add_node_client(a);
  332. }
  333.  
  334. printf("Co teraz chcesz zrobić: \n");
  335. system("cls");
  336. break;
  337.  
  338. case 2:
  339. wyswietlanie_klient(a);
  340. if(a==NULL){}
  341. else{
  342. puts("Podaj ID klienta którego chcesz usunąć: ");
  343. scanf("%d", &id);
  344. a = delete_node(a, id);
  345. }
  346.  
  347. break;
  348.  
  349. case 3:
  350. wyswietlanie_klient(a);
  351. if(a==NULL){}else{
  352. puts("Podaj ID klienta którego chcesz modyfikować: ");
  353. scanf("%u", &id);}
  354.  
  355. break;
  356.  
  357. case 4:
  358. wyswietlanie_klient(a);
  359. break;
  360.  
  361. case 0:
  362. break;
  363.  
  364. default:
  365. printf("Niepoprawna komenda");
  366. break;
  367. }
  368. printf("1. Dodawanie\n2. Usuwanie\n3. Edytowanie\n4. Wyswietlanie\n0. Powrót\n");
  369. if(opcja==0)
  370. break;
  371. }
  372.  
  373.  
  374. break;
  375. case 2: //ksiazki
  376. printf("Co teraz chcesz zrobić: \n");
  377. system("cls");
  378. printf("1. Dodawanie\n2. Usuwanie\n3. Edytowanie\n4. Wyswietlanie\n0. Powrót\n");
  379. while(scanf("%u", &opcja)!=5){
  380. switch(opcja)
  381. {
  382. case 1:
  383.  
  384. if(ksiazka==NULL)
  385. {
  386. ksiazka= create_list_book();
  387. }
  388. else
  389. {
  390. ksiazka = add_node_book(ksiazka);
  391. }
  392. printf("Co teraz chcesz zrobić: \n");
  393. system("cls");
  394. break;
  395.  
  396. case 2:
  397. wyswietlanie_ksiazek(ksiazka);
  398. puts("Podaj ID klienta którego chcesz usunąć: ");
  399. scanf("%d", &id);
  400. ksiazka = delete_node_ksiazka(ksiazka, id);
  401. break;
  402.  
  403. case 3:
  404.  
  405. break;
  406.  
  407. case 4:
  408. wyswietlanie_ksiazek(ksiazka);
  409. break;
  410.  
  411. case 0:
  412. break;
  413.  
  414. default:
  415. printf("Niepoprawna komenda");
  416. break;
  417. }
  418. printf("1. Dodawanie\n2. Usuwanie\n3. Edytowanie\n4. Wyswietlanie\n0. Powrót\n");
  419. if(opcja==0)
  420. break;
  421. }
  422. break;
  423. case 3:
  424.  
  425. break;
  426. case 4:
  427.  
  428. break;
  429. case 5:
  430.  
  431. break;
  432. case 6:
  433.  
  434. break;
  435. case 0:
  436. return 0;
  437. break;
  438. default:
  439. printf("Opcja o numerze %u nie istnieje!", opcja);
  440. break;
  441. }
  442. system("cls");
  443. printf("Witamy w projekcie Wypożyczalnia książek");
  444. printf("Wybierz co chesz zrobić:\n");
  445. puts("1. Dodawanie/usuwanie/edycja/wyswietlanie klientów");
  446. puts("2. Dodawanie/usuwanie/edycja/wyswietlanie książek");
  447. puts("3. Wypo¿yczenie/oddanie książki");
  448. puts("4. Wyœwietlenie książek");
  449. puts("5. Wyszukanie książek");
  450. puts("6. Zapisanie/wczytanie danych o klientach, książkach i wypożyczeniach");
  451. puts("0. Wyjście");
  452. printf("Wybieram opcje nr. ");
  453. }
  454. return 0;
  455. }
  456.  
  457. /*
  458. Wypo¿yczalnia ksi¹¿ek.
  459. Dodawanie/usuwanie/edycja klientów (numer karty, nazwisko, imiê, telefon).
  460. Dodawanie/usuwanie/edycja ksi¹¿ek (ID, tytu³, rok, autor, gatunek, liczba egzemplarzy, liczba wypo¿yczonych).
  461. Wypo¿yczanie/oddawanie ksi¹¿ek (kto wypo¿yczy³ (numer karty), któr¹ ksi¹¿kê (ID), kiedy, do kiedy).
  462. Wyœwietlanie ksi¹¿ek z mo¿liwoœci¹ sortowania rosn¹cego/malej¹cego po dowolnym polu.
  463. Wyszukiwanie ksi¹¿ek.
  464. Zapisywanie/wczytywanie danych o klientach, ksi¹¿kach i wypo¿yczeniach do/z plików.
  465. Wykorzystanie list.
  466. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement