Файл: Разработка регламента выполнения процесса «Складской учет» (Выбор комплекса задач автоматизации).pdf
Добавлен: 01.04.2023
Просмотров: 93
Скачиваний: 2
СОДЕРЖАНИЕ
1.1. Выбор комплекса задач автоматизации
1.2. Характеристика существующих бизнес-процессов
1.3. Характеристика документооборота, возникающего при решении задачи
1.4. Обоснование проектных решений по информационному обеспечению
1.5. Обоснование проектных решений по программному обеспечению
2.1. Информационная модель и её описание
2.2. Характеристика нормативно-справочной, входной и оперативной информации
2.3. Характеристика результатной информации
2.4. Общие положения (дерево функций и сценарий диалога)
2.5. Характеристика базы данных
2.6. Структурная схема пакета (дерево вызова программных модулей)
2.7 Описание программных модулей
Таблица 16
Заказ
Наименование поля (реквизиты) |
Идентификация |
Тип |
Длина |
Кодзаказа |
КодЗаказа |
Числовой |
10 |
Код товара |
КодТовара |
Числовой |
10 |
Код единицы измерения |
КодЕИ |
Числовой |
10 |
Количество |
Количество |
Числовой |
10 |
Цена |
Цена |
Числовой |
Double |
Код услуги |
КодУслуги |
Числовой |
10 |
Код вид услуги |
КодВидУслуги |
Числовой |
10 |
Код сотрудника |
КодСотрудника |
Числовой |
10 |
Дата начала |
ДатаНачала |
Дата/время |
Формат времени |
Дата конца |
ДатаКонца |
Дата/время |
Формат времени |
Описание |
Описание |
Текстовый |
200 |
Код документа |
КодДокумента |
Числовой |
10 |
Код поставщика |
КодПоставщика |
Числовой |
10 |
Код склада |
КодСклада |
Числовой |
10 |
Таблица 17
Пользователь
Наименование поля (реквизиты) |
Идентификация |
Тип |
Длина |
Код пользователя |
КодПользователя |
Числовой |
10 |
Логин пользователя |
Логин |
Текстовый |
25 |
Имя пользователя |
ФИО |
Текстовый |
50 |
Пароль пользователя |
Пароль |
Текстовый |
25 |
Администратор |
Администратор |
Текстовый |
1 |
Таблица 18
Настройки
Наименование поля (реквизиты) |
Идентификация |
Тип |
Длина |
Код |
Код |
Числовой |
10 |
Формат номера телефона |
ФорматНомераТелефона |
Текстовый |
45 |
2.3. Характеристика результатной информации
Определим предварительные отношения.
- Связь Закупка_СОДЕРЖИТ_Товар характеризуется степенью связи 1:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Закупка (КодЗакупка, КодТовар, ….)
б) Товар (КодТовар, …)
- Связь Закупка_ИМЕЕТ_ЕдиницыИзмеренияхарактеризуется степенью связи N:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Закупка (КодЗакупка, КодЕИ, …)
б) ЕдиницыИзмерения(КодЕИ, …)
- Связь Приход_ИМЕЕТ_Закупку характеризуется степенью связи 1:N и классом принадлежности О:Н, поэтому порождает два предварительных отношения:
а) Приход (КодПриход, ….)
б) Закупка (КодЗакупка, КодПриход, …)
- Связь Приход_ИМЕЕТ_Поставщика характеризуется степенью связи 1:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Приход (КодПриход, КодПоставщик, …)
б) Поставщик (КодПоставщик, …)
- Связь Приход_ИДЁТ_на_Склад характеризуется степенью связи 1:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Приход (КодПриход, КодСклад, ….)
б) Склад (КодСклад, …)
- Связь Сотрудник_ДЕЛАЕТ_Заказ характеризуется степенью связи 1:N и классом принадлежности О:Н, поэтому порождает два предварительных отношения:
а) Сотрудник (КодСотрудник, …)
б) Заказ (КодЗаказ, КодСотрудник, …)
- Связь Заказ_СОДЕРЖИТ_Товар характеризуется степенью связи 1:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Заказ (КодЗаказ, КодТовар, …)
б) Товар (КодТовар, ….)
- Связь Заказ_СОДЕРЖИТ_Услугу характеризуется степенью связи N:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Заказ (КодЗаказ, КодУслуга, …)
б) Услуга (КодУслуга,…)
- Связь Заказ_ИМЕЕТ_ЕдиницыИзмерения характеризуется степенью связи N:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Заказ (Код Заказ, КодЕИ, …)
б) ЕдиницыИзмерения(КодЕИ, …)
- Связь Услуга_ИМЕЕТ_ЕдиницыИзмерения характеризуется степенью связи N:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Услуга (Код Услуга, КодЕИ, …)
б) ЕдиницыИзмерения(КодЕИ, …)
- Связь Расход_ИМЕЕТ_Заказ характеризуется степенью связи 1:N и классом принадлежности О:Н, поэтому порождает два предварительных отношения:
а) Расход (КодРаход, ….)
б) Заказ (КодЗаказ, КодРасход, …)
- Связь Расход_ОТНОСИТСЯ_к_Складу характеризуется степенью связи 1:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Расход (Код Расход, КодСклад, ….)
б) Склад (КодСклад, …)
- Связь Расход_ИМЕЕТ_Клиента характеризуется степенью связи 1:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Расход (Код Расход, КодКлиент, …)
б) Клиент (КодКлиент, …)
- Связь Товар_ИМЕЕТ_ВидТовара характеризуется степенью связи N:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Товар (КодТовар, КодВидТовара, ….)
б) ВидТовара (КодВидТовара, …)
- Связь Услуга_ИМЕЕТ_ВидУслуги характеризуется степенью связи N:1 и классом принадлежности Н:О, поэтому порождает два предварительных отношения:
а) Услуга (КодУслуга, КодВидУслуги, …)
б) ВидУслуги (КодВидУслуги, …)
Составив список предварительных отношений, мы можем удалить все дублирующиеся отношения.
Таким образом, получим следующие итоговые отношения:
- Единицы измерения (ЕИ) (КодЕИ, Наименование)
- Вид товара (ВидТовара) (КодВТ, Наименование)
- Вид услуги (ВидУслуги) (КодВУ, Наименование)
- Приходная накладная (ПриходнаяНакладная) (КодПН, КодСклад, КодПоставщик, Дата, Номер)
- Расходная накладная (РасходнаяНакладная) (КодРН, КодСклад, КодКлиент, Дата, Номер)
- Закупка (Закупка) (КодЗакупка, КодРН, КодТовар, КодЕИ, Количество, Цена)
- Заказ (Заказ) (КодЗаказ, КодПН, КодТовар, КодУслуга, Количество, КодЕИ, Описание, ДатаНачала, ДатаОкончания)
- Склад (Склад) (КодСклад, Адрес, Наименование)
- Поставщик (Поставщик) (КодПоставщик, Адрес, Наименование, Телефон)
- Клиент (Клиент) (КодКлиент, Имя, Фамилия, Отчество, Адрес, Пасспорт, Телефон)
- Сотрудник (Сотрудник) (КодСотрудник, Имя, Фамилия, Отчество, Адрес, Пасспорт, Телефон, ДатаРождения)
- Услуга (Услуга) (КодУслуга, КодЕИ, КодВУ, Цена, Наименование)
- Товар (Товар) (КодТовар, КодЕИ, КодВТ, Наименование, Артикул, Цвет,Ширина, Изготовитель, Цена)
2.4. Общие положения (дерево функций и сценарий диалога)
Дерево функций это иерархическая структура действий, реализованных в информационной системе. Можно выделить два подмножества функций:
- служебные функции;
- основные функции.
Служебные функции - идентичны для всех автоматизированных систем управления учреждением на уровне развития аппаратных и программных средств. Эти функции призваны обеспечить безопасность ввода, обработки и хранения информации, облегчить работу с системой, сделать ее наиболее удобной для конечного пользователя.
Основные функции управления и обработки данных отражают особенности процесса обработки информации, получения результатов, ведения информационной базы проекта. Дерево функций, разрабатываемого программного продукта представлено на рисунке 15.
Диалог - это процесс обмена сообщениями между информационной системой и пользователем. В процессе этого обмена постоянно осуществляется смена ролей информатора ( тот, кто отправляет информацию) и реципиента ( пользователь, который принимает информацию), при этом смена ролей происходит оперативно.
В процессе диалога возможно:
- двустороннее управление на базе языка типа «запрос-ответ»;
одностороннее управление со стороны информационной системы с языком общения типа «меню», «заполнение шаблона», ответа по «подсказке»;
одностороннее управление со стороны пользователя с использованием языка команд.
Сценарий диалога представлен на рисунке 16.
Рисунок 15. Дерево функций
Рисунок 16. Сценарий диалога
После входа в программу открывается главное окно программы и активизация системы меню.
2.5. Характеристика базы данных
После того как обследована предметная область, изучена ее информационная структура; выявлены все фрагменты, каждый из которых характеризуется пользовательским представлением, информационными объектами и связями между ними, процессами над информационными объектами разрабатывается концептуальная модель. Модель представлена на рис.17.
Рисунок 17. Концептуальная модель
Главным результатомданногоэтапаявляетсяпостроениелогической модели (модель требований) системы. Логическая модель описывает понятия предметной области, их взаимосвязь. Логическая модель строится в терминах информационных единиц, но без привязки к конкретной СУБД. Логическая модель данных представлена далее в виде модели «сущность-связь» на рис. 18.
Рисунок 18. Логическая модель данных
2.6. Структурная схема пакета (дерево вызова программных модулей)
Для подключения к БД и хранение созданного соединения разработан класс ConnectionPool. Преимущество, которое даёт хранение созданного подключения к БД в том, что не тратится при каждом запросе время на создание подключения. Особо ощутимы затраты на подключение, когда сервер находится на удалённой машине.
Рис. 19. Дерево вызова программных модулей
В логической модели базы данных установлены три родительские сущности: «Постащик», «Счет» и «Кодификатор», которые связаны с ТМЦ связями один ко многим по ключевым полям.
Класс ConnectionPool реализует интерфейс IDisposable, чтобы иметь возможность принудительно закрыть соединение с БД при вызове метода Dispose().
Клиент класса может получить соединение, обратившись к статическому свойству класса Connection, на методе get которого находится проверка валидности существующего соединения.
Код класса находится в лист. 3.4.2.
Листинг 3.4.2 Класс ConnectionPool
// Класс отвечающий за подключение к MySQL
publicclassConnectionPool :IDisposable
{
// Объектподключения
privatestaticMySqlConnectionconnection = null;
// Конструкторкласса
publicConnectionPool()
{
if (connection != null)
{
connection.Close();
connection = null;
}
}
// Открытиеподключения.
public static MySqlConnection Connection
{
get
{
if (connection == null)
{
try
{
// Получениенастроек
DatabaseSettingsdbs = new DatabaseSettings();
connection = new MySqlConnection(dbs.ConnectionString);
// Открытие
connection.Open();
}
catch (Exception e)
{
connection = null;
}
}
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
return connection;
}
}
public static IDbConnectionResetConnection()
{
if (connection != null)
{
connection.Close();
connection.Dispose();
connection = null;
}
return Connection;
}
#region Implementation of IDisposable
public void Dispose()
{
CloseSharedConnection();
}
/// <summary>
/// Closes all «keep alive» connections for all database instanced.
/// </summary>
public void CloseSharedConnection()
{
if (connection != null)
{
connection.Close();
connection.Dispose();
connection = null;
}
}
#endregion
}