Информационно-аналитическая система складского помещения
Таблица данных имеет 7 столбцов данных: Название, номер, количество, цена, общая цена, дата поступления и поставщик. Таблица спрограммирована так, что колонка «номер» индивидуальна для каждого наименования товара. Именно поэтому спрограммировал такую полезную программу, как «Склад». «Склад» представляет собой учетно-аналитическую систему, которая ведет учет всей продукции, ее количество и другую… Читать ещё >
Информационно-аналитическая система складского помещения (реферат, курсовая, диплом, контрольная)
Курсовая работа Информационно-аналитическая система складского помещения Содержание Введение
1. Проектирование информационно-логической модели
1.1 Задание на курсовую работу
1.2 Описание таблиц и полей данных
1.3 Организация связей между данными
2. Проектирование и разработка алгоритмов
2.1 Начало работы с программой
2.2 Алгоритмы добавления данных
2.3 Алгоритмы изменения данных
2.4 Алгоритмы удаления данных
2.5 Алгоритмы сортировки данных
2.6 Алгоритмы поиска данных
3. Проектирование пользовательского интерфейса
3.1 Главное меню программы
3.2 Основные формы программы
3.3 Этапы загрузки данных
3.4 Справочная система Заключение Список используемой литературы Введение В современном мире все большее значение принимает использование компьютеров. Компьютеры позволяют увеличивать возможности предприятий в разы, что не может не заинтересовать. В такой сфере деятельности, как логистика, этот аспект принимает решающее значение.
Именно поэтому спрограммировал такую полезную программу, как «Склад». «Склад» представляет собой учетно-аналитическую систему, которая ведет учет всей продукции, ее количество и другую информацию о товарах.
Удобный интерфейс и возможность быстрой работы с товарами заметно ускорит процесс обработки информации и соответственно скорость работы.
Сама программа может вмещать до 32 000 наименований товаров и полностью отвечает потребностям складских помещений.
Задачу такого типа, как группировка данных склада и их систематизация, наилучшим образом возможно решить с помощью программирования по следующим причинам:
1. На складе, как правило, имеет место систематический приход и уход товаров.
2. Все данные о товарах имеют общие черты и легко объединяются в группы, а, следовательно, и в базу данных.
3. Все операции с товарами имеют одинаковую последовательность и могут быть заключены в алгоритм.
Исходя из всего вышесказанного я делаю вывод, что именно программирование этой системы — есть наилучшее решение из сложившейся задачи.
Для программирования поставленной задачи я воспользовался языком программирования Visual basic for application.
Он отвечает всем требованиям, удобен в работе, а главное, VBA интегрирован с программой Excel и делает акцент на работу с базами данных, что и нужно для решения поставленной задачи.
1. Проектирование информационно-логической модели
1.1 Задание на курсовую работу Анализ учета складского помещения.
1.2 Описание таблиц и полей данных Рис 1.
Таблица данных имеет 7 столбцов данных: Название, номер, количество, цена, общая цена, дата поступления и поставщик. Таблица спрограммирована так, что колонка «номер» индивидуальна для каждого наименования товара.
Название колонки | Тип данных | |
Название | variant | |
номер | variant | |
количество | integer | |
цена | double | |
общая цена | double | |
дата поступления | date | |
поставщик | variant | |
В таблице указанны типы данных для всех колонок. Колонка «общая цена» формируется путем умножения значения колонки «количество» на значение колонки «цена» .
Рис. 2.
Также имеется вторая производная таблица с аналогичным набором колонок и типами данных, которая составляется из выбранных строк 1й таблицы и служит для возможности операций с данными и вывода последних на бланк печати.
1.3 Организация связей между данными Эти таблицы связанны между собой по следующей схеме:
Таблица 1 | Таблица 2 | ||
Поле 1 | Поле 1 | ||
Поле 2 | Поле 2 | ||
Поле 3 | Поле 3 | ||
Поле 4 | Поле 4 | ||
Поле 5 | Поле 5 | ||
Поле 6 | Поле 6 | ||
Поле 7 | Поле 7 | ||
2. Проектирование и разработка алгоритмов
2.1 Начало работы с программой Рис. 3.
При назатии на первые 4 кнопки формы «Главная страница» отрываются одноименные пользовательские формы. Пятая кнопка приводит к выходу из программы.
Условное обозначение | Название кнопки в конструкции VBA | |
Cmb_togo_UF2 | ||
Cmb_togo_UF4 | ||
Cmb_togo_UF5 | ||
Cmb_togo_UF8 | ||
Cmb_End | ||
Кнопка «Имеющиеся товары» открывает пользовательскую форму" Имеющиеся товары". Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_togo_UF2_Click ()
UF1.Hide 'скрыть активное окно
UF2.Show 'показать 4-е окно
End Sub.
Кнопка «Продать товары» открывает пользовательскую форму" Продать товары". Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_togo_UF4_Click ()
UF1.Hide 'скрыть активное окно
UF4.Show 'показать 4-е окно
End Sub
Кнопка «О программе» открывает пользовательскую форму" О программе". Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_togo_UF5_Click ()
UF1.Hide 'скрыть активное окно
UF5.Show 'показать 5-е окно
End Sub
Кнопка «Справка» открывает пользовательскую форму" Справка". Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_togo_UF8_Click ()
UF1.Hide 'скрыть активное окно
UF8.Show 'показать 8-е окно
End Sub
Кнопка «Выход» заканчивает работу программы и выходит из нее. Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_End_Click ()
End
End Sub
При включении главной формы происходит ее операция инициализации, в процессе которой таблице 1 задается цвет шапки, и операция активации, в процессе чего активируется 1я таблица и сортируется по 1му столбцу. Алгоритм данных операций в конструкции VBA соответственно:
(Для инициализации)
Private Sub UserForm_Initialize ()
Sheets («Имеющиеся товары»).Range (Cells (1, 1), Cells (1, 7)).Select
With Selection. Interior
Pattern = xlGray16
PatternColorIndex = xlAutomatic
Color = 49 407
TintAndShade = 0
PatternTintAndShade = 0
End With
End Sub
(Для активации)
Private Sub UserForm_Activate ()
'включаем функцию сортировки перед сменой формы
Sheets («Имеющиеся товары»).Activate
Dim i As Byte
Dim shR As Variant
Set shR = ThisWorkbook. Worksheets («Имеющиеся товары»)
shR.Range («A1»).Activate 'шапка таблицы
i = 32 000
Dim r As Range 'диапазон ячеек таблицы с шапкой
Set r = Range (shR.Cells (1, 1), shR. Cells (i, 7))
r.Sort key1:=r.Cells (2, 1), key2:=r.Cells (2, 2), key3:=r.Cells (2, 3), Header:=xlYes
End Sub
2.2 Алгоритмы добавления данных Рис. 4.
Кнопка «Добавить» формы «Имеющиеся товары» переходит к пользовательскому окну «ввод данных». Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_Add_Items_Click ()
UF2.Hide
UF6.Show
End Sub
Форма содержит элемент Listbox (I_tovar), которая при помощи метода «Activate» загружается данными таблицы 1. Алгоритм в конструкции VBA:
Private Sub UserForm_Activate ()
Лист1.Activate
Dim i As Integer, n As Byte
I_tovar.MultiSelect = fmMultiSelectExtended
With I_tovar
ColumnCount = 7 'количество колонок
ColumnWidths = «130,80,80,80,80,90,80» 'ширина столбцов
Clear
For i = 2 To 32 000
If Cells (i + 1, 1) = «» Then
AddItem Cells (i, 1)
List (I_tovar.ListCount — 1, 1) = Cells (i, 2)
List (I_tovar.ListCount — 1, 2) = Cells (i, 3)
List (I_tovar.ListCount — 1, 3) = Cells (i, 4)
List (I_tovar.ListCount — 1, 4) = Cells (i, 5)
List (I_tovar.ListCount — 1, 5) = Cells (i, 6)
List (I_tovar.ListCount — 1, 6) = Cells (i, 7)
Exit Sub
Else
AddItem Cells (i, 1)
List (I_tovar.ListCount — 1, 1) = Cells (i, 2)
List (I_tovar.ListCount — 1, 2) = Cells (i, 3)
List (I_tovar.ListCount — 1, 3) = Cells (i, 4)
List (I_tovar.ListCount — 1, 4) = Cells (i, 5)
List (I_tovar.ListCount — 1, 5) = Cells (i, 6)
List (I_tovar.ListCount — 1, 6) = Cells (i, 7)
End If
Next
End With
End Sub
Кнопка «Печать» выводит все данные, находящиеся в LISTBOXе (I_tovar) пользовательского окна «Имеющиеся товары» на печать. Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_Print_Click ()
'вывод на печать
Sheets («Лист2»).PrintOut
End Sub
Кнопка «Назад» выходит на предыдущую пользовательскую форму. Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_Nazad_Click ()
UF2.Hide
UF1.Show
End Sub
Кнопка «Выход» выходит из программы. Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_End_Click ()
End
End Sub
Рис. 5.
Форма «Ввод данных» (рис. 5) имеет 6 текстовых окон для ввода данных о товаре, после заполнения которых необходимо нажать кнопку «Добавить» для сохранения данных.
Алгоритм работы кнопки «Добавить» в конструкции VBA:
Private Sub Cmb_Add_Click ()
Dim n1 As Variant, n2 As Variant, n3 As Integer, n4 As Double, n5 As Date, n6 As Variant
Dim i As Integer, n As Byte, j As Integer
With Лист1
If TextBox1. Value = Empty Or TextBox2. Value = Empty Or TextBox3. Value = Empty Or TextBox4. Value = Empty Or TextBox5. Value = Empty Or TextBox6. Value = Empty Then
Call MsgBox («не все поля заполнены», vbInformation) 'выход окна оповещения
Exit Sub 'если не все поля заполнены, то досрочный выход из события
End If
' проверка на имеющийся номер
For j = 1 To UsedRange.Rows.Count
If TextBox1. Text = Cells (j, 2) Then
MsgBox («номер уже используется»)
Exit Sub
End If
Next
n1 = TextBox1. Text
n2 = TextBox2. Text
n3 = TextBox3. Text
n4 = TextBox4. Text
n5 = TextBox5. Value
n6 = TextBox6. Text
'если ячека по циклу свободна, то вбиваем в строку и выходим из события
'иначе цикл увеличивает значение
For i = 2 To 32 000
If Лист1. Cells (i, 1) = «» Then
Cells (i, 1) = TextBox1. Value
Cells (i, 2) = TextBox2. Value
Cells (i, 3) = TextBox3. Value
Cells (i, 4) = TextBox4. Value
Cells (i, 6) = TextBox5. Value
Cells (i, 7) = TextBox6. Value
Cells (i, 5) = Cells (i, 3) * Cells (i, 4)
Exit Sub
Else
End If
Next
End With
End Sub
Он содержит в себе проверку на индивидуальность номера, а также проверяет поля на наличие в них символов. Если хотя бы одно из них будет пустым, выходит окно оповещения, и событие прекращается. Для заполнения полей необходимо отметить одну или несколько строк в пользовательском окне «Имеющиеся товары». После обработки данных они формируются в строку и добавляются в первую пустую строку таблицы1.
Текстовые поля «количество» и «цена» имеют ограничения на ввод данных, т. е. в них необходимо и возможно вводить только цифровые значения.
Алгоритм в конструкции VBA:
Private Sub TextBox3_KeyDown (ByVal KeyCode As MSForms. ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyV And Shift = 2 Then
KeyCode = 0
End If
End Sub
Private Sub TextBox3_KeyPress (ByVal KeyAscii As MSForms. ReturnInteger)
If InStr («123 456 789», ChrW (KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
Private Sub TextBox4_KeyDown (ByVal KeyCode As MSForms. ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyV And Shift = 2 Then
KeyCode = 0
End If
End Sub
Private Sub TextBox4_KeyPress (ByVal KeyAscii As MSForms. ReturnInteger)
If InStr («123 456 789», ChrW (KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
Текстовое поле «Дата» всегда показывает дату момента добавления груза и недоступно для изменения. Алгоритм в конструкции VBA:
Private Sub UserForm_Initialize ()
TextBox5.Text = Date
TextBox5.Enabled = False
End Sub
При активации формы все текстовые поля принимают пустые значения. Алгоритм в конструкции VBA:
Private Sub UserForm_Activate ()
'Очистка полей перед активацией формы
TextBox1.Value = «»
TextBox2.Value = «»
TextBox3.Value = «»
TextBox4.Value = «»
TextBox6.Value = «»
End Sub
Кнопка «Назад» выходит на предыдущую пользовательскую форму, перед этим сортируя таблицу1, в последствии чего изменяется и элемент Listbox (I_tovar) формы «Имеющиеся товары». Алгоритм в конструкции VBA:
Private Sub Cmb_Nazad_Click ()
'включаем функцию сортировки перед сменой формы
Dim i As Integer
Dim shR As Variant
Set shR = ThisWorkbook. Worksheets («Имеющиеся товары»)
shR.Range («A1»).Activate 'шапка таблицы
i = 32 000
Dim r As Range 'диапазон ячеек таблицы с шапкой
Set r = Range (shR.Cells (1, 1), shR. Cells (i, 7))
r.Sort key1:=r.Cells (2, 1), key2:=r.Cells (2, 2), key3:=r.Cells (2, 3), Header:=xlYes
UF6.Hide
UF2.Show
End Sub
Кнопка «Выход» приводит к выходу из программы. Алгоритм в конструкции VBA:
Private Sub Cmb_End_Click ()
End
End Sub
2.3 Алгоритмы изменения данных Рис. 6.
Пользовательская форма «Продать товары» Имеет объект ListBox1, аналогичный Listbox (I_tovar) для синхронизации данных, а также три кнопки:
" Добавить к продаже", «назад» и «Выход» .
ListBox1 заполняется методом «Activate» с таблицы1. Алгоритм в конструкции VBA:
Private Sub UserForm_Activate ()
Лист1.Activate
Dim i As Integer
ListBox1.Font.Size = 12
ListBox1.MultiSelect = fmMultiSelectMulti
With ListBox1
ColumnCount = 7 'количество колонок
ColumnWidths = «130,80,80,80,80,90,80» 'ширина столбцов
Clear
For i = 2 To 32 000
If Cells (i + 1, 1) = «» Then
AddItem Cells (i, 1)
List (ListBox1.ListCount — 1, 1) = Cells (i, 2)
List (ListBox1.ListCount — 1, 2) = Cells (i, 3)
List (ListBox1.ListCount — 1, 3) = Cells (i, 4)
List (ListBox1.ListCount — 1, 4) = Cells (i, 5)
List (ListBox1.ListCount — 1, 5) = Cells (i, 6)
List (ListBox1.ListCount — 1, 6) = Cells (i, 7)
Exit Sub
Else
AddItem Cells (i, 1)
List (ListBox1.ListCount — 1, 1) = Cells (i, 2)
List (ListBox1.ListCount — 1, 2) = Cells (i, 3)
List (ListBox1.ListCount — 1, 3) = Cells (i, 4)
List (ListBox1.ListCount — 1, 4) = Cells (i, 5)
List (ListBox1.ListCount — 1, 5) = Cells (i, 6)
List (ListBox1.ListCount — 1, 6) = Cells (i, 7)
End If
Next
End With
End Sub
Кнопка «Назад» выходит на предыдущую пользовательскую форму. Алгоритм работы кнопки «Назад» в конструкции VBA:
Private Sub Cmb_Nazad_Click ()
UF4.Hide
UF1.Show
End Sub
Кнопка «Выход» выходит на предыдущую пользовательскую форму. Алгоритм работы кнопки «Выход» в конструкции VBA:
Private Sub Cmb_End_Click ()
End
End Sub
Кнопка «Добавить к продаже» копирует выделенные в ListBox1 строки и добавляет их в новую таблицу 2, после чего переходит к пользовательскому окну «Указать количество» .
Private Sub Cmb_Add_Items_Click ()
Лист2.Activate
Лист2.Range (Cells (2, 1), Cells (32 000, 7)).Select
Selection.ClearContents
'создаем новый список из данной таблицы
Dim i As Integer, r As Integer, j As Integer
r = 2 ' начало по строкам
For i = 0 To Me. ListBox1.ListCount — 1
If Me. ListBox1.Selected (i) Then
For j = 0 To Me. ListBox1.ColumnCount — 1
Sheets («Лист2»).Cells (r, j + 1) = Me. ListBox1. List (i, j)
Next
r = r + 1
End If
Next
UF4.Hide
UF3.Show
End Sub
Рис. 7.
Пользовательское окно «Указать количество» Имеет 7 пассивных текстовых полей, которые нельзя изменять, и одно активное, в котором необходимо указывать количество товаров, необходимое для продажи. Также оно имеет 3 кнопки:
" Далее", «Назад» и «Выход» .
Методом «Activate» форма заполняет пассивные поля.. Алгоритм в конструкции VBA:
Private Sub UserForm_Activate ()
'задаем значение i и вписываем в поля начальную строку для доступа данных к кнопке CommandButton1
Лист2.Activate
i = 2
With UF3
If Sheets («Лист2»).Cells (2, 1) <> «» Then
TextBox1.Text = Sheets («Лист2»).Cells (2, 1)
TextBox2.Text = Sheets («Лист2»).Cells (2, 2)
TextBox3.Text = Sheets («Лист2»).Cells (2, 3)
TextBox5.Text = Sheets («Лист2»).Cells (2, 4)
TextBox6.Text = Sheets («Лист2»).Cells (2, 5)
TextBox7.Text = Sheets («Лист2»).Cells (2, 6)
TextBox8.Text = Sheets («Лист2»).Cells (2, 7)
Else: MsgBox («нет данных»)
UF3.Hide
UF4.Show
Exit Sub
End If
End With
End Sub
Также методом «Initialize» пассивные текстовые поля поля блокируются для ввода, а так же активному текстовому полю задается нулевое значение. Алгоритм в конструкции VBA:
TextBox4.Value = 0
'делаем невозможным изменение полей
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox3.Enabled = False
TextBox5.Enabled = False
TextBox6.Enabled = False
TextBox7.Enabled = False
TextBox8.Enabled = False
Кнопкой «Далее» указанное для продажи количество товаров вычитаетя из общего количества имеющихся товаров, и результат отражается в изначальной таблице1, а также последним нажатием открывается аользовательская форма «Бланк печати товаров, готовых к продаже», в которую загружаются данные о продоваемых товарах. Алгоритм данной кнопки в конструкции VBA:
Private Sub Cmb_Next_Click ()
If Cells (i + 1, 1) <> «» Then
If TextBox4 = Empty Or Val (TextBox4.Value) > Val (TextBox3.Value) Then
MsgBox («не все поля заполнены или количество больше имеющегося»)
Exit Sub
Else
K = 2
While Sheets («Имеющиеся товары»).Cells (K, 1).Text <> «»
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = TextBox2. Text Then Sheets («Имеющиеся товары»).Cells (K, 3) = Sheets («Имеющиеся товары»).Cells (K, 3) — TextBox4. Value
K = K + 1
Wend
'Sheets («Имеющиеся товары»).Cells (2, 3) = Sheets («Имеющиеся товары»).Cells (2, 3) — TextBox4. Value
'если последующая ячейка не равна нулю, заполняем строку и увеличиваем на 1 счетчик
'если нет, заполняем строку и открываем форму Userform7
Sheets («Лист2»).Cells (i, 3) = TextBox4. Value
If Sheets («Лист2»).Cells (i, 1) <> «» Then
UF3.TextBox1.Text = Sheets («Лист2»).Cells (i + 1, 1)
UF3.TextBox2.Text = Sheets («Лист2»).Cells (i + 1, 2)
UF3.TextBox3.Text = Sheets («Лист2»).Cells (i + 1, 3)
UF3.TextBox5.Text = Sheets («Лист2»).Cells (i + 1, 4)
UF3.TextBox6.Text = Sheets («Лист2»).Cells (i + 1, 5)
UF3.TextBox7.Text = Sheets («Лист2»).Cells (i + 1, 6)
UF3.TextBox8.Text = Sheets («Лист2»).Cells (i + 1, 7)
End If
End If
i = i + 1
K = 1
Else
If TextBox4 = Empty Or Val (TextBox4.Value) > Val (TextBox3.Value) Then
MsgBox («не все поля заполнены или количество больше имеющегося»)
Exit Sub
Else
K = 2
While Sheets («Имеющиеся товары»).Cells (K, 1).Text <> «»
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = TextBox2. Text Then Sheets («Имеющиеся товары»).Cells (K, 3) = Sheets («Имеющиеся товары»).Cells (K, 3) — TextBox4. Value
K = K + 1
Wend
Sheets («Лист2»).Cells (i, 3) = TextBox4. Value
If Sheets («Лист2»).Cells (i, 1) <> «» Then
UF3.TextBox1.Text = Sheets («Лист2»).Cells (i + 1, 1)
UF3.TextBox2.Text = Sheets («Лист2»).Cells (i + 1, 2)
UF3.TextBox3.Text = Sheets («Лист2»).Cells (i + 1, 3)
UF3.TextBox5.Text = Sheets («Лист2»).Cells (i + 1, 4)
UF3.TextBox6.Text = Sheets («Лист2»).Cells (i + 1, 5)
UF3.TextBox7.Text = Sheets («Лист2»).Cells (i + 1, 6)
UF3.TextBox8.Text = Sheets («Лист2»).Cells (i + 1, 7)
End If
End If
UF3.Hide
UF7.Show
End If
End Sub
Также текстовое поле Textbox4 имеет ограничение на ввод и может принимать только числовые значения. Алгоритм в конструкции VBA:
Private Sub TextBox4_KeyDown (ByVal KeyCode As MSForms. ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyV And Shift = 2 Then
KeyCode = 0
End If
End Sub
Private Sub TextBox4_KeyPress (ByVal KeyAscii As MSForms. ReturnInteger)
If InStr («123 456 789», ChrW (KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
Кнопка «Назад» выходит на пользовательскую форму «Продать товары» .
Алгоритм данной кнопки в конструкции VBA:
Private Sub Cmb_Nazad_Click ()
UF3.Hide
UF4.Show
End Sub
Кнопка «Выход» выходит из программы. Алгоритм данной кнопки в конструкции VBA:
Private Sub Cmb_End_Click ()
End
End Sub
Рис. 8.
Пользовательская форма «Бланк печати товаров, готовых к продаже» имеет объект Listbox1, который загружает список продаваемых товаров с таблицы2, а так же 3 кнопки: «Печать», «Назад» и «Выход» .
Listbox1 загружается методом «Activate» данными с таблицы 2.
Алгоритм в конструкции VBA:
Private Sub UserForm_Activate ()
Лист2.Activate
Dim i As Integer
ListBox1.MultiSelect = fmMultiSelectExtended
With ListBox1
ColumnCount = 7 'количество колонок
ColumnWidths = «130,80,80,80,80,90,80» 'ширина столбцов
Clear
For i = 2 To 32 000
If Cells (i + 1, 1) = «» Then
AddItem Sheets (2).Cells (i, 1)
List (ListBox1.ListCount — 1, 1) = Sheets (2).Cells (i, 2)
List (ListBox1.ListCount — 1, 2) = Sheets (2).Cells (i, 3)
List (ListBox1.ListCount — 1, 3) = Sheets (2).Cells (i, 4)
List (ListBox1.ListCount — 1, 4) = Sheets (2).Cells (i, 5)
List (ListBox1.ListCount — 1, 5) = Sheets (2).Cells (i, 6)
List (ListBox1.ListCount — 1, 6) = Sheets (2).Cells (i, 7)
Exit Sub
Else
AddItem Sheets (2).Cells (i, 1)
List (ListBox1.ListCount — 1, 1) = Sheets (2).Cells (i, 2)
List (ListBox1.ListCount — 1, 2) = Sheets (2).Cells (i, 3)
List (ListBox1.ListCount — 1, 3) = Sheets (2).Cells (i, 4)
List (ListBox1.ListCount — 1, 4) = Sheets (2).Cells (i, 5)
List (ListBox1.ListCount — 1, 5) = Sheets (2).Cells (i, 6)
List (ListBox1.ListCount — 1, 6) = Sheets (2).Cells (i, 7)
End If
Next
End With
End Sub
склад товар алгоритм интерфейс Кнопка «Печать» выводит готовые данные на печать. Алгоритм данной кнопки в конструкции VBA:
Private Sub Cmb_Print_Click ()
'вывод на печать
Sheets («Лист2»).PrintOut
End Sub
Кнопка «Выход» выходит из программы. Алгоритм данной кнопки в конструкции VBA:
Private Sub Cmb_End_Click ()
End
End Sub
Кнопка «Назад» выводит на предыдущее пользовательское окно. Алгоритм данной кнопки в конструкции VBA:
Private Sub Cmb_Nazad_Click ()
UF7.Hide
UF3.Show
End Sub
Рис. 9.
Пользовательская форма «Имеющиеся товары» имеет функцию изменения строки.
Алгоритм данной кнопки в конструкции VBA:
Private Sub CommandButton8_Click ()
Лист3.Activate
Лист3.Range (Cells (2, 1), Cells (3, 7)).Select
Selection.ClearContents
'создаем новый список из данной таблицы
Dim i As Integer, r As Integer, j As Integer
r = 2 ' начало по строкам
For i = 0 To Me. I_tovar.ListCount — 1
If Me. I_tovar.Selected (i) Then
For j = 0 To Me. I_tovar.ColumnCount — 1
Sheets («Лист3»).Cells (r, j + 1) = Me. I_tovar.List (i, j)
Next
r = r + 1
End If
Next
UF9.Show
End Sub
Рис. 10.
На этом этапе вбиваются новые данные, причем 3 текстовых поле скрыты для изменения или ограниченны им. Затем нажимается кнопка «Сохранить» и новые данные меняют старые.
Алгоритм данной кнопки в конструкции VBA:
Private Sub CommandButton1_Click ()
Dim n1 As Variant, n2 As Variant, n3 As Variant, n4 As Variant, n5 As Date, n6 As Variant
Dim i As Integer, n As Byte, j As Integer
Dim K As Integer
If TextBox1. Text = Empty Or TextBox2. Text = Empty Or TextBox3. Text = Empty Or TextBox4. Text = Empty Or TextBox5. Text = Empty Or TextBox6. Text = Empty Then
Call MsgBox («не все поля заполнены. Вы не выбрали изменяемую строку на предыдущем этапе! «, vbInformation) 'выход окна оповещения
Exit Sub 'если не все поля заполнены, то досрочный выход из события
End If
TextBox5.Value = TextBox3. Value * TextBox4. Value
Worksheets («Имеющиеся товары»).Activate
Sheets («Лист3»).Cells (3, 1) = TextBox1. Text
Sheets («Лист3»).Cells (3, 2) = TextBox2. Text
Sheets («Лист3»).Cells (3, 3) = TextBox3. Text
Sheets («Лист3»).Cells (3, 4) = TextBox4. Text
Sheets («Лист3»).Cells (3, 5) = TextBox5. Text
Sheets («Лист3»).Cells (3, 7) = TextBox6. Text
Sheets («Лист3»).Cells (3, 6) = TextBox7. Text
K = 2
While Worksheets («Имеющиеся товары»).Cells (K, 1).Text <> «»
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 1).Value = Sheets («Лист3»).Cells (3, 1).Value
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 2).Value = Sheets («Лист3»).Cells (3, 2).Value
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 3).Value = Sheets («Лист3»).Cells (3, 3).Value
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 4).Value = Sheets («Лист3»).Cells (3, 4).Value
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 5).Value = Sheets («Лист3»).Cells (3, 5).Value
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 6).Value = Sheets («Лист3»).Cells (3, 6).Value
If Sheets («Имеющиеся товары»).Cells (K, 2).Text = Sheets («Лист3»).Cells (2, 2).Text Then Sheets («Имеющиеся товары»).Cells (K, 7).Value = Sheets («Лист3»).Cells (3, 7).Value
K = K + 1
Wend
UF9.Hide
UF2.Hide
UF8.Show
End Sub
Рис. 11.
Затем появляется окно «Окно сообщений», которое не несет на себе никаких алгоритмов для пользователя, а необходимо как промежуточная форма между загрузкой и выгрузкой основных форм.
Алгоритм данной кнопки в конструкции VBA:
Private Sub UserForm_Activate ()
UF8.Hide
UF2.Show
End Sub
2.4 Алгоритмы удаления данных Кнопка «удалить строку» (Рис. 4.) удаляет строку из Listbox (I_tovar). Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_Delete_item_Click ()
Dim i As Integer, r As Integer, j As Integer, a As Integer, b As Range
Dim imya As Integer, shR As Variant
Sheets («Имеющиеся товары»).Activate
'нахождение выденной строки
r = 32 001 ' начало по строкам
For i = 0 To Me. I_tovar.ListCount — 1
If Me. I_tovar.Selected (i) Then
For j = 0 To Me. I_tovar.ColumnCount — 1
Sheets («Имеющиеся товары»).Cells (r, j + 1) = Me. I_tovar.List (i, j)
Next
r = r + 1
End If
Next
'Удаление строки
For imya = 1 To 32 000
If Cells (32 001, 1) = Cells (imya, 1) Then
Sheets («Имеющиеся товары»).Range (Cells (imya, 1), Cells (imya, 7)).Select
Selection.ClearContents
Call MsgBox («строка успешно удалена.», vbInformation, «Окно сообщений»)
Exit Sub
End If
Next
'сортируем измененную БД
Set shR = ThisWorkbook. Worksheets («Имеющиеся товары»)
shR.Range («A1»).Activate 'шапка таблицы
a = 32 000
Set b = Range (shR.Cells (1, 1), shR. Cells (a, 7))
b.Sort key1:=b.Cells (2, 1), key2:=b.Cells (2, 2), key3:=b.Cells (2, 3), Header:=xlYes
End Sub
Кнопка «Удалить все» (Рис4.)удаляет все данные с Listbox (I_tovar) и делает его пустым. Алгоритм работы данной кнопки в конструкции VBA:
Private Sub Cmb_Clear_Click ()
Dim i As Range
Dim a As Byte
a = MsgBox («БД будет безвозвратно удалена. Вы уверенны?», vbYesNo, «Окно сообщений»)
If a = 6 Then
Sheets («Имеющиеся товары»).Activate
Set i = Range (Cells (2, 1), Cells (32 000, 7))
i.Clear
Call MsgBox («БД успешно удалена.», vbInformation, «Окно сообщений»)
Else
End If
End Sub
2.5 Алгоритмы сортировки данных Рис. 12.
В пользовательской форме «Имеющиеся товары» возможны сортировка по 2 м значениям: по названию и по цене. Они скрыты в лейблах с соответствующими названиями и обозначены другим цветом. Кроме того при наведении на них курсора появляется опознавательная надпись.
Алгоритм работы данных лейблов в конструкции VBA соответственно:
Private Sub Label2_Click ()
'включаем функцию сортировки перед сменой формы
Sheets («Имеющиеся товары»).Activate
Dim i As Byte
Dim shR As Variant
Set shR = ThisWorkbook. Worksheets («Имеющиеся товары»)
shR.Range («A1»).Activate 'шапка таблицы
i = 255
Dim r As Range 'диапазон ячеек таблицы с шапкой
Set r = Range (shR.Cells (1, 1), shR. Cells (i, 7))
r.Sort key1:=r.Cells (2, 1), Header:=xlYes
UF2.Hide
UF8.Show
End Sub
Private Sub Label2_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Label9.Visible = True
End Sub
И
Private Sub Label5_Click ()
'сортируем по цене
Sheets («Имеющиеся товары»).Activate
Dim i As Long
Dim shR As Variant
Set shR = ThisWorkbook. Worksheets («Имеющиеся товары»)
shR.Range («D1»).Activate 'шапка таблицы
i = 32 000
Dim r As Range 'диапазон ячеек таблицы с шапкой
Set r = Range (shR.Cells (1, 1), shR. Cells (i, 7))
r.Sort key1:=r.Cells (2, 4), Header:=xlYes
UF2.Hide
UF8.Show
End Sub
Private Sub Label5_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Label10.Visible = True
End Sub
2.6 Алгоритмы поиска данных Рис. 13.
В пользовательской форме «Имеющиеся товары» возможен поиск товара по названию.
Алгоритм работы данной кнопки в конструкции VBA:
Private Sub CommandButton9_Click ()
Dim iText$
Dim iAddress$
Dim iCount&
iText$ = TextBox1
If iText$ <> «» Then
With ThisWorkbook. Worksheets (1). A: G]
Dim iCell As Range
Set iCell = .Find (iText$,, xlValues, xlPart)
If Not iCell Is Nothing Then
iAddress$ = iCell. Address
I_tovar.Clear
Do
I_tovar.AddItem
I_tovar.List (iCount&, 0) = iCell (1, 1)
I_tovar.List (iCount&, 1) = iCell (1, 2)
I_tovar.List (iCount&, 2) = iCell (1, 3)
I_tovar.List (iCount&, 3) = iCell (1, 4)
I_tovar.List (iCount&, 4) = iCell (1, 5)
I_tovar.List (iCount&, 5) = iCell (1, 6)
I_tovar.List (iCount&, 6) = iCell (1, 7)
iCount& = iCount& + 1
Set iCell = .FindNext (iCell)
Loop While iAddress$ <> iCell. Address
End If
End With
Else
TextBox1.SetFocus
MsgBox «Необходим образец для поиска», , «»
End If
End Sub
3. Проектирование пользовательского интерфейса
3.1 Главное меню программы Рис. 14.
3.2 Основные формы программы Рис. 15.
Форма «Имеющиеся товары» представляет собой список всех товаров, имеющихся на складе.
Здесь можно добавлять новые товары, а так же редактировать уже имеющиеся с помощью их удаления выборочно, или полностью. Вдобавок можно вывести данные на печать.
Рис. 16.
Форма «Продать товары» представляет собой список всех товаров, имеющихся на складе. Однако здесь, в отличии от предыдущей формы, нельзя удалять и добавлять строки. Эта форма позволяет указать количество товаров, необходимое для продажи.
3.3 Этапы загрузку данных
3.4 Справочная система Рис. 18.
Заключение
" Склад" представляет собой учетно-аналитическую систему, которая ведет учет всей продукции, ее количество и другую информацию о товарах. Удобный интерфейс и возможность быстрой работы с товарами заметно ускорит процесс обработки информации и соответственно скорость работы.
Для программирования поставленной задачи я воспользовался языком программирования Visual basic for application. Он отвечает всем требованиям, удобен в работе, а главное, VBA интегрирован с программой Excel и делает акцент на работу с базами данных, что и нужно для решения поставленной задачи Список используемой литературы
1. Бойко В. В., Савинков В. М. Проектирование баз данных информационных систем. 2009 г.
2. Глушаков С. В., Ломотько Д. В. Базы данных: Учебный курс. 2010 г.
3. Карпова Т. С. Базы данных: модели, разработка, реализация. 2009 г.
4. Гофман В. Э., Хомоненко А. Д. Работа с базами данных. 2008 г.
5. Григорьев Ю. А., Ревунков Г. И. Банки данных: Учеб. Для вузов. 2011 г.
6. Крёнке Д. Теория и практика построения баз данных, 8-е изд. 2009 г.