Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
DarkCompanion
0 / 0 / 0
Регистрация: 28.10.2015
Сообщений: 4
1

Редактирование записей структуры через ОЧЕРЕДЬ

17.04.2016, 15:42. Просмотров 268. Ответов 0
Метки нет (Все метки)

Суть в чём: есть структура она записана в файл,мы считываем запись из файла в очередь,потом редактируем запись на выбор,затем записываем очередь в файл,на момент редактирования записи программа дебажится.PLEASE HELP!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
void eddNote(FILE *fp)
{
    system("cls");
    int i = 0;
    int counter;
    char vibor = '0';
    int numberOfNote;
    int k = 0;
    TENDER *begin = NULL, *end = NULL;
    TENDER *ptr;
    TENDER Delete;
 
    if(fp == NULL)
        printf("Файл не открыт!");
    else {
            fseek(fp, 0, SEEK_SET);
            while(fread(&Delete, sizeof(TENDER), 1, fp)) 
            {
                if(k == 0)
                {
                    first(Delete,&begin,&end);
                    k = 1;
                }
                else
                {
                    add(Delete,&end);
                }
            }
        if( k == 0)
        {
            printf("Файл пуст");
            return;
            getch();
        }
        while(vibor != '2') {
        system("cls");
        ptr = begin;
        for(int i = 0; i < 212; i++)
            printf("%c", '-');
        printf("\n");
        printf("|    Номер записи   | Название компании | Стоимость продукта| Качество продукта |  Возраст компании |  Рейтинг компании |Срок пре-я гарантий|      Страна       |       Город       |       Улица       |Номер офиса|\n");
                for(int i = 0; i < 10; i++)
                    printf("%s", "|-------------------");
                printf("%s", "|-----------|");
                printf("\n");
                counter = 1;
                while(ptr) {
                printf("|%19d|%19s|%19s|%19s|%19s|%19s|%19s|%19s|%19s|%19s|%11d|",  counter,ptr -> nameCompany,ptr -> costOfProduct,ptr -> qualityOfProduct, ptr -> companyYear,ptr -> rating,ptr -> warranty,ptr -> location.country,ptr -> location.city,ptr -> location.street,ptr -> location.numberOfHome);
                printf("\n");
                ptr = ptr -> next;
                counter++;
                for(int i = 0; i < 212; i++)
                printf("%c", '-');
                printf("\n");
                }
        printf("Сделайте выбор:\n1.Ввести номер записи\n2.Выход\n");
        do{
            vibor = getch();
            if(vibor == '1' || vibor == '2')
                break;
            else 
                printf("Повторите ввод:\n");
        }while(1);
        
        switch(vibor)
        {
        case '1': {
            printf("Введите номер записи,которую необходимо отредактировать и нажмите <ENTER>:\n");
            while(1) {
            scanf("%d", &numberOfNote);
                fflush(stdin);
            if(numberOfNote)
                    break;
            }           
            printf("Сделайте выбор какое поле изменить:\n");
            printf("1.Название компании\n2.Стоимость продукта\n3.Качество продукта\n4.Возраст компании\n5.Рейтинг компании\n6.Срок пре-я гарантий\n7.Страна\n8.Город\n9.Улица\n10.Номер офиса");    
            switch(getch()) 
                {
            case '1': 
                printf("Введите <Название компании>: ");
                    gets(ptr -> nameCompany);
                fflush(stdin);
                break;
            case '2': 
                printf("Введите <Стоимость продукта>: ");
                    gets(ptr -> costOfProduct);
                fflush(stdin);
                break;
            case '3': 
                printf("Введите <Качество продукта>: ");
                gets(ptr -> qualityOfProduct);
                fflush(stdin);
                break;
            case '4':
                printf("Введите <Возраст компании>: ");
                    gets(ptr -> companyYear);
                fflush(stdin);
                break;
            case '5':
                printf("Введите <Рейтинг компании>: ");
                    gets(ptr -> rating);
                fflush(stdin);
                break;
            case '6': 
                printf("Введите <Срок пре-я гарантий>");
                    gets(ptr -> warranty);
                fflush(stdin);
                break;
            case '7': 
                printf("Введите <Страна>");
                    gets(ptr -> location.country);
                fflush(stdin);
                break;
            case '8': 
                printf("Введите <Город>: ");
                    gets(ptr -> location.city);
                fflush(stdin);
                break;
            case '9':
                printf("Введите <Улицу>: ");
                    gets(ptr -> location.street);
                fflush(stdin);
                break;
            case '10':
                printf("Введите <Номер офиса>: ");
                scanf("%d", ptr -> location.numberOfHome);
                fflush(stdin);
                break;
                }
                fclose(fp);
                fp = fopen(file_name, "wb+");
                addUser(fp,begin);
                break;
                  }
        case '2': 
            system("cls");
            vibor = '2';
            break;
                
        }
        }
    
    }
}
Функция добавления очереди в файл:
C++
1
2
3
4
5
6
7
8
9
void addUser(FILE *user, TENDER *begin)
{
    TENDER *p = begin;
    while(p)
    {
        fwrite(p, sizeof(TENDER), 1, user);
        p = p -> next;
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2016, 15:42
Ответы с готовыми решениями:

Редактирование записей структуры LIST
Имеется структура LIST кто знает как по вводу пользователя id произвести редактирование ? допустим...

Редактирование записей
Здравствуйте. Возник вопрос. Есть программа в которую нужно добавлять записи. При необходимости...

Копировать массив указателей на структуры в очередь
Я пишу курсач на тему создания динамических структурных переменых оформленных в виде очереди. Мне...

Редактирование записей в файле
В файле содержаться записи - структуры. Мне нужно организовать редактирование содержимого этих...

Редактирование записей в файле
Подскажите идею редактирования записи в файле пожалуйста.

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2016, 15:42

ListControl редактирование столбцов у записей
есть ListControl. Вид - отчет. Есть несколько записей. Есть колонки. В колонках для каждой записи...

Как вывести очередь, элементами которой являются структуры?
По заданию создал очередь элементами которого является структура , а как вывести их все в консоль?...

Редактирование структуры по номеру записи
Короче говоря, есть структура, которая читается из текстового файла, записывается в бинарный и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.