курсовые,контрольные,дипломы,рефераты
Кафедра «Автоматизированные системы управления»
Курсовая работа
по дисциплине ВТиП
Разработка программного модуля
Введение
Целью данной курсовой работы является разработка программного модуля, с помощью которого можно задать размерность квадратной матрицы, заполнить матрицу случайными целыми числами от 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.
Кафедра «Автоматизированные системы управления» Курсовая работа по дисциплине ВТиП Разработка программного модуля Введение Целью данной курсовой работы является разработка про
Разработка программного обеспечения для нахождения корней биквадратного уравнения
Разработка программного обеспечения для решения уравнений с одной переменной методом Ньютона (касательных)
Разработка программного обеспечения определения стоимости почтового тарифа пересылки бандероли наложенным платежом
Разработка программного обеспечения по управлению базой данных "График учета рабочего времени на шахте"
Разработка программного приложения с использованием интерфейса Windows API
Разработка программного продукта на языке высокого уровня
Разработка программного продукта на языке высокого уровня
Разработка программной системы для работника деканата
Разработка программных продуктов
Разработка программы Helpopr
Copyright (c) 2024 Stud-Baza.ru Рефераты, контрольные, курсовые, дипломные работы.