Рефетека.ру / Информатика и програм-ие

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

Кафедра «Автоматизированные системы управления»


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

по дисциплине ВТиП

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

Введение


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

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

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

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

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

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

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

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

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

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


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


Определение квадратной матрицы: квадратной матрицей n-го порядка называется матрица, состоящая из m строк и m столбцов. Главной диагональю квадратной матрицы называется диагональ, составленная из элементов a11 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 Выходные данные


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

- вывод заполненной матрицы на форму;

- вывод заполненной матрицы на лист Excel;

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

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

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

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


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


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

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


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

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


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

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

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


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


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

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


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

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


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


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


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


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


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


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

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

1


2


3


4


5


6

7

8


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

9


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


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

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

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

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

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

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

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

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

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

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

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


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:


1


2

3

4


5


6


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


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

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

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

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

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

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

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

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

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


1


2


3


4


5


6


7


8


9


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

10


11


12


13


14


15


16


17

18


19


20


Разработка программного модуля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:

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

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

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

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

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

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

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


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

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

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

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


Рисунок 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:

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


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


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

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

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

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


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

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


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

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

Заключение


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

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

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

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


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

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

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

Похожие работы:

  1. Определение трудозатрат на разработку программных модулей
  2. • Проект программного модуля для нахождения ...
  3. • Проект программного модуля для нахождения корня ...
  4. • Разработка специализированного программного ...
  5. • Разработка геоинформационной системы
  6. • Технологическая реализация системы подготовки ...
  7. • Разработка программного модуля для нахождения ...
  8. • Программирование
  9. • Разработка программного обеспечения
  10. • Программное обеспечение управления ...
  11. • Разработка программного обеспечения для ...
  12. • Анализ системы автоматизации розничной торговли
  13. • Автоматизация работы отдела планирования компании ...
  14. • Программы системы 1С: Предприятие. Конфигурирование и ...
  15. • Реализация класса для работы с комплексными числами
  16. • Лекции по высокоуровневым методам информатики и ...
  17. • "1С-Предприятие" и другие компьютерные системы учета ...
  18. • Автоматизированная система изучения тепловых режимов ...
  19. • Автоматизация расчета налоговых платежей
Рефетека ру refoteka@gmail.com