Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <windows.h>
- char header[] =
- "|------------------------------------------------------------------------------|"
- "| № | Фамилия | Имя | Телефон | Улица | Класс |"
- "|------------------------------------------------------------------------------|";
- typedef struct elem {
- int data;
- char surname[16];
- char name[15];
- int tel[15];
- struct elem* next;
- struct elem* prev;
- struct elem* new_elem;
- struct elem* new_elem1;
- } ITEM;
- ITEM* AddItem(ITEM* Head, int new_data, char new_surname[16], char new_name[15], int new_tel[15]);
- ITEM* DelItem(ITEM* Head, int n);
- ITEM* ShowItem(ITEM* Head);
- ITEM* SearchItem(ITEM* Head, int search_data);
- ITEM* NumElm(ITEM* Head, int kol_data);
- ITEM* Save(ITEM* Head);
- ITEM* Load(ITEM* Head);
- ITEM* recurs19(ITEM* Head);
- ITEM* recursAB_sur(ITEM* Head);
- int main()
- {
- ITEM* Head = NULL;
- ITEM* q = Head;
- char key;
- int data, n, m;
- char surname[16];
- char name[15];
- int tel[15];
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- while (1) {
- system("cls");
- puts("|\t\tМеню\t\t |");
- puts("=======================================");
- puts("|\t1 - Добавить элемент \t |");
- puts("|\t2 - Удалить элемент\t |");
- puts("|\t3 - Поиск элемента\t |");
- puts("|\t4 - Показать элементы\t |");
- puts("|\t5 - Изменить элемент\t |");
- puts("| |");
- puts("|\t6 - Сохранить в файл |");
- puts("|\t7 - Загрузить из файла |");
- puts("| |");
- puts("|\t8 - Сортировка по номерам |");
- puts("|\t9 - Сортировка по фамилии |");
- puts("---------------------------------------");
- puts("|\t ESC - Выход \t |\n");
- key = getch();
- if (key == 27)
- break;
- switch (key) {
- case '1':
- printf("Введите Номер: ");
- scanf("%d", &data);
- printf("Введите Фамилию: ");
- scanf("%s", &surname);
- printf("Введите Имя: ");
- scanf("%s", &name);
- printf("Введите Телефон: ");
- scanf("%s", &tel);
- Head = AddItem(Head, data, surname, name, tel);
- getch();
- break;
- case '2':
- puts("Введите номер элемента для удаления");
- scanf("%d", &n);
- Head = DelItem(Head, n);
- getch();
- break;
- case '3':
- puts("Введите номер: ");
- scanf("%d", &data);
- SearchItem(Head, data);
- getch();
- break;
- case '4':
- ShowItem(Head);
- getch();
- break;
- case '5':
- puts("Введите старый номер");
- scanf("%d", &data);
- Head = DelItem(Head, data);
- if(q != NULL) {
- puts("Введите новый Номер");
- scanf("%d", &data);
- puts("Введите новую Фамилию");
- scanf("%s", &surname);
- puts("Введите еще новое Имя");
- scanf("%s", &name);
- printf("Введите новый Телефон: ");
- scanf("%s", &tel);
- Head = AddItem(Head, data, surname, name, tel);
- }
- getch();
- break;
- case '6':
- Save(Head);
- puts("Сохранено...");
- getch();
- break;
- case '7':
- Head = Load(Head);
- getch();
- break;
- case '8':
- recurs19(Head);
- getch();
- break;
- case '9':
- recursAB_sur(Head);
- getch();
- break;
- }
- }
- }
- ITEM* recursAB_sur(ITEM* Head)
- {
- ITEM* q = Head;
- if(Head != NULL) {
- recursAB_sur(Head -> next);
- printf("%s", Head -> surname);
- printf("\n");
- }
- }
- ITEM* recurs19(ITEM* Head)
- {
- ITEM *new_elem, *prev, *next;
- ITEM* q = Head;
- int data;
- char surname;
- char name;
- int tel;
- if(Head != NULL) {
- recurs19(Head -> next);
- printf("%d", Head -> data);
- prev->next = new_elem;
- new_elem->next = NULL;
- printf("\n");
- }
- }
- ITEM* AddItem(ITEM* Head, int new_data, char new_surname[16], char new_name[15], int new_tel[15])
- {
- ITEM *q, *new_elem, *prev;
- new_elem = (ITEM*)malloc(sizeof(ITEM));
- if (new_elem == NULL) {
- puts("Ошибка выделения памяти");
- return Head;
- }
- new_elem->data = new_data;
- new_elem->data = new_data;
- strcpy(new_elem->surname, new_surname);
- strcpy(new_elem->name, new_name);
- strcpy(new_elem->tel, new_tel);
- new_elem->data = new_data;
- if (Head == NULL) {
- new_elem->next = NULL;
- return new_elem;
- }
- prev = Head;
- while (prev->next != NULL) {
- prev = prev->next;
- }
- printf("Элемент вставлен в конец\n ", new_data);
- prev->next = new_elem;
- new_elem->next = NULL;
- return Head;
- }
- ITEM* DelItem(ITEM* Head, int delete_data)
- {
- ITEM *q, *prev;
- prev = NULL;
- q = Head;
- while (q != NULL) {
- if (q->data == delete_data) {
- if (prev == NULL) {
- Head = Head->next;
- }
- else {
- prev->next = q->next;
- }
- }
- prev = q;
- q = q->next;
- }
- if (q == NULL) {
- printf("Такой элемент отсутсвует");
- return NULL;
- }
- return Head;
- }
- ITEM* SearchItem(ITEM* Head, int search_data)
- {
- ITEM* q = Head;
- while (q != NULL) {
- if (q->data == search_data) {
- printf("\nчисло: %d \n", search_data);
- printf("строка: %s", q->surname);
- return q;
- }
- q = q->next;
- }
- printf("Числа %d не существует в списке\n", search_data);
- return NULL;
- }
- ITEM* ShowItem(ITEM* Head)
- {
- ITEM* q = Head;
- if (q == NULL) {
- printf("Пустой список");
- return Head;
- }
- system("cls");
- printf("%s", header );
- while (q != NULL) {
- printf("\n %3d %9s %11s %s", q->data, q->surname, q->name, q->tel);
- q = q->next;
- }
- return Head;
- }
- ITEM* Save(ITEM* Head)
- {
- ITEM *q = Head;
- if (q == NULL) {
- printf("Стек пуст");
- getch();
- return Head;
- }
- FILE* fout;
- fout = fopen("C:/School.txt", "w+");
- while (q != NULL) {
- fprintf(fout, " %3d\n%9s\n %11s\n %s", q->data, q->surname, q->name, q->tel);
- q = q->next;
- }
- fclose(fout);
- }
- ITEM* Load(ITEM* Head)
- {
- ITEM* q = Head;
- FILE* fin;
- if ((fin = fopen("C:/School.txt", "rb+")) == NULL) {
- printf("Не удается открыть файл\n");
- exit(1);
- }
- char str1[50];
- int data;
- char surname;
- char name;
- int tel;
- while (q != NULL) {
- q = q->next;
- free(q);
- }
- Head = q = NULL;
- while(fgets(str1, sizeof(str1), fin)) {
- data = atoi(str1);
- fgets(str1, sizeof(str1), fin);
- str1[strlen(str1)-1] = 0;
- Head = AddItem(Head, data, surname, name, str1);
- }
- printf("Данные загружены\n");
- fclose(fin);
- return Head;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement