1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|
Программа-склад с нуля27.05.2015, 08:55. Показов 5179. Ответов 18
Метки нет Все метки)
(
Создаю общую тему, а не кучку маленьких. Надеюсь это послужит своеобразной инструкцией для начинающих, по устранению ошибок при создании программы склада.
Сразу признаюсь, знаний очень мало по программированию. Но поставил цель - до конца недели написать данную прогу. Параллельно читаю различную инфу на форуме и копаюсь в msdn. Функционал проги: - добавление данных; - отображение данных (по одному объекту, по 10, в виде таблицы); - удаление данных об объектах (удаление по указанному критерию); - поиск и фильтрация данных (возможность задания разных критериев, минимум 3 критерия); - подсчет каких-либо суммарных характеристик, например количество записей с определенным значением какого-либо поля (минимум 2 характеристики); - сортировка (по нескольким критериям). Данные об объектах должны быть оформлены в виде пользовательских типов данных - структур (struct). Для каждого объекта своя структура. Для каждого объекта создается отдельный бинарный файл. Начал с создания формы. За основу взял DataGridView (она уже решает такие вопросы как добавление, удаление и сортировку файлов). Теперь разбираюсь что такое #pragma once, #pragma region и т.п. заголовки и их содержимое, чтобы в итоге понимать куда и какой код писать (думаю, перво-наперво нужно узнать как присвоить значение ячейки в переменную, и вывести эту переменную структуры на экран, дабы убедиться, что всё как нужно присваивается). С радостью приму конструктивные замечания и советы ![]() Файл с проектом прилагаю.
0
|
27.05.2015, 08:55 | |
Ответы с готовыми решениями:
18
Программа склад Программа склад программа склад |
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|||||||||||||||||||||||||||||||
28.05.2015, 21:50 [ТС] | |||||||||||||||||||||||||||||||
Изучил немного ООП.
Хочу вывести значение переменной kodT через нажатие кнопки. TextBox::Show() ругается - error C2660: System::Windows::Forms::Control::Show: функция не принимает 1 аргументов.
Ещё такой вариант
Добавлено через 19 часов 27 минут Нашёлся способ безболезненно вывести значение ячейки:
Практически решение:
0
|
Администратор
![]() ![]() |
||||||
29.05.2015, 19:29 | ||||||
По поводу массивов - раз используете C++/CLI, проще и безопаснее будет использовать управляемые массивы - array<T>.
1
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|||||||||||
31.05.2015, 09:44 [ТС] | |||||||||||
Ещё есть идея делать через System::String^ , но мне как и в случае с array<char>^ нужен управляемый класс. Ссылочный даже. А пока у меня структура просто лежит сама по себе, а должна быть основой всей программы, т.к. содержать в себе будет все данные из таблицы. Получается, нужно организовать ссылочный управляемый класс со структурой.
Добавлено через 13 часов 44 минуты При этом управляемый массив должен быть динамическим! Т.к. количество строк, повторюсь, будет неизвестно изначально. И вот его-то нужно запихать в структуру... Добавлено через 10 часов 12 минут Рабочая версия структура выглядит так:
Ищу способ отображения по 1/10/все строки таблицы. Предполагаю, что отображение необходимого количества строк будет определяться выделением строки (после неё, например, 1/10 строк видны, а все остальные прячутся).
0
|
Администратор
![]() ![]() |
|
31.05.2015, 10:57 | |
Dusty, я немного неудачный пример привел - действительно, строки удобнее представлять как System::String^. Я хотел сказать о других массивах - double *Cena, например.
System::String^ и управляемый, и ссылочный.
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|||||||||||
31.05.2015, 17:32 [ТС] | |||||||||||
Работает!
![]()
Теперь на очереди понять как создать для пользователя поиск и фильтр по данным DataGridView. Добавлено через 24 минуты По отображению ещё. Ошибку выдаёт кнопка "по 10", если после выделенной строки нет 10 строк. Проблема в том, что я не знаю как программе дать понять, что строка имеет не нулевое значение, а её вовсе строки нет ![]() Добавлено через 2 часа 11 минут Поиск ищет ![]()
Выявить принцип сравнения данных в структуре массивов. Добавлено через 3 часа 15 минут И пока я не знаю как вызвать СheckListBox по нажатию кнопки (в новом окне или в той же форме). По замыслу он заполнится данными из массива отфильтрованных значений. И вот уже у этих значений убираем галки, жмём "ОК" и видим список в табличке с отфильтрованными данными.
0
|
Администратор
![]() ![]() |
|||||||||||
31.05.2015, 19:47 | |||||||||||
Динамическое добавление компонентов делается например так
По коду:
0
|
Администратор
![]() ![]() |
|
31.05.2015, 20:22 | |
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|
13.02.2016, 12:54 [ТС] | |
Я возвращаюсь чтобы доделать программу
![]() Нифига она не рабочая. Т.е. она работает, конечно, но не выполняет условий "увеличение массива во время работы программы". Вычитал, что в С++ для этого существуют векторы. А любые динамические массивы по факту массивы переменной длинны. Если захочешь увеличивать место в массиве, будь добр создать новый, побольше, и перенести туда данные со старого. Поэтому решением в данных условиях считаю создание изначально массива с запасом ячеек. Например: "static array<int>^ KodT = gcnew array<int>(1000);". Грубо, конечно. Зато условия выполнены ![]()
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|||||||||||
24.02.2016, 00:52 [ТС] | |||||||||||
Переиначил главную структуру в программе (напомню что она в отдельном файле "GOODS.h", основной проект с таблицей и прочими вычислениями находятся отдельно от структуры, в файле "Form1.h"). Теперь она будет выглядеть примерно так:
error C2039: KodT: не является членом "`global namespace'" error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "KodT" error C2065: KodT: необъявленный идентификатор error C2228: выражение слева от ".push_back" должно представлять класс, структуру или объединение
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|||||||||||||||||||||
28.02.2016, 20:53 [ТС] | |||||||||||||||||||||
Упростил свои структуры до нельзя:
Т.е. не видит компилятор, что это структура. Тупик. Теперь буду с помощью формул в "GOODS.h" из "Form1.h" переносить все действия по заполнению структуры. В эту сторону может заработает ![]() Добавлено через 5 часов 28 минут Переделал. Теперь обращаюсь из "Form1.h" в "GOODS.h" посредством функций:
Добавлено через 30 минут Похоже что в функциях объявление
По факту нужно передавать изменяющуюся структуру всем функциям поочерёдно. Но как... В сторону указателей смотреть буду. Может в них решение.
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
||||||
19.03.2016, 17:39 [ТС] | ||||||
Решилось
Появилась новая задачка: пронумеровать строки. Есть первый столбец в DataGridView, он идёт как заглавный для строк, RowHeader называется. Там-то и нужно проставить циферки от 1 и далее (пометил жёлтым цветом на картинке). Не так просто, как оказалось. Очень много инфы с кодом C# (фиг разберёшься), но C++ не нашёл.
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
||||||
20.03.2016, 13:23 [ТС] | ||||||
Неотзывчиво как-то, товарищи
![]() Решение следующее:
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
|||||||||||
26.03.2016, 15:48 [ТС] | |||||||||||
Чтобы уйти со строки, необходимо заполнить все её ячейки.
Придумал прикурчивать к событию это:
![]()
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
||||||
28.03.2016, 22:46 [ТС] | ||||||
Решения пока нет.
Перепробовал кучу событий возникающих в момент перехода от одной строки к другой. Привязывал код смены активной строки на нужную с последующим выделением.
0
|
1 / 1 / 0
Регистрация: 23.01.2015
Сообщений: 22
|
||||||
17.04.2016, 13:48 [ТС] | ||||||
Решения нет для выделения строки таблицы если в ней не заполнена ячейка. Отбросил эту нереализуемую опцию из программы.
Теперь нужно сохранить введённые в таблицу данные в двоичный файл. Использую запись структуры целиком:
0
|
17.04.2016, 13:48 | ||||||
Помогаю со студенческими работами здесь
19
БД склад запчастей: Каким образом можно модифицировать схему, оставив только 2 сущности, СКЛАД и РЕЦЕПТ Программа подсчитывает сумму положительных чисел. Если в массиве находится 3 нуля, то программа прекращает свою работу
Программа Фолио Win Склад Проф в локальной сети Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели.
Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
|
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка:
«Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
|
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
|
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
|
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
|
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
|
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
|
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
|
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
|