Добавлен: 23.05.2023
Просмотров: 148
Скачиваний: 2
СОДЕРЖАНИЕ
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
ГЛАВА 2. АВТОМАТИЗАЦИЯ РАБОТЫ СКЛАДА
2.2 Проектирование диаграммы классов
2.3 Проектирование диаграммы вариантов использования
2.4 Проектирование диаграммы деятельности (активностей)
ГЛАВА 3. РЕКОМЕНДАЦИИ К ВНЕДРЕНИЮ ПРОГРАММНОГО КОМПЛЕКСА УПРАВЛЕНИЯ СКЛАДСКИМИ ОПЕРАЦИЯМИ
Класс товар (product) связан с классами для выписанной
накладной (entry_invoice), составом заказа (contenet_order) и товаром на складе (product_stock) ассоциативной связью кратностью один ко многим. Так, например, товар может иметь сколь угодно записей в выписанной накладной, но в каждой выписанной накладной каждая запись соответствует одном товару. Это справедливо и для остальных двух классов.
Рисунок 1 – Связь между продуктом и выписанной накладной
Классы накладная (invoice) и заказ (order) должны быть обобщены в классе документ (document).
Рисунок 2 – Отношение типа «общее-частное» класса
документ (document) к классам накладная (invoice) и заказ (order)
Классы менеджер (manager) и кладовщик (storekeeper) должны быть обобщены в классе рабочий.
Рисунок 3 – Отношение типа «общее-частное» класса
рабочий (employee) к менеджеру (manager) и кладовщику (storekeeper)
Классы заполненная накладная (entry_invoice) и накладная (invoice), также, как и классы для заказов, связаны отношением агрегирования.
Рисунок 4 – Отношение агрегации классов накладная (invoice) и заполненная накладная (entry_invoice)
В соответствии с вышеизложенным, устанавливаем отношения между всеми классами. Диаграмма классов склада, в соответствии с названиями, атрибутами и методами, определенными ранее, представлена на рисунке 5.
Рисунок 5 – Диаграмма классов склада
Далее представлен листинг диаграммы классов на языке С++.
class product
{
public:
product ();
virtual ~product ();
int number_product;
char name_product;
char unit_product;
float price_product;
char date_product;
void setNumber_product (int new_var) {
number_product = new_var;
}
int getNumber_product () {
return number_product;
}
void setName_product (char new_var) {
name_product = new_var;
}
char getName_product () {
return name_product;
}
void setUnit_product (char new_var) {
unit_product = new_var;
}
char getUnit_product () {
return unit_product;
}
void setPrice_product (float new_var) {
price_product = new_var;
}
float getPrice_product () {
return price_product;
}
void setDate_product (char new_var) {
date_product = new_var;
}
char getDate_product () {
return date_product;
}
void initAttributes () ;
};
class preserve : public product
{
public:
preserve ();
virtual ~preserve ();
};
class grocery : public product
{
public:
grocery ();
virtual ~grocery ();
};
class confection : public product
{
public:
confection ();
virtual ~confection ();
};
class beverage : public product
{
public:
beverage ();
virtual ~beverage ();
};
class provider_product
{
public:
provider_product ();
virtual ~provider_product ();
protected:
char name_provider;
char address_provider;
void setName_provider (char new_var) {
name_provider = new_var;
}
char getName_provider () {
return name_provider;
}
void setAddress_provider (char new_var) {
address_provider = new_var;
}
}
void initAttributes () ;
};
class employee
{
public:
employee ();
virtual ~employee ();
protected:
int number_employee;
char name_employee;
int mobile_employee;
public:
void setNumber_employee (int new_var) {
number_employee = new_var;
}
int getNumber_employee () {
return number_employee;
}
void setName_employee (char new_var) {
name_employee = new_var;
}
char getName_employee () {
return name_employee;
}
void setMobile_employee (int new_var) {
mobile_employee = new_var;
}
int getMobile_employee () {
return mobile_employee;
}
void initAttributes () ;
};
class manager : public employee, public employee
{
public:
manager ();
virtual ~manager ();
private:
char date_training;
public:
void setDate_training (char new_var) {
date_training = new_var;
}
char getDate_training () {
return date_training;
}
private:
void initAttributes () ;
};
class storekeeper : public employee, public employee
{
public:
storekeeper ();
virtual ~storekeeper ();
private:
int rank;
void setRank (int new_var) {
rank = new_var;
}
int getRank () {
return rank;
}
private:
void initAttributes () ;
};
class invoice : public document
{
public:
invoice ();
bool condition_invoice;
char date_invoice;
float total_invoice;
float weight_invoice;
int number_client;
void setCondition_invoice (bool new_var) {
condition_invoice = new_var;
}
bool getCondition_invoice () {
return condition_invoice;
}
void setDate_invoice (char new_var) {
date_invoice = new_var;
}
char getDate_invoice () {
return date_invoice;
}
void setTotal_invoice (float new_var) {
total_invoice = new_var;
}
float getTotal_invoice () {
return total_invoice;
}
void setWeight_invoice (float new_var) {
weight_invoice = new_var;
}
float getWeight_invoice () {
return weight_invoice;
}
void setNumber_client (int new_var) {
number_client = new_var;
}
int getNumber_client () {
return number_client;
}
void initAttributes () ;
};
class order : public document
{
public:
order ();
virtual ~order ();
bool condition_order;
char data_order;
void setCondition_order (bool new_var) {
condition_order = new_var;
}
bool getCondition_order () {
return condition_order;
}
void setData_order (char new_var) {
data_order = new_var;
}
char getData_order () {
return data_order;
}
void cancel_order ()
{
}
void initAttributes () ;
};
class entry_invoice
{
public:
entry_invoice ();
virtual ~entry_invoice ();
protected:
char product_invoice;
float amount_invoice;
float weigth_invoice;
float price_invoice;
float total_invoice;
public:
void setProduct_invoice (char new_var) {
product_invoice = new_var;
}
char getProduct_invoice () {
return product_invoice;
}
void setAmount_invoice (float new_var) {
amount_invoice = new_var;
}
float getAmount_invoice () {
return amount_invoice;
}
void setWeigth_invoice (float new_var) {
weigth_invoice = new_var;
}
float getWeigth_invoice () {
return weigth_invoice;
}
void setPrice_invoice (float new_var) {
price_invoice = new_var;
}
float getPrice_invoice () {
return price_invoice;
}
void setTotal_invoice (float new_var) {
total_invoice = new_var;
}
float getTotal_invoice () {
return total_invoice;
}
private:
void initAttributes () ;
};
class content_order
{
public:
content_order ();
virtual ~content_order ();
protected:
int product_order;
float amount_order;
float price_order;
float total_order;
public:
void setProduct_order (int new_var) {
product_order = new_var;
}
int getProduct_order () {
return product_order;
}
void setAmount_order (float new_var) {
amount_order = new_var;
}
float getAmount_order () {
return amount_order;
}
void setPrice_order (float new_var) {
price_order = new_var;
}
float getPrice_order () {
return price_order;
}
void setTotal_order (float new_var) {
total_order = new_var;
}
float getTotal_order () {
return total_order;
}
private:
void initAttributes () ;
};
class document
{
public:
document ();
virtual ~document ();
int number_document;
char date_document;
void setNumber_document (int new_var) {
number_document = new_var;
}
int getNumber_document () {
return number_document;
}
void setDate_document (char new_var) {
date_document = new_var;
}
char getDate_document () {
return date_document;
}
void initAttributes () ;
};
class client_product
{
public:
client_product ();
virtual ~client_product ();
void buy ()
{
}
protected:
int number_client;
int product_client;
public:
void setNumber_client (int new_var) {
number_client = new_var;
}
int getNumber_client () {
return number_client;
}
void setProduct_client (int new_var) {
product_client = new_var;
}
int getProduct_client () {
return product_client;
}
private:
void initAttributes () ;
};
class Stock
{
public:
Stock ();
virtual ~Stock ();
};
class product_stock
{
public:
product_stock ();
virtual ~product_stock ();
float amount_product;
void setAmount_product (float new_var) {
amount_product = new_var;
}
float getAmount_product () {
return amount_product;
}
private:
void initAttributes () ;
}.
2.3 Проектирование диаграммы вариантов использования
Выполним разработку контекстной диаграммы в виде диаграммы вариантов использования (use case diagram).
Актеры (actor) представляют собой лица, которые производят какие-либо взаимодействия в системе. Так, в качестве актеров могут выступить клиент, поставщик, менеджер и грузчик.
Варианты использования, отображаемые в эллипсах, должны связываться с актерами с помощью взаимодействий.
Клиента можно связать отношениями ассоциации с вариантами взаимодействия «Оплатить товар», «Заказать товар», «Получить». Данные отношения приведены на рисунке 6.
Рисунок 6 – Отношения актера «Клиент» с вариантами
использования
Клиентом могут быть заказаны разные группы товаров. Варианты взаимодействия по заказу различных групп товаров могут быть обобщены в варианте использования «Заказать товар». Вариант использования «Заказать товар» может быть связан отношением расширения с вариантом использования «Запросить каталог товаров». Это поведение системы является необязательным. Данное отношение изображено пунктирной линией со словом «extend» (рисунок 7).
Рисунок 7 - Варианты взаимодействия по заказу
различных групп
Составим отношения всех актеров с их вариантами использования. Вариант использования «Получить товар» ассоциированный с клиентом, должен быть связан с вариантами использования «Оплатить товар» и «Отгрузить товар» отношением включения, изображаемым пунктирной линией с ключевым словом «include», так как условием для данного поведениями системы является условие выполнение вариантов этих двух вариантов использования.
Аналогично выстраиваем варианты использования и отношения между ними для остальных актеров. Полная диаграмма вариантов использования представлена на рисунке 8.
Рисунок 8 – Диаграмма вариантов использования
2.4 Проектирование диаграммы деятельности (активностей)
Выполним разработку диаграммы деятельности для представления основной функции склада. Действия клиента, менеджера и кладовщика изобразим на выделенных для них дорожках. Действия представляют собой элементарные шаги, которые не предполагают дальнейшую декомпозицию.
Диаграмма деятельности представлена на рисунке 9.
Рисунок 9 – Диаграмма деятельности (активности)
ГЛАВА 3. РЕКОМЕНДАЦИИ К ВНЕДРЕНИЮ
ПРОГРАММНОГО КОМПЛЕКСА УПРАВЛЕНИЯ СКЛАДСКИМИ ОПЕРАЦИЯМИ
Хозяйственная деятельность предприятия невозможна без функции хранения, а, следовательно, без складов, которые имеют место в любой логистической системе.
Современный складской комплекс, обладающий совершенными технологиями, позволяет решать многие проблемы, связанные с обращением товарно-материальных ценностей. Правильно организованный склад позволяет оптимизировать затраты логистической системы, а процессы, связанные с функционированием складов, в конечном результате являются значительной составляющей совокупных затрат.
Правильная организация работы склада экономически выгодна: ускоряются внешние товарные потоки (поставки), внутрискладские процессы, что обеспечивает ускорение оборачиваемости запасов, а это самый важный фактор управления оборотными средствами в условиях их дефицита. В результате оптимизации складской деятельности высвобождаются рабочая сила, площади оборудование, а значит, снижаются затраты. Таким образом, деятельность склада является мощным резервом повышения эффективности работы всего предприятия.
Склад несет не только функцию хранения, но и сервисного обслуживания потребителей складских услуг: приближение запасов к местам потребления, формирование рыночного ассортимента, комплектование смешанных грузовых отправок и так далее. Таким образом, склад – как неотъемлемое звено в системе складской логистики, позволяет определить стратегические выгоды: экономические и сервисные.
Рассмотрим задачи, которые стоят перед предприятиями с целью оптимального функционирования складов и систем складской логистики. Для определения задач организации складского хозяйством необходимо рассмотреть вопрос места и роли склада в системах складской логистики.
Если рассматривать макрологистическую систему, то существуют склады поставщиков, производителей, покупателей, логистических посредников, грузоперевозчиков, потребителей.
Какие задачи стоят перед предприятиями с целью организации оптимального функционирования складов и систем складской логистики? Постановка задач производится из указанных целей: экономических и сервисных. Для этого необходимо рассмотреть вопросы:
- место и роль склада в системах складской логистики;
- организация складского хозяйства;
- определение критериев эффективности функционирования склада иего основных частей, как элементов складской логистики;
- разработка бизнес-плана организации складской логистики;
- разработка технологического процесса на складе предприятия;
- техническое обеспечение технологического процесса с помощью элементов складской логистики;
- информационное и документарное обеспечение управления;
- маркировка и идентификация товаров и т.д.