Untitled
unknown
plain_text
2 years ago
11 kB
5
Indexable
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> typedef struct date { int nomer, naz, srok; } date; typedef struct data { char name[50]; struct date D; } data; typedef struct table { data Q[50]; int N; } table; void ADD(table* T) //добавление данных { printf("Фамилия "); scanf("%s", &T->Q[T->N].name); printf("Номер читательского билета "); scanf("%d", &T->Q[T->N].D.nomer); printf("Название книги "); scanf("%d", &T->Q[T->N].D.naz); printf("Срок возврата "); scanf("%d", &T->Q[T->N].D.srok); T->N += 1; return; } table PRINT(table T) // вывод таблицы { for (int i = 0; i < T.N; i++) { printf("Фамилия - %s\n", T.Q[i].name); printf("Номер читательского билета - %d\n", T.Q[i].D.nomer); printf("Название книги - %d\n", T.Q[i].D.naz); printf("Срок возврата - %d\n", T.Q[i].D.srok); } return; } void menu() //вывод меню таблицы { printf("1 - Внести данные\n"); printf("2 - Загрузить таблицу\n"); printf("3 - Сохранить таблицу\n"); printf("4 - Просмотр таблицы\n"); printf("5 - Сортировка таблицы\n"); printf("6 - Поиск \n"); printf("7 - Удалить элемент\n"); printf("8 - Изменить элемент\n"); } void load(table* T, FILE* test) //загрузка таблицы { if ((test = fopen("test.txt", "r")) == NULL) { printf("NO\n"); system("pause"); } else { T->N = 0; while (!feof(test)) { fscanf(test, "%s %d %d %d", &T->Q[T->N].name, &T->Q[T->N].D.naz, &T->Q[T->N].D.nomer, &T->Q[T->N].D.srok); T->N++; } printf("okk"); } fclose(test); } void save(table T, FILE* test) // сохранение таблицы { test = fopen("test.txt", "w"); // открытие файла for (int i = 0; i < T.N; i++) { if (i < (T.N - 1)) fprintf(test, "%s %d %d %d\n", T.Q[i].name, T.Q[i].D.nomer, T.Q[i].D.naz, T.Q[i].D.srok); // сканирование данных и сохранение их в таблицу else fprintf(test, "%s %d %d %d", T.Q[i].name, T.Q[i].D.nomer, T.Q[i].D.naz, T.Q[i].D.srok); } fclose(test); } void delete(table* T, int pos) // удаление данных таблицы { for (int i = pos; i < T->N; i++) { T->Q[i] = T->Q[i + 1]; (T->N)--; } } void sort(table* T) // сортировка таблицы { printf("Сортировать по :\n"); printf("1 - По фамилии\n"); printf("2 - По номеру\n"); printf("3 - По названию\n"); printf("4 - По сроку\n"); int h; scanf("%d", &h); switch (h) // выбор данных по которым следует сортировать { case 1: // сортировка по имении { for (int i = 0; i < (T->N) - 1; i++) { for (int j = i + 1; j < T->N; j++) { if (T->Q[i].D.nomer > T->Q[j].D.nomer) { data tmp = T->Q[i]; T->Q[i] = T->Q[j]; T->Q[j] = tmp; } } } PRINT(*T); break; } case 2: // сортировка по номеру { for (int i = 0; i < (T->N) - 1; i++) { for (int j = i + 1; j < T->N; j++) { if (T->Q[i].D.nomer > T->Q[j].D.nomer) { data tmp = T->Q[i]; T->Q[i] = T->Q[j]; T->Q[j] = tmp; } } } PRINT(*T); break; } case 3: // сортировка по названия билета { for (int i = 0; i < (T->N) - 1; i++) { for (int j = i + 1; j < T->N; j++) { if (T->Q[i].D.naz > T->Q[j].D.naz) { data tmp = T->Q[i]; T->Q[i] = T->Q[j]; T->Q[j] = tmp; } } } PRINT(*T); break; } case 4: // сортировка по сроку { for (int i = 0; i < (T->N) - 1; i++) { for (int j = i + 1; j < T->N; j++) { if (T->Q[i].D.srok > T->Q[j].D.srok) { data tmp = T->Q[i]; T->Q[i] = T->Q[j]; T->Q[j] = tmp; } } } PRINT(*T); break; } default: { break; } } } char* find(char* p, char* q) // сравнение строк для поиска данных { int i; for (; *p != '\0'; p++) { for (i = 0; q[i] != '\0' && q[i] == p[i]; i++); if (q[i] == '\0') return p; } return 0; } void search(table* T) // поиск данных таблицы { printf("Поиск по\n"); printf("1 - По Фамилии\n"); printf("2 - По номеру\n"); printf("3 - По названию\n"); printf("4 - По сроку\n"); int p; int k; int n; char poisk[20]; scanf("%d", &p); switch (p) // выбор данных по которым следует искать { case 1: // искать по имени { printf("Введите назавние\n"); scanf("%s", &poisk); for (int i = 0; i < T->N; i++) { if (find(T->Q[i].name, poisk)) // вывод найденых данных { k = 1; printf("Найдено:\n"); printf("Фамилия - %s \n", T->Q[i].name); printf("Номер - %d \n", T->Q[i].D.nomer); printf("Название - %d \n", T->Q[i].D.naz); printf("Срок - %d \n", T->Q[i].D.srok); } } if (k == 0) { printf("Ничего не найдено"); } break; } case 2: // искать по номеру билета { printf("Введите номер\n"); scanf("%d", &n); for (int i = 0; i < T->N; i++) { if (n == T->Q[i].D.nomer) // вывод найденных данных { k = 1; printf("Фамилия - %s \n", T->Q[i].name); printf("Номер - %d \n", T->Q[i].D.nomer); printf("Название - %d \n", T->Q[i].D.naz); printf("Срок - %d \n", T->Q[i].D.srok); } } if (k == 0) { printf("Ничего не найдено"); } break; } case 3: // искать по названию книги { printf("Введите название\n"); scanf("%d", &n); for (int i = 0; i < T->N; i++) { if (n == T->Q[i].D.naz) // вывод найденных данных { k = 1; printf("Фамилия - %s \n", T->Q[i].name); printf("Номер - %d \n", T->Q[i].D.nomer); printf("Название - %d \n", T->Q[i].D.naz); printf("Срок - %d \n", T->Q[i].D.srok); } } if (k == 0) { printf("Ничего не найдено"); } break; } case 4: // искать по сроку { printf("Введите срок\n"); scanf("%d", &n); for (int i = 0; i < T->N; i++) { if (n == T->Q[i].D.srok) // вывод найденных материалов { k = 1; printf("Фамилия - %s \n", T->Q[i].name); printf("Номер - %d \n", T->Q[i].D.nomer); printf("Название - %d \n", T->Q[i].D.naz); printf("Срок - %d \n", T->Q[i].D.srok); } } if (k == 0) { printf("Ничего не найдено"); } break; } default: { break; } } } int main() // главное составляющее программы { FILE* test; setlocale(LC_ALL, "Rus"); // Сохранени еданных на русском table T; T.N = 0; menu(); // вывод меню таблицы int vod, nom, i, n; while (1) // вывод нужный данных { scanf("%d", &vod); switch (vod) { case 1: //добавить данные { ADD(&T); break; } case 2: // загрузка таблицы { load(&T, &test); printf("sssjjsjsjryrys"); break; } case 3: // сохранение таблицы { save(T, &test); break; } case 4: // вывести таблицу { PRINT(T); break; } case 5: // сортировать таблицу { sort(&T); break; } case 6: // поиск по таблице { search(&T); break; } case 7: // удаление данных таблицы { printf("Какую строку хотите удалить?\n"); scanf("%d", &nom); delete(&T, nom - 1); break; } case 8: // изменение данных таблицы { printf("Какую запись изменить\n"); scanf("%d", &n); delete(&T, n - 1); ADD(&T); break; } default: { break; } } } system("pause"); }
Editor is loading...