Разработка программного модуля

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

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

  • сумму элементов, находящихся под главной диагональю,
  • сумму элементов, составляющих главную диагональ.

Для разработки программы использован табличный процессор Excel и язык программирования Visual Basic for Application.

В первом разделе, который называется «Постановка задачи», приведена математическая модель задачи, описаны входные и выходные данные, описана обработка ошибок.

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

В разделе «Реализация программного модуля» описан код программы, произведено описание используемых операторов и функций.

Тестирование программного модуля приведено в четвертом разделе.

Кроме того, дано заключение и приведён список использованных источников.

1. Постановка задачи

1.1 Математическая модель задачи

Определение квадратной матрицы: квадратной матрицей n-го порядка называется матрица, состоящая из m строк и m столбцов. Главной диагональю квадратной матрицы называется диагональ, составленная из элементов a 11 a22 … amm .

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

Необходимый результат получается при суммировании элементов в следующем порядке: а21 + а31 + а32 +…+ аi1 + ai2 + ai3 + ai(j-1) – суммируются элементы, начиная со второй строки, и, при увеличении строки на 1, число столбцов, содержащих нужные элементы, также увеличивается на 1. В кратком виде этот цикл выглядит так: i=f…m, где начальное f=2; j=1…(m-b), где начальное b=m-1. При каждой последующей итерации значение f увеличивается на 1, а значение b на 1 уменьшается.

Сумму элементов диагонали матрицы можно получить при суммировании элементов, лежащих на пересечении одинаковых строки и столбца, т.е. если i=j.

1.2 Входные данные

В данном курсовом проекте к входным данным относится размерность квадратной матрицы (значение m).

Требования к входным данным:

  • значение m должно вводиться в числовой форме;
  • значение m должно быть целым, положительным числом больше нуля.

1.3 Выходные данные

К выходным данным относятся:

7 стр., 3308 слов

Программное обеспечение информационных технологий

... -технология CASE-технологии CASE-технологии Экспертные системы ?что будет, Примерами оболочек экспертных систем, применяемых в экономике, может служить Expert-Ease. Методо-ориентированное прикладное Методо-ориентированное прикладное программное обеспечение отличается тем, ...

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

Требования к выходным данным:

  • выходные данные выводятся в числовом виде.

1.4 Обработка ошибок

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

  • в поле ввода размерности матрицы вводится нечисловое значение. В этом случае появляется сообщение об ошибке, которое имеет вид, представленный на рисунке 1:

 обработка ошибок 1

Рисунок 1 — Сообщение об ошибке, в случае нечислового ввода размерности матрицы

  • в поле ввода вводится дробное числовое значение. В этом случае появляется сообщение об ошибке, которое имеет вид, представленный на рисунке 2:

 обработка ошибок 2

Рисунок 2 — Сообщение об ошибке, в случае ввода дробного значения размерности матрицы

  • в поле ввода вводится отрицательное число, либо число равное нулю. В этом случае появляется сообщение об ошибке, которое имеет вид, представленный на рисунке 3:

 обработка ошибок 3

Рисунок 3 — Сообщение об ошибке, в случае ввода отрицательного, либо нулевого значения размерности матрицы

После уведомления пользователя об ошибке поле ввода очищается, и курсор возвращается в это поле.

2. Проектирование программного модуля

2.1 Структурная диаграмма программного модуля

Программа имеет структуру, показанную на рисунке 4:

 структурная диаграмма программного модуля 1

Рисунок 4 — Структурная диаграмма программного модуля

В данной диаграмме UserForm_Initialize() – процедура инициализации пользовательской формы. CommandButton1_Click() – процедура, срабатывающая при нажатии кнопки «Заполнить матрицу», которая производит проверку правильности ввода размерности матрицы, заполнение матрицы и вывод её на пользовательскую форму. CommandButton2_Сlick() – процедура, срабатывающая при нажатии кнопки «Очистить», которая очищает форму. CommandButton3_Сlick() – процедура, срабатывающая при нажатии кнопки «Выйти», позволяющая пользователю завершить работу с программой. CommandButton4_Click() – процедура, срабатывающая при нажатии кнопки «О программе», которая даёт краткие сведения о программе и её разработчике. CommandButton5_Сlick() – процедура, срабатывающая при нажатии кнопки «Работать с Excel», позволяющая пользователю переключиться на работу с листом Excel. OptionButton1_Click() – процедура-переключатель, при выборе которого вычисляется сумма элементов, находящихся под главной диагональю. OptionButton2_Click() – процедура-переключатель, при выборе которого вычисляется сумма элементов, составляющих главную диагональ.

2.2 Разработка схемы программного модуля и ее описание

Блок-схема процедуры заполнения квадратной матрицы представлена на рисунке 5:

 разработка схемы программного модуля и ее описание 1

1

2

3

4

5

6

7

8

 разработка схемы программного модуля и ее описание 2

9

Рисунок 5 – Схема программного модуля (Заполнение матрицы)

Описание блок-схемы:

1 – ввод размера массива;

2 – проверка того, что введённый размер массива является числом;

3 – проверка того, что введённый размер массива является положительным числом, отличным от нуля;

4 – проверка того, что введённый размер массива является целым числом;

5 – задание динамического массива;

6 – цикл, который пробегает значения строк от 1 до заданного размера массива, с шагом равным по умолчанию 1;

7 – цикл, который пробегает значения столбцов от 1 до заданного размера массива, с шагом равным по умолчанию 1;

8 – тело цикла, которое заполняет массив случайными числами от 0 до 6;

9 – вывод результата в поле, предназначенное для вывода квадратной матрицы.

Блок-схема процедуры для первого переключателя представлена на рисунке 6:

 разработка схемы программного модуля и ее описание 3

1

2

3

4

5

6

Рисунок 6 – Схема программного модуля (первый переключатель)

Описание блок-схемы:

1 – задание начальных параметров для вычисления суммы элементов матрицы;

2 – цикл, который пробегает значения строк от f до заданного размера массива, с шагом равным по умолчанию 1;

3 – цикл, который пробегает значения столбцов от 1 до m-b, с шагом равным по умолчанию 1;

4 – вычисление суммы элементов, лежащих под главной диагональю;

5 – увеличение параметра f на 1 и уменьшение параметра b на 1, после окончания цикла для столбцов (блок 3), и переход к циклу для строк (блок 2);

6 – вывод результата в поле вывода суммы элементов.

Блок-схема процедуры для второго переключателя представлена на рисунке 7:

 разработка схемы программного модуля и ее описание 4

1

2

3

4

5

6

Рисунок 7 – Схема программного модуля (второй переключатель)

Описание блок-схемы:

1 – задание начальных параметров для вычисления суммы элементов матрицы;

2 – цикл, который пробегает значения строк от 1 до заданного размера массива, с шагом равным по умолчанию 1;

3 – цикл, который пробегает значения столбцов от 1 до заданного размера массива, с шагом равным по умолчанию 1;

4 – проверка условия i = j. В случае выполнения данного условия происходит переход к блоку 5, в противном случае – к блоку 3;

5 – вычисление суммы элементов, составляющих главную диагональю;

6 – вывод результата в поле вывода суммы элементов.

Блок-схема процедуры для работы с листом Excel представлена на рисунке 8:

 разработка схемы программного модуля и ее описание 5

1

2

3

4

5

6

7

8

9

 разработка схемы программного модуля и ее описание 6

10

11

12

13

14

15

16

17

18

19

20

 разработка схемы программного модуля и ее описание 7 21

Рисунок 8 – Схема программного модуля (Работа с листом Excel)

Описание блок-схемы:

1 – ввод размера массива;

2 – проверка того, что введённый размер массива является числом;

3 – проверка того, что введённый размер массива является положительным числом, отличным от нуля;

4 – проверка того, что введённый размер массива является целым числом;

5 – задание динамического массива;

6 – цикл, который пробегает значения строк от 1 до заданного размера массива, с шагом равным по умолчанию 1;

7 – цикл, который пробегает значения столбцов от 1 до заданного размера массива, с шагом равным по умолчанию 1;

8 – тело цикла, которое заполняет массив случайными числами от 0 до 6;

9 – вывод массива на лист Excel;

10 – задание начальных параметров для вычисления суммы элементов матрицы, расположенных под главной диагональю;

11 – цикл, который пробегает значения строк от f до заданного размера массива, с шагом равным по умолчанию 1;

12 – цикл, который пробегает значения столбцов от 1 до m-b, с шагом равным по умолчанию 1;

13 – вычисление суммы элементов, лежащих под главной диагональю;

14 – увеличение параметра f на 1 и уменьшение параметра b на 1, после окончания цикла для столбцов (блок 12), и переход к циклу для строк (блок 11);

15 – вывод суммы элементов, лежащих под главной диагональю на лист Excel;

16 – задание начальных параметров для вычисления суммы элементов матрицы, составляющих главную диагональ;

17 – цикл, который пробегает значения строк от 1 до заданного размера массива, с шагом равным по умолчанию 1;

18 – цикл, который пробегает значения столбцов от 1 до заданного размера массива, с шагом равным по умолчанию 1;

19 – проверка условия i = j. В случае выполнения данного условия происходит переход к блоку 5, в противном случае – к блоку 3;

20 – вычисление суммы элементов, составляющих главную диагональю;

21 – вывод суммы элементов, составляющих главную диагональ на лист Excel.

2.3 Разработка пользовательского интерфейса.

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

Интерфейс для программного модуля, разработанного в данном курсовом проекте представлен на рисунке 9:

 разработка схемы программного модуля и ее описание 8

 разработка схемы программного модуля и ее описание 9
 разработка схемы программного модуля и ее описание 10

Рисунок 9 — Вид пользовательской формы: 1 – поле для ввода размерности квадратной матрицы; 2 – поле для вывода суммы элементов матрицы, в зависимости от выбранного переключателя; 3 – переключатель, при выборе которого вычисляется сумма элементов матрицы, находящихся под главной диагональю; 4 – переключатель, при выборе которого вычисляется сумма элементов матрицы, составляющих главную диагональ; 5 – кнопка, при нажатии которой происходит заполнение матрицы; 6 – кнопка, которая осуществляет очистку всех полей формы; 7 – кнопка, осуществляющая выход из программы; 8 – кнопка, при нажатии которой появляется краткая информация о программе; 9 – кнопка, позволяющая пользователю переключиться на работу с листом Excel; 10 — поле для вывода заполненной матрицы

3. Реализация программного модуля

3.1 Код программы

Dim summa1 As Double

Dim summa2 As Double

Dim a() As Double

Dim m As Variant

‘задаём начальные параметры при инициализации формы:

Private Sub UserForm_Initialize()

Application.Visible = False

UserForm1.Caption = «Курсовой проект»

CommandButton1.Default = True

TextBox1.SetFocus

End Sub

‘процедура заполнения матрицы:

Private Sub CommandButton1_Click()

m = TextBox1.Text

If IsNumeric(TextBox1.Text) = False Then

MsgBox «Размерность матрицы должна задаваться числом», 16, «Ошибка ввода»

TextBox1.Text = «»

TextBox1.SetFocus

Exit Sub

End If

If m <= 0 Then

MsgBox «Размерность матрицы задаётся положительным числом отличным от нуля «, 16,

«Ошибка ввода»

TextBox1.Text = «»

TextBox1.SetFocus

Exit Sub

End If

m = CDbl(m)

If m <> Int(m) Then

MsgBox » Размерность матрицы должна задаваться целым числом «, 16, » Ошибка ввода »

TextBox1.Text = «»

TextBox1.SetFocus

Exit Sub

End If

ReDim a(1 To m, 1 To m)

For i = 1 To m

For j = 1 To m

a(i, j) = Int((7 * Rnd) + 0)

Next j

Next i

With ListBox1

ColumnCount = m

List = a

End With

End Sub

‘процедура очистки пользовательской формы:

Private Sub CommandButton2_Click()

OptionButton1.Value = False

OptionButton2.Value = False

TextBox1.Text = «»

TextBox2.Text = «»

ListBox1.Clear

TextBox1.SetFocus

End Sub

‘процедура выхода из программы:

Private Sub CommandButton3_Click()

UserForm1.Hide

Application.Quit

End Sub

‘ вызов краткой информации о программе:

Private Sub CommandButton4_Click()

MsgBox «Программа для заполнения случайными числами» & Chr(13) & _

«от 0 до 6 квадратной матрицы, размерностью» & Chr(13) & _

«задаваемой пользователем, и вычисления суммы» & Chr(13) & _

«элементов матрицы, в зависимости от выбрано-» & Chr(13) & _

«го переключателя.» & Chr(13) & _

» Разработчик: Логунов А.П..», 48, «О программе»

End Sub

‘процедура вычисления суммы элементов, расположенных под главной диагональю:

Private Sub OptionButton1_Click()

summa1 = 0

f = 2

b = m — 1

For i = f To m

For j = 1 To m — b

summa1 = summa1 + a(i, j)

Next j

f = f + 1

b = b — 1

Next i

TextBox2.Text = summa1

End Sub

‘процедура вычисления суммы элементов, составляющих главную диагональ:

Private Sub OptionButton2_Click()

summa2 = 0

For i = 1 To m

For j = 1 To m

If i = j Then

summa2 = summa2 + a(i, j)

End If

Next j

Next i

TextBox2.Text = summa2

End Sub

‘процедура для работы с Excel:

Private Sub CommandButton5_Click()

Application.Visible = True

Cells.Select

Selection.ClearContents

Range(«A1»).Select

UserForm1.Hide

m = InputBox(«Задайте размерность матрицы», «Окно ввода»)

If IsNumeric(m) = False Then

MsgBox «»Размерность матрицы должна задаваться числом», 16, «Ошибка ввода»

Exit Sub

End If

If m <= 0 Then

MsgBox «Размерность матрицы задаётся положительным числом отличным от нуля «, 16,

«Ошибка ввода»

Exit Sub

End If

m = CDbl(m)

If m <> Int(m) Then

MsgBox » Размерность матрицы должна задаваться целым числом «, 16, » Ошибка ввода »

Exit Sub

End If

Cells(5, 1) = «Матрица размерностью n=» & m & «:»

ReDim a(1 To m, 1 To m)

For i = 1 To m

For j = 1 To m

a(i, j) = Int((7 * Rnd) + 0)

Cells(i + 5, j) = a(i, j)

Next j

Next i

summa1 = 0

f = 2

b = m — 1

For i = f To m

For j = 1 To m — b

summa1 = summa1 + a(i, j)

Next j

f = f + 1

b = b — 1

Next i

Cells(2, 1) = «Сумма элементов под главной диагональю =» & summa1

summa2 = 0

For i = 1 To m

For j = 1 To m

If i = j Then

summa2 = summa2 + a(i, j)

End If

Next j

Next i

Cells(3, 1) = » Сумма элементов составляющих главную диагональ =» & summa2

Select Case MsgBox(«Вернуться к UserForm?», vbYesNo, «Окно возврата»)

Case vbYes

Application.Visible = False

TextBox1.SetFocus

UserForm1.Show

Case vbNo

End Select

End Sub

3.2 Описание использованных операторов и функций

Dim Имя_переменной As Тип_переменной – синтаксис описания типа переменной;

  • Private – указывает, что процедура Sub доступна для всех других процедур только того модуля, в котором она описана;
  • If Условие Then [Инструкция] [Else Инструкции_else] – оператор условного перехода.

Если условие принимает значение True, то выполняется инструкция Then, если False, то выполняется инструкция_else. Ветвь Else является необязательной;

  • IsNumeric(переменная) – функция, проверяющая является ли переменная числовым значением;
  • MsgBox (сообщение, [кнопка], [заголовок])- выводит на экран диалоговое окно, содержащее сообщение;
  • CDbl() – функция преобразования считываемых данных в числовой формат типа Double, т.к. числа, вводимые в текстовую область формы, воспринимаются как текст, а не как число.

Int() – функция, которая возвращает целые числовые значения;

  • ReDim <имя массива>(<задаётся размерность массива>
  • функция задания динамического массива;

For Счетчик = Начало To Конец [Step Шаг]

[Инструкции]

Next Счетчик – повторяет выполнение группы инструкций, пока Счетчик изменяется от начального значения до конечного с указанным шагом. Если шаг не указан, то он полагается равным 1;

  • Rnd – функция, которая служит для генерации случайных чисел;

With Объект

[инструкции]

End With – позволяет выполнить последовательность инструкций над Объектом не повторяя его имени;

  • ColumCount – устанавливает число столбцов в списке;
  • Clear – очистка;
  • SetFocus – возвращает курсор в указанное поле;
  • InputBox () – выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле;

Select Case Выражение

Case список выражений

[инструкции]

Case Else

[инструкции Else]

End Select – выполняет одну из нескольких групп инструкций в зависимости от некоторого выражения.

4. Тестирование программного модуля

Ниже приведён пример работы программного модуля. Для этого ввели в поле ввода размерность матрицы равную 5. При нажатии кнопки «Заполнить матрицу» в окне вывода появилось квадратная матрица пятого порядка, заполненная случайными числами от 0 до 6, что представлено на рисунке 10:

 тестирование программного модуля 1

Рисунок 10 — Вид пользовательской формы с заполненной матрицей

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

При нажатии кнопки «о программе» появляется сообщение с краткой информацией о программе.

При нажатии кнопки «Работать с Excel» появляется диалоговое окно, в котором задаётся размерность матрицы.

При нажатии кнопки «Оk» на листе Excel появляется результат, который представлен на рисунке 11:

 тестирование программного модуля 2

Рисунок 11 – Лист Excel с результатом

Диалоговое окно «окно возврата» позволяет пользователю вернуться к работе с пользовательской формой.

Как видно из приведенного примера программа является полностью работоспособной.

Заключение

В данном курсовом проекте с помощью языка программирования Visual Basic for Application был разработан программный модуль, который позволяет: задавать квадратную матрицу и программно заполнять её случайными числами от 0 до 6; вычислять сумму элементов находящихся под главной диагональю; вычислять сумму элементов составляющих главную диагональ. Был предусмотрен режим работы с листом Excel.

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

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

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

[Электронный ресурс]//URL: https://inzhpro.ru/kursovaya/razrabotka-programmnogo-modulya/

1. Гарнаев А.Ю. Самоучитель VBA. – СПб.: БХВ – Санкт-Петербург, 2000. – 512 с.

2. Гарнаев А.Ю. Самоучитель VBA. – СПб, БХВ – Санкт-Петербург, 2002.

3. MS OfficeXP: Разработка приложений / Под редакцией Ф.А. Новикова. СПб.: БХВ – Санкт-Петербург, 2003.