Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.04.2024
Сообщений: 6
1

Реализация стека

18.04.2024, 14:06. Показов 769. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста почему не считывает из файла в стек

В файл данные записываются в виде

Название: Куб
Цвет: Красный
Доступность: Нет
Вес: 5
Количество: 28

Название: Шар
Цвет: Фиолетовый
Доступность: Да
Вес: 2
Количество: 4766


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
#include <Windows.h>
#include <fstream>
#include <string>
#include <stack>
#include <vector>
 
using namespace std;
 
typedef class Detail {
public:
    string name; // название детали
    string color; // цвет детали
    string availability; // доступность детали
    unsigned weight; // вес детали
    unsigned q; // количество деталей
 
    //Метод для изменения цвета:
    void change_Color();
 
    //Метод для изменения количества:
    void change_Q();
 
    //Метод для изменения доступности:
    void change_A();
 
    //Конструктор по умолчанию:
    Detail() : weight(0), q(0) {};
 
    //Конструктор с параметрами:
    Detail(string n, string c, string a, unsigned w, unsigned Q) :
        name(n), color(c), availability(a), weight(w), q(Q) {}
 
    //Ввод с клавиатуры:
    void input();
 
    //Вывод на экран:
    void display();
 
    //Вывод из файла:
    void fromFile();
 
    //Удаление объекта из файла
    void del();
 
    //Очистка файла:
    void clearFile();
 
    friend std::ostream& operator<<(std::ostream& os, const Detail& detail) {
        os << "Название: " << detail.name << "\nЦвет: " << detail.color << "\nДоступность: " 
            << detail.availability << "\nВес: " << detail.weight << "\nКоличество: " << detail.q;
        return os;
    }
};
 
#endif // !LAB2_2
и еще этот файл

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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
#include "laba2_2.hpp"
 
stack <Detail> details;
 
void Detail::input()
{
    fstream file("Lab2_2.txt", ios::app);
    Detail detail;
 
    if (!file.is_open()) {
        cout << "Не удалось открыть файл :(\n";
        return;
    }
 
    cout << "Введите название детали: " << endl;
    cin >> detail.name;
    file << "Название: " << detail.name << endl;
 
    cout << "Введите цвет детали: " << endl;
    cin >> detail.color;
    file << "Цвет: " << detail.color << endl;
 
    cout << "Введите доступность детали: " << endl;
    cin >> detail.availability;
    file << "Доступность: " << detail.availability << endl;
 
    cout << "Введите вес детали: " << endl;
    cin >> detail.weight;
    file << "Вес: " << detail.weight << endl;
 
    cout << "Введите количество деталей: " << endl;
    cin >> detail.q;
    file << "Количество: " << detail.q << endl << endl;
 
    file.close();
    details.push(detail);
}
 
void Detail::display()
{
    if (details.empty()) {
        cerr << "\nСтек пуст!!!\n";
        return;
    }
    while (!details.empty()) {
        cout << details.top() << " "; // Выводим верхний элемент стека
        details.pop(); // Извлекаем элемент из стека
    }
}
 
 
void Detail::del()
{
    vector <string> lines;
    if (details.empty()) {
        cout << "\nСтек пуст!!!\n" << endl;
        return;
    }
 
    fstream file("Lab2_2.txt", ios::in | ios::out);
    fstream tempfile("Temp.txt", ios::out);
    if (!file.is_open() || !tempfile.is_open()) {
        cerr << "\nНе удалось открыть файл :(\n";
    }
 
    string line;
    while (getline(file, line)) {
        lines.push_back(line);
    }
 
    file.close();
 
    for (int i = 0; i < lines.size() - 5; i++) {
        tempfile << lines[i] << "\n";
    }
 
    tempfile.close();
 
    if (remove("Lab2_2.txt") != 0) {
        cerr << "Не удалось удалить файл :(" << endl;
        return;
    }
 
    if (rename("Temp.txt", "Lab2_2.txt") != 0) {
        cerr << "Не удалось переименовать файл :(" << endl;
        return;
    }
 
    details.pop();
    cout << "\nПоследняя деталь удалена :)\n" << endl;
}
 
void Detail::fromFile() {
    ifstream file("Lab2_2.txt");
    stack<Detail> details;
 
    if (!file.is_open()) {
        cerr << "\nНе удалось открыть файл :(\n" << endl;
        return;
    }
 
    string line;
    while (getline(file, line)) {
        Detail detail;
        detail = Detail(line);
 
        details.push(detail);
    }
 
 
    file.close();
}
 
 
void Detail::clearFile()
{
    ofstream file("Lab2_2.txt", ios::out);
    file.close();
    cout << endl << "Файл очищен :)" << endl << endl;
}
 
void Detail::change_Color()
{
    Detail detail;
    if (details.empty()) {
        cout << "\nСтек пуст!!!\n" << endl;
        return;
    }
    detail = details.top();
 
    string newColor;
    cout << "Введите новый цвет: ";
    cin >> newColor;
 
    string detailName;
    cout << "Введите название детали, цвет которой нужно изменить: ";
    cin >> detailName;
 
    bool detailFound = false;
    ifstream file("Lab2_2.txt");
    string line;
 
    while (getline(file, line)) {
        if (line.find("Название: " + detailName) != string::npos) {
            detailFound = true;
            break;
        }
    }
 
    file.close();
 
    if (!detailFound) {
        cout << "Деталь не найдена :(\n";
        return;
    }
 
    fstream file1("Lab2_2.txt", ios::in | ios::out);
    if (file1.is_open()) {
        ofstream newFile("new.txt");
 
        while (getline(file1, line)) {
            if (line.find("Название: " + detailName) != string::npos) {
                newFile << "Цвет: " << newColor << endl;
            }
            else {
                newFile << line << endl;
            }
        }
        file1.close();
        newFile.close();
 
        if (remove("Lab2_2.txt") != 0) {
            cerr << "Не удалось удалить файл :(" << endl;
            return;
        }
 
        if (rename("new.txt", "Lab2_2.txt") != 0) {
            cerr << "Не удалось переименовать файл :(" << endl;
            return;
        }
 
        details.pop();
        details.push(detail);
 
        cout << "\nУспешно изменено :)\n";
    }
    else {
        cerr << "Ошибка :(" << endl;
    }
}
 
void Detail::change_A()
{
    Detail detail;
    if (details.empty()) {
        cout << "\nСтек пуст!!!\n" << endl;
        return;
    }
    detail = details.top();
 
    string newavailability;
    cout << "Доступна ли сейчас деталь? ";
    cin >> newavailability;
 
    string detailName;
    cout << "Введите название детали, доступность которой нужно изменить: ";
    cin >> detailName;
 
    bool detailFound = false;
    ifstream file("Lab2_2.txt");
    string line;
 
    while (getline(file, line)) {
        if (line.find("Название: " + detailName) != string::npos) {
            detailFound = true;
            break;
        }
    }
 
    file.close();
 
    if (!detailFound) {
        cout << "Деталь не найдена :(\n";
        return;
    }
 
    fstream file1("Lab22.txt", ios::in | ios::out);
    if (file1.is_open()) {
        ofstream newFile("new.txt");
 
        while (getline(file1, line)) {
            if (line.find("Название: " + detailName) != string::npos) {
                newFile << "Доступность: " << newavailability << endl;
            }
            else {
                newFile << line << endl;
            }
        }
        file1.close();
        newFile.close();
 
        if (remove("Lab22.txt") != 0) {
            cerr << "Не удалось удалить файл :(" << endl;
            return;
        }
 
        if (rename("new.txt", "Lab22.txt") != 0) {
            cerr << "Не удалось переименовать файл :(" << endl;
            return;
        }
 
        details.pop();
        details.push(detail);
 
        cout << "\nУспешно изменено в файле и в массиве :)\n";
    }
    else {
        cerr << "Ошибка :(" << endl;
    }
}
 
void Detail::change_Q()
{
    Detail detail;
    if (details.empty()) {
        cout << "\nСтек пуст!!!\n" << endl;
        return;
    }
    detail = details.top();
 
    unsigned newQ;
    cout << "Введите новое количество: ";
    cin >> newQ;
 
    string detailName;
    cout << "Введите название детали, количество которой нужно изменить: ";
    cin >> detailName;
 
    bool detailFound = false;
 
    if (!detailFound) {
        cout << "Деталь не найдена :(\n";
        return;
    }
 
    fstream file("Lab2_2.txt", ios::in | ios::out);
    if (file.is_open()) {
        ofstream newFile("new.txt");
 
        string line;
        while (getline(file, line)) {
            if (line.find("Название: " + detailName) != string::npos) {
                newFile << "Количество: " << newQ << endl;
            }
            else {
                newFile << line << endl;
            }
        }
        file.close();
        newFile.close();
 
        if (remove("Lab2_2.txt") != 0) {
            cerr << "Не удалось удалить файл :(" << endl;
            return;
        }
 
        if (rename("new.txt", "Lab2_2.txt") != 0) {
            cerr << "Не удалось переименовать файл :(" << endl;
            return;
        }
 
        details.pop();
        details.push(detail);
 
        cout << "\nУспешно изменено :)\n";
    }
    else {
        cerr << "Ошибка :(" << endl;
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Detail detail;
    int choice;
 
    do {
        cout << "\n\n1. Записать информацию о детали." << endl;
        cout << "2. Вывести на экран." << endl;
        cout << "3. Изменить цвет детали." << endl;
        cout << "4. Изменить количество деталей." << endl;
        cout << "5. Изменить доступность детали." << endl;
        cout << "6. Удалить последнюю деталь.\n";
        cout << "7. Вывести объекты из файла." << endl;
        cout << "8. Очистить файл." << endl;
        cout << "9. Выйти." << endl << endl;
 
        cout << "Выберите действие: ";
        cin >> choice;
 
        switch (choice) {
        case 1:
            detail.input();
            break;
        case 2:
            detail.display();
            break;
        case 3:
            detail.change_Color();
            break;
        case 4:
 
            detail.change_Q();
            break;
        case 5:
            detail.change_A();
            break;
        case 6:
            detail.del();
            break;
        case 7:
            detail.fromFile();
            break;
        case 8:
            detail.clearFile();
            break;
        case 9:
            return 0;
        }
    } while (choice != 9);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2024, 14:06
Ответы с готовыми решениями:

Реализация стека
Реализация стека (добавить 1 элемент, вытащить 1 элемент в стеке, определить, когда стек будет ...

Реализация стека
Подскажите, как создать класс, который реализует стек? А также методы включения и выключения...

Реализация стека
Написать программу, реализующую стек с информацией о сотрудниках и отображающую стек в порядке...

Реализация стека
вот такие ошибки при реализации: stack.h(26) : error C2953: 'Stack' : class template has already...

реализация стека
всем привет! народ помогите с программой (не пойму в чем ошибка, помогите исправить) #include...

19
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
18.04.2024, 14:34 2
Цитата Сообщение от darykutsenko Посмотреть сообщение
Название: Куб
Цвет: Красный
Доступность: Нет
Вес: 5
Количество: 28
Зачем вы пишете названия полей ?
И не вижу конструктора
Цитата Сообщение от darykutsenko Посмотреть сообщение
detail = Detail(line);
C++
1
Detail::Detail(string)
Добавлено через 4 минуты
Предлагаю хаписывать в файл след образом :
Куб Красный Нет 5 28
И читать след образом :
C++
1
2
3
4
    string name, color, av;
    int w,q
    while (file >> name >> color >> av >> w >> q)  
        details.emplace_back(name, color, av, w, q);
0
758 / 455 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
18.04.2024, 14:57 3
Цитата Сообщение от SmallEvil Посмотреть сообщение
Куб Красный Нет 5 28
А вдруг название детали из нескольких слов?
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
18.04.2024, 15:27 4
Цитата Сообщение от ram876 Посмотреть сообщение
А вдруг название детали из нескольких слов?
А вдруг они в Юникоде ?
Или на клингонском ?

Добавлено через 1 минуту
Цитата Сообщение от SmallEvil Посмотреть сообщение
details.emplace_back(name, color, av, w, q);
ну тут просто emplace, для стека
0
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,233
18.04.2024, 16:10 5
все неправильно!!! какие свойства детали? имя, цвет, вес. точка
а у тебя что? каша-малаша
когда ты добавляешь количество, получается совсем другая сущность
и хранить эти сущности надо где-то?
а что в файле хранится?
ты сделал один класс и думаешь справился. Ведь ты же делал по методичке. Чушь. Чушь, которую навязывают невежды с академическими регалиями. Это так не работает.

возьми карандаш и нарисуй на бумаге структурную схему своих данных. и поймешь какую чушь ты написал. особенно там где оператор вывода...
1
Заблокирован
18.04.2024, 16:16 6
вопрос не по теме,
для чего здесь "typedef".
Цитата Сообщение от darykutsenko Посмотреть сообщение
typedef class Detail
Добавлено через 18 секунд
Цитата Сообщение от vlisp Посмотреть сообщение
какие свойства детали? имя, цвет, вес. точка
Вы имеете ввиду некую нормализацию?
0
758 / 455 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
18.04.2024, 16:25 7
Цитата Сообщение от pup_kin Посмотреть сообщение
для чего
Я не уверен, но в нете нашел:
typedef class, typedef struct в С++ не нужОн. В Си нельзя было написать код вида
struct A {};
A variable; // тут будет ошибка

и приходилось писать либо
struct A{};
struct A variable;

либо
typedef struct A{} A;
A variable;
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
18.04.2024, 16:44 8
ram876, более иого в С++ struct имеет совсем необычное действие.
Включая принудительное использование как неполного типа.
Я это уже не раз упоминал.
Поэтому Си не место в этом разделе.

Добавлено через 37 секунд
Цитата Сообщение от pup_kin Посмотреть сообщение
Вы имеете ввиду некую нормализацию?
Что за нормализацию ?
1
Заблокирован
18.04.2024, 17:13 9
Цитата Сообщение от vlisp Посмотреть сообщение
какие свойства детали? имя, цвет, вес. точка
Вы имеете ввиду некую нормализацию?
Цитата Сообщение от SmallEvil Посмотреть сообщение
Вы имеете ввиду некую нормализацию?
ну типа нормальные формы таблиц.
создать еще один класс.
и получитсся
объект, свойство, значение свойства.

я не знаю что имел ввиду vlisp
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
18.04.2024, 17:26 10
Цитата Сообщение от pup_kin Посмотреть сообщение
ну типа нормальные формы таблиц.
Что такое "типа нормальные формы таблиц" ?
Цитата Сообщение от pup_kin Посмотреть сообщение
я не знаю что имел ввиду vlisp
Что там имеет себе ввиду vlisp, это отдельная тема )
0
Заблокирован
18.04.2024, 19:03 11
Цитата Сообщение от SmallEvil Посмотреть сообщение
Что такое "типа нормальные формы таблиц" ?
Ну в sql актуально
обычно web программисты любят нормализацию делать

типа вот
https://habr.com/ru/articles/254773/
я сам это не читал, но это оно

Добавлено через 2 минуты
я не знаю что имеет ввиду vlisp под
Цитата Сообщение от vlisp Посмотреть сообщение
ты сделал один класс и думаешь справился. Ведь ты же делал по методичке. Чушь. Чушь, которую навязывают невежды с академическими регалиями. Это так не работает.
рискну предположить что рекомендуется сделать несколько классов и хранить их в файлах

Добавлено через 46 секунд
т.е. предлагается сделать базу данных.если верно понял.
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
18.04.2024, 19:08 12

Не по теме:

Цитата Сообщение от pup_kin Посмотреть сообщение
я не знаю что имеет ввиду vlisp под
Его советы лучше игнорировать и не строить догадок, и не распрашивать.
У него свое, упрощенное понимание вселенной. )



Добавлено через 1 минуту
Цитата Сообщение от pup_kin Посмотреть сообщение
предлагается сделать базу данных.если верно понял.
Кому нужно строить/использовать СУБД для простых типовых задач ?

Добавлено через 2 минуты
pup_kin, предполагается разделение сущностей.
Товар - со своими свойтсвами.
Позициия товара - товар + количество + и т.д
Набор позиций - список из позициий товаров.
И так далее, по необходмости.
Но опять же, в какой манере это выдал vlisp, и для кого ? ))
0
Заблокирован
18.04.2024, 19:35 13
Цитата Сообщение от SmallEvil Посмотреть сообщение
Кому нужно строить/использовать СУБД для простых типовых задач ?
почему сразу субд.
можно просто БД

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

а вот вопрос
как организовать быстрый поиск по такому файлу?
к примеру у нас в одном файле лежат и контрагенты, и товары, и услуги и много чего еще, просто так последовательно читать его - это долго, нужен какой-то заголовок.
А что помещать в заголвок?

названиеданных и позиция начала данных ?

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

как обычно разделяют данные в БД?

Добавлено через 38 секунд
ну и собственно предлагается написать СУБД , если я верно понял vlisp

только зачем, это же очевидно обычная выгрузка

Добавлено через 17 минут
а ну да, не увидел слово "строить"
0
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,233
18.04.2024, 19:36 14
Цитата Сообщение от pup_kin Посмотреть сообщение
я не знаю что имел ввиду vlisp
я имел ввиду, что тут классическая база данных. Есть таблица, а есть то, что вокруг - вся мощь СУБД.

Это называется вертикальный контейнер. Все классы - это вертикальный контейнер, то есть такой в котором данные не индексируются, зато есть инфа по обработке инфы, то есть методы класса. Горизонтальный контейнер - это такой, который просто содержит данные по порядку. например "массивы". динамические структуры данных в си формально являются вертикальным контейнером, но по сути это горизонтальный контейнер.
С этим понятно?

Теперь конкретно. В торговле есть три понятия: товар, позиция и прайс. Здесь то же самое. можно не выделять товар и позицию, но в любом случае нужен прайс, который содержит позиции. как минимум нужно создать класс управляющий прайсом: файловввод/вывод, сортировка, лукап и т.д.

Для примера: Микрософт Ворд - это программа, управляющая документами, в которых есть свои объекты, и другими объектами. Все вместе - это объектная модель. Она имеет структуру дерева. ОМ осуществляет разделение полномочий между классами.

Теперь почему нужно разделять позицию и товар. Во первых, это разные понятие, во-вторых у БД может быть разные функции, например добавить товар, добавить позицию. Позиция реализуется через ссылку на описание товара и его количество, а доступность как по мне это вообще функция от количество. не знаю что там понапридумывали академики.
Соответственно и файл данных организуется по другому не в виде cdf, а в виде XML

Добавлено через 50 секунд
Цитата Сообщение от pup_kin Посмотреть сообщение
можно просто БД
БД это просто таблица
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
18.04.2024, 19:56 15
vlisp, понятно, но ты же оогласен что для обучающей задачи разделения ролей между классами - это всё избыточно (я про СУБД и реальные концепты торговли) ?
И опять же, много слов, а ТС-у от этого ни холодно ни жарко (да и пуп_кину тоже )
Он также ещё не прошел базовой подготовки по композиции/декомпозиции/агрегации.
Так что может хватит пинать живие трупы обучающих пособий ?
А для реальности, так СУБД далеко не идеал, тем более реляционая, про которую тут по уиолчанию затронули.
Никакие БД не имеют отношения к рассамтриваемой задаче/теме, это только ваши ассоциации.
0
Заблокирован
18.04.2024, 20:38 16
а вопрос дурацкий
как правильнее при проектировании некоей БД
один файл в который пишутся все классы - таблицы, или несколько файлов в которые пишется например в 1 файл контрагенты, в другой номенклатура.

и физически можно более нагруженные файлы переносить на более быстрые хранилища например.
0
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,233
18.04.2024, 21:33 17
Цитата Сообщение от SmallEvil Посмотреть сообщение
это всё избыточно
нет не избыточно, если плодить индусов, то жить они будут не долго
не в торговле дело а в разделении полномочий, это фундамент (часть) для проектирования приложений.
принципы одинаковы и у маленькой СУ и у большой.
да, методички и в россии и в украине одинаковые и там вот именно такой бред написан.
ок, супер, сделали сдали, забыли, чему научились? ничему. а произошла профдеформация. в голове сформировались нейронные связи так, что это можно, что это работает и пошла жизнь под откос.
Это серьезные вещи. не калькировать, а думать и придумывать, имея базисные знания
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
19.04.2024, 11:10 18
Цитата Сообщение от vlisp Посмотреть сообщение
имея базисные знания
Они накапливаются по малому, а не все сразу.
Цитата Сообщение от vlisp Посмотреть сообщение
ок, супер, сделали сдали, забыли, чему научились?
Научились распределять роли, декомпозиции и базовой работе с текстовыми файлами.
Все эти знания нужны.
На одном СУБД мир не держится.

Добавлено через 1 минуту
p.s. Я вот встречался с пользовательскими прайсами где не было количества товаров, а лишь доступность для заказа +/-.
Уже при заказе уточнялось наличие определенного количества.


Добавлено через 25 минут
Цитата Сообщение от pup_kin Посмотреть сообщение
как правильнее при проектировании некоей БД
Напримере MySQL.
Попроще, поверхностней :
Представление баз данных
Представление таблиц баз данных

Что бы понять масштаб :
Например : innodb
0
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,233
19.04.2024, 11:46 19
Цитата Сообщение от SmallEvil Посмотреть сообщение
Уже при заказе уточнялось наличие определенного количества.
могу только посмеяться, а классик сказал:
Вот и ответ.
Какие сны в том смертном сне приснятся,
Когда покров земного чувства снят?
Вот в чем разгадка. Вот что удлиняет
Несчастьям нашим жизнь на столько лет.
0
Заблокирован
19.04.2024, 16:35 20
Цитата Сообщение от SmallEvil Посмотреть сообщение
p.s. Я вот встречался с пользовательскими прайсами где не было количества товаров, а лишь доступность для заказа +/-.
Уже при заказе уточнялось наличие определенного количества.
это сплошь и рядом
когда сделали интеграцию 1С с сайтом и на сайте остатки не верные, или вовсе ввод задним числом происходит
и на сайте есть кнопка количество, можно поставить в бронь, и она даже создаст в 1с бронь
но по факту в базе уже минуса.
не стоит забывать что реальный мир
он вносит свои корректировки
прибегает кладовщик "мамой клянусь есть товар, дай списать в минуса, фуру отгрузить"
точно?
"мамой клянусь сам видел вот лежит".
отгружаем , выясняется - это лежал резерв с сайта )))))))


часто даже в 1с просто выгружают все вместе - например когда в текстовый файл, а не в ексемель.
и табличные части и шапки документов справочников
так проще особенно если на какой-нить сайт самодельный.

Добавлено через 1 минуту
лучше скажите какие есть плюсы когда вся база в одном файле или ннескольких, но мы не можем точно задачть что вот таблица товары в файле1, а контрагенты в файле2- как ms_sql

и когда база в разных файлах - как postgres и мы можем переносить группы файлов куда надо, под наши нужды.

Добавлено через 22 минуты
p.s.остатки не верные получаются тогда, когда криворукие адинесники лезут в процедуры списания
и не обеспечивают конкурентность за ресурсы должным образом,
рано или поздно наступает момент когда происходит списание в минуса,
и во всем обвиняют интеграцию с сайтом, и вовсе отключают показ остатков или реервирование товара.
ну и также резервирование через сайт - подвержено атакам ботов иногда тоже отключают поэтому.

да и сплошь и рядомбывает ввод задним числом.
Поэтому академические нормальные формы - это конечно хорошо, но часто делают подешевле и если в 1С все плюс минус нормализовано - она типовая скорее всего, то на сайте зачастую каша малаша.
0
19.04.2024, 16:35
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2024, 16:35
Помогаю со студенческими работами здесь

Реализация стека
Помогите создать структуру данных типа &quot;стек&quot;, элементы которого занимают 10 кб. Операции,...

Реализация стека
Здравствуйте, помогите пожалуйста с реализацией стека без использования STL. Стек отображен в...

Реализация стека
Всем доброго времени суток! Нашел в на просторах интернета исходник реализации стека. Но не совсем...

Реализация стека массивом
При реализации стека массивом обеспечить размещение двух стеков в одном массиве. Один стек...

Реализация класса стека
Приветствую! Пробую написать класс стека, но работает не совсем так, как задумывалось. Что-то не...

Реализация стека с шаблонами
Вообщем, реализую стек известная проблема, не могу понять почему не компилирует, хотя 20 раз все...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как узнать какой процесс блокирует файл или каталог в Windows
bt_guru 23.01.2025
При работе с операционной системой Windows пользователи нередко сталкиваются с ситуацией, когда система отказывается выполнять определенные действия с файлами или каталогами, сообщая, что они. . .
Как в curl узнать код статуса HTTP запроса. Коды состояния HTTP
bt_guru 23.01.2025
Коды состояния HTTP играют значимую роль в обеспечении эффективного взаимодействия между клиентами и серверами. При работе с веб-сервисами важно не только отправлять запросы, но и правильно. . .
Как сортировать вывод команды ls в Linux
bt_guru 23.01.2025
В операционной системе Linux команда ls является одним из наиболее часто используемых инструментов для просмотра содержимого директорий. При работе с файловой системой пользователи регулярно. . .
Как сделать POST запрос с помощью curl
bt_guru 23.01.2025
curl - это мощный инструмент командной строки позволяет отправлять и получать данные через различные протоколы, включая HTTP, HTTPS, FTP и множество других. Особенно полезным curl становится при. . .
Прокрутка в tmux с помощью мыши и клавиатуры
bt_guru 23.01.2025
Tmux представляет собой мощный терминальный мультиплексор, который позволяет пользователям создавать и управлять несколькими терминальными сессиями внутри одного окна. Одной из важнейших функций tmux. . .
Как проверить, содержит ли массив значение в JavaScript. Поиск в массиве
bytestream 23.01.2025
Эффективный поиск значений в массивах становится критически важным навыком для разработчиков, использующих JavaScript. Процесс поиска элементов в массиве может показаться простым на первый взгляд,. . .
Как удалить тег Git в удалённом репозитории (remote)
bytestream 23.01.2025
Одним из важнейших механизмов организации версий в Git являются теги, которые позволяют помечать определенные точки в истории проекта как значимые. Теги часто используются для маркировки релизов,. . .
Чем отличаются URL, URI и URN
bytestream 23.01.2025
Системы идентификации представляют собой фундаментальный механизм, позволяющий однозначно определять местоположение и характеристики различных информационных объектов в глобальной сети. Эти системы. . .
Как центрировать div внутри другого div с помощью CSS. Управление расположением элементов в CSS
bytestream 23.01.2025
Позиционирование элементов играет ключевую роль в создании качественных и профессиональных интерфейсов. Одной из наиболее часто встречающихся задач является центрирование элементов на веб-странице,. . .
Что означают различные символы в синтаксисе PHP
bytestream 23.01.2025
PHP (Hypertext Preprocessor) представляет собой один из наиболее широко используемых языков программирования для веб-разработки, который обладает богатой и интересной историей развития. Изначально. . .
Способы клонирования объектов в JavaScript
bytestream 23.01.2025
В современной разработке на JavaScript работа с объектами является фундаментальной частью создания любого приложения. При манипуляции объектами часто возникает необходимость создавать их копии для. . .
Как проверить состояние чекбокса в jQuery. Как работать с чекбоксами
bytestream 23.01.2025
При разработке интерактивных веб-форм часто возникает необходимость программно определять состояние чекбоксов с помощью jQuery. Чекбоксы являются важными элементами пользовательского интерфейса,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru