Untitled
unknown
plain_text
3 years ago
11 kB
6
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...