Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.18 KB | None | 0 0
  1.  
  2. #include "Header.h"
  3.  
  4.  
  5. int menu() {
  6. int n;
  7. do {
  8. fflush(stdin);
  9. printf("\tМеню 1-го уровня\n");
  10. printf("1. Меню для администратора\n");
  11. printf("2. Меню для пользователя\n");
  12. printf("3. Выход\n");
  13. printf("\tСделайте выбор чтобы продолжить: ");
  14. scanf("%d", &n);
  15. getchar();
  16. system("cls");
  17. } while (n<1 || n>3);
  18. return n;
  19. }
  20.  
  21.  
  22. int menu_admin() {
  23. int n;
  24. do {
  25. fflush(stdin);
  26. printf("\tМеню 2-го уровня(Администратор)\n");
  27. printf("1.Открытие файла с данными\n");
  28. printf("2.Добавление записи\n");
  29. printf("3.Редактирование записи\n");
  30. printf("4.Удаление записи\n");
  31. printf("5.Просмотр всех данных в табличной форме\n");
  32. printf("6.Фильтрация/сортировка/поиск данных\n");
  33. printf("7.Управление пользователями\n");
  34. printf("8.Выход в меню 1-го уровня\n");
  35. printf("\tСделайте выбор чтобы продолжить: ");
  36. scanf("%d", &n);
  37. getchar();
  38. system("cls");
  39. } while (n<1 || n >8);
  40. return n;
  41. }
  42.  
  43. int menu_user() {
  44. int n;
  45. do {
  46. fflush(stdin);
  47. printf("\tМеню 3-го уровня(обычный пользователь)\n");
  48. printf("1.Открытие файла с данными\n");
  49. printf("2.Просмотр всех данных в табличной форме\n");
  50. printf("3.Фильтрация/сортировка/поиск данных\n");
  51. printf("4.Выход в меню 2-го уровня\n");
  52. printf("\tСделайте выбор чтобы продолжить: ");
  53. scanf("%d", &n);
  54. system("cls");
  55. getchar();
  56. } while (n<1 || n>4);
  57. return(n);
  58. }
  59.  
  60. void add_razgovor(razgovor **begin, razgovor **end) {
  61. system("cls");
  62. razgovor *p = new razgovor;
  63. INFO *l;
  64. p->head = NULL;
  65. if (!*end) {
  66. printf("Введите фамилию (например Сергеев): ");
  67. fflush(stdin);
  68. gets_s(p->surname);
  69. l = new INFO;
  70. printf("Введите имя (например Сергей): ");
  71. fflush(stdin);
  72. gets_s(l->name);
  73. printf("Введите номер (например 3333333): ");
  74. fflush(stdin);
  75. scanf("%d", &l->number);
  76. printf("Введите дату звонка (например 12.12.2012): ");
  77. getchar();
  78. fflush(stdin);
  79. gets_s(l->data);
  80. printf("Введите время разговора (например 55): ");
  81. fflush(stdin);
  82. scanf("%d", &l->time);
  83. getchar();
  84. printf("Введите город (например Минск): ");
  85. fflush(stdin);
  86. gets_s(l->gorod);
  87. printf("Введите стоимость звонка (например 5.50): ");
  88. fflush(stdin);
  89. scanf("%f", &l->price);
  90. getchar();
  91. l->next = NULL;
  92. p->head = l;
  93. p->next = NULL;
  94. p->previous = NULL;
  95. *end = *begin = p;
  96. }
  97. else {
  98. printf("Введите фамилию (например Сергеев): ");
  99. fflush(stdin);
  100. gets_s(p->surname);
  101. l = new INFO;
  102. printf("Введите имя (например Сергей): ");
  103. fflush(stdin);
  104. gets_s(l->name);
  105. printf("Введите номер (например 3333333): ");
  106. fflush(stdin);
  107. scanf("%d", &l->number);
  108. getchar();
  109. printf("Введите дату звонка (например 12.12.2012): ");
  110. fflush(stdin);
  111. gets_s(l->data);
  112. printf("Введите время разговора (например 55 (мин)): ");
  113. fflush(stdin);
  114. scanf("%d", &l->time);
  115. getchar();
  116. printf("Введите город (например Минск): ");
  117. fflush(stdin);
  118. gets_s(l->gorod);
  119. printf("Введите стоимость звонка (например 5.50): ");
  120. fflush(stdin);
  121. scanf("%f", &l->price);
  122. getchar();
  123. l->next = NULL;
  124. p->head = l;
  125. p->previous = *end;
  126. p->next = NULL;
  127. (*end)->next = p;
  128. *end = p;
  129. }
  130. system("cls");
  131. }
  132.  
  133. int indikator_user() {//Если возвращает ноль, то файл пуст
  134. FILE *fp = fopen("loginuser.txt", "r+");
  135. long int flag;
  136. if (!fp) {
  137. return NULL;
  138. }
  139. else {
  140. fseek(fp, 0, SEEK_END);//устанавливает внутренний указатель положения в файле в конец
  141. flag = ftell(fp);//возвращает текущее положение внутреннего указателя
  142. fclose(fp);
  143. if (!flag) return NULL;
  144. else return 1;
  145. }
  146. }
  147.  
  148. int indikator_info() {//если возвращает ноль, то файл пуст
  149. FILE *fp = fopen("okp.txt", "r+");
  150. long int flag;
  151. if (!fp) {
  152. puts("Ошибка открытия файла");
  153. return NULL;
  154. }
  155. else {
  156. fseek(fp, 0, SEEK_END);//устанавливает внутренний указатель положения в файле в конец
  157. flag = ftell(fp);//возвращает текущее положение внутреннего указателя
  158. fclose(fp);
  159. if (!flag) return NULL;
  160. else return 1;
  161. }
  162. }
  163.  
  164. void edit_razgovor(razgovor *begin) {
  165. system("cls");
  166. char new_surname[15], flag = 0;
  167. razgovor *p = begin;
  168. getchar();
  169. printf("Введите фамилию которую хотите изменить: ");
  170. fflush(stdin);
  171. gets_s(new_surname);
  172. while (p) {
  173. if (!strcmp(p->surname, new_surname)) {
  174. flag = 1;
  175. printf("Введите новое значение: ");
  176. fflush(stdin);
  177. gets_s(new_surname);
  178. getchar();
  179. strcpy(p->surname, new_surname);
  180. system("cls");
  181. puts("Фамилия успешно изменена");
  182. break;
  183. }
  184. p = p->next;
  185. }
  186. if (!flag) {
  187. system("cls");
  188. puts("Данной фамилии нет в базе\n");
  189. }
  190. }
  191.  
  192. void edit_info(razgovor *begin) {
  193. system("cls");
  194. int new_number, new_time, n, c, flag = 0;
  195. char new_name[15], new_data[15], new_gorod[15], surname[20];
  196. float new_price;
  197. razgovor *p = begin;
  198. INFO *l;
  199. getchar();
  200. printf("Введите фамилию: ");
  201. fflush(stdin);
  202. gets_s(surname);
  203. system("cls");
  204. while (p) {
  205. if (!strcmp(surname, p->surname)) {
  206. flag = 1;
  207. printf("%-4s %-10s %-12s %-7s %-10s %-10s %-10s\n\n", "1.Имя", "2.Номер телефона", "3.Дата звонка", "4.Город", "5.Время разговора", "6.Стоимость звонка");
  208. l = p->head;
  209. printf("%-8s ", l->name);
  210. printf("%-15d ", l->number);
  211. printf("%-14s ", l->data);
  212. printf("%-12s ", l->gorod);
  213. printf("%-15d ", l->time);
  214. printf("%-8f \n", l->price);
  215. do {
  216. printf("Введите номер поля, которое вы хотите изменить: ");
  217. fflush(stdin);
  218. scanf("%d", &n);
  219. } while (n<1 || n>6);
  220. c = n;
  221. switch (c) {
  222. case 1:
  223. getchar();
  224. printf("Введите новое значение: ");
  225. fflush(stdin);
  226. gets_s(new_name);
  227. strcpy(l->name, new_name);
  228. system("cls");
  229. puts("Имя успешно изменено");
  230. break;
  231. case 2:
  232. getchar();
  233. printf("Введите новое значение: ");
  234. fflush(stdin);
  235. scanf("%d", &new_number);
  236. l->number = new_number;
  237. system("cls");
  238. puts("Номер успешно изменен");
  239. break;
  240. case 3:
  241. getchar();
  242. printf("Введите новое значение: ");
  243. fflush(stdin);
  244. gets_s(new_data);
  245. strcpy(l->data, new_data);
  246. system("cls");
  247. puts("Дата звонка успешно изменена");
  248. break;
  249. case 4:
  250. getchar();
  251. printf("Введите новое значение: ");
  252. fflush(stdin);
  253. gets_s(new_gorod);
  254. strcpy(l->gorod, new_gorod);
  255. system("cls");
  256. puts("Город успешно изменен:");
  257. break;
  258. case 5:
  259. getchar();
  260. printf("Введите новое значение: ");
  261. fflush(stdin);
  262. scanf("%d", &new_time);
  263. l->time = new_time;
  264. system("cls");
  265. puts("Время разговора успешно изменено:");
  266. break;
  267. case 6:
  268. getchar();
  269. printf("Введите новое значение: ");
  270. fflush(stdin);
  271. scanf("%f", &new_price);
  272. l->price = new_price;
  273. system("cls");
  274. puts("Стоимость звонка успешно изменена");
  275. break;
  276. default:
  277. puts("Ввод некорректен");
  278. return;
  279. }
  280. }
  281. p = p->next;
  282. }
  283. if (!flag) {
  284. system("cls");
  285. puts("Нет такого значения");
  286. }
  287. }
  288.  
  289. void edit_note(razgovor **begin, razgovor **end) {
  290. int n;
  291. if (!begin) puts("Информация отсутствует");
  292. do {
  293. fflush(stdin);
  294. printf("1.Редактировать фамилию\n");
  295. printf("2.Редактировать информацию о абоненте\n");
  296. printf("3.Выход\n");
  297. printf("\tСделайте выбор чтобы продолжить: ");
  298. scanf("%d", &n);
  299. } while (n<1 || n>3);
  300. switch (n) {
  301. case 1:
  302. edit_razgovor(*begin);
  303. break;
  304. case 2:
  305. edit_info(*begin);
  306. break;
  307. case 3: break;
  308. }
  309. }
  310.  
  311.  
  312. void del_note(razgovor **begin, razgovor **end) {
  313. int flag = 0;
  314. char surname[15];
  315. razgovor *p, *key;
  316. p = (*end);
  317. printf("Введите фамилию абонента информацию о котором вы хотите удалить: ");
  318. fflush(stdin);
  319. gets_s(surname);
  320. while (p) {
  321. if (!strcmp(surname, p->surname)) {
  322. flag = 1;
  323. key = p;
  324. if (*end == *begin) {
  325. *end = (*end)->previous;
  326. *end = NULL;
  327. *begin = NULL;
  328. delete p;
  329. system("cls");
  330. puts("Информация об этом абоненте была успешно удалена");
  331. return;
  332. }
  333. if (p == *end) {
  334. *end = (*end)->previous;
  335. (*end)->next = NULL;
  336. delete key;
  337. system("cls");
  338. puts("Информация об этом абоненте была успешно удалена");
  339. return;
  340. }
  341. if (p == *begin) {
  342. *begin = (*begin)->next;
  343. (*begin)->previous = NULL;
  344. delete key;
  345. system("cls");
  346. puts("Информация об этом абоненте была успешно удалена");
  347. return;
  348. }
  349. if (p != (*end) && p != (*begin)) {
  350. (key->previous)->next = key->next;
  351. (key->next)->previous = key->previous;
  352. delete p;
  353. system("cls");
  354. puts("Информация об этом абоненте была успешно удалена");
  355. return;
  356. }
  357. }
  358. p = p->previous;
  359. }
  360. if (!flag) {
  361. system("cls");
  362. printf("Нет такого абонента\n");
  363. }
  364.  
  365. }
  366.  
  367. void print(razgovor *begin) {
  368. razgovor *p = begin;
  369. INFO *l;
  370. printf("%-11s %-10s %-10s %-12s %-7s %-9s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  371. while (p) {
  372. printf("%-11s ", p->surname);
  373. l = p->head;
  374. printf("%-9s ", l->name);
  375. printf("%-12d ", l->number);
  376. printf("%-12s ", l->data);
  377. printf("%-10s ", l->gorod);
  378. printf("%-14d ", l->time);
  379. printf("%-15f \n", l->price);
  380. p = p->next;
  381. }
  382. puts("");
  383. return;
  384. }
  385.  
  386. void search_note(razgovor *begin) {
  387. system("cls");
  388. int flag = 0;
  389. char surname[15];
  390. razgovor *p = begin;
  391. INFO *l;
  392. getchar();
  393. printf("Введите фамилию (Сергеев): ");
  394. fflush(stdin);
  395. gets_s(surname);
  396. system("cls");
  397. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  398. while (p) {
  399. if (!strcmp(p->surname, surname)) {
  400. flag = 1;
  401. l = p->head;
  402. printf("%-11s ", p->surname);
  403. printf("%-10s ", l->name);
  404. printf("%-10d ", l->number);
  405. printf("%-15s ", l->data);
  406. printf("%-8s ", l->gorod);
  407. printf("%-15d ", l->time);
  408. printf("%-4f \n", l->price);
  409. }
  410. p = p->next;
  411. }
  412. if (!flag) {
  413. system("cls");
  414. puts("Нет такого абонента");
  415. }
  416. }
  417.  
  418. void filt_data(razgovor *begin) {
  419. system("cls");
  420. int flag = 0;
  421. char data[15];
  422. razgovor *p = begin;
  423. INFO *l;
  424. getchar();
  425. printf("Введите дату звонка (например 14.07.2018): ");
  426. fflush(stdin);
  427. gets_s(data);
  428. system("cls");
  429. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  430. while (p) {
  431. l = p->head;
  432. if (!strcmp(l->data, data)) {
  433. flag = 1;
  434. printf("%-11s ", p->surname);
  435. printf("%-10s ", l->name);
  436. printf("%-10d ", l->number);
  437. printf("%-15s ", l->data);
  438. printf("%-8s ", l->gorod);
  439. printf("%-15d ", l->time);
  440. printf("%-4f \n", l->price);
  441. }
  442. p = p->next;
  443. }
  444. if (!flag) {
  445. system("cls");
  446. puts("Нет таких абонентов. Введите дату звонка еще раз");
  447. }
  448. }
  449.  
  450.  
  451. void filt_gorod(razgovor *begin) {
  452. system("cls");
  453. int flag = 0;
  454. char gorod[15];
  455. razgovor *p = begin;
  456. INFO *l;
  457. getchar();
  458. printf("Введите город: ");
  459. fflush(stdin);
  460. gets_s(gorod);
  461. system("cls");
  462. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  463. while (p) {
  464. l = p->head;
  465. if (!strcmp(l->gorod, gorod)) {
  466. flag = 1;
  467. printf("%-11s ", p->surname);
  468. printf("%-10s ", l->name);
  469. printf("%-10d ", l->number);
  470. printf("%-15s ", l->data);
  471. printf("%-8s ", l->gorod);
  472. printf("%-15d ", l->time);
  473. printf("%-4f \n", l->price);
  474. }
  475. p = p->next;
  476. }
  477. if (!flag) {
  478. system("cls");
  479. puts("Нет таких абонентов. Введите город еще раз");
  480. }
  481. }
  482.  
  483. void filt_time(razgovor *begin) {
  484. system("cls");
  485. int time, flag = 0;
  486. razgovor *p = begin;
  487. INFO *l;
  488. getchar();
  489. printf("Введите время разговора: ");
  490. fflush(stdin);
  491. scanf("%d", &time);
  492. system("cls");
  493. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  494. while (p) {
  495. l = p->head;
  496. if (time == l->time) {
  497. flag = 1;
  498. printf("%-11s ", p->surname);
  499. l = p->head;
  500. printf("%-9s ", l->name);
  501. printf("%-12d ", l->number);
  502. printf("%-12s ", l->data);
  503. printf("%-17s ", l->gorod);
  504. printf("%-19d ", l->time);
  505. printf("%-15f \n", l->price);
  506. }
  507. p = p->next;
  508. }
  509. if (!flag) {
  510. system("cls");
  511. puts("Нет разговоров с таким временем. Измените параметр фильтрации");
  512. }
  513. }
  514.  
  515. void filt_time_gorod(razgovor *begin) {
  516. system("cls");
  517. int time, flag = 0;
  518. char gorod[15];
  519. razgovor *p = begin;
  520. INFO *l;
  521. getchar();
  522. printf("Введите время разговора: ");
  523. fflush(stdin);
  524. scanf("%d", &time);
  525. getchar();
  526. printf("Введите город: ");
  527. fflush(stdin);
  528. gets_s(gorod);
  529. system("cls");
  530. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  531. while (p) {
  532. l = p->head;
  533. if (time == l->time && !strcmp(l->gorod, gorod)) {
  534. flag = 1;
  535. printf("%-11s ", p->surname);
  536. printf("%-10s ", l->name);
  537. printf("%-10d ", l->number);
  538. printf("%-15s ", l->data);
  539. printf("%-4s ", l->gorod);
  540. printf("%-8d ", l->time);
  541. printf("%-4f \n", l->price);
  542. }
  543. p = p->next;
  544. }
  545. if (!flag) {
  546. system("cls");
  547. puts("Нет разговоров с таким временем и городом. Измените параметры фильтрации");
  548. }
  549. }
  550.  
  551. void filt_time_data(razgovor *begin) {
  552. system("cls");
  553. int time, flag = 0;
  554. char data[15];
  555. razgovor *p = begin;
  556. INFO *l;
  557. getchar();
  558. printf("Введите время разговора: ");
  559. fflush(stdin);
  560. scanf("%d", &time);
  561. getchar();
  562. printf("Введите дату звонка (например 12.12.2012): ");
  563. fflush(stdin);
  564. gets_s(data);
  565. system("cls");
  566. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  567. while (p) {
  568. l = p->head;
  569. if (time == l->time && !strcmp(l->data, data)) {
  570. flag = 1;
  571. printf("%-11s ", p->surname);
  572. printf("%-10s ", l->name);
  573. printf("%-10d ", l->number);
  574. printf("%-15s ", l->data);
  575. printf("%-4s ", l->gorod);
  576. printf("%-8d ", l->time);
  577. printf("%-4f \n", l->price);
  578. }
  579. p = p->next;
  580. }
  581. if (!flag) {
  582. system("cls");
  583. puts("Нет разговоров с таким временем и датой. Измените параметры фильтрации");
  584. }
  585. }
  586.  
  587. void filt_gorod_data(razgovor *begin) {
  588. system("cls");
  589. int flag = 0;
  590. char data[15], gorod[15];
  591. razgovor *p = begin;
  592. INFO *l;
  593. getchar();
  594. printf("Введите город: ");
  595. fflush(stdin);
  596. gets_s(gorod);
  597. printf("Введите дату звонка (например 12.12.2012): ");
  598. fflush(stdin);
  599. gets_s(data);
  600. system("cls");
  601. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  602. while (p) {
  603. l = p->head;
  604. if (!strcmp(l->gorod, gorod) && !strcmp(l->data, data)) {
  605. flag = 1;
  606. printf("%-11s ", p->surname);
  607. printf("%-10s ", l->name);
  608. printf("%-10d ", l->number);
  609. printf("%-15s ", l->data);
  610. printf("%-4s ", l->gorod);
  611. printf("%-8d ", l->time);
  612. printf("%-4f \n", l->price);
  613. }
  614. p = p->next;
  615. }
  616. if (!flag) {
  617. system("cls");
  618. puts("Нет разговоров с такой датой и городом. Измените параметры фильтрации");
  619. }
  620. }
  621.  
  622. void filter_note(razgovor *begin) {
  623. int n, filt_times, filt_price;
  624. if (!begin) {
  625. printf("нет информации\n");
  626. return;
  627. }
  628. do {
  629. fflush(stdin);
  630. printf("1.Фильтрация абонентов по времени разговора\n");
  631. printf("2.Фильтрация абонентов по стоимости звонка\n");
  632. printf("3.Фильтрация данных о абонентах по дате звонка\n");
  633. printf("4.Фильтрация данных о абонентах по городу\n");
  634. printf("5.Фильтрация данных о абонентах по времени разговора\n");
  635. printf("6.Фильтрация данных о абонентах по времени разговора и городу\n");
  636. printf("7.Фильтрация данных о абонентах по времени разговора и дате звонка\n");
  637. printf("8.Фильтрация абонентов по городу и дате звонка\n");
  638. printf("9.Поиск данных по фамилии\n");
  639. printf("10.Сортировка по номерам\n");
  640. printf("11.Сортировка по фамилиям\n");
  641. printf("12.Выход\n");
  642. printf("\tСделайте выбор чтобы продолжить: ");
  643. fflush(stdin);
  644. scanf("%d", &n);
  645. system("cls");
  646. } while (n<0 || n>12);
  647. switch (n) {
  648. case 1:
  649. printf("Введите время разговора, меньше которого звонки вы хотите увидеть: ");
  650. fflush(stdin);
  651. scanf("%d", &filt_times);
  652. system("cls");
  653. printf("Время разговора меньше %d : \n", filt_times);
  654. filter_by_time(begin, filt_times);
  655. break;
  656. case 2:
  657. printf("Введите стоимость звонка, меньше кторой вы хотите увидеть : ");
  658. fflush(stdin);
  659. scanf("%d", &filt_price);
  660. system("cls");
  661. printf(" Стоимость звонков меньших чем %d : \n", filt_price);
  662. filter_by_price(begin, filt_price);
  663. break;
  664. case 3:
  665. filt_data(begin);
  666. break;
  667. case 4:
  668. filt_gorod(begin);
  669. break;
  670. case 5:
  671. filt_time(begin);
  672. break;
  673. case 6:
  674. filt_time_gorod(begin);
  675. break;
  676. case 7:
  677. filt_time_data(begin);
  678. break;
  679. case 8:
  680. filt_gorod_data(begin);
  681. break;
  682. case 9:
  683. search_note(begin);
  684. break;
  685. case 10:
  686. sort_number(begin);
  687. break;
  688. case 11:
  689. sort_surname(begin);
  690. break;
  691. default:
  692. system("cls");
  693. return;
  694. }
  695. }
  696.  
  697. void print_number(razgovor *begin) {
  698. razgovor *p = begin;
  699. INFO *l;
  700. printf("%-8s %-13s %-10s %-15s %-4s %-8s %-10s\n\n", "Номер", "Фамилия", "Имя", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  701. while (p) {
  702. l = p->head;
  703. printf("%-5d ", l->number);
  704. printf("%-12s ", p->surname);
  705. printf("%-10s ", l->name);
  706. printf("%-15s ", l->data);
  707. printf("%-10s ", l->gorod);
  708. printf("%-14d ", l->time);
  709. printf("%-15f \n", l->price);
  710. p = p->next;
  711. }
  712. puts("");
  713. }
  714.  
  715. void sort_surname(razgovor *begin) {
  716. razgovor *p, *c;
  717. int flag = 0, number, time;
  718. float price;
  719. char surname[20], name[15], gorod[15], data[15];
  720. while (!flag) {
  721. p = begin;
  722. c = p->next;
  723. flag = 1;
  724. while (c) {
  725. if (strncmp(p->surname, c->surname, 1)>0) {
  726. number = p->head->number;
  727. p->head->number = c->head->number;
  728. c->head->number = number;
  729.  
  730. time = p->head->time;
  731. p->head->time = c->head->time;
  732. c->head->time = time;
  733.  
  734. strcpy(name, p->head->name);
  735. strcpy(p->head->name, c->head->name);
  736. strcpy(c->head->name, name);
  737.  
  738. strcpy(surname, p->surname);
  739. strcpy(p->surname, c->surname);
  740. strcpy(c->surname, surname);
  741.  
  742. strcpy(gorod, p->head->gorod);
  743. strcpy(p->head->gorod, c->head->gorod);
  744. strcpy(c->head->gorod, gorod);
  745.  
  746. strcpy(data, p->head->data);
  747. strcpy(p->head->data, c->head->data);
  748. strcpy(c->head->data, data);
  749.  
  750. price = p->head->price;
  751. p->head->price = c->head->price;
  752. c->head->price = price;
  753.  
  754. flag = 0;
  755. }
  756. p = p->next;
  757. c = c->next;
  758. }
  759. }
  760. print(begin);
  761. puts("");
  762. }
  763.  
  764. void sort_number(razgovor *begin) {
  765. razgovor *p, *c;
  766. int flag = 0, number, time;
  767. float price;
  768. char surname[20], name[15], gorod[15], data[15];
  769. while (!flag) {
  770. p = begin;
  771. c = p->next;
  772. flag = 1;
  773. while (c) {
  774. if (p->head->number > c->head->number) {
  775. number = p->head->number;
  776. p->head->number = c->head->number;
  777. c->head->number = number;
  778.  
  779. time = p->head->time;
  780. p->head->time = c->head->time;
  781. c->head->time = time;
  782.  
  783. strcpy(name, p->head->name);
  784. strcpy(p->head->name, c->head->name);
  785. strcpy(c->head->name, name);
  786.  
  787. strcpy(surname, p->surname);
  788. strcpy(p->surname, c->surname);
  789. strcpy(c->surname, surname);
  790.  
  791. strcpy(gorod, p->head->gorod);
  792. strcpy(p->head->gorod, c->head->gorod);
  793. strcpy(c->head->gorod, gorod);
  794.  
  795. strcpy(data, p->head->data);
  796. strcpy(p->head->data, c->head->data);
  797. strcpy(c->head->data, data);
  798.  
  799. price = p->head->price;
  800. p->head->price = c->head->price;
  801. c->head->price = price;
  802.  
  803. flag = 0;
  804. }
  805. p = p->next;
  806. c = c->next;
  807. }
  808. }
  809. print_number(begin);
  810. puts("");
  811. }
  812.  
  813.  
  814. void filter_by_time(razgovor *begin, int filt_time) {
  815. razgovor *p;
  816. INFO *l;
  817. int flag = 0;
  818. p = begin;
  819. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  820. while (p) {
  821. l = p->head;
  822. if ((l->time)<filt_time) {
  823. flag = 1;
  824. printf("%-11s ", p->surname);
  825. printf("%-9s ", l->name);
  826. printf("%-12d ", l->number);
  827. printf("%-12s ", l->data);
  828. printf("%-10s ", l->gorod);
  829. printf("%-14d ", l->time);
  830. printf("%-15f \n", l->price);
  831. }
  832. p = p->next;
  833. }
  834. if (!flag) {
  835. system("cls");
  836. printf("Нет таких звонков\n");
  837. }
  838. }
  839.  
  840. void filter_by_price(razgovor *begin, int filt_price) {
  841. razgovor *p = begin;;
  842. INFO *l;
  843. int flag = 0;
  844. printf("%-11s %-10s %-10s %-15s %-4s %-8s %-10s\n\n", "Фамилия", "Имя", "Номер", "Дата звонка", "Город", "Время разговора", "Стоимость звонка");
  845. while (p) {
  846. l = p->head;
  847. if ((l->price)<filt_price) {
  848. flag = 1;
  849. printf("%-11s ", p->surname);
  850. printf("%-9s ", l->name);
  851. printf("%-12d ", l->number);
  852. printf("%-12s ", l->data);
  853. printf("%-10s ", l->gorod);
  854. printf("%-14d ", l->time);
  855. printf("%-15f \n", l->price);
  856.  
  857. }
  858. p = p->next;
  859. }
  860. if (!flag) {
  861. system("cls");
  862. printf("Нет таких звонков\n");
  863. }
  864. }
  865.  
  866. int enter_admin() {
  867. FILE *fp;
  868. char login[11], password[9], log[11], pass[9];
  869. int flag = 0;
  870. if (!(fp = fopen("loginadmin.txt", "rb"))) {
  871. if ((fp = fopen("loginadmin.txt", "w+b"))) {
  872. puts("Вы первый пользователь этой программы ");
  873. puts("Придумайте логин и пароль\n");
  874. printf(" Логин(макс. 10 символов): ");
  875. fflush(stdin);
  876. gets_s(login);
  877. fwrite(login, sizeof(login), 1, fp);
  878. //getchar();
  879. printf(" Пароль(макс. 8 символов): ");
  880. fflush(stdin);
  881. gets_s(password);
  882. fwrite(password, sizeof(password), 1, fp);
  883. //getchar();
  884. puts("Теперь вы администратор этой программы ");
  885. puts("Пожалуйста, нажмите любую клавишу чтобы продолжить");
  886. getchar();
  887. system("cls");
  888. return 1;
  889. }
  890. else puts("Ошибка создания файла");
  891. }
  892. else {
  893. fflush(stdin);
  894. fread(login, sizeof(login), 1, fp);
  895. fflush(stdin);
  896. fread(password, sizeof(password), 1, fp);
  897. printf("Введите логин(макс. 10 символов): ");
  898. fflush(stdin);
  899. gets_s(log);
  900. //getchar();
  901. printf("Введите пароль(макс. 8 символов): ");
  902. fflush(stdin);
  903. gets_s(pass);
  904. //getchar();
  905. system("cls");
  906. if (!strcmp(password, pass) && !strcmp(login, log)) {
  907. flag = 1;
  908. system("cls");
  909. fclose(fp);
  910. return 1;
  911. }
  912. if (!flag) {
  913. system("cls");
  914. puts("Неверный логин или пароль");
  915. }
  916. }
  917. fclose(fp);
  918. return 0;
  919. }
  920.  
  921. int enter_user_mini(USER **start, USER **finish, int flag) {
  922. if (!flag) {
  923. if (read_user(start, finish)) {
  924. return 1;
  925. }
  926. }
  927. char log[11], pass[9];
  928. int flagg = 0;
  929. USER *u = *start;
  930. getchar();
  931. printf("Введите логин(макс. 10 символов): ");
  932. fflush(stdin);
  933. gets_s(log);
  934. printf("Введите пароль(макс. 8 символов): ");
  935. fflush(stdin);
  936. gets_s(pass);
  937. system("cls");
  938. while (u) {
  939. if (!strcmp(u->password, pass) && !strcmp(u->login, log))
  940. {
  941. flagg = 1;
  942. system("cls");
  943. return NULL;
  944. }
  945. u = u->next;
  946. }
  947. if (!flagg) {
  948. system("cls");
  949. puts("Неверный логин или пароль");
  950. return 1;
  951. }
  952. return 1;
  953. }
  954.  
  955. void add_user(USER **start, USER **finish) {
  956. USER *u = new USER;
  957. if (!*start) {
  958. getchar();
  959. printf("Введите логин(макс. 10 символов): ");
  960. fflush(stdin);
  961. gets_s(u->login);
  962. printf("Введите пароль(макс. 8 символов): ");
  963. fflush(stdin);
  964. gets_s(u->password);
  965. u->next = NULL;
  966. u->previous = NULL;
  967. *start = *finish = u;
  968. }
  969. else {
  970. getchar();
  971. printf("Введите логин(макс. 10 символов): ");
  972. fflush(stdin);
  973. gets_s(u->login);
  974. printf("Введите пароль(макс. 8 символов): ");
  975. fflush(stdin);
  976. gets_s(u->password);
  977. u->previous = *finish;
  978. u->next = NULL;
  979. (*finish)->next = u;
  980. *finish = u;
  981. }
  982. system("cls");
  983. puts("Поздравляем с регитсрацией ");
  984. }
  985.  
  986. void enter_user(USER **start, USER **finish, razgovor **begin, razgovor **end) {
  987. int n, z = 0, flag = 0;
  988. do {
  989. do {
  990. fflush(stdin);
  991. printf("\tВход под пользователем(Меню 2-го уровня)\n");
  992. puts("1.Авторизация");
  993. puts("2.Регистрация");
  994. puts("3.Выход в меню 1-го уровня");
  995. printf("\tСделайте ваш выбор: ");
  996. scanf("%d", &n);
  997. system("cls");
  998. } while (n<1 || n>3);
  999. switch (n) {
  1000. case 1:
  1001. if (!enter_user_mini(start, finish, flag)) {
  1002. user(begin, end);
  1003. }
  1004. break;
  1005. case 2:
  1006. add_user(start, finish);
  1007. user(begin, end);
  1008. flag++;
  1009. break;
  1010. case 3:
  1011. z++;
  1012. break;
  1013. }
  1014. } while (!z);
  1015. }
  1016.  
  1017. int read_user(USER **start, USER **finish) {
  1018. if (!indikator_user()) {
  1019. puts("Нет записей");
  1020. return 1;
  1021. }
  1022. else {
  1023. FILE *fp;
  1024. if (!(fp = fopen("loginuser.txt", "r+"))) {
  1025. puts("Ошибка открытия");
  1026. return 2;
  1027. }
  1028. else {
  1029. USER *u = new USER;
  1030. while (!feof(fp)) {
  1031. if (!(u = new USER)) {
  1032. printf("Нет абонентов\n");
  1033. return 3;
  1034. }
  1035. if (!*finish) {
  1036. fflush(stdin);
  1037. fscanf(fp, "%s ", u->login);
  1038. fflush(stdin);
  1039. fscanf(fp, "%s ", u->password);
  1040. u->next = NULL;
  1041. u->previous = NULL;
  1042. *finish = *start = u;
  1043. }
  1044. else {
  1045. fflush(stdin);
  1046. fscanf(fp, "%s ", u->login);
  1047. fflush(stdin);
  1048. fscanf(fp, "%s ", u->password);
  1049. u->previous = *finish;
  1050. u->next = NULL;
  1051. (*finish)->next = u;
  1052. *finish = u;
  1053. }
  1054. }
  1055. puts("Информация об абонентах успешно перенесена");
  1056. fclose(fp);
  1057. return NULL;
  1058. }
  1059. }
  1060. }
  1061.  
  1062.  
  1063. void del_user(USER **start, USER **finish) {
  1064. int flag = 0;
  1065. char login[11];
  1066. USER *u, *s = nullptr, *key;
  1067. u = *start;
  1068. getchar();
  1069. printf("Введите логин пользователя которого вы хотите удалить: ");
  1070. fflush(stdin);
  1071. gets_s(login);
  1072. while (u) {
  1073. if (!strcmp(login, u->login)) {
  1074. flag = 1;
  1075. if (*finish == *start) {
  1076. *start = (*finish)->previous;
  1077. if (!*finish) *start = NULL;
  1078. delete u;
  1079. system("cls");
  1080. puts("Пользователь успешно удален");
  1081. return;
  1082. }
  1083. if (u == (*finish)) {
  1084. u = (*finish)->previous;
  1085. delete *finish;
  1086. u->next = NULL;
  1087. (*finish) = u;
  1088. system("cls");
  1089. puts("Пользователь успешно удален");
  1090. return;
  1091. }
  1092. if (u == (*start)) {
  1093. key = (*start);
  1094. (*start) = (*start)->next;
  1095. delete key;
  1096. (*start)->previous = NULL;
  1097. system("cls");
  1098. puts("Пользователь успешно удален");
  1099. return;
  1100. }
  1101. if (u != (*finish) && u != (*start)) {
  1102. key = u->previous;
  1103. s->previous = key;
  1104. key->next = u->next;
  1105. delete u;
  1106. system("cls");
  1107. puts("Пользователь успешно удален");
  1108. return;
  1109. }
  1110. }
  1111. s = u;
  1112. u = u->next;
  1113. }
  1114. if (!flag) printf("Нет такого пользователя\n");
  1115. }
  1116.  
  1117. void print_user(USER *start) {
  1118. USER *u = start;
  1119. printf("%-8s %-10s \n\n", "Логин", "Пароль");
  1120. while (u) {
  1121. printf("%-8s ", u->login);
  1122. printf("%-8s \n", u->password);
  1123. u = u->next;
  1124. }
  1125. puts("");
  1126. }
  1127.  
  1128.  
  1129. void write_user(USER *start) {
  1130. USER *u = start;
  1131. FILE *fp = fopen("loginuser.txt", "w+");
  1132. while (u) {
  1133. fflush(stdin);
  1134. fprintf(fp, "%s ", u->login);
  1135. fflush(stdin);
  1136. fprintf(fp, "%s \n", u->password);
  1137. u = u->next;
  1138. }
  1139. fclose(fp);
  1140. }
  1141.  
  1142. int mantime_user(USER **start, USER **finish) {
  1143. int n;
  1144. while (1) {
  1145. do {
  1146. fflush(stdin);
  1147. puts("\tУправление пользователями");
  1148. puts("1.Просмотр пользователей");
  1149. puts("2.Удаление пользователей");
  1150. puts("3.Выход");
  1151. printf("\tСделайте ваш выбор: ");
  1152. scanf("%d", &n);
  1153. system("cls");
  1154. } while (n<1 || n>3);
  1155. switch (n) {
  1156. case 1:
  1157. print_user(*start);
  1158. break;
  1159. case 2:
  1160. del_user(start, finish);
  1161. break;
  1162. case 3:
  1163. if (start)
  1164. {
  1165. write_user(*start);
  1166. finish = start = NULL;
  1167. puts("Данные пользователей перенесены в файл");
  1168. }
  1169. return NULL;
  1170. }
  1171. }
  1172. }
  1173. int read_from_FILE(razgovor **begin, razgovor **end) {
  1174. if (!indikator_info()) {
  1175. puts("Нет записей");
  1176. return 1;
  1177. }
  1178. else {
  1179. FILE *fp;
  1180. if (!(fp = fopen("okp.txt", "r+"))) {
  1181. puts("Ошибка открытия");
  1182. return 2;
  1183. }
  1184. else {
  1185. razgovor *p = new razgovor;
  1186. INFO *l;
  1187. while (!feof(fp)) {
  1188. if (!(p = new razgovor)) {
  1189. printf("Нет абонентов\n");
  1190. return 3;
  1191. }
  1192. p->head = NULL;
  1193. if (!*end) {
  1194. fflush(stdin);
  1195. fscanf(fp, "%s ", p->surname);
  1196. l = new INFO;
  1197. fflush(stdin);
  1198. fscanf(fp, "%s ", l->name);
  1199. fflush(stdin);
  1200. fscanf(fp, "%d ", &l->number);
  1201. fflush(stdin);
  1202. fscanf(fp, "%s ", l->data);
  1203. fflush(stdin);
  1204. fscanf(fp, "%d ", &l->time);
  1205. fflush(stdin);
  1206. fscanf(fp, "%s ", l->gorod);
  1207. fflush(stdin);
  1208. fscanf(fp, "%f ", &l->price);
  1209. l->next = NULL;
  1210. p->head = l;
  1211. p->next = NULL;
  1212. p->previous = NULL;
  1213. (*end) = (*begin) = p;
  1214. }
  1215. else {
  1216. fflush(stdin);
  1217. fscanf(fp, "%s ", p->surname);
  1218. l = new INFO;
  1219. fflush(stdin);
  1220. fscanf(fp, "%s ", l->name);
  1221. fflush(stdin);
  1222. fscanf(fp, "%d ", &l->number);
  1223. fflush(stdin);
  1224. fscanf(fp, "%s ", l->data);
  1225. fflush(stdin);
  1226. fscanf(fp, "%d ", &l->time);
  1227. fflush(stdin);
  1228. fscanf(fp, "%s ", l->gorod);
  1229. fflush(stdin);
  1230. fscanf(fp, "%f ", &l->price);
  1231. l->next = p->head;
  1232. p->head = l;
  1233. p->previous = *end;
  1234. p->next = NULL;
  1235. (*end)->next = p;
  1236. *end = p;
  1237. }
  1238. }
  1239. puts("Информация успешно перенесена");
  1240. fclose(fp);
  1241. return NULL;
  1242. }
  1243. }
  1244. }
  1245.  
  1246. void write_in_FILE(razgovor *begin) {
  1247. razgovor *p = begin;
  1248. INFO *l;
  1249. FILE *fp = fopen("okp.txt", "w+");
  1250. while (p) {
  1251. fprintf(fp, "%s ", p->surname);
  1252. l = p->head;
  1253. fprintf(fp, "%s ", l->name);
  1254. fprintf(fp, "%d ", l->number);
  1255. fprintf(fp, "%s ", l->data);
  1256. fprintf(fp, "%d ", l->time);
  1257. fprintf(fp, "%s ", l->gorod);
  1258. fprintf(fp, "%f \n", l->price);
  1259. p = p->next;
  1260. }
  1261. fclose(fp);
  1262. }
  1263.  
  1264. void admin(razgovor **begin, razgovor **end, USER **start, USER ** finish) {
  1265. int label = 0, flaginfo = 0, flag = 0;
  1266. do {
  1267. switch (menu_admin()) {
  1268. case 1:
  1269. if (!flaginfo) {
  1270. read_from_FILE(begin, end);
  1271. flaginfo = 1;
  1272. flag = 2;
  1273. }
  1274. else puts("Информация уже перенесена\n");
  1275. break;
  1276. case 2:
  1277. add_razgovor(begin, end);
  1278. break;
  1279. case 3:
  1280. if (flag == 2) edit_note(begin, end);
  1281. else puts("Файл не открыт");
  1282. break;
  1283. case 4:
  1284. if (flag == 2) del_note(begin, end);
  1285. else puts("Файл не открыт");
  1286. break;
  1287. case 5:
  1288. if (flag == 2) {
  1289. if (!begin) {
  1290. printf("Нет информации\n");
  1291. break;
  1292. }
  1293. print(*begin);
  1294. }
  1295. else printf("Вы не открыли файл\n");
  1296. break;
  1297. case 6:
  1298. if (flag == 2) {
  1299. if (!begin) {
  1300. printf("Нет информации\n");
  1301. break;
  1302. }
  1303. filter_note(*begin);
  1304. }
  1305. else printf("Вы не открыли файл\n");
  1306. break;
  1307. case 7:
  1308. if (!read_user(start, finish)) {
  1309. if (start) {
  1310. mantime_user(start, finish);
  1311. }
  1312. else {
  1313. puts("Нет пользователей");
  1314. }
  1315. }
  1316. break;
  1317. case 8:
  1318. if (begin) {
  1319. write_in_FILE(*begin);
  1320. puts("Информация об звонках перенесена в файл");
  1321. }
  1322. begin = NULL;
  1323. end = NULL;
  1324. label = 1;
  1325. break;
  1326. }
  1327. } while (!label);
  1328. }
  1329.  
  1330. void user(razgovor **begin, razgovor **end) {
  1331. int f = 0, label2, flaginfo = 0, flag = 0;
  1332. do {
  1333. label2 = 0;
  1334. switch (menu_user()) {
  1335. case 1:
  1336. if (!flaginfo) {
  1337. read_from_FILE(begin, end);
  1338. flaginfo = 1;
  1339. flag = 2;
  1340. }
  1341. else printf("Информация уже перенесена");
  1342. break;
  1343. case 2:
  1344. if (flag == 2) {
  1345. if (!begin) {
  1346. printf("нет информации\n");
  1347. break;
  1348. }
  1349. print(*begin);
  1350. }
  1351. else printf("Вы не открыли файл\n");
  1352. break;
  1353. case 3:
  1354. if (flag == 2) {
  1355. if (!begin) {
  1356. printf("нет информации1\n");
  1357. break;
  1358. }
  1359. filter_note(*begin);
  1360. }
  1361. else printf("Вы не открыли файл\n");
  1362. break;
  1363. case 4:
  1364. f++;
  1365. break;
  1366. }
  1367. } while (!f);
  1368. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement