Студопедия — Титульный лист. struct ship //элемент списка
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Титульный лист. struct ship //элемент списка






class shiplist

{

public:

 

struct ship //элемент списка

{

int x,y;

ship* nextright;

ship* nextdown;

 

ship(int _x, int _y, ship *nr = NULL, ship *nd = NULL)// конструктор с передающ значениями

{

x = _x;

y = _y;

nextright = nr;

nextdown = nd;

}

};

 

int shipCount;

ship* first; // Первый элемент

ship* firstdown; //Верхний элемент

ship* lastright; //Последний элемент в списке корабля

ship* lastdown;// Последний элемент в списке кораблей

 

shiplist() // Конструктор списка

 

{

shipCount = 0;

first = firstdown = lastright = lastdown = NULL;

}

 

 

void addshipFirst(int _x, int _y) //добавление первого корабля

{

ship* newship = new ship(_x, _y);

 

first = newship;

lastright = newship;

lastdown = newship;

shipCount++;

 

}

 

 

void addshipRight(int _x, int _y) //добавление корабля вправо(ячейки)

{

ship* newship = new ship(_x, _y);

 

lastright->nextright = newship;

lastright = newship;

shipCount++;

 

}

void addshipDown(int _x, int _y) //добавление первой ячейки следующего корабля

{

ship* newship = new ship(_x, _y);

 

lastdown->nextdown = newship;

lastdown = newship;

lastright = newship;

shipCount++;

}

 

bool delShip (int _x, int _y) //удаление ячейки

{

ship* prev = NULL,

*current = first,

*lastdown = first,

*prevup = NULL;

while (current) //пока не 0

{

while (current->nextdown) //пока снизу не ноль

{

while(current->nextright) //пока справа не ноль

{

if ((current->x == _x) && (current->y == _y)) //если значения совпали

{

if (current == first) //если первый

{

if(current->nextright) //если справа что-то есть

{

current->nextright->nextdown = current->nextdown;

first = current->nextright;

lastdown = first;

delete current;

shipCount--;

current = first;

return true;

}

else

{

first = current->nextdown;

lastdown = first;

delete current;

shipCount--;

current = first;

return true;

}

 

}

 

else if ((prev == 0) && (prevup!= 0) && (current->nextright!= 0)) //если слева пусто и сверху есть клетка и справа не пусто

{

prevup->nextdown = current->nextright;

current->nextright->nextdown = current->nextdown;

lastdown = current->nextright;

delete current;

shipCount--;

current = lastdown;

return true;

}

 

 

else if (prev) //если предыдущий не равен 0

{

prev->nextright = current->nextright;

delete current;

shipCount--;

current = prev->nextright;

return true;

}

 

}

else //если значения не совпали идём дальше

{

prev = current;

current = current->nextright;

}

}

if ((current->x == _x) && (current->y == _y)) //если справа 0

{

if(prev) //если слева не пусто

{

prev->nextright = 0;

delete current;

shipCount--;

current = prev;

return true;

}

 

else if ((prev == 0) && (prevup!= 0) && (current->nextright == 0) && (current->nextdown!=0)) //если слева пусто и сверху есть клетка и справа пусто и снизу не пусто

{

prevup->nextdown = current->nextdown;

lastdown = current->nextdown;

delete current;

shipCount--;

current = lastdown;

return true;

}

 

}

 

prevup = lastdown;

current = lastdown->nextdown;

lastdown = current;

prev = 0;

 

}

delete current;

shipCount--;

return true;

 

}

return false;

}

}

 

 

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

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

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

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

Private Sub Workbook_Open()

Sheets("Меню").Activate

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

End Sub

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

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

 

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

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

 

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

Sub переход1()

'' переход1 Макрос

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

MsgBox (" Вы перешли на лист Табель учёта рабочего времени!")

End Sub

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

 

 

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

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

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

Private Sub CommandButton1_Click()

UserForm3.Hide

End Sub

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

Sub Выход()

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

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

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

txtСообщение = "Вы действительно хотите выйти из Excel"

txtЗаголовок = "До свидания!"

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

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

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

Application.Quit

Else

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

End If

End Sub

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

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

 

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

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

Макросы для кнопок:

Sub Среднемячный_заработок()

' Среднемячный_заработок Макрос

Range("I10").Select

ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-3]:R[39]C[-3])"

ActiveWindow.ScrollRow = 9

ActiveWindow.ScrollRow = 6

ActiveWindow.ScrollRow = 5

ActiveWindow.ScrollRow = 4

ActiveWindow.ScrollRow = 3

ActiveWindow.ScrollRow = 2

ActiveWindow.ScrollRow = 1

End Sub

Sub Отмена_среднемесячного()

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

Range("I10").Select

Selection.ClearContents

End Sub

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

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

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

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

 

 

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

Private Sub CommandButton1_Click()

Dim текущая As Object

Dim следующая As Object

If TextBox1 = "" Or Text2 = " " Or TextBox3 = "" Or TextBox4 = "" Then

MsgBox ("Введены не все данные")

Exit Sub

End If

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

Set текущая = ActiveSheet.Range("A50")

Do While Not IsEmpty(текущая)

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

Set текущая = следующая

Loop

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

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

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

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

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

End Sub

 

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

Private Sub CommandButton2_Click()

UserForm7.Hide

End Sub

 

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

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

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

Private Sub ComboBox1_Change()

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

Dim i As Integer

Dim j As Integer

Dim a As Integer

Dim строка As Integer

строка = Application.CountA(Sheets("Табель учёта рабочего времени").Columns(1))

i = 9

Do While i <= строка

i = i + 1

If Cells(i, 1) = " " Then

j = i

Exit Do

End If

Loop

 

For b = 10 To i

If ComboBox1.Text = Cells(b, 2).Value Then

TextBox1.Value = Cells(b, 3)

TextBox2.Value = Cells(b, 4)

TextBox3.Value = Cells(b, 5)

End If

Next b

 

End Sub

 

Private Sub CommandButton1_Click()

Me.Hide

If ComboBox1.Text = Empty Then

MsgBox "Вы должны выбрать фамилию рабочего"

Me.Show

Else

f = MsgBox("Сейчас произойдет удаление", vbOKCancel)

End If

If f = vbOK Then

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

Dim i As Integer

Dim j As Integer

Dim строка As Integer

строка = Application.CountA(Sheets("Табель учёта рабочего времени").Columns(1))

i = 11

Do While i <= строка

i = i + 1

If Cells(i, 1) = " " Then

j = i

Exit Do

End If

Loop

For b = 11 To i

If ComboBox1.Text = Cells(b, 9) Then

Cells(b, 9).Select

Selection.EntireRow.Delete

 

End If

Next b

End If

 

End Sub

 

Private Sub CommandButton2_Click()

UserForm4.Hide

End Sub

 

 

Private Sub TextBox1_Change()

If IsNumeric(TextBox1.Text) And Len(TextBox1) <> 0 Then

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

TextBox1.Value = ""

TextBox1.SetFocus

End If

End Sub

 

 

Private Sub TextBox2_Change()

If IsNumeric(TextBox2.Text) And Len(TextBox2) <> 0 Then

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

TextBox2.Value = ""

TextBox2.SetFocus

End If

End Sub

 

 

Private Sub TextBox3_Change()

If TextBox3.Value < 0 Then

MsgBox "Числа не должны быть отрицательные!", vbOKOnly + vbInformation

TextBox3.SetFocus

End If

If Not IsNumeric(TextBox3.Text) And Len(TextBox3) <> 0 Then

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

TextBox3.Value = ""

TextBox3.SetFocus

End If

End Sub

 

 

Private Sub UserForm_Activate()

TextBox1.Text = " "

TextBox2.Text = " "

TextBox3.Text = ""

ComboBox1.Text = " "

End Sub

Private Sub ComboBox1_Enter()

ComboBox1.Clear

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

Dim i As Integer, j As Integer, строка As Integer

строка = Application.CountA(Sheets("Табель учёта рабочего времени").Columns(2))

 

i = 11

Do While i <= строка

i = i + 1

If Cells(i, 2) = " " Then

j = i

Exit Do

End If

Loop

For a = 11 To i

ComboBox1.AddItem Cells(a, 2)

Next a

End Sub

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

Private Sub CommandButton2_Click()

UserForm4.Hide

End Sub

 

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

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

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

Private Sub ComboBox1_Change()

ListBox1.Clear

TextBox1.Text = ""

TextBox2.Text = ""

1 For sss = 10 To 5000

If ComboBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text Then

ListBox1.AddItem Sheets("Табель учёта рабочего времени").Cells(sss, 2).Text

End If

Next

End Sub

 

Private Sub CommandButton1_Click()

For sss = 10 To 8000

If ComboBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text And ListBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 2).Text Then

Worksheets("Табель учёта рабочего времени").Cells(sss, 5) = TextBox2.Text

End If

Next

ListBox1.Clear

TextBox1.Text = ""

TextBox2.Text = ""

End Sub

Private Sub CommandButton2_Click()

poisk.Hide

End Sub

Private Sub ListBox1_Click()

For sss = 10 To 8000

If ComboBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text And ListBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 2).Text Then

TextBox1.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 3).Text

TextBox2.Text = Sheets("Табель учёта рабочего времени").Cells(sss, 4).Text

End If

Next

End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub TextBox2_Change()

End Sub

Private Sub UserForm_Activate()

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

Range("A10:H8000").Select

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

1 For ads = 11 To 8000

If Sheets("Табель учёта рабочего времени").Cells(ads, 3).Text = "" Then Exit Sub

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

ComboBox1.AddItem Sheets("Табель учёта рабочего времени").Cells(ads, 3).Text

3 Next

End Sub

 

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

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

Private Sub CommandButton4_Click()

UserForm5.Hide

End Sub

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

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

 

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

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

 

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

 

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

Private Sub CommandButton1_Click()

If OptionButton1 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("A9"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

ElseIf OptionButton2 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("A9"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End If

End Sub

 

Private Sub CommandButton2_Click()

If OptionButton1 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("B8"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

ElseIf OptionButton2 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("B8"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End If

End Sub

 

Private Sub CommandButton3_Click()

If OptionButton1 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("C8"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

ElseIf OptionButton2 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("C8"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End If

End Sub

 

Private Sub CommandButton4_Click()

If OptionButton1 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("D8"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

ElseIf OptionButton2 = True Then

Range("A8:G1000").Select

Selection.Sort Key1:=Range("D8"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End If

End Sub

 

Private Sub CommandButton5_Click()

UserForm2.Hide

End Sub

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

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

' Переходнатитульныйссортировки Макрос

Sheets("Титульный лист").Select

End Sub

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

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

 

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

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

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

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

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

Private Sub CommandButton1_Click()

Dim текущая As Object

Dim следующая As Object

If TextBox1 = "" Or Text2 = " " Then

MsgBox ("Введены не все данные")

Exit Sub

End If

ActiveWorkbook.Sheets("Тарифы").Select

Set текущая = ActiveSheet.Range("A12")

Do While Not IsEmpty(текущая)

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

Set текущая = следующая

Loop

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

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

TextBox1.Text = ""

TextBox2.Text = ""

End Sub

Для кнопки Закрыть

Private Sub CommandButton2_Click()

UserForm9.Hide

End Sub

 

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

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

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

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

Dim h As Byte

Dim Y As Byte

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

If h = vbYes Then Else GoTo e

name = ComboBox1

If ComboBox1 = "" Then

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

If Y = vbYes Then GoTo 12 Else GoTo e

End If

ActiveWorkbook.Sheets("Тарифы").Activate

Set pr = ActiveSheet.Range("C11")

Do While Not IsEmpty(pr)

Set X = pr.Offset(1, 0)

If pr = name Then

pr.Select

Selection.EntireRow.Delete

End If

Set pr = X

Loop

ActiveWorkbook.Sheets("Тарифы").Activate

Set pr = ActiveSheet.Range("A6")

Do While Not IsEmpty(pr)

Set X = pr.Offset(1, 0)

If pr = name Then

pr.Select

Selection.EntireRow.Delete

End If

Set pr = X

Loop

12 ComboBox1 = ""

TextBox1 = ""

UserForm8.Hide

e: End Sub

 

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

Private Sub CommandButton2_Click()

UserForm8.Hide

End Sub

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

5. Лист «Сводная таблица и Диаграмма»

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

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

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

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

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

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







Дата добавления: 2015-06-15; просмотров: 372. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

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

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

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия