Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Цыбульской и Хорошевой.docx
Скачиваний:
3
Добавлен:
09.09.2019
Размер:
4.48 Mб
Скачать

5 Описание программы

5.1 Общие сведения

Программа «Пандарен» разработана для быстрой и удобной работы сотрудников кондитерского предприятия, т.к. довольно много процессов автоматизировано. Программа была разработана с помощью Visual Basic for Application and Microsoft Office Access2007.

Программа решает следующие задачи:

  1. Ввод данных в базу данных: информация о контрагентах, продукции, ингредиентах, поставках, отгрузках, рецептах.

  2. Контроль введенной информации.

  3. Поиск ингредиента по любому из полей и переход на эту ячейку.

  4. Фильтрация Ингредиентов и Контрагентов по одному или нескольким столбцам.

  5. Поиск Ингредиентов разным столбцам

  6. Фильтрация Ингредиентов и Контрагентов по нескольким параметрам.

Данное программное приложение около ??? МБ.

5.2 Проектирование экранных форм для ввода данных

При запуске программы первым появляется окно заставки.

Рис. 5.1. Окно заставки

Заставка висит несколько секунд, после чего исчезает и появляется окно входа, в котором нужно ввести логин и пароль.

Рис. 5.2. Окно входа.

Если же нажать кнопку «Добавить», появится окно добавления нового пользователя.

Рис. 5.3. Окно добавления нового пользователя.

После того, как вы ввели пароль, логин и нажали «Вход», откроется Главное меню.

Рис. 5.4. Главное меню.

По кнопке «Поставки», или же из меню Производство – Поставки, откроется форма с поставками. Кнопка «Добавить» добавляет новую строку в таблицу, которую в свою очередь можно заполнить. «Удалить» - удаляет выбранную вами строку. «Сохранить», соответственно, сохраняет все внесенные изменения. Кнопка «Закрыть», как можно догадаться из названия, закрывает форму.

Рис 5.5. Окно Поставок.

«Отгрузки» в главном меню (или Производство – Отгрузки) открывает форму отгрузок.

Рис. 5.6. Окно Отгрузок.

Что бы открыть форму с планом производства, необходимо нажать «План производства» или Производство – План производства. Кнопка «добавить новую строку» разблокирует поля для ввода новой строки и сменит надпись на «Добавить в таблицу». После заполнения полей необходимо нажать «Добавить в таблицу», дабы строка появилась в таблице.

Рис. 5.7. Окно Плана производства.

Выбрав дату и нажав «Отправить на склад», пользователь сможет открыть форму, в которой подкорректирует количество продукции запланированного числа, на фактически произведенное и, при подтверждении, создаст новые записи на складе продукции. Кнопка «Склад продукции» позволит перейти к форме склада продукции.

Рис. 5.8. Окно проверки количества продукции.

Если же на форме плана производства нажать «Расчет ингредиентов», появится соответствующая форма. На ней можно выбрать продукцию, указать количество и по кнопке «Показать» программа рассчитает сколько и каких ингредиентов для этого необходимо.

Рис. 5.9. Окно Расчета ингредиентов.

На склад продукции можно попасть из главного меню, нажав «Склад продукции» или Склады – Склад продукции.

Рис. 5.10. Окно Склада продукции.

Аналогичным способом можно открыть форму склада ингредиентов.

Рис. 5.11. Окно Склада ингредиентов.

К списку ингредиентов можно выйти через Справочники – Ингредиенты или по кнопке «Ингредиенты». Кнопка «Фильтр» делает видимыми и не видимыми поля фильтрации и кнопки активации/отмены фильтра.

Рис. 5.12. Окно Справочника ингредиентов.

Выбрав строку и нажав «Редактировать», вы откроете форму, где сможете внести изменения в эту строку.

Рис. 5.13. Окно добавления ингредиентов.

Кнопка «Поиск» выведет окно поиска. В нем необходимо указать столбец, по которому будет проходить поиск, и значение. После нажатия кнопки «Поиск», искомая строка будет выделена на форме Ингредиенты. Так же на форме поиска есть дерево, которое разработчики внесли просто для того, что бы показать, что оно у них есть.

Рис. 5.14. Окно поиска ингредиентов.

Список продукции можно открыть через Справочники – Продукция или по кнопке «Продукция».

Рис. 5.15. Окно Справочника продукции.

Окно с рецептами так же можно открыть через Справочники и по нажатию соответствующей кнопки.

Рис. 5.16. Окно Рецептов.

Форма с Контрагентами, так же находится в Справочниках и имеет одноименную кнопку на главном меню.

Рис. 5.17. Окно Контрагентов.

Что бы открыть прайс-лист поставщиков, нужно нажать Справочники- Прайс-лист поставщиков или кнопку «Прайс-лист поставщиков».

Рис. 5.18. Окно Прайс-листа поставщиков.

5.3 Проектирование выходных и отчетных форм

Рис. 5.19. Окно обычного отчета.

Рис. 5.20. Окно отчета в Exel.

Рис. 5.21. Окно отчета в виде матрицы.

5.4 Уточнение функциональной структуры программной системы

В связи с перечислением функциональных требований и форм представлена структурная схема программы «Пандарен» для работы сотрудников на рисунке 5.22.

Рисунок 5.22 – Логическая схема работы программы для работников предприятия.

5.5 Проектирование и реализация программных модулей

Далее будут представлена характеристика созданных подпрограмм на примере формы для работы со справочником продукции (Form7) в таблице 5.1. и описание данных, используемых в модуле – таблица 5.2.

Таблица 5.1 — Характеристика созданных подпрограмм

наименование

тип подпрограммы

назначение

ПродукцияBindingNavigatorSaveItem_Click

событие

сохрание данных в бд

Form7_Load

событие

загрузка данных в таблицу и сортировка их по коду

PictureBox1_Click

событие

удаление выбранной стоки из таблицы и сохранение изменений в бд, сортировка изменившихся данных по коду; изменение вида "кнопки"

PictureBox1_MouseEnter

событие

изменение вида "кнопки"

PictureBox1_MouseLeave

событие

изменение вида "кнопки"

PictureBox2_Click

событие

разблокирует поля для добавления новой записи и автоматически заполняет поле "код продукции"/ добавляет новую строку в таблицу, очищает поля для ввода, блокирует их, сохраняет изменения в бд; изменение вида кнопки в зависимости от доступности полей

PictureBox2_MouseEnter

событие

изменение вида "кнопки"

PictureBox2_MouseLeave

событие

изменение вида "кнопки"

PictureBox3_Click

событие

закрывает форму; изменение вида "кнопки"

PictureBox3_MouseEnter

событие

изменение вида "кнопки"

PictureBox3_MouseLeave

событие

изменение вида "кнопки"

Таблица 5.2 — Описание данных, используемых в программе

имя переменной

физический смысл переменной

назначение переменной

ограничения

nconnect

подключение бд

вспомогательная переменная

 

ncom

содержит SQL-запрос

вспомогательная переменная

содержит SQL-запрос

res

показывает какая кнопка была нажата в окне сообщения, вызываемое функцией MsgBox

вспомогательная переменная

числовой тип

kk

представляет схему столбца в таблице System.Data.DataTable

вспомогательная переменная

DataColumn

curcel

значение КодаПродукции из выделенной строки

вспомогательная переменная

символьный тип

currow

представляет строку данных в System.Data.DataTable к которой относится выделенная ячейка

вспомогательная переменная

datarow

dset

создает новый экземпляр класса DataSet

вспомогательная переменная

DataSet

dadap

содержит SQL-запрос и подключение к бд

вспомогательная переменная

OleDbDataAdapter

sett

хранит строку подключения из файла конфигурации

вспомогательная переменная

ConnectionStringSettings

row

представляет строку данных в System.Data.DataTable к которой относится выделенная ячейка

вспомогательная переменная

DataRow

kol

количество записей в таблице

вспомогательная переменная

числовой тип

nomerpor

хранит следующий код продукции

вспомогательная переменная

числовой тип

datarow1

создает и хранит новую строку

вспомогательная переменная

DataRow

str3

текст запроса

вспомогательная переменная

символьный тип

Проектирование формы на примере Form7 «Продукция».

  1. Добавляем в код формы ссылки на пространство имен для работы с объектами ADO:

Imports System.Configuration

  1. Подключение БД к форме и задание переменной для работы с запросами:

Dim nconnect As New OleDb.OleDbConnection

Dim ncom As New OleDb.OleDbCommand

  1. Загрузка данных в таблицу:

Me.ПродукцияTableAdapter.Fill(Me.База_данных11DataSet.Продукция)

'Сортировка данных таблицы по столбцу Код продукции

Me.ПродукцияDataGridView.Sort(DataGridViewTextBoxColumn1, System.ComponentModel.ListSortDirection.Ascending)

  1. Сохранение изменений в бд:

'Сохранение изменений в базу данных

Me.Validate()

Me.ПродукцияBindingSource.EndEdit()

Me.TableAdapterManager.UpdateAll(Me.База_данных11DataSet)

  1. Изменение вида "кнопки" при нажатии на неё:

PictureBox1.Image = My.Resources.у3

  1. Удаление выбранной строки:

'Вывод сообщение на подтверждение удаления выбранной строки:

Dim res As MsgBoxResult

res = MsgBox("Вы уверены, что хотите удалить выбранную строку?", MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation, "Удаление продукции")

'Если было нажато Yes

If res = MsgBoxResult.Yes Then

'Задание имени массива первичных ключей

Dim kk(0) As DataColumn

'Задание в качестве первичного ключа столбца Код продукции

kk(0) = База_данных11DataSet.Tables("Продукция").Columns("КодП")

База_данных11DataSet.Tables("Продукция").PrimaryKey = kk

'Определение значения ячейки из строки, которая содержит выделенную ячейку и столбца с кодом продукции

Dim curcel As String = ПродукцияDataGridView.CurrentRow.Cells("DataGridViewTextBoxColumn1").Value.ToString

'Определение строки по содержимому ключевого столбца код продукции

Dim currow As DataRow = База_данных11DataSet.Tables("Продукция").Rows.Find(curcel)

'удаление строки, которая содержит выделенную ячейку

currow.Delete()

'Сохранение изменений в базу данных

Me.Validate()

Me.ПродукцияBindingSource.EndEdit()

Me.TableAdapterManager.UpdateAll(Me.База_данных11DataSet)

Me.ПродукцияDataGridView.Sort(DataGridViewTextBoxColumn1, System.ComponentModel.ListSortDirection.Ascending)

End If

  1. Разблокирует поля для добавления новой записи, автоматическое заполнение поля "код продукции":

If КодПTextBox.Enabled = False Then

'Если поле заблокировано =>

'кнопка меняется на "добавить запись в таблицу", разблокировать все поля

PictureBox2.Image = My.Resources.двт1

'Все поля становятся доступными

КодПTextBox.Enabled = True

КодПTextBox.ReadOnly = False

НаименованиеTextBox.Enabled = True

НаименованиеTextBox.ReadOnly = False

ВыходГрTextBox.Enabled = True

ВыходГрTextBox.ReadOnly = False

КалорийностьTextBox.Enabled = True

КалорийностьTextBox.ReadOnly = False

ОписаниеTextBox.Enabled = True

ОписаниеTextBox.ReadOnly = False

'Задается значение кода продукции для новой записи

'при этом выбирается первый свободный код продукции из тех, что уже есть в базе

Dim str3 As String

str3 = "Select КодП from продукция order by КодП asc"

Dim dset As New DataSet

Dim dadap As New OleDb.OleDbDataAdapter(str3, nconnect)

Dim sett As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("WindowsApplication1.My.MySettings.База_данных11ConnectionString")

Dim row As DataRow

Dim kol As Integer

Dim nomerpor As Integer

nconnect.ConnectionString = sett.ConnectionString

ncom.Connection = nconnect

ncom.CommandType = CommandType.Text

dadap.Fill(dset, "Продукция")

nomerpor = 2001

kol = dadap.Fill(dset)

'Если нет записи

If kol = 0 Then

КодПTextBox.Text = nomerpor

End If

'Если есть записи

If kol > 0 Then

For Each row In dset.Tables("Продукция").Rows

'Вывод кода ингредиенты из таблицы

For i = nomerpor To 2999

If row("КодП") = i Then

'Если идет поп порядку

nomerpor = nomerpor + 1

Exit For

End If

If row("КодП") <> i Then

'Если есть пропуск в нумерации

КодПTextBox.Text = i

nomerpor = nomerpor + 1

Exit For

End If

Next

'Если где то был пропуск, то прерываем цикл

If КодПTextBox.Text <> "" Then

Exit For

End If

Next row

'Если все значения кодов идут по порядку без пропусков

If КодПTextBox.Text = "" Then

КодПTextBox.Text = nomerpor

End If

End If

Else

'Нажали на кнопку - "добавить запись в таблицу"

  1. Добавление новой строки, в которую будут записываться данные из полей для ввода:

datarow1.Item(0) = КодПTextBox.Text

If НаименованиеTextBox.Text = "" Then

datarow1.Item(1) = ""

Else

datarow1.Item(1) = НаименованиеTextBox.Text

End If

If ВыходГрTextBox.Text = "" Then

datarow1.Item(2) = База_данных11DataSet.Продукция.Columns("ВыходГр").DefaultValue

Else

datarow1.Item(2) = ВыходГрTextBox.Text

End If

If КалорийностьTextBox.Text = "" Then

datarow1.Item(3) = База_данных11DataSet.Продукция.Columns("Калорийность").DefaultValue

Else

datarow1.Item(3) = КалорийностьTextBox.Text

End If

If ОписаниеTextBox.Text = "" Then

datarow1.Item(4) = ""

Else

datarow1.Item(4) = ОписаниеTextBox.Text

End If

'В таблицу добавляется новая заполненная данными строка

База_данных11DataSet.Tables("Продукция").Rows.Add(datarow1)

PictureBox2.Image = My.Resources.днс1

  1. Все поля для ввода очищаются и блокируются:

КодПTextBox.Text = ""

НаименованиеTextBox.Text = ""

ВыходГрTextBox.Text = ""

КалорийностьTextBox.Text = ""

ОписаниеTextBox.Text = ""

КодПTextBox.Enabled = False

КодПTextBox.ReadOnly = True

НаименованиеTextBox.Enabled = False

НаименованиеTextBox.ReadOnly = True

ВыходГрTextBox.Enabled = False

ВыходГрTextBox.ReadOnly = True

КалорийностьTextBox.Enabled = False

КалорийностьTextBox.ReadOnly = True

ОписаниеTextBox.Enabled = False

ОписаниеTextBox.ReadOnly = True

  1. Запись новой строки в БД:

Me.Validate()

Me.ПродукцияBindingSource.EndEdit()

Me.TableAdapterManager.UpdateAll(Me.База_данных11DataSet)

'Данные таблицы сортируются по значению кода продукции

Me.ПродукцияDataGridView.Sort(DataGridViewTextBoxColumn1, System.ComponentModel.ListSortDirection.Ascending)

  1. Изменение вида «кнопок»:

PictureBox3.Image = My.Resources.з3

  1. Закрытие формы:

Me.Close()

Полный код модуля находится в приложении А.

Схема алгоритма создания данного модуля представлена на рисунке 5.23

Рисунок 5.23 – Схема алгоритма создания модуля Form7