dashzt

Untitled

Jan 31st, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.08 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <locale.h>
  5.  
  6. struct worker
  7. {
  8. char surname[20];
  9. char name[20];
  10. char middleName[20];
  11. struct address
  12. {
  13. char city[20];
  14. char street[20];
  15. short building;
  16. short appartament;
  17. }address;
  18. struct birthDate
  19. {
  20. short year;
  21. short month;
  22. short day;
  23. }birthDate;
  24. short cex;
  25. short tableNumber;
  26. char education[30];
  27. short experience;
  28. };
  29.  
  30.  
  31.  
  32. void printWorkers(worker *mas, int workerCount, bool clearscreen, bool multiply) //МІЦИК ЕТА ФУНКЦІЯ ХУЙНЯ, НЕ ТРОГАЙ
  33. {
  34. if (multiply)
  35. {
  36. system("cls");
  37. for (int i = 0; i < workerCount; i++)
  38. {
  39. printf("%d. %s %s %s\n", i + 1, mas[i].surname, mas[i].name, mas[i].middleName);
  40. printf("Город %s, улица %s, дом %d, квартира %d\n", mas[i].address.city, mas[i].address.street, mas[i].address.building, mas[i].address.appartament);
  41. printf("Дата рождения: %d.%d.%d\n", mas[i].birthDate.day, mas[i].birthDate.month, mas[i].birthDate.year);
  42. printf("Цех № %d\nТабльный номер %d\nОбразование: %s\nСтаж работы(полных лет): %d\n", mas[i].cex, mas[i].tableNumber, mas[i].education, mas[i].experience);
  43. }
  44. }
  45. else
  46. {
  47. printf("%d. %s %s %s\n", workerCount + 1, mas[workerCount].surname, mas[workerCount].name, mas[workerCount].middleName);
  48. printf("Город %s, улица %s, дом %d, квартира %d\n", mas[workerCount].address.city, mas[workerCount].address.street, mas[workerCount].address.building, mas[workerCount].address.appartament);
  49. printf("Дата рождения: %d.%d.%d\n", mas[workerCount].birthDate.day, mas[workerCount].birthDate.month, mas[workerCount].birthDate.year);
  50. printf("Цех № %d\nТабльный номер %d\nОбразование: %s\nСтаж работы(полных лет): %d\n", mas[workerCount].cex, mas[workerCount].tableNumber, mas[workerCount].education, mas[workerCount].experience);
  51. }
  52. if (clearscreen)
  53. {
  54. printf("нажмите Enter для закрытия\n");
  55. getchar();
  56. system("cls");
  57. }
  58. }
  59. void newWorker(worker *mas, int workerCount)
  60. {
  61. system("cls");
  62. printf("Введите\nФамилия: ");
  63. gets_s(mas[workerCount].surname);
  64. printf("Имя: ");
  65. gets_s(mas[workerCount].name);
  66. printf("Отчество: ");
  67. gets_s(mas[workerCount].middleName);
  68. printf("Город: ");
  69. gets_s(mas[workerCount].address.city);
  70. printf("Улица: ");
  71. gets_s(mas[workerCount].address.street);
  72. printf("Дата рождения(день.месяц.год): ");
  73. scanf_s("%hd.%hd.%hd", &mas[workerCount].birthDate.day, &mas[workerCount].birthDate.month, &mas[workerCount].birthDate.year);
  74. printf("Номер дома и квартиры(через пробел): ");
  75. scanf_s("%hd %hd", &mas[workerCount].address.building, &mas[workerCount].address.appartament);
  76. printf("№ цеха: ");
  77. scanf_s("%hd", &mas[workerCount].cex);
  78. printf("Табельный номер: ");
  79. scanf_s("%hd", &mas[workerCount].tableNumber);
  80. getchar();
  81. printf("Образование: ");
  82. gets_s(mas[workerCount].education);
  83. printf("Стаж работы(полных лет): ");
  84. scanf_s("%hd", &mas[workerCount].experience);
  85. system("cls");
  86. }
  87. void searchWorker(worker *mas, int workerCount)
  88. {
  89. int param, is = 1, paramCount = 0, flagsCount = 0;
  90. int flags[15][100] = { 0 };
  91. worker tmp;
  92. do
  93. {
  94. system("cls");
  95. printf("Введите параметр поиска:\n1.Фамилия\n2.Имя\n3.Отчество\n4.Город\n5.Улица\n6.Номер дома\n7.Номер квартиры\n8.Год рождения\n9.Месяц рождения\n10.День рождения\n11.№ цеха\n12.Табельный номер\n13.Образование\n14.Стаж работы\n");
  96. scanf_s("%d", &param);
  97. paramCount++;
  98. getchar();
  99. system("cls");
  100. switch (param)
  101. {
  102. case 1:
  103. printf("Введите фамилию: ");
  104. gets_s(tmp.surname);
  105. for (int i = 0; i < workerCount; i++)
  106. if (strcmp(tmp.surname, mas[i].surname) == NULL)
  107. flags[i][param] = 1;
  108.  
  109. break;
  110. case 2:
  111. printf("Введите имя: ");
  112. gets_s(tmp.name);
  113. for (int i = 0; i < workerCount; i++)
  114. if (strcmp(tmp.name, mas[i].name) == NULL)
  115. flags[i][param] = 1;
  116. break;
  117. case 3:
  118. printf("Введите отчество: ");
  119. gets_s(tmp.middleName);
  120. for (int i = 0; i < workerCount; i++)
  121. if (strcmp(tmp.middleName, mas[i].middleName) == NULL)
  122. flags[i][param] = 1;
  123. break;
  124. case 4:
  125. printf("Введите город: ");
  126. gets_s(tmp.address.city);
  127. for (int i = 0; i < workerCount; i++)
  128. if (strcmp(tmp.address.city, mas[i].address.city) == NULL)
  129. flags[i][param] = 1;
  130. break;
  131. case 5:
  132. printf("Введите улицу: ");
  133. gets_s(tmp.address.street);
  134. for (int i = 0; i < workerCount; i++)
  135. if (strcmp(tmp.address.street, mas[i].address.street) == NULL)
  136. flags[i][param] = 1;
  137. break;
  138. case 6:
  139. printf("Введите номер дома: ");
  140. scanf_s("%hd", &tmp.address.building);
  141. for (int i = 0; i < workerCount; i++)
  142. if (tmp.address.building == mas[i].address.building)
  143. flags[i][param] = 1;
  144. break;
  145. case 7:
  146. printf("Введите номер квартиры: ");
  147. scanf_s("%hd", &tmp.address.appartament);
  148. for (int i = 0; i < workerCount; i++)
  149. if (tmp.address.appartament == mas[i].address.appartament)
  150. flags[i][param] = 1;
  151. break;
  152. case 8:
  153. printf("Введите год рождения: ");
  154. scanf_s("%hd", &tmp.birthDate.year);
  155. for (int i = 0; i < workerCount; i++)
  156. if (tmp.birthDate.year == mas[i].birthDate.year)
  157. flags[i][param] = 1;
  158. break;
  159. case 9:
  160. printf("Введите месяц рождения: ");
  161. scanf_s("%hd", &tmp.birthDate.month);
  162. for (int i = 0; i < workerCount; i++)
  163. if (tmp.birthDate.month == mas[i].birthDate.month)
  164. flags[i][param] = 1;
  165. break;
  166. case 10:
  167. printf("Введите день рождения: ");
  168. scanf_s("%hd", &tmp.birthDate.day);
  169. for (int i = 0; i < workerCount; i++)
  170. if (tmp.birthDate.day == mas[i].birthDate.day)
  171. flags[i][param] = 1;
  172. break;
  173. case 11:
  174. printf("Введите № цеха ");
  175. scanf_s("%hd", &tmp.cex);
  176. for (int i = 0; i < workerCount; i++)
  177. if (tmp.cex == mas[i].cex)
  178. flags[i][param] = 1;
  179. break;
  180. case 12:
  181. printf("Введите табельный номер: ");
  182. scanf_s("%hd", &tmp.tableNumber);
  183. for (int i = 0; i < workerCount; i++)
  184. if (tmp.tableNumber == mas[i].tableNumber)
  185. flags[i][param] = 1;
  186. break;
  187. case 13:
  188. printf("Введите образование: ");
  189. gets_s(tmp.education);
  190. for (int i = 0; i < workerCount; i++)
  191. if (strcmp(tmp.education, mas[i].education) == NULL)
  192. flags[i][param] = 1;
  193. break;
  194. case 14:
  195. printf("Введите стаж работы: ");
  196. scanf_s("%hd", &tmp.experience);
  197. for (int i = 0; i < workerCount; i++)
  198. if (tmp.experience == mas[i].experience)
  199. flags[i][param] = 1;
  200. break;
  201. default:
  202. break;
  203. }
  204. printf("Выбрать ещё один параметр поиска?(1 - да, 0 - нет)\n");
  205. scanf_s("%d", &is);
  206. getchar();
  207. } while (is == 1);
  208. for (int i = 0; i < workerCount; i++)
  209. {
  210. flagsCount = 0;
  211. for (int j = 1; j < 15; j++)
  212. if (flags[i][j] == 1)
  213. flagsCount++;
  214. if(flagsCount == paramCount)
  215. printWorkers(mas, i, false, false);
  216. }
  217. printf("нажмите Enter для закрытия\n");
  218. getchar();
  219. system("cls");
  220. }
  221. void deleteWorker(worker *mas, int workerCount)
  222. {
  223. int number;
  224. printWorkers(mas, workerCount, false, true);
  225. printf("Введите номер записи, которую нужно удалить\n");
  226. scanf_s("%d", &number);
  227. for (int i = number - 1; i < workerCount; i++)
  228. {
  229. mas[i] = mas[i + 1];
  230. }
  231. system("cls");
  232. }
  233.  
  234.  
  235. int main()
  236. {
  237. setlocale(LC_ALL, "Rus");
  238. worker *allWorkers, *tmp;
  239. int workerCount = 0, menu = 0;
  240. allWorkers = (worker*)malloc(0);
  241. do
  242. {
  243. system("cls");
  244. printf("Введите:\n1.Добавить новую запись\n2.Вывести список на экран\n3.Поиск записи\n4.Удалить запись\n0. Выход\n");
  245. scanf_s("%d", &menu);
  246. getchar();
  247. switch (menu)
  248. {
  249. case 1:
  250. tmp = (worker*)malloc(workerCount * sizeof(worker));
  251. for (int i = 0; i < workerCount; i++)
  252. tmp[i] = allWorkers[i];
  253. free(allWorkers);
  254. workerCount = workerCount + 1;
  255. allWorkers = (worker*)malloc(workerCount * sizeof(worker));
  256. for (int i = 0; i < workerCount - 1; i++)
  257. allWorkers[i] = tmp[i];
  258. free(tmp);
  259. newWorker(allWorkers, workerCount - 1);
  260. break;
  261. case 2:
  262. printWorkers(allWorkers, workerCount, true, true);
  263. break;
  264. case 3:
  265. searchWorker(allWorkers, workerCount);
  266. break;
  267. case 4:
  268. deleteWorker(allWorkers, workerCount);
  269. workerCount--;
  270. break;
  271. default:
  272. printf("Ошибка ввода, повторите попытку(нажмите Enter)\n");
  273. getchar();
  274. }
  275. } while (menu != 0);
  276. free(allWorkers);
  277. return 0;
  278. }
Add Comment
Please, Sign In to add comment