- •ВВЕДЕНИЕ
- •1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ НЕОБХОДИМОСТИ АВТОМАТИЗАЦИИ ПРОЦЕССА УЧЕТА ЗАКАЗОВ КЛИЕНТОВ В ОРГАНИЗАЦИЯХ ПО ПОЗАКАЗНОМУ ПРОИЗВОДСТВУ ИЗДЕЛИЙ ИЗ КАМНЯ И МЕТАЛЛА
- •1.1 Описание предметной области организаций по позаказному производству изделий из камня и металла
- •1.2 Обзор и сравнение существующих программных продуктов для автоматизации учета заказов клиентов в организации по позаказному производству изделий из камня и металла
- •2 АНАЛИЗ И ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ АВТОМАТИЗАЦИИ УЧЕТА ЗАКАЗОВ КЛИЕНТОВ В ОРГАНИЗАЦИИ ПО ПОЗАКАЗНОМУ ПРОИЗВОДСТВУ ИЗДЕЛИЙ ИЗ КАМНЯ И МЕТАЛЛА
- •2.1 Постановка задачи проектирования информационной системы
- •2.2 Анализ предметной области проектирования информационной системы
- •2.3 Построение функциональных моделей, описывающих бизнес-процесс учета заказов клиентов в организации по позаказному производству изделий из камня и металла
- •3 РАЗРАБОТКА И ТЕСТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ АВТОМАТИЗАЦИИ УЧЕТА ЗАКАЗОВ КЛИЕНТОВ В ОРГАНИЗАЦИИ ПО ПОЗАКАЗНОМУ ПРОИЗВОДСТВУ ИЗДЕЛИЙ ИЗ КАМНЯ И МЕТАЛЛА
- •3.1 Описание таблиц базы данных
- •3.2 Дерево программных модулей и схема взаимосвязей модулей и массивов данных
- •3.3 Алгоритм формирования отчета списка выполненных, но не оплаченных на данный момент времени заказов
- •3.4 Инструкция пользователя по установке программного продукта и работе с ним
- •3.5 Способы и результаты тестирования программного продукта в различных режимах
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- •ПРИЛОЖЕНИЕ Б
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 Металл-Мастер Арт производство художественных металлоизделий
[Электронный ресурс]. URL: http://metmast.ru/ (дата обращения: 22.09.2018 г.)
2 Гуриати (Красноярск): прайс-лист товаров и услуг компании Гуриати
[Электронный ресурс]. URL: http://www.guriatiag.ru/ (дата обращения: 22.09.2018 г.)
3 Каменный остров - камнеобрабатывающая компания [Электронный ресурс]. URL: http://kospb.com/ (дата обращения: 22.09.2018 г.)
4 ДекорМеталлЮг - производство изделий из бетона и металла на заказ
[Электронный ресурс]. URL: http://vipmetall.ru/ (дата обращения: 22.09.2018 г.)
5 Гранитные памятники - Изготовление и установка памятников из
гранита: фирма Мрамор в Смоленске [Электронный ресурс]. URL: http://mramor67.ru/ (дата обращения: 22.09.2018 г.)
6 Общероссийский Классификатор Видов Экономической Деятельности | оквэд.рф [Электронный ресурс]. URL: https://xn--b1aeqp1f.xn--p1ai/ (дата обращения: 22.09.2018 г.)
7 Обрабатывающая промышленность [Электронный ресурс]. URL: http://www.ekoslovar.ru/244.html (дата обращения: 22.09.2018 г.)
8Что такое CRM-системы и как их правильно выбирать? [Электронный ресурс]. URL: https://habrahabr.ru/company/trinion/blog/249633/ (дата обращения:
01.10.2018 г.)
9Что выбрать? Сравнения пяти популярных CRM-систем [Электронный ресурс]. URL: https://blog.themarfa.name/chto-vybrat-sravnieniie-populiarnykh- piati-crm-sistiem/ (дата обращения: 01.10. 2018 г.)
10Цветкова Ю.А. Сравнительный анализ CRM-систем // Электронный журнал «Постулат». №5. 2018. URL: http://e-
postulat.ru/index.php/Postulat/article/view/1463/1495 (дата обращения: 01.10. 2018
г.)
11 Исаев Г.Н. Проектирование информационных систем: Учебное
37
пособие. М.: Омега-Л, 2013. 424 с.
12 Коваленко В. Проектирование информационных систем. Форум, 2015.
320 с.
13 Арутюнов, В. В. Теория экономических информационных систем. М.:
Синтег, 2011. 360 с.
14 PHP, Ruby, Python – краткая характеристика трёх языков программирования | Веб-программирование [Электронный ресурс]. URL: http://www.internet-technologies.ru/articles/php-ruby-python-harakteristika-yazykov- programmirovaniya.html (дата обращения: 20.10. 2018 г.)
15 Основные методологии обследования организаций. Стандарт IDEF0. [Электронный ресурс]. URL: https://www.cfin.ru/vernikov/idef/idef0.shtml (дата обращения: 22.10. 2018 г.)
16 Концептуальная, логическая и физическая модели данных
[Электронный ресурс]. URL: https://studfiles.net/preview/5228984/page:2/ (дата обращения: 25.10. 2018 г.)
17Создание физической модели в erWin [Электронный ресурс]. URL: https://studfiles.net/preview/6354061/page:52/ (дата обращения: 25.10. 2018 г.)
18Создание физической модели –bpWin [Электронный ресурс]. URL: https://itteach.ru/bpwin/sozdanie-fizicheskoy-modeli (дата обращения: 25.10. 2018
г.)
19 Bitnami: пакетные приложения для любой платформы - облако,
контейнер, виртуальная машина [Электронный ресурс]. URL : https://bitnami.com/redirect/to/90515/bitnami-rubystack-2.0.0-39-windows-installer. exe. (дата обращения: 20.11. 2018 г.)
20 Методы тестирования программного обеспечения и их сравнение.
Тестирование методом «черного ящика» и тестирование методом «белого ящика» [Электронный ресурс]. URL: http://fb.ru/article/247668/metodyi- testirovaniyaprogrammnogo-obespecheniya-i-ih-sravnenie-testirovanie-metodom- chernogo-yaschika-i-testirovanie-metodom-belogo-yaschika (дата обращения:
20.11. 2018 г.)
38
ПРИЛОЖЕНИЕ А Глоссарий
CRM-система – прикладное программное обеспечение для организаций,
предназначенное для автоматизации стратегий взаимодействия с заказчиками
(клиентами).
Ruby on Rails (RoR) — фреймворк, написанный на языке программирования Ruby, реализует архитектурный шаблон Model-View- Controller для веб-приложений, а также обеспечивает их интеграцию с веб-
сервером и сервером баз данных.
Автоматизированная информационная система (АИС) – совокупность программно-аппаратных средств, предназначенных для автоматизации деятельности, связанной с хранением, передачей и обработкой информации.
База данных (БД) – совокупность связанных данных, организованных по определенным правилам, предусматривающим общие принципы описания,
хранения и манипулирования, независимая от прикладных программ.
Бизнес-процесс – то совокупность взаимосвязанных мероприятий или работ, направленных на создание определённого продукта или услуги для потребителей.
Информационная система (ИС) – система, предназначенная для хранения,
поиска и обработки информации, и соответствующие организационные ресурсы (человеческие, технические, финансовые и т. д.), которые обеспечивают и распространяют информацию.
Программный продукт – самостоятельное, отчуждаемое произведение,
представляющее собой публикацию текста программы или программ на языке программирования или в виде исполняемого кода.
Фреймворк – это программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. Эта платформа подходит для создания сайтов, бизнес-приложений и веб-сервисов.
39
ПРИЛОЖЕНИЕ Б
Рисунок Б.1 – Интерфейс CRM-системы «Битрикс 24»
Рисунок Б.2 – Интерфейс CRM-системы «AmoCRM»
40
Рисунок Б.3 – Интерфейс CRM-системы «Terrasoft»
Рисунок Б.4 – Интерфейс CRM-системы «Мегаплан»
41
ПРИЛОЖЕНИЕ В Модель бизнес-процесса
Рисунок В.1 – Концептуальный уровень диаграммы (уровень А-0)
Рисунок В.2 – Декомпозиция блока «Процесс учета заказов клиентов» (уровень А0)
42
Рисунок В.3 – Декомпозиция блока «Ведение БД» (уровень А2)
Рисунок В.4 – Декомпозиция блока «Завершение заказа» (уровень А4)
43
Рисунок В.4 – Декомпозиция блока «Формирование отчетности» (уровень А43)
44
ПРИЛОЖЕНИЕ Г Календарный план проекта
Рисунок Г.1 – Календарный план разрабатываемой информационной системы
45
ПРИЛОЖЕНИЕ Д Текст модулей объектов
Листинг Е.1 – Текст программного кода для создания справочника Заказы
/app/views/zakazs/index.html.erb: |
|
<% if zakaz.s_delete == false %> |
|||
|
|
|
|
<tr> |
|
<p id="notice"><%= notice %></p> |
<% else %> |
|
|||
|
|
|
|
<tr bgcolor="Red"> |
|
<h1>Справочник заказов</h1> |
<% end %> |
|
|||
|
|
|
|
<td><%= |
zakaz.klient.k_name |
<%= |
link_to |
'Новый |
заказ', |
%></td> |
|
new_zakaz_path %> |
|
|
<td><%= |
zakaz.tovar.vid |
|
<%= link_to 'Главная страница', |
%></td> |
|
|||
controller: 'home_page' %> |
|
|
<td><%= zakaz.date %></td> |
||
|
|
|
|
<td><%= zakaz.plan %></td> |
|
<table> |
|
|
|
<td><%= |
zakaz.stoimost |
<thead> |
|
|
%></td> |
|
|
<tr> |
|
|
|
<td><%= zakaz.fact %></td> |
|
<th>Клиент</th> |
|
<td><%= zakaz.oplat %></td> |
|||
<th>Изделие</th> |
|
<td><%= |
zakaz.nevip.character |
||
<th>Дата |
регистрации |
%></td> |
|
||
заказа</th> |
|
|
|
<td><%= zakaz.status %></td> |
|
<th>Дата планового выполнения |
<td><%= |
zakaz.s_delete |
|||
заказа</th> |
|
|
|
%></td> |
|
<th>Стоимость изделия</th> |
<td><%= link_to 'Показать', |
||||
<th>Дата |
фактического |
zakaz %></td> |
|
||
выполнения заказа</th> |
|
|
<td><%= link_to 'Изменить', |
||
<th>Оплата</th> |
|
edit_zakaz_path(zakaz) %></td> |
|||
<th>Причина |
невыполнения |
<% if session[:user_id] == 1 %> |
|||
заказа</th> |
|
|
|
<td><%= link_to 'Удалить', |
|
<th>Статус</th> |
|
zakaz, method: :delete, data: { confirm: 'Вы |
|||
<th>Удаление</th> |
|
уверены?' } %></td> |
|
||
<th colspan="3"></th> |
|
<% end %> |
|
||
</tr> |
|
|
|
</tr> |
|
</thead> |
|
|
<% end %> |
|
|
|
|
|
|
</tbody> |
|
<tbody> |
|
|
</table> |
|
|
<% @zakazs.each do |zakaz| %> |
|
|
46
/app/views/zakazs/_form.hrml.erb: |
|
%><br> |
|
|
|
<%= f.date_select :plan %> |
|
<%= form_for(@zakaz) do |f| %> |
</div> |
|
|
<% if @zakaz.errors.any? %> |
|
<div class="field"> |
|
<div id="error_explanation"> |
|
<%= f.label :Стоимость_изделия |
|
<h2><%= |
|
%><br> |
|
pluralize(@zakaz.errors.count, "error") %> |
<%= f.number_field :stoimost %> |
||
Произошла ошибка, заказ не запсан:</h2> |
</div> |
|
|
|
|
<div class="field"> |
|
<ul> |
|
<%= |
f.label |
<% |
|
:Дата_фактического_выполнения_заказа |
|
@zakaz.errors.full_messages.each |
do |
%><br> |
|
|message| %> |
|
<%= f.date_select :fact %> |
|
<li><%= message %></li> |
|
</div> |
|
<% end %> |
|
<div class="field"> |
|
</ul> |
|
<%= f.label :Оплата %><br> |
|
</div> |
|
<%= f.check_box :oplat %> |
|
<% end %> |
|
</div> |
|
|
|
<div class="field"> |
|
<div class="field"> |
|
<%= |
f.label |
<%= f.label :Клиент %><br> |
|
:Причина_невыполнения_заказа %><br> |
|
<%= f.collection_select(:klient_id, |
<%= f.collection_select(:nevip_id, |
||
Klient.all, :id, :k_name) %> |
|
Nevip.all, :id, :character) %> |
|
</div> |
|
</div> |
|
<div class="field"> |
|
<div class="field"> |
|
<%= f.label :Изделие %><br> |
<%= f.label :Статус %><br> |
|
|
<%= f.collection_select(:tovar_id, |
<%= f.check_box :status %> |
|
|
Tovar.all, :id, :vid) %> |
|
</div> |
|
</div> |
|
<div class="field"> |
|
<div class="field"> |
|
<%= f.label :Удаление %><br> |
|
<%= |
f.label |
<%= f.check_box :s_delete %> |
|
:Дата_регистрации_заказа %><br> |
|
</div> |
|
<%= f.date_select :date %> |
|
<div class="actions"> |
|
</div> |
|
<%= f.submit "Добавить заказ" |
|
<div class="field"> |
|
%> |
|
<%= |
f.label |
</div> |
|
:Дата_планового_выполнения_заказа |
|
<% end %> |
|
/app/views/zakazs/edit.hrml.erb: |
|
/app/views/zakazs/new.hrml.erb: |
||
<h1>Редактирование заказа</h1> |
|
<h1>Новый заказ</h1> |
||
<%= render 'form2' %> |
|
|
<%= render 'form' %> |
|
<%= link_to 'Показать', @zakaz %> | |
|
<%= link_to 'Назад', zakazs_path %> |
||
<%= link_to 'Назад', zakazs_path %> |
|
|
|
|
|
|
|
<p> |
|
/app/views/zakazs/show.hrml.erb: |
|
<strong>Дата факт. выполнения |
||
|
|
заказа:</strong> |
|
|
<p id="notice"><%= notice %></p> |
|
<%= @zakaz.fact %> |
||
|
|
|
</p> |
|
<p> |
|
|
|
|
<strong>Клиент:</strong> |
|
<p> |
|
|
<%= @zakaz.klient.k_name %> |
|
<strong>Оплата:</strong> |
||
</p> |
|
|
<%= @zakaz.oplat %> |
|
|
|
|
</p> |
|
<p> |
|
|
|
|
<strong>Изделие:</strong> |
|
<p> |
|
|
<%= @zakaz.tovar.vid %> |
<strong>Причина |
невыполнения |
||
</p> |
|
заказа:</strong> |
|
|
|
|
<%= @zakaz.nevip.character %> |
||
<p> |
|
</p> |
|
|
<strong>Дата |
регистрации |
|
|
|
заказа:</strong> |
|
<p> |
|
|
<%= @zakaz.date %> |
|
<strong>Статус:</strong> |
||
</p> |
|
<%= @zakaz.status %> |
|
|
|
|
</p> |
|
|
<p> |
|
|
|
|
<strong>Дата план. выполнения |
<p> |
|
|
|
заказа:</strong> |
|
<strong>Удаление:</strong> |
||
<%= @zakaz.plan %> |
|
<%= @zakaz.s_delete %> |
|
|
</p> |
|
</p> |
|
|
<p> |
|
<%= |
link_to |
'Изменить', |
<strong>Стоимость:</strong> |
edit_zakaz_path(@zakaz) %> | |
|||
<%= @zakaz.stoimost %> |
<%= |
link_to 'Назад', |
zakazs_path %> |
|
</p> |
|
|
|
|
Листинг Е.2 – Текст программного кода для создания отчета о Неоплаченных заказах
app/controllers/fact_controller.rb:
|
|
|
def search |
|
|
class |
FaktController |
< |
@year_s |
= |
|
Date.civil(params[:start]["written_on(1i)"].to_ |
|||||
ApplicationController |
|
||||
|
i,params[:start]["written_on(2i)"].to_i, |
|
|||
def index |
|
|
|
||
|
|
params[:start]["written_on(3i)"].to_i).year |
|
||
end |
|
|
|
||
|
|
@month_s |
= |
||
|
|
|
Date.civil(params[:start]["written_on(1i)"].to_ i,params[:start]["written_on(2i)"].to_i, params[:start]["written_on(3i)"].to_i).month
@day_s = Date.civil(params[:start]["written_on(1i)"].to_ i,params[:start]["written_on(2i)"].to_i,
/app/views/uvl_hobby/index.html.erb:
<h1>Отчет о неоплаченных заказах</h1>
<%= link_to 'Главная страница', controller: 'home_page' %>
<br><br>
<%= form_tag("search", method: "get") do %>
<%= label_tag(:start, "Введите текущую дату:") %>
<%= date_select(:start, "written_on")
/app/views/uvl_hobby/search.html.erb:
<h1>Отчет о неоплаченных заказах</h1>
<%= link_to 'Главная страница', controller: 'home_page' %> |
<%= link_to 'Назад', controller: 'fakt'
%>
<br><br>
<table border="1"> <th>Код</th> <th>Клиент</th> <th>Изделие</th> <th>Стоимость</th>
<%= Zakaz.select("zakazs.id, zakazs.klient_id, zakazs.tovar_id, zakazs.fact, zakazs.stoimost, zakazs.oplat").joins("inner join tovars on
params[:start]["written_on(3i)"].to_i).day end
end
%>
<br><br>
<%= label_tag(:q, "Введите факт оплаты:") %>
<% fact_array = Zakaz.all.map { |zakaz| [zakaz.oplat] } %>
<%= select_tag(:q, options_for_select(fact_array)) %>
<br><br>
<%= submit_tag("Искать") %>
<% end %>
tovars.id = zakazs.tovar_id").joins("inner join klients on klients.id = zakazs.klient_id").where("date_part('year', zakazs.fact) <= ? and date_part('month', zakazs.fact) <= ? and date_part('day', zakazs.fact) <= ?", @year_s, @month_s, @day_s).find_each do |zakaz|%>
<tr>
<td><%=
zakaz.id %></td>
<td><%= zakaz.klient.k_name %></td>
<td><%=
zakaz.tovar.vid %></td>
<td><%=
zakaz.stoimost %></td> </tr>
<% end %>
49
ПРИЛОЖЕНИЕ Е Ксерокопия научной статьи
50
51