- •Курсовая работа
- •Кемерово 2011г.
- •Задание на курсовую работу
- •Фамилия и.О.
- •Содержание
- •Введение
- •Современное состояние автоматизации рассматриваемой предметной области
- •2 Анализ условий предприятия
- •2.1. Организационная структура и цели функционирования
- •2.2 Состав бизнес-процессов
- •2.3 Описание бизнес-процессов
- •2.4 Объекты бизнес-процессов
- •2.5 Типовые бизнес-процессы, требующие автоматизации
- •3 Формирование требований
- •3.1 Состав требований
- •3.2 Определение состава сценариев, реализующих требования
- •3.3 Разработка содержания сценариев
- •3.4 Определение требований к пользовательскому интерфейсу
- •3.5 Требования к вычислительной технике
- •4 Последовательность этапов работы над программой
- •4.1 Постановка задачи
- •4.2 Порядок разработки программы
- •5 Описание программы
- •5.1 Общие сведения
- •Заключение
- •Список используемой литературы
- •Приложение а
5 Описание программы
5.1 Общие сведения
Программа «Пандарен» разработана для быстрой и удобной работы сотрудников кондитерского предприятия, т.к. довольно много процессов автоматизировано. Программа была разработана с помощью Visual Basic for Application and Microsoft Office Access2007.
Программа решает следующие задачи:
Ввод данных в базу данных: информация о контрагентах, продукции, ингредиентах, поставках, отгрузках, рецептах.
Контроль введенной информации.
Поиск ингредиента по любому из полей и переход на эту ячейку.
Фильтрация Ингредиентов и Контрагентов по одному или нескольким столбцам.
Поиск Ингредиентов разным столбцам
Фильтрация Ингредиентов и Контрагентов по нескольким параметрам.
Данное программное приложение около ??? МБ.
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 «Продукция».
Добавляем в код формы ссылки на пространство имен для работы с объектами ADO:
Imports System.Configuration
Подключение БД к форме и задание переменной для работы с запросами:
Dim nconnect As New OleDb.OleDbConnection
Dim ncom As New OleDb.OleDbCommand
Загрузка данных в таблицу:
Me.ПродукцияTableAdapter.Fill(Me.База_данных11DataSet.Продукция)
'Сортировка данных таблицы по столбцу Код продукции
Me.ПродукцияDataGridView.Sort(DataGridViewTextBoxColumn1, System.ComponentModel.ListSortDirection.Ascending)
Сохранение изменений в бд:
'Сохранение изменений в базу данных
Me.Validate()
Me.ПродукцияBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.База_данных11DataSet)
Изменение вида "кнопки" при нажатии на неё:
PictureBox1.Image = My.Resources.у3
Удаление выбранной строки:
'Вывод сообщение на подтверждение удаления выбранной строки:
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
Разблокирует поля для добавления новой записи, автоматическое заполнение поля "код продукции":
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
'Нажали на кнопку - "добавить запись в таблицу"
Добавление новой строки, в которую будут записываться данные из полей для ввода:
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
Все поля для ввода очищаются и блокируются:
КодП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
Запись новой строки в БД:
Me.Validate()
Me.ПродукцияBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.База_данных11DataSet)
'Данные таблицы сортируются по значению кода продукции
Me.ПродукцияDataGridView.Sort(DataGridViewTextBoxColumn1, System.ComponentModel.ListSortDirection.Ascending)
Изменение вида «кнопок»:
PictureBox3.Image = My.Resources.з3
Закрытие формы:
Me.Close()
Полный код модуля находится в приложении А.
Схема алгоритма создания данного модуля представлена на рисунке 5.23
Рисунок 5.23 – Схема алгоритма создания модуля Form7