Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- int i, j, k;
- FILE* users_file, * listfile;
- struct User {
- char login[100];
- char password[100];
- int permission;
- };
- User users[100];
- int users_count = 0;
- struct List {
- char nomer[100];
- char org[100];
- char rabotnik[100];
- char period1[100];
- char period2[100];
- char nazvanie[100];
- char data_predyavleniya[100];
- };
- List list[100];
- int list_count = 0;
- int _index = 0;
- int enter();
- void menu_admin();
- void menu_user();
- void settings();
- void print_user();
- void print_list();
- void add_list();
- void add_users();
- void delete_list();
- void delete_users();
- void change_list();
- void search_list();
- void ind_zadanie();
- //
- void write_users() {
- fopen_s(&users_file, "enter", "w+b");
- if (users_file)
- {
- fwrite(&users_count, sizeof(int), 1, users_file);
- for (i = 0; i < users_count; i++) {
- fwrite(&users[i], sizeof(users), 1, users_file);
- }
- fclose(users_file);
- }
- }
- void read_users() {
- fopen_s(&users_file, "enter", "rb");
- if (users_file)
- {
- fread(&users_count, sizeof(int), 1, users_file);
- for (i = 0; i < users_count; i++) {
- fread(&users[i], sizeof(users), 1, users_file);
- }
- fclose(users_file);
- }
- else
- {
- users_count = 2;
- strcpy_s(users[0].login, 100, "admin");
- strcpy_s(users[0].password, 100, "admin");
- users[0].permission = 1;
- strcpy_s(users[1].login, 100, "user");
- strcpy_s(users[1].password, 100, "user");
- users[1].permission = 0;
- write_users();
- }
- }
- void write_list() {
- fopen_s(&listfile, "list", "w+b");
- if (listfile)
- {
- fwrite(&list_count, sizeof(int), 1, listfile);
- for (i = 0; i < list_count; i++) {
- fwrite(&list[i], sizeof(list), 1, listfile);
- }
- fclose(listfile);
- }
- }
- void read_list() {
- fopen_s(&listfile, "list", "rb");
- if (listfile)
- {
- fread(&list_count, sizeof(int), 1, listfile);
- for (i = 0; i < list_count; i++) {
- fread(&list[i], sizeof(list), 1, listfile);
- }
- fclose(listfile);
- }
- else
- {
- write_list();
- }
- }
- int main(void) {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int q = 1;
- char swtch;
- while (q) {
- system("cls");
- read_users();
- read_list();
- printf("Начальное меню\n");
- printf("1)Войти\n2)Закрыть программу\n");
- scanf_s(" %c", &swtch, 1);
- switch (swtch) {
- case '1':
- if (enter()) {
- printf("Неверные данные\n");
- system("pause");
- }
- else {
- if (users[_index].permission == 1) {
- menu_admin();
- }
- else {
- menu_user();
- }
- }
- break;
- case '2':
- q = 0;
- break;
- default:
- break;
- }
- }
- return 0;
- }
- int enter() {
- char login[100], parol[100];
- printf("Логин\n");
- scanf_s("%s", &login, 100);
- printf("Пароль\n");
- scanf_s("%s", &parol, 100);
- for (i = 0; i < users_count; i++) {
- if (strcmp(users[i].login, login) == 0 && strcmp(users[i].password, parol) == 0) {
- _index = i;
- return 0;
- }
- }
- return 1;
- }
- void menu_admin() {
- int q = 1;
- char swtch;
- while (q) {
- system("cls");
- printf("Меню администратора\n");
- printf("1)Добавить лист\n");
- printf("2)Удалить лист\n");
- printf("3)Изменить лист\n");
- printf("4)Найти лист\n");
- printf("5)Вывести листы\n");
- printf("6)Вывести 3 самые популярные болезни\n");
- printf("7)Настройки пользователей\n");
- printf("8)Выход из меню\n");
- scanf_s(" %c", &swtch, 1);
- switch (swtch) {
- case '1':
- add_list();
- break;
- case '2':
- delete_list();
- break;
- case '3':
- change_list();
- break;
- case '4':
- search_list();
- break;
- case '5':
- print_list();
- break;
- case '6':
- ind_zadanie();
- break;
- case '7':
- settings();
- break;
- case '8':
- q = 0;
- break;
- default:
- break;
- }
- }
- }
- void menu_user() {
- int q = 1;
- char swtch;
- while (q) {
- system("cls");
- printf("Меню пользователя\n");
- printf("1)Найти лист\n");
- printf("2)Вывести листы\n");
- printf("3)Вывест 3 самые популярные болезни\n");
- printf("4)Выход из меню\n");
- scanf_s(" %c", &swtch, 1);
- switch (swtch) {
- case '1':
- search_list();
- break;
- case '2':
- print_list();
- break;
- case '3':
- ind_zadanie();
- break;
- case '4':
- q = 0;
- break;
- default:
- break;
- }
- }
- }
- void settings() {
- int q = 1;
- char swtch;
- while (q) {
- system("cls");
- printf("Настройки пользователей\n");
- printf("1)Добавить пользователя\n");
- printf("2)Удалить пользователя\n");
- printf("3)Вывести пользователей\n");
- printf("4)Выход из меню\n");
- scanf_s(" %c", &swtch, 1);
- switch (swtch) {
- case '1':
- add_users();
- break;
- case '2':
- delete_users();
- break;
- case '3':
- print_user();
- break;
- case '4':
- q = 0;
- break;
- default:
- break;
- }
- }
- }
- void add_list() {
- int i;
- char string[100];
- printf("Номер\n");
- scanf_s("%s", &list[list_count].nomer, 100);
- printf("Организация\n");
- scanf_s("%s", &list[list_count].org, 100);
- printf("Работник\n");
- scanf_s("%s", &list[list_count].rabotnik, 100);
- printf("Начало случая\n");
- scanf_s("%s", &list[list_count].period1, 100);
- string[0] = ' ';
- string[1] = ' ';
- string[2] = ' ';
- string[3] = ' ';
- string[4] = ' ';
- string[0] = list[list_count].period1[0];
- string[1] = list[list_count].period1[1];
- if (atoi(string) > 31) {
- printf("День больше 31\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].period1[3];
- string[1] = list[list_count].period1[4];
- if (atoi(string) > 12) {
- printf("Месяц больше 12\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].period1[6];
- string[1] = list[list_count].period1[7];
- string[2] = list[list_count].period1[8];
- string[3] = list[list_count].period1[9];
- if (atoi(string) > 2019) {
- printf("Год больше 2019 %d\n", atoi(string));
- system("pause");
- return;
- }
- if (atoi(string) < 1000) {
- printf("Год меньше 1000\n");
- system("pause");
- return;
- }
- printf("Конец случая\n");
- scanf_s("%s", &list[list_count].period2, 100);
- string[0] = ' ';
- string[1] = ' ';
- string[2] = ' ';
- string[3] = ' ';
- string[4] = ' ';
- string[0] = list[list_count].period2[0];
- string[1] = list[list_count].period2[1];
- if (atoi(string) > 31) {
- printf("День больше 31\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].period2[3];
- string[1] = list[list_count].period2[4];
- if (atoi(string) > 12) {
- printf("Месяц больше 12\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].period2[6];
- string[1] = list[list_count].period2[7];
- string[2] = list[list_count].period2[8];
- string[3] = list[list_count].period2[9];
- if (atoi(string) > 2019) {
- printf("Год больше 2019\n");
- system("pause");
- return;
- }
- if (atoi(string) < 1000) {
- printf("Год меньше 1000\n");
- system("pause");
- return;
- }
- printf("Название болезни\n");
- scanf_s("%s", &list[list_count].nazvanie, 100);
- printf("Дата предъявления\n");
- scanf_s("%s", &list[list_count].data_predyavleniya, 100);
- string[0] = ' ';
- string[1] = ' ';
- string[2] = ' ';
- string[3] = ' ';
- string[4] = ' ';
- string[0] = list[list_count].data_predyavleniya[0];
- string[1] = list[list_count].data_predyavleniya[1];
- if (atoi(string) > 31) {
- printf("День больше 31\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].data_predyavleniya[3];
- string[1] = list[list_count].data_predyavleniya[4];
- if (atoi(string) > 12) {
- printf("Месяц больше 12\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].data_predyavleniya[6];
- string[1] = list[list_count].data_predyavleniya[7];
- string[2] = list[list_count].data_predyavleniya[8];
- string[3] = list[list_count].data_predyavleniya[9];
- if (atoi(string) > 2019) {
- printf("Год больше 2019\n");
- system("pause");
- return;
- }
- if (atoi(string) < 1000) {
- printf("Год меньше 1000\n");
- system("pause");
- return;
- }
- if (list[list_count].data_predyavleniya[2] != '.') {
- for (i = 8; i > 0; i--) {
- list[list_count].data_predyavleniya[i] = list[list_count].data_predyavleniya[i - 1];
- }
- list[list_count].data_predyavleniya[2] = '.';
- list[list_count].data_predyavleniya[0] = '0';
- }
- if (list[list_count].data_predyavleniya[5] != '.') {
- for (i = 9; i > 3; i--) {
- list[list_count].data_predyavleniya[i] = list[list_count].data_predyavleniya[i - 1];
- }
- list[list_count].data_predyavleniya[3] = '0';
- list[list_count].data_predyavleniya[5] = '.';
- }
- list[list_count].data_predyavleniya[10] = '\0';
- list_count++;
- write_list();
- }
- void add_users() {
- printf("Логин\n");
- scanf_s("%s", &users[users_count].login, 100);
- printf("Пароль\n");
- scanf_s("%s", &users[users_count].password, 100);
- users[users_count].permission = 0;
- users_count++;
- write_users();
- }
- void delete_list() {
- char nomer[100];
- print_list();
- printf("Номер листа\n");
- scanf_s("%s", &nomer, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(nomer, list[i].nomer) == 0) {
- list_count--;
- for (j = i; j < list_count; j++) {
- list[j] = list[j + 1];
- }
- write_list();
- }
- }
- }
- void delete_users() {
- print_user();
- char login[100];
- printf("Логин\n");
- scanf_s("%s", &login, 100);
- for (i = 0; i < users_count; i++) {
- if (strcmp(login, users[i].login) == 0) {
- users_count--;
- for (j = i; j < users_count; j++) {
- users[j] = users[j + 1];
- }
- write_users();
- }
- }
- }
- void print_list() {
- system("cls");
- printf("----------------------------------------------------------------------------------------------------------------\n");
- printf("|Номер |Организация |Работник |Период нетрудоспособности|Название бол. |Дата предъявления |\n");
- printf("----------------------------------------------------------------------------------------------------------------\n");
- for (i = 0; i < list_count; i++) {
- printf("|");
- printf("%s", list[i].nomer);
- for (j = 0; j < 15 - (int)strlen(list[i].nomer); j++) {
- printf(" ");
- }
- printf("|");
- printf("%s", list[i].org);
- for (j = 0; j < 15 - (int)strlen(list[i].org); j++) {
- printf(" ");
- }
- printf("|");
- printf("%s", list[i].rabotnik);
- for (j = 0; j < 15 - (int)strlen(list[i].rabotnik); j++) {
- printf(" ");
- }
- printf("|");
- printf("%s-%s", list[i].period1, list[i].period2);
- for (j = 0; j < 24 - ((int)strlen(list[i].period1) + (int)strlen(list[i].period2)); j++) {
- printf(" ");
- }
- printf("|");
- printf("%s", list[i].nazvanie);
- for (j = 0; j < 15 - (int)strlen(list[i].nazvanie); j++) {
- printf(" ");
- }
- printf("|");
- printf("%s", list[i].data_predyavleniya);
- for (j = 0; j < 20 - (int)strlen(list[i].data_predyavleniya); j++) {
- printf(" ");
- }
- printf("|\n");
- printf("----------------------------------------------------------------------------------------------------------------\n");
- }
- system("pause");
- }
- void print_user() {
- system("cls");
- printf("---------------------------------\n");
- printf("|Логин |Пароль |\n");
- printf("| | |\n");
- printf("---------------------------------\n");
- for (i = 0; i < users_count; i++) {
- printf("|%s", users[i].login);
- for (j = 0; j < 15 - (int)strlen(users[i].login); j++) {
- printf(" ");
- }
- printf("|");
- printf("%s", users[i].password);
- for (j = 0; j < 15 - (int)strlen(users[i].password); j++) {
- printf(" ");
- }
- printf("|\n");
- printf("---------------------------------\n");
- }
- system("pause");
- }
- void change_list() {
- printf("Номер листа\n");
- char nomer[100];
- char string[100];
- char swtch;
- scanf_s("%s", &nomer, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(nomer, list[i].nomer) == 0) {
- printf("1)Номер\n");
- printf("2)Организацию\n");
- printf("3)Работника\n");
- printf("4)Начало случая\n");
- printf("5)Конец случая\n");
- printf("6)Название болезни\n");
- printf("7)Дату предъявления\n");
- printf("8)Выход\n");
- scanf_s(" %c", &swtch, 1);
- switch (swtch) {
- case '1':
- printf("Новый номер\n");
- scanf_s("%s", &list[i].nomer, 100);
- write_list();
- return;
- case '2':
- printf("Новая организация\n");
- scanf_s("%s", &list[i].org, 100);
- write_list();
- return;
- case '3':
- printf("Новый работник\n");
- scanf_s("%s", &list[i].rabotnik, 100);
- write_list();
- return;
- case '4':
- printf("Новое начало случая\n");
- scanf_s("%s", &list[i].period1, 100);
- string[0] = ' ';
- string[1] = ' ';
- string[2] = ' ';
- string[3] = ' ';
- string[4] = ' ';
- string[0] = list[i].period1[0];
- string[1] = list[i].period1[1];
- if (atoi(string) > 31) {
- printf("День больше 31\n");
- system("pause");
- return;
- }
- string[0] = list[i].period1[3];
- string[1] = list[i].period1[4];
- if (atoi(string) > 12) {
- printf("Месяц больше 12\n");
- system("pause");
- return;
- }
- string[0] = list[i].period1[6];
- string[1] = list[i].period1[7];
- string[2] = list[i].period1[8];
- string[3] = list[i].period1[9];
- if (atoi(string) > 2019) {
- printf("Год больше 2019\n");
- system("pause");
- return;
- }
- if (atoi(string) < 1000) {
- printf("Год меньше 1000\n");
- system("pause");
- return;
- }
- write_list();
- return;
- case '5':
- printf("Новый конец случая\n");
- scanf_s("%s", &list[i].period2, 100);
- string[0] = ' ';
- string[1] = ' ';
- string[2] = ' ';
- string[3] = ' ';
- string[4] = ' ';
- string[0] = list[i].period2[0];
- string[1] = list[i].period2[1];
- if (atoi(string) > 31) {
- printf("День больше 31\n");
- system("pause");
- return;
- }
- string[0] = list[i].period2[3];
- string[1] = list[i].period2[4];
- if (atoi(string) > 12) {
- printf("Месяц больше 12\n");
- system("pause");
- return;
- }
- string[0] = list[i].period2[6];
- string[1] = list[i].period2[7];
- string[2] = list[i].period2[8];
- string[3] = list[i].period2[9];
- if (atoi(string) > 2019) {
- printf("Год больше 2019\n");
- system("pause");
- return;
- }
- if (atoi(string) < 1000) {
- printf("Год меньше 1000\n");
- system("pause");
- return;
- }
- write_list();
- return;
- case '6':
- printf("Новый название болезни\n");
- scanf_s("%s", &list[i].nazvanie, 100);
- write_list();
- return;
- case '7':
- printf("Новая дата предъявления\n");
- scanf_s("%s", &list[i].data_predyavleniya, 100);
- string[0] = ' ';
- string[1] = ' ';
- string[2] = ' ';
- string[3] = ' ';
- string[4] = ' ';
- string[0] = list[list_count].data_predyavleniya[0];
- string[1] = list[list_count].data_predyavleniya[1];
- if (atoi(string) > 31) {
- printf("День больше 31\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].data_predyavleniya[3];
- string[1] = list[list_count].data_predyavleniya[4];
- if (atoi(string) > 12) {
- printf("Месяц больше 12\n");
- system("pause");
- return;
- }
- string[0] = list[list_count].data_predyavleniya[6];
- string[1] = list[list_count].data_predyavleniya[7];
- string[2] = list[list_count].data_predyavleniya[8];
- string[3] = list[list_count].data_predyavleniya[9];
- if (atoi(string) > 2019) {
- printf("Год больше 2019\n");
- system("pause");
- return;
- }
- if (atoi(string) < 1000) {
- printf("Год меньше 1000\n");
- system("pause");
- return;
- }
- if (list[i].data_predyavleniya[2] != '.') {
- for (i = 8; i > 0; i--) {
- list[i].data_predyavleniya[i] = list[i].data_predyavleniya[i - 1];
- }
- list[i].data_predyavleniya[2] = '.';
- list[i].data_predyavleniya[0] = '0';
- }
- if (list[i].data_predyavleniya[5] != '.') {
- for (i = 9; i > 3; i--) {
- list[i].data_predyavleniya[i] = list[i].data_predyavleniya[i - 1];
- }
- list[i].data_predyavleniya[3] = '0';
- list[i].data_predyavleniya[5] = '.';
- }
- list[i].data_predyavleniya[10] = '\0';
- write_list();
- return;
- case '8':
- return;
- default:
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- }
- }
- void search_list() {
- int q = 1;
- char swtch;
- char str[100];
- while (q) {
- system("cls");
- printf("1)Номер\n");
- printf("2)Организацию\n");
- printf("3)Работника\n");
- printf("4)Начало случая\n");
- printf("5)Конец случая\n");
- printf("6)Название болезни\n");
- printf("7)Дату предъявления\n");
- printf("8)Выход\n");
- scanf_s(" %c", &swtch, 1);
- switch (swtch) {
- case '1':
- printf("Введите номер\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].nomer) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '2':
- printf("Введите организацию\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].org) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '3':
- printf("Введите работника\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].rabotnik) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '4':
- printf("Введите начало случая\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].period1) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '5':
- printf("Введите конец случая\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].period2) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '6':
- printf("Введите название болезни\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].nazvanie) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '7':
- printf("Введите дату предъявления\n");
- scanf_s("%s", &str, 100);
- for (i = 0; i < list_count; i++) {
- if (strcmp(str, list[i].data_predyavleniya) == 0) {
- printf("----------------------------------\n");
- printf("Номер: %s\nОрганизация: %s\nРаботник: %s\nПериод нетрудоспособности: %s-%s\nНазвание болезни: %s\nДата предъявления: %s\n", list[i].nomer, list[i].org, list[i].rabotnik, list[i].period1, list[i].period2, list[i].nazvanie, list[i].data_predyavleniya);
- }
- }
- break;
- case '8':
- return;
- default:
- break;
- }
- system("pause");
- }
- }
- void ind_zadanie() {
- int i, j;
- int massiv[100];
- for (i = 0; i < list_count; i++) {
- massiv[i] = 0;
- }
- for (i = 0; i < list_count; i++) {
- for (j = 0; j < list_count; j++) {
- if (strcmp(list[i].nazvanie, list[j].nazvanie) == 0) {
- massiv[i]++;
- }
- }
- }
- int tmp;
- List temp;
- int index;
- for (i = 0; i < list_count - 1; i++) {
- index = i;
- for (j = i + 1; j < list_count; j++) {
- if (massiv[j] > massiv[index]) {
- index = j;
- }
- }
- temp = list[index];
- tmp = massiv[index];
- list[index] = list[i];
- massiv[index] = massiv[i];
- list[i] = temp;
- massiv[i] = tmp;
- }
- if (list_count < 1)
- {
- printf("Нет ни одного больничного\n");
- system("pause");
- return;
- }
- printf("1 - %s\n", list[0].nazvanie);
- for (i = 1; i < list_count; i++) {
- if (strcmp(list[i].nazvanie, list[0].nazvanie) != 0) {
- printf("2 - %s\n", list[i].nazvanie);
- break;
- }
- }
- for (j = 1; j < list_count; j++) {
- if (strcmp(list[j].nazvanie, list[0].nazvanie) != 0 && strcmp(list[j].nazvanie, list[i].nazvanie) != 0) {
- printf("3 - %s\n", list[j].nazvanie);
- break;
- }
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement