Информационно-аналитическая система 'Зарплата'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,4 Мб
  • Опубликовано:
    2014-10-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Информационно-аналитическая система 'Зарплата'













КУРСОВАЯ РАБОТА

по дисциплине «Информатика»

На тему: «Информационно-аналитическая система Зарплата»

1.      Титульный лист


При открытии рабочей книги появляется сообщение Microsoft Excel и автоматически скрывается панель инструментов.

Рисунок 1. Титульный лист

Программный код для этого процесса следующий :

Private Sub Workbook_Open()("Меню").Activate

MsgBox ("Вас приветствует информационно - аналитическая система Зарплата!!!")Sub

При нажатии кнопки «Меню» на титульном листе появляется сообщение о запросе пользователя:

Рисунок 2 Знакомство

При нажатии кнопки «ОК» на запросе о пользователи, переходим на лист «Главное меню», где расположены кнопки перехода на все листы приложения, а так же кнопки «Об авторе» и кнопка « Выход из Excel»:

Рисунок 3. Главное меню

Для кнопок перехода на все листы приложения созданы следующие программные коды:переход1()

'' переход1 Макрос("Табель учёта рабочего времени ").Select(" Вы перешли на лист Табель учёта рабочего времени!")Sub

Кнопки Тарифы, Сводная таблица, Диаграмма, Ведомость, Итоги, Формы, Расширенный фильтр, Функции аналогичны одноименной кнопке, рассмотренной выше.

При нажатии на кнопки «Об авторе» появляется пользовательская форма, где расположена информация о разработчике данной информационно-аналитической системы «Зарплата».

Рисунок 4. Сведения об авторе

К кнопке Об авторе привязан следующий программный код:

Private Sub CommandButton1_Click().Hide

End Sub

К кнопке «Выход из Excel» привязан следующий код:Выход()

' Выход Макрос

Dim txtСообщение As String, txtЗагловок As String

Dim Кнопки As Integer, Результат As Integer

txtСообщение = "Вы действительно хотите выйти из Excel"Заголовок = "До свидания!"

Кнопки = vbYesNo + vbQuestion + vbfaultButton2

Результат = MsgBox(txtСообщение, Кнопки, txtЗаголовок)

If Результат = vbYes Then.Quit

Else"Выход не состоится", vbOKOnly, "Снова привет!"If

End Sub

2.      Лист «Табель учёта рабочего времени»


Рисунок 5. Табель учёта рабочего времени.

зарплата информационный аналитический рабочий

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

На листе «Табель учета рабочего времени» расположены кнопки «Среднемесячный заработок» и « Отмена».

Макросы для кнопок:Среднемячный_заработок()

' Среднемячный_заработок Макрос("I10").Select

ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-3]:R[39]C[-3])".ScrollRow = 9.ScrollRow = 6.ScrollRow = 5.ScrollRow = 4.ScrollRow = 3.ScrollRow = 2.ScrollRow = 1SubОтмена_среднемесячного()

' Отмена_среднемесячного Макрос

Range("I10").Select

Selection.ClearContents

End Sub

Так же на листе «Табель учёта рабочего времени» расположена одна кнопка «Действия над данными», при нажатии которой выходит окно :

Рисунок 6. Действия над данными

При нажатии кнопки «Добавление данных»:

Рисунок 7. Добавление данных в табель учёта рабочего времени.

Программный код для кнопки «Добавить»:Sub CommandButton1_Click()текущая As Objectследующая As ObjectTextBox1 = "" Or Text2 = " " Or TextBox3 = "" Or TextBox4 = "" Then("Введены не все данные")SubIf.Sheets("Табель учёта рабочего времени").Selectтекущая = ActiveSheet.Range("A50")While Not IsEmpty(текущая)следующая = текущая.Offset(1, 0)текущая = следующая

текущая.Value = TextBox5.Text

текущая.Offset(0, 1).Value = TextBox1.Text

текущая.Offset(0, 2).Value = TextBox2.Text

текущая.Offset(0, 3).Value = TextBox3.Text.Text = "".Text = "".Text = "".Text = ""Sub

Для кнопки «Отмена»

Private Sub CommandButton2_Click().Hide

End Sub

Кнопка «Удаление данных»:

Рисунок 8. Удаление данных.

К кнопке «Удалить» привязан следующий код :

Private Sub ComboBox1_Change().Sheets("Табель учёта рабочего времени").Select

Dim i As Integerj As Integera As Integerстрока As Integer

строка = Application.CountA(Sheets("Табель учёта рабочего времени").Columns(1))= 9While i <= строка= i + 1Cells(i, 1) = " " Then= iDoIfb = 10 To iComboBox1.Text = Cells(b, 2).Value Then.Value = Cells(b, 3).Value = Cells(b, 4).Value = Cells(b, 5)IfbSubSub CommandButton1_Click().HideComboBox1.Text = Empty Then

MsgBox "Вы должны выбрать фамилию рабочего".Show= MsgBox("Сейчас произойдет удаление", vbOKCancel)

End Iff = vbOK Then

Sheets("Табель учёта рабочего времени").Select

строка = Application.CountA(Sheets("Табель учёта рабочего времени").Columns(1))= 11While i <= строка= i + 1Cells(i, 1) = " " Then= iDoIfb = 11 To iComboBox1.Text = Cells(b, 9) Then(b, 9).Select.EntireRow.DeleteIfbIfSubSub CommandButton2_Click().HideSubSub TextBox1_Change()IsNumeric(TextBox1.Text) And Len(TextBox1) <> 0 Then

MsgBox " Надо вводить только текстовые данные!", vbOKOnly + vbInformation

TextBox1.Value = "".SetFocusIfSubSub TextBox2_Change()IsNumeric(TextBox2.Text) And Len(TextBox2) <> 0 Then

MsgBox " Надо вводить только текстовые данные!", vbOKOnly + vbInformation

TextBox2.Value = "".SetFocusIfSubSub TextBox3_Change()TextBox3.Value < 0 Then"Числа не должны быть отрицательные!", vbOKOnly + vbInformation.SetFocusIfNot IsNumeric(TextBox3.Text) And Len(TextBox3) <> 0 Then

MsgBox "Вводить надо числовые данные!", vbOKOnly + vbInformation

TextBox3.Value = "".SetFocusIfSubSub UserForm_Activate().Text = " ".Text = " ".Text = "".Text = " "SubSub ComboBox1_Enter().Clear("Табель учёта рабочего времени").Selecti As Integer, j As Integer, строка As Integer

строка = Application.CountA(Sheets("Табель учёта рабочего времени").Columns(2))= 11While i <= строка= i + 1Cells(i, 2) = " " Then= iDoIfa = 11 To i.AddItem Cells(a, 2)a

End Sub

Код для кнопки «Отменить»

Private Sub CommandButton2_Click().Hide

End Sub

Кнопка «Поиск и изменение данных»:

Рисунок 9. Поиск и изменение данных

Программный код:

Private Sub ComboBox1_Change().Clear.Text = "".Text = ""

For sss = 10 To 5000ComboBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text Then.AddItem Sheets("Табель учёта рабочего времени").Cells(sss, 2).TextIfSubSub CommandButton1_Click()sss = 10 To 8000ComboBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text And ListBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 2).Text Then("Табель учёта рабочего времени").Cells(sss, 5) = TextBox2.TextIf.Clear.Text = "".Text = ""SubSub CommandButton2_Click().HideSubSub ListBox1_Click()sss = 10 To 8000ComboBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text And ListBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 2).Text Then.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 4).TextIfSubSub TextBox1_Change()SubSub TextBox2_Change()SubSub UserForm_Activate()

Sheets("Табель учёта рабочего времени").Select

Range("A10:H8000").Select.Sort Key1:=Range("C9"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

For ads = 11 To 8000Sheets("Табель учёта рабочего времени").Cells(ads, 3).Text = "" Then Exit SubSheets("Табель учёта рабочего времени").Cells(ads, 4).Text = Sheets("Табель учёта рабочего времени").Cells(ads + 1, 2).Text Then GoTo 3.AddItem Sheets("Табель учёта рабочего времени").Cells(ads, 3).Text

3 NextSub

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

К кнопке « Закрыть» привязан следующий код:

Private Sub CommandButton4_Click().Hide

End Sub

3. Лист «Сортировка»

Рисунок 10. Сортировка данных.

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

На листе расположены две кнопки: Меню и Сортировка. При нажатии кнопки Сортировка выходит окно:

Рисунок 11. Сортировка данных

Программный код:

Private Sub CommandButton1_Click()OptionButton1 = True Then("A8:G1000").Select.Sort Key1:=Range("A9"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomOptionButton2 = True Then("A8:G1000").Select.Sort Key1:=Range("A9"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomIfSubSub CommandButton2_Click()OptionButton1 = True Then("A8:G1000").Select.Sort Key1:=Range("B8"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomOptionButton2 = True Then("A8:G1000").Select.Sort Key1:=Range("B8"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomIfSubSub CommandButton3_Click()OptionButton1 = True Then("A8:G1000").Select.Sort Key1:=Range("C8"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomOptionButton2 = True Then("A8:G1000").Select.Sort Key1:=Range("C8"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomIfSubSub CommandButton4_Click()OptionButton1 = True Then("A8:G1000").Select.Sort Key1:=Range("D8"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomOptionButton2 = True Then("A8:G1000").Select.Sort Key1:=Range("D8"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottomIfSubSub CommandButton5_Click()

UserForm2.HideSub

Также на листе «Сортировка» расположена кнопка «Меню» - это переход на главное меню, к которой привязан следующий программный код:

Sub Переходнатитульныйссортировки()

' Переходнатитульныйссортировки Макрос("Титульный лист").SelectSub

4. Лист «Тарифы»

Рисунок 12. Сводная таблица

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

При нажатии на кнопку Добавить открывается форма «Добавление».

Рисунок 13. Добавление специальности

Форма состоит из двух элементов Label1 и Label2,из двух текстовых полей TextBox1, TextBox2 и двух кнопок CommandButton1 со свойством Caption, которому присвоено значение «Добавить», и CommandButton2 со свойством Caption, которому присвоено значение «Закрыть».

Программный код для кнопки «Добавить»:

Private Sub CommandButton1_Click()текущая As Objectследующая As ObjectTextBox1 = "" Or Text2 = " " Then ("Введены не все данные")

Exit SubIf.Sheets("Тарифы").Selectтекущая = ActiveSheet.Range("A12")While Not IsEmpty(текущая)

Set следующая = текущая.Offset(0, 1)текущая = следующая

Loop

текущая.Value = TextBox1.Text

текущая.Offset(0, 1).Value = TextBox2.Text.Text = "".Text = ""Sub

Для кнопки ЗакрытьSub CommandButton2_Click().HideSub

Форма «Удаление»

Рисунок 14. Удаление специальности

Форма состоит из одного элемента ComboBox и двух кнопок CommandButton

Программный код для кнопки CommandButton1 (Удаление):

Dim h As ByteY As Byte

h = MsgBox("Вы действительно хотите удалить эту специальность?", vbYesNo + vbQuestion, "Удаление")

If h = vbYes Then Else GoTo e

name = ComboBox1ComboBox1 = "" Then= MsgBox("Удаление невозможно, так как не выделен объект", vbYes + vbQuestion, "Удаление")

If Y = vbYes Then GoTo 12 Else GoTo eIf.Sheets("Тарифы").Activatepr = ActiveSheet.Range("C11")While Not IsEmpty(pr)X = pr.Offset(1, 0)pr = name Then.Select.EntireRow.DeleteIfpr = X.Sheets("Тарифы").Activatepr = ActiveSheet.Range("A6")While Not IsEmpty(pr)X = pr.Offset(1, 0)pr = name Then.Select.EntireRow.DeleteIfpr = X

ComboBox1 = ""= "".Hide: End Sub

Программный код для кнопки CommandButton2 ( Отмена):

Private Sub CommandButton2_Click().Hide

End Sub

При нажатии кнопки « Табель учёта» и «Меню» происходит переход на эти листы.


Рисунок 15. Сводная таблица

На листе «Сводная таблица» расположена сводная таблица, которая построена на основе главной таблицы листа «Табель учета рабочего времени».

Сводная таблица - это вспомогательная таблица с помощью которой можно анализировать и объединять большие объёмы данных, быстро проводить общие и промежуточные итоги, обобщать только необходимы е данные и изменять их форму представления.

На листе также присутствуют кнопки Диаграмма и Меню для перехода на лист «Меню» и «Диаграмма» для перехода на лист «Диаграмма1».

Рисунок 16. Диаграмма.

На листе расположена диаграмма, в яркой форме отображающая информацию о рабочих завода и зарплате.

6. Расширенный фильтр

Рисунок 17. Расширенный фильтр

Программный код для кнопки Фильтрация:Расширенный()

' Расширенный Макрос

' Макрос записан 20.04.2013("B2").Select.FormulaR1C1 = InputBox("Введите название специальности")

Range("D11").Select("D11").Select("A11:H51").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _("B1:B2"), Unique:=FalseSub

Программный код для кнопки Отмена фильтрации:ОменаФильтрации()

' ОменаФильтрации Макрос.ShowAllDataSub

7. Лист Итоги

Рисунок 18. Итоги по цеху

Программный код для кнопок Итоги и Отмена Итогов :

Sub Итоги()

' Итоги Макрос("C1").Select.Subtotal GroupBy:=3, Function:=xlSum, TotalList:=Array(8), _:=True, PageBreaks:=False, SummaryBelowData:=True

End SubОтменаИтоговв()

' ОтменаИтоговв Макрос

Range("C1").Select.RemoveSubtotalSub

8. Лист Ведомость

При нажатии на кнопку ведомость, расположенную на пользовательской форме на листе «МЕНЮ», появляется форма ведомость

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

На форме расположены два элемента: ComboBox1 и CommandButton1. Элемент ComboBox1 позволяет выбрать из списка название специальности рабочего, а при нажатии на кнопку CommandButton1 создается ведомость на отдельном листе.

Рисунок 20. Ведомость.

Программный код:

Private Sub CommandButton1_Click()

Application.ScreenUpdating = Falseh As Byte

If ComboBox1 = "" Then= MsgBox("Для вывода ведомости необходимо выделить из списка специальность", vbYes + vbQuestion, "Ведомость")

End Ifigr(2000, 7) As String_sel = Trim(ComboBox1.Text)= 1= 10("Просто").ActivateWhile Not IsEmpty(Cells(j, 3).Value)cur_sel = Trim(Cells(j, 3).Value) Then(i, 1) = Cells(j, 1).Value(i, 2) = Cells(j, 2).Value(i, 3) = Cells(j, 4).Value(i, 4) = Cells(j, 5).Value(i, 5) = Cells(j, 6).Value(i, 6) = Cells(j, 7).Value= i + 1If= j + 1("Выручка").Activate(1, 4).Value = cur_sel("A3:I2000").Value = " "j = 1 To i(j + 2, 1).Value = igr(j, 1)(j + 2, 2).Value = igr(j, 2)(j + 2, 3).Value = igr(j, 3)(j + 2, 4).Value = igr(j, 4)(j + 2, 5).Value = igr(j, 5)(j + 2, 6).Value = igr(j, 6)j("Выручка").Range("g3").Activate.FormulaR1C1 = "=SUM(RC[-1],R[1]C[-1]:R[196]C[-1])"

ComboBox1 = ""("Выручка").Range("h3").Activate("H3").Select.FormulaR1C1 = "=AVERAGE(RC[-4]:R[196]C[-4])"("Выручка").Range("i3").Activate("I3").Select.FormulaR1C1 = "=AVERAGE(RC[-3]:R[1967]C[-3])".HideSubSub UserForm_Activate()pr As Object, X As Object.ComboBox1.Clear.Sheets("Просто").Selectpr = ActiveSheet.Range("c10")While Not IsEmpty(pr)X = pr.Offset(1, 0).AddItem prpr = XSub

10. Лист Функции

Рисунок 21. Функции.

На этом листе расположены кнопки с функциями:

·        БДСУММ - вычисляет сумму числовых ячеек

·        ДСРЗНАЧ - считает среднее значение

·        ДМИН - ищет минимальное значение

·        ДМАКС - ищет максимальное значение

·        БЧЁТ - подсчитывает количество ячеек содержащих числа

При нажатии кнопки БДСУММ появляется окно:


После ввода специальности и нажатия кнопки «ОК» функция посчитает какое количество дней отработали люди с той или иной специальностью.

Программный код для кнопки:Бдсумм()

' Бдсумм Макрос("A2").Select

ActiveCell.FormulaR1C1 = InputBox("Введите наименование специальности")

Range("A7").Select.FormulaR1C1 = "=DSUM(R[4]C:R[44]C[7],R[4]C[4],R[-6]C:R[-5]C)"

End Sub

При нажатии кнопки ДСРЗНАЧ появится окно:


Эта функция посчитает среднее значение *суммы к выдачи* определённого работника.

Программный код для кнопки :ДСРЗНАЧ()

' ДСРЗНАЧ Макрос("C2").Select.FormulaR1C1 = InputBox("Введите ФИО сотрудника")("C7").Select.FormulaR1C1 = _

"=DAVERAGE(R[4]C[-2]:R[44]C[5],R[4]C[5],R[-6]C:R[-5]C)"

End Sub

При нажатии кнопки ДМАКС:


Эта функция посчитает максимальную зарплату по указанному количеству дней.

Программный код для кнопки :ДМАСК()

' ДМАСК Макрос("E2").Select

ActiveCell.FormulaR1C1 = InputBox("Введите количество отработанных дней")

Range("E7").Select.FormulaR1C1 = "=DMAX(R[4]C[-4]:R[44]C[3],R[4]C[1],R[-6]C:R[-5]C)"

При нажатии кнопки ДМИН:


Эта функция посчитает минимальную зарплату по указанному цеху.

Программный код для кнопки:

Sub ДМИН()

' ДМИН Макрос("G2").Select.FormulaR1C1 = InputBox("Введите наименование цеха")("G7").Select.FormulaR1C1 = "=DMIN(R[4]C[-6]:R[44]C[1],R[4]C[-1],R[-6]C:R[-5]C)"

End Sub

При нажатии кнопки БСЧЁТ:


Функция подсчитывает сколько людей отработало за указанное количество дней

Программный код:БСЧЁТ()

'' БСЧЁТ Макрос("I2").Select.FormulaR1C1 = InputBox("Введите количество отработанных дней")

Range("I7").Select.FormulaR1C1 = _

"=DCOUNT(R[4]C[-8]:R[44]C[-1],R[4]C[-4],R[-6]C:R[-5]C)"

End Sub

11. Реализация информационно-аналитической системы «Зарплата» с помощью MS ACCESS

MS ACCESS - СУБД реляционными базами данных. То есть информация в таких базах данных храниться в таблицах, связанных между собой.

Основными объектами Базы Данных являются: таблицы, формы, запросы, отчеты, макросы и модули.

Создание БД всегда начинается с создания структуры таблиц: в режиме конструктора определяются поля таблиц, типы данных которые можно вводить в поля и свойства поля при необходимости.

Сначала будем создавать структуру таблицы «Тарифы».

Рисунок 22 Тарифы в режиме "конструктор"

Специальность делаем ключевым полем. Имя таблицы называется «Тарифы».

Создаем таблицу «Табель учета».

Рисунок 23. Табель учёта

Спец - искусственно созданное поле, которое будет ключевым.

Заполняем таблицу «Тарифы» данными.

Создадим схему данных. Схема данных выглядит следующим образом:

·        Создание для таблицы «Тарифы» форму для ввода данных.

·        Создание форму для ввода данных в таблицу «Табель учета».

·        Создадим запрос на обновление данных.

Рисунок 24. Запрос на обновление.

Двойным щелчком из таблицы «Табель Учета» выбираем поля и после чего нажимаем кнопку «Обновление».

«Обновление»- Создание запроса, который обновляет данные в существующей таблице.

Заполняем строки обновления, через кнопку «Построитель».

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

Создадим запрос на выборку данных из таблицы «Табель учета».

Например, «Отбор данных по ФИО».Для этого через Конструктор запросов выбираем две таблицы и из таблицы «Табель учета» выберем все столбцы, кроме столбца «Спец».

Рисунок 25. Создание связи.

На основе запроса на выборку создадим отчет ФИО.

Рисунок 26. Отчёт ФИО

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

 

Заключение


Курсовая работа представляет собой информационно-аналитическую систему «Зарплата». В соответствии с этим пользователю предоставлены возможности для ввода информации, ее корректировки и обработки. Для вывода полученных данных были предусмотрены формы, соответствующие требованиям запроса.

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

При создании экранных форм использованы средства, предоставляемые Ехсеl для удобной работы с формой (элементы управления на рабочем листе для заполнения формы, возможности быстрого перехода между полями и т.п.).

Для автоматизации некоторых действий использованы макросы или пользовательские процедуры и функции.

Список использованных источников


1.      Агальцов В. П., Титов В. М. Информатика для экономистов:Учебник. - М.: ИД «ФОРУМ»: ИНФРА-М,2010. - 448С.:ил. - (Высшее образование)

.        Информатика: «Microsoft Excel и Visual Basic for Application». Учебное пособие к выполнению курсовой работы для студентов специальности 080801,080116. /Составители : Каляшина А. В., Бусова А. М. - Набережные Челны : Издательство ИНЭКА, 2008. 73с.

3.      Microsoft Visual Basic 6.0 для профессионалов. Шаг за шагом: Практ. Пособ./ Пер. с англ.-М.: Издательство ЭКОМ, 2011.-720 с.: илл.

.        Ананьев А.И., Федоров А.Ф Самоучитель Visual Basic 6.0-СПб.БХВ-Петербург 2008г,624с.

Похожие работы на - Информационно-аналитическая система 'Зарплата'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!