Информационно-аналитическая система складского помещения


Курсовая работа

Информационно-аналитическая система складского помещения

Содержание

Введение

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 Справочная система

Заключение

Список используемой литературы

Введение

В современном мире все большее значение принимает использование компьютеров. Компьютеры позволяют увеличивать возможности предприятий в разы, что не может не заинтересовать. В такой сфере деятельности, как логистика, этот аспект принимает решающее значение.

Именно поэтому спрограммировал такую полезную программу, как «Склад». «Склад» представляет собой учетно-аналитическую систему, которая ведет учет всей продукции, ее количество и другую информацию о товарах.

Удобный интерфейс и возможность быстрой работы с товарами заметно ускорит процесс обработки информации и соответственно скорость работы.

Сама программа может вмещать до 32000 наименований товаров и полностью отвечает потребностям складских помещений.

Задачу такого типа, как группировка данных склада и их систематизация, наилучшим образом возможно решить с помощью программирования по следующим причинам:

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

1

Cmb_togo_UF2

2

Cmb_togo_UF4

3

Cmb_togo_UF5

4

Cmb_togo_UF8

5

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 = 49407

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 = 32000

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 32000

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 32000

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(«0123456789», 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(«0123456789», 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 = 32000

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 32000

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(32000, 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(«0123456789», 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 32000

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 = 32001 ‘ начало по строкам

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 32000

If Cells(32001, 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 = 32000

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(32000, 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 = 32000

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 г.

Если вы думаете скопировать часть этой работы в свою, то имейте ввиду, что этим вы только снизите уникальность своей работы! Если вы хотите получить уникальную курсовую работу, то вам нужно либо написать её своими словами, либо заказать её написание опытному автору:
УЗНАТЬ СТОИМОСТЬ ИЛИ ЗАКАЗАТЬ »