This is client for oracle database written on C#.
- As GIU framework there is using WPF;
- Connection to DB is realized by using .NET driver Oracle.ManagedDataAccess;
- As plot tool it uses OxyPlot library. It also availible from NuGet
Название работы: Автоматизация работы оптовой фирмы
Оптовая фирма (далее организация) занимается оптовыми и мелкооптовыми поставками различных товаров в магазины Санкт-Петербурга.
Требуется автоматизировать рабочее место менеджера по распределению товаров между двумя складами организации.
Два склада несут функционально различную нагрузку в целях уменьшения арендной платы организации.
Первый склад находится на территории Санкт-Петербурга и сильно меньше второго, который находится в значительном удалении. Первый склад исполняет функции кеш'а множества самых популярных товаров.
Задачей менеджера по распределению является изучение спроса и выделения множества приоритетных товаров, которые будут завезены на первый склад. Менеджер должен иметь доступ к состоянию обоих складов, справочнику товаров и журналу реализации. При появлении заявки на определенный товар, менеджер заносит заявку в журнал и списывает необходимое количество товара с первого склада. В случае, если на первом складе товара недостаточно – остаток списывается со второго. Такой вариант приносит лишние расходы фирме, так как в этом случае она занимается доставкой товара на территорию заказчика, чтобы не потерять клиента.
Завоз товаров на первый склад производится ночью каждого дня в соответствии с приоритетами, выставленными менеджером. Второй склад содержит достаточное число товаров (считаем, что он способен покрыть любой спрос), и его работа выходит за рамки данного проекта.
- Контроль целостности данных, используя механизм связей.
- Операции модификации групп данных и данных в связанных таблицах должны быть выполнены в рамках транзакций.
- Логика работы приложения должна контролироваться триггерами. В частности:
- Триггер должен не позволять списать товар со второго склада при наличии товара на первом.
- Триггер должен контролировать, чтобы вводимая заявка не превышала суммарное количество товара на первом и втором складах.
- Все операции вычисления различных показателей (из требований к клиентскому приложению) должны реализовываться хранимыми процедурами.
- Необходимо реализовать интерфейсы для ввода, модификации и удаления:
- Товаров, включая задание приоритета;
- Заявки, с автоматическим списанием товара со складов.
- В главном окне приложения должен быть реализован журнал менеджера с просмотром количества товаров на складах.
- Необходимо реализовать возможность просмотра менеджером следующих показателей:
- Пять самых популярных товаров.
- Изменение спроса данного товара за некоторый промежуток времени.
- Графическое отображение изменения спроса заданного товара.
Таблица SALES (заявки на продажу)
Название колонки | Тип данных | Расшифровка |
---|---|---|
id | NUMBER (*,0) | Идентификатор заявки |
good_id | NUMBER (*,0) | Идентификатор товара |
good_count | NUMBER (*,0) | Количество товара |
create_date | TIMESTAMP (3) | Дата заявки |
Таблица GOODS (описание товаров)
Название колонки | Тип данных | Расшифровка |
---|---|---|
id | NUMBER (*,0) | Идентификатор товара |
name | VARCHAR2(50 BYTE) | Наименование товара |
priority | NUMBER (*,0) | Приоритет товара (больше число выше приоритет) |
Таблица WAREHOUSE1 и WAREHOUSE2 (описание товаров на складах)
Название колонки | Тип данных | Расшифровка |
---|---|---|
id | NUMBER (*,0) | Идентификатор записи |
good_id | NUMBER (*,0) | Идентификатор товара |
good_count | NUMBER (*,0) | Количество товара на складе |
Таблица USERS_LIST (описание пользователей и их ролей)
Название колонки | Тип данных | Расшифровка |
---|---|---|
id | NUMBER (*,0) | Идентификатор пользователя |
user_name | VARCHAR2(50 BYTE) | Имя пользователя |
user_role | NUMBER (*,0) | Описание роли (1-менеджер склада, 2-директор, 3-пользователь) |
user_password | VARCHAR2(500 BYTE) | Пароль. Зашифрован SHA256 |
Примечание. Все поля с именем id являются автоматически инкрементируемыми первичными ключами. Поля с префиксом id являются внешними ключами к таблицам с соответствующими именами.
Менеджер складов (реализована)
- Просмотр и добавление заявок на товары
- Просмотр и добавление названий товаров, а также их приоритетов
- Просмотр и изменение количества товаров на складах №1, №2
- Отображение спроса на заданный товар в определённый период
- Отображение прогнозируемого спроса на товар на неделю
Директор (не реализована)
- Просмотр заявок на товары
- Просмотр товаров и их количество на обоих складах
- Добавление новых наименований товаров, а также изменение их приоритетов
- Отображение спроса на заданный товар в определённый период
- Отображение прогнозируемого спроса на товар на неделю
Пользователь (не реализована)
- Промотор товара на складе №1
- Просмотр и добавление заявок на покупку
- Просмотр всех возможных наименований товаров