Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <string.h>
- #include <stdlib.h>
- #include <locale.h>
- struct worker
- {
- char surname[20];
- char name[20];
- char middleName[20];
- struct address
- {
- char city[20];
- char street[20];
- short building;
- short appartament;
- }address;
- struct birthDate
- {
- short year;
- short month;
- short day;
- }birthDate;
- short cex;
- short tableNumber;
- char education[30];
- short experience;
- };
- void printWorkers(worker *mas, int workerCount, bool clearscreen, bool multiply) //МІЦИК ЕТА ФУНКЦІЯ ХУЙНЯ, НЕ ТРОГАЙ
- {
- if (multiply)
- {
- system("cls");
- for (int i = 0; i < workerCount; i++)
- {
- printf("%d. %s %s %s\n", i + 1, mas[i].surname, mas[i].name, mas[i].middleName);
- printf("Город %s, улица %s, дом %d, квартира %d\n", mas[i].address.city, mas[i].address.street, mas[i].address.building, mas[i].address.appartament);
- printf("Дата рождения: %d.%d.%d\n", mas[i].birthDate.day, mas[i].birthDate.month, mas[i].birthDate.year);
- printf("Цех № %d\nТабльный номер %d\nОбразование: %s\nСтаж работы(полных лет): %d\n", mas[i].cex, mas[i].tableNumber, mas[i].education, mas[i].experience);
- }
- }
- else
- {
- printf("%d. %s %s %s\n", workerCount + 1, mas[workerCount].surname, mas[workerCount].name, mas[workerCount].middleName);
- printf("Город %s, улица %s, дом %d, квартира %d\n", mas[workerCount].address.city, mas[workerCount].address.street, mas[workerCount].address.building, mas[workerCount].address.appartament);
- printf("Дата рождения: %d.%d.%d\n", mas[workerCount].birthDate.day, mas[workerCount].birthDate.month, mas[workerCount].birthDate.year);
- printf("Цех № %d\nТабльный номер %d\nОбразование: %s\nСтаж работы(полных лет): %d\n", mas[workerCount].cex, mas[workerCount].tableNumber, mas[workerCount].education, mas[workerCount].experience);
- }
- if (clearscreen)
- {
- printf("нажмите Enter для закрытия\n");
- getchar();
- system("cls");
- }
- }
- void newWorker(worker *mas, int workerCount)
- {
- system("cls");
- printf("Введите\nФамилия: ");
- gets_s(mas[workerCount].surname);
- printf("Имя: ");
- gets_s(mas[workerCount].name);
- printf("Отчество: ");
- gets_s(mas[workerCount].middleName);
- printf("Город: ");
- gets_s(mas[workerCount].address.city);
- printf("Улица: ");
- gets_s(mas[workerCount].address.street);
- printf("Дата рождения(день.месяц.год): ");
- scanf_s("%hd.%hd.%hd", &mas[workerCount].birthDate.day, &mas[workerCount].birthDate.month, &mas[workerCount].birthDate.year);
- printf("Номер дома и квартиры(через пробел): ");
- scanf_s("%hd %hd", &mas[workerCount].address.building, &mas[workerCount].address.appartament);
- printf("№ цеха: ");
- scanf_s("%hd", &mas[workerCount].cex);
- printf("Табельный номер: ");
- scanf_s("%hd", &mas[workerCount].tableNumber);
- getchar();
- printf("Образование: ");
- gets_s(mas[workerCount].education);
- printf("Стаж работы(полных лет): ");
- scanf_s("%hd", &mas[workerCount].experience);
- system("cls");
- }
- void searchWorker(worker *mas, int workerCount)
- {
- int param, is = 1, paramCount = 0, flagsCount = 0;
- int flags[15][100] = { 0 };
- worker tmp;
- do
- {
- system("cls");
- printf("Введите параметр поиска:\n1.Фамилия\n2.Имя\n3.Отчество\n4.Город\n5.Улица\n6.Номер дома\n7.Номер квартиры\n8.Год рождения\n9.Месяц рождения\n10.День рождения\n11.№ цеха\n12.Табельный номер\n13.Образование\n14.Стаж работы\n");
- scanf_s("%d", ¶m);
- paramCount++;
- getchar();
- system("cls");
- switch (param)
- {
- case 1:
- printf("Введите фамилию: ");
- gets_s(tmp.surname);
- for (int i = 0; i < workerCount; i++)
- if (strcmp(tmp.surname, mas[i].surname) == NULL)
- flags[i][param] = 1;
- break;
- case 2:
- printf("Введите имя: ");
- gets_s(tmp.name);
- for (int i = 0; i < workerCount; i++)
- if (strcmp(tmp.name, mas[i].name) == NULL)
- flags[i][param] = 1;
- break;
- case 3:
- printf("Введите отчество: ");
- gets_s(tmp.middleName);
- for (int i = 0; i < workerCount; i++)
- if (strcmp(tmp.middleName, mas[i].middleName) == NULL)
- flags[i][param] = 1;
- break;
- case 4:
- printf("Введите город: ");
- gets_s(tmp.address.city);
- for (int i = 0; i < workerCount; i++)
- if (strcmp(tmp.address.city, mas[i].address.city) == NULL)
- flags[i][param] = 1;
- break;
- case 5:
- printf("Введите улицу: ");
- gets_s(tmp.address.street);
- for (int i = 0; i < workerCount; i++)
- if (strcmp(tmp.address.street, mas[i].address.street) == NULL)
- flags[i][param] = 1;
- break;
- case 6:
- printf("Введите номер дома: ");
- scanf_s("%hd", &tmp.address.building);
- for (int i = 0; i < workerCount; i++)
- if (tmp.address.building == mas[i].address.building)
- flags[i][param] = 1;
- break;
- case 7:
- printf("Введите номер квартиры: ");
- scanf_s("%hd", &tmp.address.appartament);
- for (int i = 0; i < workerCount; i++)
- if (tmp.address.appartament == mas[i].address.appartament)
- flags[i][param] = 1;
- break;
- case 8:
- printf("Введите год рождения: ");
- scanf_s("%hd", &tmp.birthDate.year);
- for (int i = 0; i < workerCount; i++)
- if (tmp.birthDate.year == mas[i].birthDate.year)
- flags[i][param] = 1;
- break;
- case 9:
- printf("Введите месяц рождения: ");
- scanf_s("%hd", &tmp.birthDate.month);
- for (int i = 0; i < workerCount; i++)
- if (tmp.birthDate.month == mas[i].birthDate.month)
- flags[i][param] = 1;
- break;
- case 10:
- printf("Введите день рождения: ");
- scanf_s("%hd", &tmp.birthDate.day);
- for (int i = 0; i < workerCount; i++)
- if (tmp.birthDate.day == mas[i].birthDate.day)
- flags[i][param] = 1;
- break;
- case 11:
- printf("Введите № цеха ");
- scanf_s("%hd", &tmp.cex);
- for (int i = 0; i < workerCount; i++)
- if (tmp.cex == mas[i].cex)
- flags[i][param] = 1;
- break;
- case 12:
- printf("Введите табельный номер: ");
- scanf_s("%hd", &tmp.tableNumber);
- for (int i = 0; i < workerCount; i++)
- if (tmp.tableNumber == mas[i].tableNumber)
- flags[i][param] = 1;
- break;
- case 13:
- printf("Введите образование: ");
- gets_s(tmp.education);
- for (int i = 0; i < workerCount; i++)
- if (strcmp(tmp.education, mas[i].education) == NULL)
- flags[i][param] = 1;
- break;
- case 14:
- printf("Введите стаж работы: ");
- scanf_s("%hd", &tmp.experience);
- for (int i = 0; i < workerCount; i++)
- if (tmp.experience == mas[i].experience)
- flags[i][param] = 1;
- break;
- default:
- break;
- }
- printf("Выбрать ещё один параметр поиска?(1 - да, 0 - нет)\n");
- scanf_s("%d", &is);
- getchar();
- } while (is == 1);
- for (int i = 0; i < workerCount; i++)
- {
- flagsCount = 0;
- for (int j = 1; j < 15; j++)
- if (flags[i][j] == 1)
- flagsCount++;
- if(flagsCount == paramCount)
- printWorkers(mas, i, false, false);
- }
- printf("нажмите Enter для закрытия\n");
- getchar();
- system("cls");
- }
- void deleteWorker(worker *mas, int workerCount)
- {
- int number;
- printWorkers(mas, workerCount, false, true);
- printf("Введите номер записи, которую нужно удалить\n");
- scanf_s("%d", &number);
- for (int i = number - 1; i < workerCount; i++)
- {
- mas[i] = mas[i + 1];
- }
- system("cls");
- }
- int main()
- {
- setlocale(LC_ALL, "Rus");
- worker *allWorkers, *tmp;
- int workerCount = 0, menu = 0;
- allWorkers = (worker*)malloc(0);
- do
- {
- system("cls");
- printf("Введите:\n1.Добавить новую запись\n2.Вывести список на экран\n3.Поиск записи\n4.Удалить запись\n0. Выход\n");
- scanf_s("%d", &menu);
- getchar();
- switch (menu)
- {
- case 1:
- tmp = (worker*)malloc(workerCount * sizeof(worker));
- for (int i = 0; i < workerCount; i++)
- tmp[i] = allWorkers[i];
- free(allWorkers);
- workerCount = workerCount + 1;
- allWorkers = (worker*)malloc(workerCount * sizeof(worker));
- for (int i = 0; i < workerCount - 1; i++)
- allWorkers[i] = tmp[i];
- free(tmp);
- newWorker(allWorkers, workerCount - 1);
- break;
- case 2:
- printWorkers(allWorkers, workerCount, true, true);
- break;
- case 3:
- searchWorker(allWorkers, workerCount);
- break;
- case 4:
- deleteWorker(allWorkers, workerCount);
- workerCount--;
- break;
- default:
- printf("Ошибка ввода, повторите попытку(нажмите Enter)\n");
- getchar();
- }
- } while (menu != 0);
- free(allWorkers);
- return 0;
- }
Add Comment
Please, Sign In to add comment