Учебные материалы по математике | Разработка приложения на visual basic | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Разработка приложения на visual basic


Курсовое проектирование по информатике:

«Разработка приложения для обработки экономической информации в среде Microsoft Excel на языке Visual Basic for Applications».

Содержание.

Введение………………………………………………………………………….…3

Переменные проекта………….………………………………………………..4

Основной алгоритм проекта…………………………………………………5

Алгоритмы подпрограмм, тексты программ на языке Visual Basic.

Часть1………………………………………………………………………………………….……6

Задание2………………………………………………………………………………………….…..9

Задание3………………………………………………………………………………………….…12

Задание4……………………………………………………………………………………….……15

Часть2……………………………………………………………………………………….……16

Задание1………….………………………………………………………………………….……..17

Задание2……………………………………………………………………………………………20

Задание3……………………………………………………………………………………………21

Заключение………………………………………………………………………………………22

Введение.

Данный курсовой проект предназначен для развития навыков в области разработки программного обеспечения для обработки экономической информации с помощью средств Visual Basic for Applications. Курсовая работа должна отвечать следующим требованиям:

·  Правильное описание типов переменных, использующихся в работе, правильное задание локальных и глобальных переменных. Должен быть также разработан собственный тип пользователя.

·  Создание удобного пользовательского интерфейса.

·  Возможность работы в режиме диалога.

·  Обработка массива методами структурного программирования.

Приложение должно позволять оперировать с экономической информацией, содержащейся в электронной таблице Excel. Приложение должно представлять собой совокупность пользовательских форм и программ на языке Visual Basic. Интерфейс должен быть доступен и удобен для пользователя, должен сопровождаться комментариями.

В данной курсовой работе дана информация о расчете заработной платы работников предприятия: ФИО работников, пол, стаж, отдел, должность, оклад, надбавка, районный коэффициент. Необходимо произвести различные действия с этой информацией: рассчитать заработную плату каждого работника, сгруппировать информацию по отделам, упорядочить по окладу, ФИО и заработной плате, вывести необходимые сведения, построить диаграмму.

Проект состоит из трех пользовательских форм: одна выводит информацию о студенте, две другие соответствуют заданиям первой и второй части курсовой. Все программы содержатся в процедурах нажатия кнопок. Курсовая работа состоит из двух частей. Все задания сопровождаются текстами на языке Visual Basic, пояснительными комментариями, результатами работы программы. К первой все задания сопровождаются алгоритмами. Задания 1,2,3,4 части1 и задание3 части2 выполняются с помощью написанных на языке Visual Basic программ. Задания 1 и 2 части2 выполняются с помощью средств Excel. Сама курсовая работа разработана в системе Office2000, поэтому на некоторых старых версиях Office97 могут появляться ошибки. Курсовой проект размещен на диске А в файле «Курсовая_17». Диск А приложен к оформленной курсовой работе.

Переменные проекта

Первоначально есть информация о расчете заработной платы 20 работников предприятия 20 человек, которая находится в таблице Excel. Для работы с этими данными в проекте задается собственный тип пользователя dann, который состоит из значений следующего типа:

Type dann

fio As String * 20 – ФИО работников предприятия, строковое значение, длина максимум 20 символов.

Pol As String – пол работников, строковое значение.

stag As Single – стаж работников, тип Single.

otd As String – отдел, строковое значение.

dolg As String – должность, строковое значение.

okl As Integer – оклад, тип Integer, целое значение.

nadb As Integer – надбавка к окладу, тип Integer, целое значение.

rakoe As Single – районный коэффициент, тип Single.

kvid As Single – сумма к выдаче, тип Single.

End Type

Значения Fio, Pol, Stag, otd, dolg, okl, nadb, rakoe считываются из электронной таблицы Excel, значения kvid вычисляются в процессе работы программы.

Далее заданы следующие переменные, которые используются в проекте:

Public i, j, k, m As Integer – переменные i, j используются для работы в циклах, переменные m и k используются при выводе данных в электронную таблицу.

Public n As String – в переменную n заносится значение отдела при группировке информации по отделам.

Public info(21) As dann – массив типа dann, в нем содержатся данные о 20 работниках предприятия.

Public p As dann – переменная типа dann, используется при упорядочивании информации.

Все эти переменные являются глобальными, используются в нескольких программах и описываются как Public перед модулем1.

Основной алгоритм проекта

 

Комментарии:

Первоначально происходит считывание данных из электронной таблицы, заполняются 20 значений массива info. Затем вычисляются значения сумм к выдаче для каждого работника предприятия. Суммы к выдаче вычисляются путем складывания оклада работника, его надбавки и умножения полученной суммы на районный коэффициент. Полученные значения выводятся в электронную таблицу. После этого открываются пользовательские формы, на которых пользователь должен нажать какую-либо кнопку, т. е. открывается кнопочное меню и нажатие любой кнопки соответствует выбору определенного условия. При нажатии на определенные кнопки запускаются подпрограмма1 и подпрограмма2 (см. ниже) или же может открыться новое кнопочное меню, при нажатии на одну из кнопок которого запускается подпрограмма3, подпрограмма4, рисуется диаграмма или же завершается работа с проектом.

Алгоритмы подпрограмм, тексты программ на языке Visual Basic и инструкция пользователя.

При нажатии какой-либо кнопки запускается необходимая программа, которая содержится в процедуре нажатия кнопки.

Часть1.

Первоначально имеются сведения о 20 работниках предприятия, которые расположены на листе «Данные» электронной таблицы Excel.

Ф. И.О.

Пол

Стаж (лет)

Отдел

Должность

Оклад

Надбавка

Районный коэффициент

К выдаче

Буторин В. В.

м

5,5

Технический

Механик

2500

0

1

Федорцев А. Н.

м

2,9

Технический

Механик

2500

2000

1

Худяков С. К.

м

4

Транспортный

Водитель

2600

2000

1

Печенцева В. И.

ж

7,1

Технический

Техничка

1700

0

1

Курапов Н. И.

м

9,5

Обслуживания

Охранник

2600

2000

1,12

Иванов И. И

м

5

Технический

Техник

2400

1800

1,13

Степанов Д. В.

м

8

Планово-финансовый

Директор

9000

3000

1,7

Романов Д. И.

м

7

Обслуживания

Продавец

4000

2000

1,1

Афанасьева Т. А.

ж

10

Обслуживания

Секретарь

2900

0

1,01

Уфимцев А. Л.

м

2,1

Планово-финансовый

Гендиректор

12000

3000

1,7

Устинова Л. А.

ж

3

Планово-финансовый

Секретарь

2900

1700

1,07

Кузубов В. А.

м

6

Обслуживания

Юрист

4500

2300

1,14

Кирилов Н. А

м

8

Планово-финансовый

Менеджер

7000

2500

1,2

Метелкин Д. А.

м

4,5

Обслуживания

Психолог

5000

0

1,16

Соколова М. Н.

ж

6,5

Планово-финансовый

Бухгалтер

4000

1000

1,13

Савельев Н. И.

м

4

Обслуживания

Секретарь-референт

6000

2100

1,08

Постников П. А.

м

6

Обслуживания

Менеждер

8000

2500

1,2

Щербакова Т. И.

ж

3

Планово-финансовый

Бухгалтер

4000

0

1,13

Щеголев К. С.

м

11

Технический

Конструктор

4000

1000

1,05

Денисова Г. А.

ж

11

Технический

Техничка

1700

1500

1

На листе с данными имеется незаполненная колонка «К выдаче». Она будет заполнена в процессе работы программы. На листе размещена кнопка. При ее нажатии («Начать») вызывается модуль1, в котором содержится макрос Student. (Call Studen). Этот макрос предназначен для занесения данных с электронной таблицы в массив info.

Sub Student()

Worksheets(1).Activate

For i = 1 To 20

With info(i)

.fio = Worksheets(1).Cells(1 + i, 1)

.Pol = Worksheets(1).Cells(1 + i, 2)

.stag = Worksheets(1).Cells(1 + i, 3)

.otd = Worksheets(1).Cells(1 + i, 4)

.dolg = Worksheets(1).Cells(1 + i, 5)

.okl = Worksheets(1).Cells(1 + i, 6)

.nadb = Worksheets(1).Cells(i + 1, 7)

.rakoe = Worksheets(1).Cells(i + 1, 8)

End With

Next

studen. Show

End Sub

После занесения данных в массив info открывается форма с информацией о студенте (studen. show).

При нажатии на кнопку «Продолжить» открывается форма UserForm1 – «Часть1». При инициализации формы вычисляется значение сумм к выдаче для каждого работника предприятия (задание1 первой части), на листе1 заполняется колонка «К выдаче»:

Private Sub UserForm_Initialize()

For i = 1 To 20

With info(i)

.kvid = (.okl + .nadb) * .rakoe

Worksheets(1).Cells(i + 1, 9) = .kvid

End With

Next

End Sub

На форме расположено несколько кнопок. Пользователь должен нажать какую-либо из них.

Задание2.Часть1

Для группировки информации задается значение, с которым сравнивается значение отдела элемента массива info. Если оно совпадает, этот элемент массива выводится. Алгоритм группировки информации по отделу:

 

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

Private Sub CommandButton2_Click()

Worksheets(2).Activate

Range("A1:I48").Select

Selection. ClearContents

Range("A1").Select

m = 1

Cells(m, 1) = "По отделам"

For i = 1 To 9

Worksheets(2).Cells(m + 1, i) = Worksheets(1).Cells(1, i)

Next

n = "Планово-финансовый"

For i = 1 To 20

If info(i).otd = n Then

Worksheets(2).Cells(m + 3, 1) = info(i).fio

Worksheets(2).Cells(m + 3, 2) = info(i).Pol

Worksheets(2).Cells(m + 3, 3) = info(i).stag

Worksheets(2).Cells(m + 3, 4) = info(i).otd

Worksheets(2).Cells(m + 3, 5) = info(i).dolg

Worksheets(2).Cells(m + 3, 6) = info(i).okl

Worksheets(2).Cells(m + 3, 7) = info(i).nadb

Worksheets(2).Cells(m + 3, 8) = info(i).rakoe

Worksheets(2).Cells(m + 3, 9) = info(i).kvid

m = m + 1

End If

Next

m = m + 2

n = "Технический"

For i = 1 To 20

If info(i).otd = n Then

Worksheets(2).Cells(m + 2, 1) = info(i).fio

Worksheets(2).Cells(m + 2, 2) = info(i).Pol

Worksheets(2).Cells(m + 2, 3) = info(i).stag

Worksheets(2).Cells(m + 2, 4) = info(i).otd

Worksheets(2).Cells(m + 2, 5) = info(i).dolg

Worksheets(2).Cells(m + 2, 6) = info(i).okl

Worksheets(2).Cells(m + 2, 7) = info(i).nadb

Worksheets(2).Cells(m + 2, 8) = info(i).rakoe

Worksheets(2).Cells(m + 2, 9) = info(i).kvid

m = m + 1

End If

Next

m = m + 2

n = "Обслуживания"

For i = 1 To 20

If info(i).otd = n Then

Worksheets(2).Cells(m + 2, 1) = info(i).fio

Worksheets(2).Cells(m + 2, 2) = info(i).Pol

Worksheets(2).Cells(m + 2, 3) = info(i).stag

Worksheets(2).Cells(m + 2, 4) = info(i).otd

Worksheets(2).Cells(m + 2, 5) = info(i).dolg

Worksheets(2).Cells(m + 2, 6) = info(i).okl

Worksheets(2).Cells(m + 2, 7) = info(i).nadb

Worksheets(2).Cells(m + 2, 8) = info(i).rakoe

Worksheets(2).Cells(m + 2, 9) = info(i).kvid

m = m + 1

End If

Next

If CheckBox1.Value = True Then ‘задание 4

m = m + 2

Worksheets(2).Cells(m, 1) = "Упорядочивание по окладу по возрастанию"

For j = 1 To 9

Worksheets(2).Cells(m + 1, j) = Worksheets(1).Cells(1, j)

Next

For i = 2 To 20

For j = 20 To i Step -1

If info(j).okl < info(j — 1).okl Then

p = info(j — 1)

info(j — 1) = info(j)

info(j) = p

End If

Next j

Next i

For i = 1 To 20

Worksheets(2).Cells(m + 2, 1) = info(i).fio

Worksheets(2).Cells(m + 2, 2) = info(i).Pol

Worksheets(2).Cells(m + 2, 3) = info(i).stag

Worksheets(2).Cells(m + 2, 4) = info(i).otd

Worksheets(2).Cells(m + 2, 5) = info(i).dolg

Worksheets(2).Cells(m + 2, 6) = info(i).okl

Worksheets(2).Cells(m + 2, 7) = info(i).nadb

Worksheets(2).Cells(m + 2, 8) = info(i).rakoe

Worksheets(2).Cells(m + 2, 9) = info(i).kvid

m = m + 1

Next

CheckBox1.Value = False

Worksheets(2).Activate

End If

End Sub

Полученные результаты выводятся на лист2, ячейки которого предварительно очищаются при каждом нажатии кнопки «Начать».

Результат группировки следующий:

По отделам

Ф. И.О.

Пол

Стаж (лет)

Отдел

Должность

Оклад

Надбавка

Районный коэффициент

К выдаче

Степанов Д. В.

м

8,0

Планово-финансовый

Директор

9000

3000

1,70

20400

Уфимцев А. Л.

м

2,1

Планово-финансовый

Гендиректор

12000

3000

1,70

25500

Устинова Л. А.

ж

3,0

Планово-финансовый

Секретарь

2900

1700

1,07

4922

Кирилов Н. А

м

8,0

Планово-финансовый

Менеджер

7000

2500

1,20

11400

Соколова М. Н.

ж

6,5

Планово-финансовый

Бухгалтер

4000

1000

1,13

5650

Щербакова Т. И.

ж

3,0

Планово-финансовый

Бухгалтер

4000

0

1,13

4520

Буторин В. В.

м

5,5

Технический

Механик

2500

0

1,00

2500

Федорцев А. Н.

м

2,9

Технический

Механик

2500

2000

1,00

4500

Печенцева В. И.

ж

7,1

Технический

Техничка

1700

0

1,00

1700

Иванов И. И

м

5,0

Технический

Техник

2400

1800

1,13

4746

Щеголев К. С.

м

11,0

Технический

Конструктор

4000

1000

1,05

5250

Денисова Г. А.

ж

11,0

Технический

Техничка

1700

1500

1,00

3200

Курапов Н. И.

м

9,5

Обслуживания

Охранник

2600

2000

1,12

5152

Романов Д. И.

м

7,0

Обслуживания

Продавец

4000

2000

1,10

6600

Афанасьева Т. А.

ж

10,0

Обслуживания

Секретарь

2900

0

1,01

2929

Кузубов В. А.

м

6,0

Обслуживания

Юрист

4500

2300

1,14

7752

Метелкин Д. А.

м

4,5

Обслуживания

Психолог

5000

0

1,16

5800

Савельев Н. И.

м

4,0

Обслуживания

Секретарь-референт

6000

2100

1,08

8748

Постников П. А.

м

6,0

Обслуживания

Менеждер

8000

2500

1,20

12600

Задание3. Часть1.

В задании3 к части1 необходимо получить сведения о работниках с определенным стажем, имеющим надбавки к зарплате, т. е. предполагается, что величина стажа работника, по которой будет искаться информация о работниках среди тех, кто имеет надбавки к зарплате, должна определяться пользователем (в алгоритме – ввод n). Алгоритм программы следующий:

 

Для выполнения этого задания необходимо нажать кнопку «Запустить» на UserForm1. Запустится следующая программа:

Private Sub CommandButton4_Click()

Label2.Enabled = True ‘задание 3

ComboBox1.Enabled = True

ComboBox1.Value = Clear

Worksheets(4).Activate

ActiveWindow. Zoom = 75

Worksheets(4).Name = "Вывод информации"

Range("A1:I48").Select

Selection. ClearContents

Range("A1").Select

m = 1

Cells(1, 1) = "Работники с надбавкой"

For i = 1 To 9

Worksheets(4).Cells(m + 1, i) = Worksheets(1).Cells(1, i)

Next

k = 1

For i = 1 To 20

If info(i).nadb <> 0 Then ‘находим работников с надбавкой

Worksheets(4).Cells(k + 2, 1) = info(i).fio

Worksheets(4).Cells(k + 2, 2) = info(i).Pol

Worksheets(4).Cells(k + 2, 3) = info(i).stag

Worksheets(4).Cells(k + 2, 4) = info(i).otd

Worksheets(4).Cells(k + 2, 5) = info(i).dolg

Worksheets(4).Cells(k + 2, 6) = info(i).okl

Worksheets(4).Cells(k + 2, 7) = info(i).nadb

Worksheets(4).Cells(k + 2, 8) = info(i).rakoe

Worksheets(4).Cells(k + 2, 9) = info(i).kvid

k = k + 1

End If

Next

m = k

ComboBox1.Visible = True

With ComboBox1

.RowSource = "c3:c15"

.ListIndex = 0

End With

End Sub

Из программы видно, что первоначально на лист4 выводятся сведения о тех работниках, что имеют надбавку к зарплате. Далее у работников с надбавкой берется информация о стаже таких работников (колонка c3:c15) и полученные данные заносятся в список ComboBox1, который становится доступным (ComboBox1.Enabled = True). Далее пользователь из ниспадающего списка ComboBox1 должен выбрать величину стажа, о работниках с которой он хотел бы получить информацию. При изменении значения ComboBox1 запускается следующая программа:

Private Sub ComboBox1_click()

k = m + 1

n = Val(ComboBox1.Value)

For i = 1 To 9

Worksheets(4).Cells(k + 1, i) = Worksheets(1).Cells(1, i)

Next

For i = 1 To 20

If info(i).stag = n Then

If info(i).nadb <> 0 Then

Worksheets(4).Cells(k + 2, 1) = info(i).fio

Worksheets(4).Cells(k + 2, 2) = info(i).Pol

Worksheets(4).Cells(k + 2, 3) = info(i).stag

Worksheets(4).Cells(k + 2, 4) = info(i).otd

Worksheets(4).Cells(k + 2, 5) = info(i).dolg

Worksheets(4).Cells(k + 2, 6) = info(i).okl

Worksheets(4).Cells(k + 2, 7) = info(i).nadb

Worksheets(4).Cells(k + 2, 8) = info(i).rakoe

Worksheets(4).Cells(k + 2, 9) = info(i).kvid

k = k + 1

End If

End If

Next

For i = 1 To 20

Worksheets(4).Cells(k + 2, i) = Clear

Next

End Sub

Информация о работниках с надбавкой со стажем, который установил пользователь, выводится на лист4 ниже работников с надбавкой:

Задание4. Часть1.

В данном проекте модно производить упорядочивание данных в порядке возрастания оклада (задание4, часть1). Алгоритм упорядочивания следующий:

 

Для упорядочивания данных массива info используется метод пузырька. Для того, чтобы в проекте произошло упорядочивание данных по возрастанию оклада, необходимо щелкнуть на форме UserForm1 на флажок надписью «Выполнить задания с упорядочиванием данных в порядке возрастания оклада». Программа упорядочивания содержится в процедуре нажатия флажка CheckBox1:

Private Sub CheckBox1_Click()

Worksheets(3).Activate

Worksheets(3).Name = "Упорядочивание"

m = 1

Worksheets(3).Activate

Range("A1:I48").Select

Selection. ClearContents

Range("A1").Select

Worksheets(3).Cells(m, 1) = "Упорядочивание по окладу по возрастанию"

For j = 1 To 9

Worksheets(3).Cells(m + 1, j) = Worksheets(1).Cells(1, j)

Next

For i = 2 To 20

For j = 20 To i Step -1

If info(j).okl < info(j — 1).okl Then

p = info(j — 1)

info(j — 1) = info(j)

info(j) = p

End If

Next j

Next i

For i = 1 To 20

Worksheets(3).Cells(m + 2, 1) = info(i).fio

Worksheets(3).Cells(m + 2, 2) = info(i).Pol

Worksheets(3).Cells(m + 2, 3) = info(i).stag

Worksheets(3).Cells(m + 2, 4) = info(i).otd

Worksheets(3).Cells(m + 2, 5) = info(i).dolg

Worksheets(3).Cells(m + 2, 6) = info(i).okl

Worksheets(3).Cells(m + 2, 7) = info(i).nadb

Worksheets(3).Cells(m + 2, 8) = info(i).rakoe

Worksheets(3).Cells(m + 2, 9) = info(i).kvid

m = m + 1

Next

CheckBox1.Value = False

End Sub

Результат упорядочивания выводится на лист3, ячейки которого предварительно очищаются:

Часть2.

После нажатия кнопки «Продолжить» на UserForm1 открывается UserForm2 – «Часть2».

Задание2 чати2 выполнено с использованием инструментов Excel. Чтобы оно выполнялось при нажатии определенных кнопок на UserForm2, необходимо, пользуясь средствами Excel одновременно записывать макросы, которые затем вставить в процедуры нажатия соответствующих кнопок. Для этого необходимо нажать Сервис – Макрос – Начать запись, выполнить необходимые действия и завершить запись макроса. В записанном макросе появится нужная программа, которую затем надо вставить в процедуру нажатия какой-либо кнопки.

Задание1.Часть2.

Для выполнения задания1 части2 – упорядочивание информации по номеру телефонной станции в порядке возрастания и по сроку оплаты в порядке убывания на пользовательской форме разработаны две кнопки условия: optionbutton1(«По полю ФИО в порядке возрастания») и optionbutton2(«В порядке убывания заработной платы»). Чтобы получить необходимую программу, надо выделить начальные данные проекта на таблице «Данные», скопировать их на отдельный лист, нажать на панели инструментов Excel Данные – Сортировка. Появится меню, в котором нужно выбрать сортировку по колонке «ФИО» по возрастанию. Таблица будет упорядочена в соответствии с этим критерием. Затем проделать то же самое, но выбрать колонку «К выдаче» и сортировку по убыванию. Полученные программы в макросах надо вставить в процедуру нажатия кнопки «Запустить»:

Private Sub CommandButton1_Click()

If OptionButton1.Value = True Then

Worksheets(5).Activate

Range("A1:I48").Select

Selection. ClearContents

Range("A1").Select

ActiveWindow. Zoom = 70

Worksheets(5).Name = "Упорядочивание по ФИО"

Worksheets(5).Cells(1, 1) = "Упорядочивание по ФИО"

Sheets("Данные").Select

Range("A1:I21").Select

Selection. Copy

ActiveWindow. ScrollWorkbookTabs Position:=xlLast

Sheets("Упорядочивание по ФИО").Select

Range("A2").Select

ActiveSheet. Paste

Application. CutCopyMode = False

Selection. Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Range("A1").Select

ElseIf OptionButton2.Value = True Then

Worksheets(6).Activate

Range("A1:I48").Select

Selection. ClearContents

Range("A1").Select

ActiveWindow. Zoom = 70

Worksheets(6).Name = "Упорядочивание по зарплате"

Worksheets(6).Cells(1, 1) = "Упорядочивание по зарплате"

Sheets("Данные").Select

Range("A1:I21").Select

Selection. Copy

Sheets("Упорядочивание по зарплате").Select

Range("A2").Select

ActiveSheet. Paste

Application. CutCopyMode = False

Selection. Sort Key1:=Range("I3"), Order1:=xlDescending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Range("A1").Select

End if

End Sub

Отсортированные по ФИО по возрастанию данные выводятся на лист5:

Упорядочивание по ФИО по возрастанию

Ф. И.О.

Пол

Стаж (лет)

Отдел

Должность

Оклад

Надбавка

Районный коэффициент

К выдаче

Афанасьева Т. А.

ж

10

Обслуживания

Секретарь

2900

0

1,01

2929

Буторин В. В.

м

5,5

Технический

Механик

2500

0

1

2500

Денисова Г. А.

ж

11

Технический

Техничка

1700

1500

1

3200

Иванов И. И

м

5

Технический

Техник

2400

1800

1,13

4746

Кирилов Н. А

м

8

Планово-финансовый

Менеджер

7000

2500

1,2

11400

Кузубов В. А.

м

6

Обслуживания

Юрист

4500

2300

1,14

7752

Курапов Н. И.

м

9,5

Обслуживания

Охранник

2600

2000

1,12

5152

Метелкин Д. А.

м

4,5

Обслуживания

Психолог

5000

0

1,16

5800

Печенцева В. И.

ж

7,1

Технический

Техничка

1700

0

1

1700

Постников П. А.

м

6

Обслуживания

Менеждер

8000

2500

1,2

12600,00098

Романов Д. И.

м

7

Обслуживания

Продавец

4000

2000

1,1

6600

Савельев Н. И.

м

4

Обслуживания

Секретарь-референт

6000

2100

1,08

8748

Соколова М. Н.

ж

6,5

Планово-финансовый

Бухгалтер

4000

1000

1,13

5650

Степанов Д. В.

м

8

Планово-финансовый

Директор

9000

3000

1,7

20400

Устинова Л. А.

ж

3

Планово-финансовый

Секретарь

2900

1700

1,07

4922

Уфимцев А. Л.

м

2,1

Планово-финансовый

Гендиректор

12000

3000

1,7

25500

Федорцев А. Н.

м

2,9

Технический

Механик

2500

2000

1

4500

Худяков С. К.

м

4

Транспортный

Водитель

2600

2000

1

4600

Щеголев К. С.

м

11

Технический

Конструктор

4000

1000

1,05

5250

Щербакова Т. И.

ж

3

Планово-финансовый

Бухгалтер

4000

0

1,13

4520

Отсортированные данные по убыванию зарплаты выводятся на лист6:

Упорядочивание по зарплате по убыванию

Ф. И.О.

Пол

Стаж (лет)

Отдел

Должность

Оклад

Надбавка

Районный коэффициент

К выдаче

Уфимцев А. Л.

м

2,1

Планово-финансовый

Гендиректор

12000

3000

1,7

25500

Степанов Д. В.

м

8

Планово-финансовый

Директор

9000

3000

1,7

20400

Постников П. А.

м

6

Обслуживания

Менеждер

8000

2500

1,2

12600

Кирилов Н. А

м

8

Планово-финансовый

Менеджер

7000

2500

1,2

11400

Савельев Н. И.

м

4

Обслуживания

Секретарь-референт

6000

2100

1,08

8748

Кузубов В. А.

м

6

Обслуживания

Юрист

4500

2300

1,14

7752

Романов Д. И.

м

7

Обслуживания

Продавец

4000

2000

1,1

6600

Метелкин Д. А.

м

4,5

Обслуживания

Психолог

5000

0

1,16

5800

Соколова М. Н.

ж

6,5

Планово-финансовый

Бухгалтер

4000

1000

1,13

5650

Щеголев К. С.

м

11

Технический

Конструктор

4000

1000

1,05

5250

Курапов Н. И.

м

9,5

Обслуживания

Охранник

2600

2000

1,12

5152

Устинова Л. А.

ж

3

Планово-финансовый

Секретарь

2900

1700

1,07

4922

Иванов И. И

м

5

Технический

Техник

2400

1800

1,13

4746

Худяков С. К.

м

4

Транспортный

Водитель

2600

2000

1

4600

Щербакова Т. И.

ж

3

Планово-финансовый

Бухгалтер

4000

0

1,13

4520

Федорцев А. Н.

м

2,9

Технический

Механик

2500

2000

1

4500

Денисова Г. А.

ж

11

Технический

Техничка

1700

1500

1

3200

Афанасьева Т. А.

ж

10

Обслуживания

Секретарь

2900

0

1,01

2929

Буторин В. В.

м

5,5

Технический

Механик

2500

0

1

2500

Печенцева В. И.

ж

7,1

Технический

Техничка

1700

0

1

1700

Задание2. Часть2.

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

Private Sub CommandButton3_Click()

Worksheets(8).Activate

Worksheets(8).Name = "Данные для диаграммы"

m = 1

For j = 1 To 9

Worksheets(8).Cells(m, j) = Worksheets(1).Cells(1, j)

Next

Worksheets(8).Cells(1, 3) = "Стаж(дней)"

For i = 1 To 20

If info(i).otd = "Планово-финансовый" Then

Worksheets(8).Cells(m + 1, 1) = info(i).fio

Worksheets(8).Cells(m + 1, 2) = info(i).Pol

Worksheets(8).Cells(m + 1, 3) = info(i).stag * 365

Worksheets(8).Cells(m + 1, 4) = info(i).otd

Worksheets(8).Cells(m + 1, 5) = info(i).dolg

Worksheets(8).Cells(m + 1, 6) = info(i).okl

Worksheets(8).Cells(m + 1, 7) = info(i).nadb

Worksheets(8).Cells(m + 1, 8) = info(i).rakoe

Worksheets(8).Cells(m + 1, 9) = info(i).kvid

m = m + 1

End If

Next

Range("A2:A7,C2:C7,F2:F7").Select

Range("F2").Activate

Charts. Add

ActiveChart. ChartType = xl3DColumn

ActiveChart. SetSourceData Source:=Sheets("Данные для диаграммы").Range( _

"A2:A7,C2:C7,F2:F7"), PlotBy:=xlColumns

ActiveChart. SeriesCollection(1).XValues = _

"=(‘Данные для диаграммы’!R2C1:R7C1,’Данные для диаграммы’!R2C1,’Данные для диаграммы’!R3C1,’Данные для диаграммы’!R4C1,’Данные для диаграммы’!R5C1,’Данные для диаграммы’!R7C1,’Данные для диаграммы’!R7C1)"

ActiveChart. SeriesCollection(1).Name = "=""Стаж (в днях)"""

ActiveChart. SeriesCollection(2).XValues = _

"=(‘Данные для диаграммы’!R2C1:R7C1,’Данные для диаграммы’!R2C1,’Данные для диаграммы’!R3C1,’Данные для диаграммы’!R4C1,’Данные для диаграммы’!R5C1,’Данные для диаграммы’!R7C1,’Данные для диаграммы’!R7C1)"

ActiveChart. SeriesCollection(2).Name = "=""Заработная плата"""

ActiveChart. Location Where:=xlLocationAsNewSheet, Name:="Диаграмма1"

ActiveChart. ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False

End Sub

Результат:

Полученная диаграмма располагается на отдельном листе ЭТ.

Задание3.Часть2.

Задание3 части2 выполняется с помощью написанной на языке Visual Basic программы. Для вывода информации о мужчинах со стажем работы менее 10 лет необходимо нажать на кнопку «Запустить» в рамке «Вывод информации» на UserForm2. Запустится следующая программа:

Private Sub CommandButton2_Click()

Worksheets(7).Activate

ActiveWindow. Zoom = 75

Worksheets(7).Name = "Вывод информации2"

m = 1

Worksheets(7).Cells(m, 1) = "Мужчины со стажем менее 10 лет"

For j = 1 To 9

Worksheets(7).Cells(m + 1, j) = Worksheets(1).Cells(1, j)

Next

For i = 1 To 20

If info(i).Pol = "м" Then

If info(i).stag < 10 Then

Worksheets(7).Cells(m + 2, 1) = info(i).fio

Worksheets(7).Cells(m + 2, 2) = info(i).Pol

Worksheets(7).Cells(m + 2, 3) = info(i).stag

Worksheets(7).Cells(m + 2, 4) = info(i).otd

Worksheets(7).Cells(m + 2, 5) = info(i).dolg

Worksheets(7).Cells(m + 2, 6) = info(i).okl

Worksheets(7).Cells(m + 2, 7) = info(i).nadb

Worksheets(7).Cells(m + 2, 8) = info(i).rakoe

Worksheets(7).Cells(m + 2, 9) = info(i).kvid

m = m + 1

End If

End If

Next

End Sub

Сначала значение Pol элемента массива сравнивается с «М», если оно удовлетворяет этому условию, то проверяется, не меньше ли 10 значение stag этого элемента. Если оба условия выполнены, этот элемент выводится на лист7 электронной таблицы.

Для завершения работы с курсовой работой нужно нажать на кнопку «Выход» на UserForm2.

Заключение

В проекте на языке Visual Basic for Applications было создано приложение, позволяющее производить различные действия с информацией в электронной таблице Excel. Программа не содержит каких-либо ошибок. Все используемые переменные описаны соответствующим образом и работа с ними не вызывает никаких ошибок. Возможна работа в режиме диалога. В первой части курсовой используются написанные на языке Visual Basic программы, во второй используются инструменты и средства Excel. Программы при нажатии на кнопки могут выполняться столько раз, сколько это будет нужно пользователю. Таким образом, задачи, поставленные этой курсовой работой, были выполнены.

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020

А ты боишься COVID-19?

 Пройди опрос и получи промокод