Анализ предметной области БАза данных больница
Скачать 0.84 Mb.
|
1 2 ЗАКЛЮЧЕНИЕИспользование подобной программы с открытым исходным кодом, может позволить сэкономить время, что уделяется бухгалтерами и занимает большое время, с учётом разных специфичностей видов оплаты труда. Она поспособствует ознакомлению с подобными П.О до момента установки более серьёзных программ. В результате работы было создано П.О — «Расчёт заработной платы». Программа, разработанная в Visual Studio 2022, является 64-х разрядным приложением и работает под управлением О.С Microsoft Windows. Для обеспечения нормальной работы П.О не требуется посторонних программ «Р.З.П» не является требовательным к техническому обеспечению ПК, занимая минимальное количество памяти. Программный продукт занимает 96 К.Б дискового пространства и не нуждается в установке, что позволяет переносить его на внешнем накопителе и использовать на любом ПК. По окончанию разработки программный продукт прошёл тестирование, на котором было установлено, что П.О «Р.З.П» не имеет программных ошибок, а сам программный продукт готов к использованию. Список литературыПРИЛОЖЕНИЕ A #define _CRT_SECURE_NO_WARNINGS #include #include #include /* Структура для хранения информации про одного человека */ typedef struct tagITEM { char Surname[35], Name[30], MiddleName[30], JobTitile[30]; int Age; int MaxWorkDay; int WorkHour; int PaydayFlag; float AvanceFirst; float PayDay_Result; float GrayPayday_Result; float TaxWithheld; } ITEM; /* Максимум на 100 человек */ ITEM Men[100]; /* Количество занятых элементов в массиве */ int Number; /* Процент Аванса*/ float AvanceProcent = 0.40; /* Процент НДФЛ*/ float Tax = 0.13; /* Меню программы*/ int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int Choice; char Answer = "N"; SettingAutoLoad(); while (Answer != "Y") { system("cls"); printf(" Курсовая работа по теме \"Расчёт оплаты труда\"\n\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Меню программы |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| 1.) База данных сотрудников |\n"); printf("| 2.) Расчёт оплаты труда |\n"); printf("| 3.) Расчёт надбавок труда |\n"); printf("| 4.) Настройки |\n"); printf("| |\n"); printf("| 5.) Выход |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Для выбора введите номер нужного пункта |\n"); printf("|_______________________________________________|\n\n"); printf("Ваш выбор: "); if (scanf("%d", &Choice) != 1) { printf("\n\tБыл введен неверные тип данных\n"); } if (Choice <= 0 || Choice > 6) { printf("\n\tЭлемент не найдем в меню\n"); } else { if (Choice == 1) { DataBase(); } if (Choice == 2) { Payroll_preparation(); } if (Choice == 3) { SurchargeTipe(); } if (Choice == 4) { SettingsMenu(); } if (Choice == 5) { exit(0); } } } return 0; } /*-----------------------Функции для работы с вычислением оплаты труда-----------------------*/ /* Меню вызова функций для управления базой данными */ int Payroll_preparation() { system("cls"); int Choice = 0; int answer = 0; do { printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Расчёт оплаты труда |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| 1.) Расчёт оклада сотрудника |\n"); printf("| 2.) Дневной тариф сотрудника |\n"); printf("| 3.) Почасовая оплата сотрудника |\n"); printf("| 4.) Прямая-сдельная оплата сотрудника |\n"); printf("| 5.) Сдельная-премиальная оплата сотрудника |\n"); printf("| 6.) Сдельная-прогрессивная оплата сотрудника |\n"); printf("| |\n"); printf("| 7.) Возвращение в меню |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Для выбора введите номер нужного пункта |\n"); printf("|_______________________________________________|\n\n"); if (scanf("%d", &Choice) != 1) { } if (Choice == 1) { Payroll(); } if (Choice == 2) { DailyRate(); } if (Choice == 3) { HourlyPayment(); } if (Choice == 4) { DirectPiecework(); } if (Choice == 5) { PieceworkPremium(); } if (Choice == 6) { PieceworkProgressive(); } if (Choice == 7) { main(); } } while ((answer != 1)); return 0; } /* Вычисление оклада сотрудника */ int Payroll() { int i; float Salary; //Оклад int Number_of_days_worked_per_month; //Отработанные дни за месяц int Actual_days_worked; //Фактически отработанные дни float Avance; //Аванс float PayDay; //Зарплата float WhitePayday; //Белая оплата float TaxWithheld; //Удерживаемая сумма Print(); printf("\nВведите номер сотрудника > "); if (scanf("%i", &i) != 1) if (i < 1 || i > Number) { fprintf(stderr, "\nСотрудник с номером %i не существует\n", i); Payroll_preparation(); } printf("\nВведите размер оклада: "); scanf("%f", &Salary); printf("\nКоличество отработанных дней в месяце: "); scanf("%d", &Number_of_days_worked_per_month); printf("\nФактически отработанные дни: "); scanf("%d", &Actual_days_worked); PayDay = (Salary / Number_of_days_worked_per_month) * Actual_days_worked; TaxWithheld = (PayDay * Tax); WhitePayday = (PayDay - TaxWithheld); Avance = WhitePayday * AvanceProcent; Men[i - 1].MaxWorkDay = Number_of_days_worked_per_month; Men[i - 1].PaydayFlag = 1; Men[i - 1].PayDay_Result = PayDay; Men[i - 1].AvanceFirst = Avance; Men[i - 1].PayDay_Result = WhitePayday; Men[i - 1].TaxWithheld = TaxWithheld; printf("\n\nВыполнен расчёт белого оклада: %.2f", WhitePayday); printf("\nУдержано: %.2f\n", TaxWithheld); printf("\nАванc: %.2f\n", Avance); } /* Вычисление дневной ставки сотрудника */ int DailyRate() { int i; float Salary = 0; //Оклад дневной ставки int Actual_days_worked = 0; //Фактически отработанные дни float Avance; //Аванс float PayDay = 0; //Зарплата float WhitePayday; //Белая оплата труда float TaxWithheld; //Удерживаемая сумма Print(); printf("\nВведите номер сотрудника > "); if (scanf("%i", &i) != 1) { } if (i < 1 || i > Number) { fprintf(stderr, "Сотрудник с номером %i не существует\n", i); } printf("\nВведите размер дневной ставки: "); if (scanf("%f", &Salary) != 1) { } else { printf("\nКоличество отработанных дней по факту: "); if (scanf("%d", &Actual_days_worked) != 1) { } else { PayDay = Salary * Actual_days_worked; TaxWithheld = (PayDay * Tax); WhitePayday = (PayDay - TaxWithheld); Avance = WhitePayday * AvanceProcent; Men[i].MaxWorkDay = Salary; Men[i].PaydayFlag = 2; Men[i].PayDay_Result = PayDay; Men[i].PayDay_Result = WhitePayday; Men[i].TaxWithheld = TaxWithheld; Men[i].AvanceFirst = Avance; printf("\n\nВыполнен расчёт дневной ставки: %.2f", WhitePayday); printf("\nУдержано: %.2f\n", TaxWithheld); printf("\nnАванc: %.2f\n", Avance); } } } /* Вычисление часовой оплаты труда сотрудника */ int HourlyPayment() { int i; float Salary = 0; //Оклад int Actual_days_worked = 0; //Фактически отработанные дни int Working_hours = 0; //Рабочие часы float Avance; //Аванс float PayDay = 0; //Зарплата float WhitePayday; //Белая оплата труда float TaxWithheld; //Удерживаемая сумма Print(); printf("\nВведите номер сотрудника > "); scanf("%i",&i); if (i < 1 || i > Number) { fprintf(stderr, "Сотрудник с номером %i не существует\n", i); } printf("\nВведите размер почасовой ставки: "); if (scanf("%f", &Salary) != 1) { } else { printf("\nРабочие часы за день: "); if (scanf("%d", &Working_hours) != 1) { } else { printf("\nФактически отработанные дни: "); if (scanf("%d", &Actual_days_worked) != 1) { } else { PayDay = Salary * Working_hours * Actual_days_worked; TaxWithheld = (PayDay * Tax); WhitePayday = (PayDay - TaxWithheld); Avance = WhitePayday * AvanceProcent; Men[i].MaxWorkDay = Salary; Men[i].WorkHour = Working_hours; Men[i].PaydayFlag = 3; Men[i].PayDay_Result = PayDay; Men[i].AvanceFirst = Avance; Men[i].PayDay_Result = WhitePayday; Men[i].TaxWithheld = TaxWithheld; printf("\n\nВыполнен расчёт часовой ставки: %.2f", WhitePayday); printf("\nУдержано: %.2f\n", TaxWithheld); printf("\nАванc: %.2f\n", Avance); } } } } /* Вычисление прямой сдельной оплаты труда сотрудника */ int DirectPiecework() { int i; int Number_of_units = 0; //Число сделанной продукции float unit_cost = 0; //Стоимость детали float Assembly_cost = 0; //Стоимость сборки float Avance; //Аванс float PayDay = 0; //Зарплата float WhitePayday; //Белая оплата труда float TaxWithheld; //Удерживаемая сумма Print(); printf("\nВведите номер сотрудника > "); scanf("%i",&i); if (i < 1 || i > Number) { fprintf(stderr, "Сотрудник с номером %i не существует\n", i); } printf("\nКоличество продукции: "); if (scanf("%d", &Number_of_units) != 1) { } else { printf("\nСтоимость обработки продукции: "); if (scanf("%f", &unit_cost) != 1) { } else { printf("\nСтоимость сборки: "); if (scanf("%f", &Assembly_cost) != 1) { } else { PayDay = (Number_of_units * unit_cost) + (Number_of_units * Assembly_cost); TaxWithheld = (PayDay * Tax); WhitePayday = (PayDay - TaxWithheld); Avance = WhitePayday * AvanceProcent; Men[i].PayDay_Result = PayDay; Men[i].AvanceFirst = Avance; Men[i].PayDay_Result = WhitePayday; Men[i].TaxWithheld = TaxWithheld; printf("\n\nВыполнен расчёт прямой-сдельной ставки: %.2f", WhitePayday); printf("\nУдержано: %.2f\n", TaxWithheld); printf("\nАванc: %.2f\n", Avance); } } } } /* Вычисление премиально-сдельной оплаты труда сотрудника */ int PieceworkPremium() { int i; int Number_of_units = 0; //Число сделанной продукции float unit_cost = 0; //Стоимость детали float Assembly_cost = 0; //Стоимость сборки float Prize = 0; //Премия float Avance; //Аванс float PayDay = 0; //Зарплата float WhitePayday; //Белая оплата труда float TaxWithheld; //Удерживаемая сумма Print(); printf("\nВведите номер сотрудника > "); scanf("%i",&i); if (i < 1 || i > Number) { fprintf(stderr, "Сотрудник с номером %i не существует\n", i); } printf("\nКоличество продукции: "); if (scanf("%d", &Number_of_units) != 1) { } else { printf("\nСтоимость обработки продукции: "); if (scanf("%f", &unit_cost) != 1) { } else { printf("\nСтоимость сборки: "); if (scanf("%f", &Assembly_cost) != 1) { } else { PayDay = (Number_of_units * unit_cost) + (Number_of_units * Assembly_cost); printf("\nРазмер премии в процентах: "); if (scanf("%f", &Prize) != 1) { } else { PayDay = PayDay + (PayDay * (Prize / 100)); TaxWithheld = (PayDay * Tax); WhitePayday = (PayDay - TaxWithheld); Avance = WhitePayday * AvanceProcent; Men[i].PayDay_Result = PayDay; Men[i].AvanceFirst = Avance; Men[i].PayDay_Result = WhitePayday; Men[i].TaxWithheld = TaxWithheld; printf("\n\nВыполнен расчёт премиально-сдельной ставки: %.2f", WhitePayday); printf("\nУдержано: %.2f\n", TaxWithheld); printf("\nАванc: %.2f\n", Avance); } } } } } /* Вычисление премиально-прогрессивной оплаты труда сотрудника */ int PieceworkProgressive() { int i; int Number_of_products_in_the_normal = 0; //Количество продукции в пределах нормы int Number_of_products_in_excess_the_normal = 0; //Количество продукции сверх нормы int Assembly_cost = 0; //Стоимость сборки детали float unit_cost = 0; //Стоимость детали float Increased_unit_cost = 0; //Повышенная стоимость единицы float Avance; //Аванс float PayDay = 0; //Зарплата float WhitePayday; //Белая оплата труда float TaxWithheld; //Удерживаемая сумма Print(); printf("\nВведите номер сотрудника > "); scanf("%i",&i); if (i < 1 || i > Number) { fprintf(stderr, "Сотрудник с номером %i не существует\n", i); } printf("\nКоличество продукции в пределах нормы: "); if (scanf("%d", &Number_of_products_in_the_normal) != 1) { } else { printf("\nСтоимость единицы продукции: "); if (scanf("%f", &unit_cost) != 1) { } else { printf("\nКоличество продукции сверх нормы: "); if (scanf("%d", &Number_of_products_in_excess_the_normal) != 1) { } else { printf("\nПовышенная стоимость единицы: "); if (scanf("%f", &Increased_unit_cost) != 1) { } else { PayDay = (Number_of_products_in_the_normal * unit_cost) + (Number_of_products_in_excess_the_normal * Increased_unit_cost); TaxWithheld = (PayDay * Tax); WhitePayday = (PayDay - TaxWithheld); Avance = WhitePayday * AvanceProcent; Men[i].PayDay_Result = PayDay; Men[i].AvanceFirst = Avance; Men[i].PayDay_Result = WhitePayday; Men[i].TaxWithheld = TaxWithheld; printf("\n\nВыполнен расчёт прямой-сдельной ставки: %.2f", WhitePayday); printf("\nУдержано: %.2f\n", TaxWithheld); printf("\nАванc: %.2f\n", Avance); } } } } } //-----------------------Функции для работы с базой данных-----------------------// /* Меню вызова функций для управления базой данными */ int DataBase() { system("cls"); int Choice = 0; int answer = 0; while (answer == 0) { printf("|_______________________________________________|\n"); printf("| |\n"); printf("| База данных сотрудников |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| 1.) Вывод зарплат сотрудников |\n"); printf("| 2.) Вывод данных о сотрудниках |\n"); printf("| 3.) Добавление данных о сотрудниках |\n"); printf("| 4.) Загрузить данные |\n"); printf("| 5.) Сохранение данных |\n"); printf("| 6.) Удаление данных |\n"); printf("| 7.) Сортировка |\n"); printf("| |\n"); printf("| 8.) Возвращение в меню |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Для выбора введите номер нужного пункта |\n"); printf("|_______________________________________________|\n\n"); if (scanf("%d", &Choice) != 1) { } if (Choice <= 0 || Choice > 9) { printf("\n\tЭлемент не найдем в меню\n"); Sleep(650); } if (Choice == 1) { Print(); } if (Choice == 2) { PrintMen(); } if (Choice == 3) { Add(); } if (Choice == 4) { Load(); } if (Choice == 5) { Save(); } if (Choice == 6) { Del(); } if (Choice == 7) { Sort(); } if (Choice == 8) { main(); } } } /* Функция для вывода всех элементов */ int Print(void) { int i; printf(" N |Фамилия |Имя |Отчество |Возраст |Белая зарплата |Удержанно |Аванс\n"); for (i = 0; i < Number; i++) { printf(" %2i. |%-20s |%-20s |%-25s |%-13i |%-16f |%-11f |%f\n", i + 1, Men[i].Surname, Men[i].Name, Men[i].MiddleName, Men[i].Age, Men[i].PayDay_Result, Men[i].TaxWithheld, Men[i].AvanceFirst); } } /* Функция для вывода профиля сотрудников */ int PrintMen(void) { int i; printf(" N |Фамилия |Имя |Отчество |Возраст |Должность\n"); for (i = 0; i < Number; i++) { printf(" %2i. |%-20s |%-20s |%-20s |%-13i |%3s\n", i + 1, Men[i].Surname,Men[i].Name, Men[i].MiddleName, Men[i].Age, Men[i].JobTitile); } } /* Функция для добавления элемента*/ int Add(void) { setlocale(LC_ALL, "Rus"); if (Number == 99) { fprintf(stderr, "Невозможно добавить еще один элемент\n"); return; } printf("Введите фамилию > "); if (scanf("%s", &Men[Number].Surname) != 1) { printf("\n\tБыл введен неверный тип данных\n"); } else if(Men[Number].Surname == 0 || strlen(Men[Number].Surname) > 35) { printf("\n\tМаксимальный размер фамилии 35-ть символов\n"); Number--; Number++; } else if (isdigit(Men[Number].Surname) > 0) { printf("\n\tВ фамилии не могут содержаться числа\n"); Number--; Number++; } else { printf("Введите имя > "); if(scanf("%s", &Men[Number].Name) != 1) { printf("\n\tБыл введен неверный тип данных\n"); Number--; Number++; } else if(strlen(Men[Number].Name) < 2 ) { printf("\n\tМинимальное количество знаков для имени 2-единицы\n"); Number--; Number++; } else if (strlen(Men[Number].Name) > 30) { printf("\n\tМаксимальный количество знаков для имени 35-ть символов\n"); Number--; Number++; } else if(isdigit(Men[Number].Name) > 0) { printf("\n\tВ имени не могут содержаться числа\n"); Number--; Number++; } else { printf("Введите отчество > "); if(scanf("%s", &Men[Number].MiddleName) != 1) { printf("\n\tБыл введен неверный тип данных\n"); Number--; Number++; } else if (strlen(Men[Number].MiddleName) < 4) { printf("\n\tМинимальное количество знаков для имени 2-единицы\n"); Number--; Number++; } else if (strlen(Men[Number].MiddleName) > 30) { printf("\n\tМаксимальный количество знаков для имени 35-ть символов\n"); Number--; Number++; } else if (isdigit(Men[Number].MiddleName) > 0) { printf("\n\tВ отчестве не могут содержаться числа\n"); Number--; Number++; } else { printf("Введите возраст > "); if(scanf("%i", &Men[Number].Age) != 1) { printf("\n\tБыл введен неверный тип данных\n"); Number--; Number++; } else if (Men[Number].Age < 16) { printf("Недостаточно лет для работы"); Number--; Number++; } else if (isalpha(Men[Number].Age) > 0) { printf("\n\tВведите возраст в виде цифры\n"); Number--; Number++; } else { printf("Введите должность > "); scanf("%s", &Men[Number].JobTitile); Number++; } } } } } /* Функция для чтения массива из файла */ int Load(void) { FILE* F; int i; if ((F = fopen("DataBase.dat", "rt")) == NULL) { fprintf(stderr, "Невозможно открыть для чтения файл 'DataBase.dat'\n"); return; } fscanf(F, "%i",&Number); for (i = 0; i < Number; i++) fscanf(F, "%s%s%s%s%i%f%f%f%i", Men[i].Surname, Men[i].Name, Men[i].MiddleName, Men[i].JobTitile, &Men[i].Age, &Men[i].PayDay_Result, &Men[i].GrayPayday_Result, &Men[i].TaxWithheld, &Men[i].WorkHour); fclose(F); } /* Функция для сохранения массива в файле */ int Save(void) { FILE* F; int i; if ((F = fopen("DataBase.dat", "wt")) == NULL) { fprintf(stderr, "Невозможно открыть для записи файл 'DataBase.dat'\n"); return; } fprintf(F, "%i\n", Number); for (i = 0; i < Number; i++) fprintf(F, "%s\n%s\n%s\n%s\n%i\n%f\n%f\n%f\n%i\n", Men[i].Surname, Men[i].Name, Men[i].MiddleName, Men[i].JobTitile, Men[i].Age, Men[i].PayDay_Result, Men[i].GrayPayday_Result, Men[i].TaxWithheld, Men[i].WorkHour); fclose(F); } /* Функция для удаления элемента */ int Del(void) { int i; Print(); printf("\nВведите номер удаляемого элемента > "); scanf("%i",&i); if (i < 1 || i > Number) { fprintf(stderr, "Элемент с номером %i не существует\n", i); return; } for (i--; i < Number - 1; i++) Men[i] = Men[i + 1]; Number--; } /* Функция для упорядочивания массива по фамилии */ int Sort(void) { int i, j; register ITEM Temp; for (j = Number - 1; j > 0; j--) for (i = 0; i < j; i++) if (strcmp(Men[i].Surname, Men[i + 1].Surname) > 0) { Temp = Men[i]; Men[i] = Men[i + 1]; Men[i + 1] = Temp; } } //-----------------------Функции для работы с настройками программы-----------------------// /*Меню настроек*/ int SettingsMenu() { int Choice; int answer = 0; //-------------------------------------------------------------------------- while (answer == 0) { system("cls"); printf(" Курсовая работа по теме \"Расчёт оплаты труда\"\n\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Меню настроек |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| 1.) Процент для вычисления Аванса |\n"); printf("| 2.) Изменение НДФЛ |\n"); printf("| |\n"); printf("| 3.) Сохранение настроек |\n"); printf("| 4.) Загрузка настроек |\n"); printf("| |\n"); printf("| 5.) Выход |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Для выбора введите номер нужного пункта |\n"); printf("|_______________________________________________|\n\n"); printf("Ваш выбор: "); if (scanf("%d", &Choice) != 1) { printf("\n\tБыл введен неверные тип данных\n"); Sleep(650); } if (Choice <= 0 || Choice > 5) { printf("\n\tЭлемент не найдем в меню\n"); Sleep(650); } else { if (Choice == 1) { AvanceProcentSettings(); } if (Choice == 2) { TaxSettings(); } if (Choice == 3) { SettingRecord(); } if (Choice == 4) { SettingAutoLoad(); } if (Choice == 5) { main(); } } } } // Функция для установки нужного процентного значения для вычисления аванса int AvanceProcentSettings() { float Temp = AvanceProcent; printf("|__________________________________________\n"); printf("|\t\tВНИМАНИЕ\n\tВводите обычное целое число\n\tбез иных знаков\n"); printf("\nУкажите процент для аванса\n"); if (scanf("%f", &AvanceProcent) != 1) { printf("\n\tБыл введён неверный тип данных\n"); AvanceProcent = Temp; } } // Функция для установки нужного значения налоговой ставки int TaxSettings() { float Temp = Tax; printf("\nУкажите % для НДФЛ: "); if (scanf("%f", &Tax) != 1) { printf("\n\tБыл введён неверный тип данных\n"); Tax = Temp; } } // Запись настроек в файл настроек int SettingRecord() { FILE* F; int i; if ((F = fopen("Settings.dat", "wt")) == NULL) { fprintf(stderr, "Невозможно открыть для записи файл 'Settings.dat'\n"); return; } fprintf(F, "%f\n%f", AvanceProcent, Tax); fclose(F); } // Автозагрузка сохранённых в файл настроек int SettingAutoLoad() { FILE* F; int i; if ((F = fopen("Settings.dat", "rt")) == NULL) { fprintf(stderr, "Невозможно открыть для чтения файл 'Settings.dat'\n"); return; } fscanf(F, "%f%f", &AvanceProcent, &Tax); fclose(F); } //-----------------------Функции для работы с выплатами-----------------------// /* Выписка надбавки */ int SurchargeTipe() { int i; int Choice; int answer = 0; //Доделать работу и проверить на баги //-------------------------------------------------------------------------- while (answer == 0) { system("cls"); printf(" _______________________________________________ \n"); printf("| |\n"); printf("| Управление выплатами |\n"); printf("|_______________________________________________|\n"); printf("| Выписка выплат |\n"); printf("| |\n"); printf("| 1.) За работу во вредных и (или) опасных |\n"); printf("| условиях труда |\n"); printf("| 2.) За сверхурочную работу |\n"); printf("| 3.) За работу в ночное время |\n"); printf("| 4.) За труд в выходные и праздники |\n"); printf("| |\n"); printf("| 5.) Выход |\n"); printf("|_______________________________________________|\n"); printf("| |\n"); printf("| Для выбора введите номер нужного пункта |\n"); printf("|_______________________________________________|\n\n"); printf("Ваш выбор: "); if (scanf("%d", &Choice) != 1) { printf("\n\tБыл введен неверные тип данных\n"); Sleep(650); } if (Choice <= 0 || Choice > 5) { printf("\n\tЭлемент не найдем в меню\n"); Sleep(650); } else { if (Choice == 1) { WHC_S(); } if (Choice == 2) { OverTime_S(); } if (Choice == 3) { NightWork(); } if (Choice == 4) { Holiday(); } if (Choice == 5) { main(); } } } } /* Вычисление надбавки за опасные условия труда */ int WHC_S() { int i; float WHC = 0; float WHCProcent = 0.04; Print(); printf("\nВведите номер сотрудника > "); if (scanf("%i", &i) != 1) { } if (i < 1 || i > Number) { fprintf(stderr, "\nСотрудник с номером %i не существует\n", i); SurchargeTipe(); } WHC = Men[i].PayDay_Result * WHCProcent; printf("\nВ итоге премия составляет: %f",&WHC); Sleep(530); } /* Вычисление сверхурочных */ int OverTime_S() { int i; float Overtime = 0; float PayDayOneDay = 0; float PayDayOneHour = 0; float OvertimeProcent = 0.50; float OvertimeFirstHour = 0; float OvertimeOverHour = 0; float OvertimeResult = 0; Print(); printf("\nВведите номер сотрудника > "); if (scanf("%i", &i) != 1) { } if (i < 1 || i > Number) { fprintf(stderr, "\nСотрудник с номером %i не существует\n", i); SurchargeTipe(); } printf("Введите количество часов: "); scanf("%f",&Overtime); if (Men[i].PaydayFlag == 1) { PayDayOneDay = Men[i].PayDay_Result / Men[i].MaxWorkDay; PayDayOneHour = PayDayOneDay / Men[i].WorkHour; if (Overtime < 2) { printf("Сверхурочные не начисляются за один час"); } if (Overtime > 2) { OvertimeFirstHour = PayDayOneHour * OvertimeProcent; OvertimeOverHour = (PayDayOneHour * (Overtime - 2)) * 2; OvertimeResult = OvertimeFirstHour + OvertimeOverHour; Men[i].PayDay_Result = +OvertimeResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге сверхурочные составляют: %f",&OvertimeResult); } if (Overtime == 2) { OvertimeResult = PayDayOneHour * OvertimeProcent; Men[i].PayDay_Result = +OvertimeResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге сверхурочные составляют: %f",&OvertimeResult); } } if (Men[i].PaydayFlag == 2) { PayDayOneHour = (Men[i].MaxWorkDay) / Men[i].WorkHour; if (Overtime < 2) { printf("Сверхурочные не начисляются за один час"); } if (Overtime > 2) { OvertimeFirstHour = PayDayOneHour * OvertimeProcent; OvertimeOverHour = (PayDayOneHour * (Overtime - 2)) * 2; OvertimeResult = OvertimeFirstHour + OvertimeOverHour; Men[i].PayDay_Result = +OvertimeResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге сверхурочные составляют: %f",&OvertimeResult); } if (Overtime == 2) { OvertimeResult = PayDayOneHour * OvertimeProcent; Men[i].PayDay_Result = +OvertimeResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге сверхурочные составляют: %f",&OvertimeResult); } } if (Men[i].PaydayFlag == 3) { PayDayOneHour = Men[i].MaxWorkDay; if (Overtime < 2) { printf("Сверхурочные не начисляются за один час"); } if (Overtime > 2) { OvertimeFirstHour = PayDayOneHour * OvertimeProcent; OvertimeOverHour = (PayDayOneHour * (Overtime - 2)) * 2; OvertimeResult = OvertimeFirstHour + OvertimeOverHour; Men[i].PayDay_Result = +OvertimeResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге сверхурочные составляют: %f", &OvertimeResult); } if (Overtime == 2) { OvertimeResult = PayDayOneHour * OvertimeProcent; Men[i].PayDay_Result = +OvertimeResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге сверхурочные составляют: %f", &OvertimeResult); } } } /* Вычисление за работу в ночное время */ int NightWork() { int i; float PayDayOneDay = 0; float PayDayOneHour = 0; float NightOverHour = 0; int NightCounter; float NightResult = 0; Print(); printf("\nВведите номер сотрудника > "); if (scanf("%i", &i) != 1) { } if (i < 1 || i > Number) { fprintf(stderr, "\nСотрудник с номером %i не существует\n", i); SurchargeTipe(); } if (Men[i].PaydayFlag == 1) { PayDayOneDay = Men[i].PayDay_Result / Men[i].MaxWorkDay; PayDayOneHour = PayDayOneDay / Men[i].WorkHour; printf("\nВведите количество отработанных часов: "); scanf("%i",&NightCounter); for (int counter = 1; counter < NightCounter; counter++) { NightOverHour = PayDayOneHour * 0.20; NightResult = +NightOverHour; } Men[i].PayDay_Result = +NightResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге плата за ночную смену: %f",&NightResult); } if (Men[i].PaydayFlag == 2) { PayDayOneHour = Men[i].MaxWorkDay / Men[i].WorkHour; printf("\nВведите количество отработанных часов: "); scanf("%i",&NightCounter); for (int counter = 1; counter < NightCounter; counter++) { NightOverHour = PayDayOneHour * 0.20; NightResult = +NightOverHour; } Men[i].PayDay_Result = +NightResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге плата за ночную смену: %f",&NightResult); } if (Men[i].PaydayFlag == 3) { PayDayOneHour = Men[i].MaxWorkDay; printf("\nВведите количество отработанных часов: "); scanf("%i",&NightCounter); for (int counter = 1; counter < NightCounter; counter++) { NightOverHour = PayDayOneHour * 0.20; NightResult = +NightOverHour; } Men[i].PayDay_Result = +NightResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nВ итоге плата за ночную смену: %f",&NightResult); } } /* Вычисление за работу в выходной день */ int Holiday() { int i; float PayDayOneDay = 0; float HolidayResult = 0; int HolidayWorkDay = 0; Print(); printf("\nВведите номер сотрудника > "); if (scanf("%i", &i) != 1) { } if (i < 1 || i > Number) { fprintf(stderr, "\nСотрудник с номером %i не существует\n", i); SurchargeTipe(); } if (Men[i].PaydayFlag == 1) { PayDayOneDay = Men[i].PayDay_Result / Men[i].MaxWorkDay; printf("\nУкажите число отработанных дней: "); if (scanf("%i", &HolidayWorkDay) != 1) { } HolidayResult = PayDayOneDay * HolidayWorkDay; Men[i].PayDay_Result = +HolidayResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nИтоговый расчёт за работу в выходные дни: %i", HolidayResult); } if (Men[i].PaydayFlag == 2) { PayDayOneDay = Men[i].MaxWorkDay; printf("\nУкажите число отработанных дней: "); if (scanf("%i", &HolidayWorkDay) != 1) { } HolidayResult = PayDayOneDay * HolidayWorkDay; Men[i].PayDay_Result = +HolidayResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nИтоговый расчёт за работу в выходные дни: %i", HolidayResult); } if (Men[i].PaydayFlag == 3) { PayDayOneDay = Men[i].MaxWorkDay * Men[i].WorkHour; printf("\nУкажите число отработанных дней: "); if (scanf("%i", &HolidayWorkDay) != 1) { } HolidayResult = PayDayOneDay * HolidayWorkDay; Men[i].PayDay_Result = +HolidayResult; Men[i].AvanceFirst = Men[i].PayDay_Result * AvanceProcent; printf("\nИтоговый расчёт за работу в выходные дни: %i", HolidayResult); } } ИФСТ.467239.165 Лист Дата Подпись № документа Лист Изм. 1 2 |