Проектирование программного модуля для создания прямоугольной матрицы с заданными числом строк и столбцов
Разработка структурной диаграммы программного модуля. Представление схемы для основных расчетов выбранного приложения для создания прямоугольной матрицы. Особенности создания пользовательского интерфейса. Тестирование и отладка спроектированного модуля.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.05.2015 |
Размер файла | 648,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Целью курсовой работы является создание приложения, с помощью которого можно создать прямоугольную матрицу с заданными числом строк и столбцов, и выполнять следующее действия:
1) вычислить минимальный по модулю элемент побочной диагонали;
2) вычислить максимальное из чисел, встречающихся в заданной матрице более одного раза;
3) Упорядочить матрицу по убыванию модулей элементов
Ввод исходных данных осуществляется с использованием окна диалога в пользовательской форме и листа Excel. Для вывода результатов вычислений предусмотрены различные способы - на рабочие листы и пользовательскую форму.
Выполнение работы предусматривает четыре раздела.
В первом разделе, который называется "Постановка задачи", приводится математические модели задач, здесь же оговариваются входные и выходные данные, и проводится обработка ошибок.
Во втором разделе, "Проектирование программного модуля", отображаются структурные диаграммы программных модулей, разрабатываются схемы программных модулей и пользовательский интерфейс.
В разделе "Реализация программного модуля" записан код программы, описание используемых операторов и функции.
Тестирование программных модулей осуществится в четвертом разделе.
1. Постановка задачи
1.1 Математическая (логическая) модель
Массив - совокупность однотипных элементов данных (чисел, логических данных, символов), которой при обработке присвоено определенное имя. Массивы бывают статические и динамические. Статическими называются массивы, количество элементов в которых заранее известно и не изменяется в ходе выполнения программы. Динамические массивы - массивы, в которых либо не известно начальное количество элементов, либо размерность массива (количество элементов) изменяется при выполнении программы.
Каждый элемент массива имеет свою координату: от i до n и j от до m. Для работы с ними стоит лишь менять координаты элемента массива для вызова значения массива. К примеру для полной проверки массива начинают проверку с i=1, j =1. Далее увеличиваем i до значения n. Когда i становится равным n, i сбрасывается на 1 а к j прибавляется 1. Так происходит до тех пор, пока j не становится равной m.
В данной программе использовались логические модели решения задач.
Алгоритм реализации первой задачи: сначала мы находим элементы побочного диогонала по формуле i+j=n+1 и на ходим минимальный элемент по модулю.
Значение выводится на пользовательскую форму и на лист Excel.
Алгоритм реализации второй задачи: найти повторящих боле одного раза и среди них находим максималную по числу.
Значение выводится на пользовательскую форму.
Алгоритм реализации третьей задачи: Двумерный массив преобразуется в одномерный. Затем, в одномерном массиве преобразуются элементы по заданию. Затем одномерный массив преобразуется в преобразованный двумерный и успешно выводится на пользовательскую форму и на рабочий лист Excel.
1.2 Входные данные
- число строк матрицы;
- число столбцов матрицы;
- элементы матрицы.
Требования к входным данным.
- предусмотрена проверка на допустимость исходных данных и повторение ввода при ошибочных данных;
- ввод исходных данных осуществлено в соответствующие ячейки листа Excel и поля ввода формы;
- ограничений на значения размерности матрицы - только целые положительные числа, начиная с двух.
1.3 Выходные данные
- Произведение элементов массива с четными номерами;
- Сумма элементов массива, расположенных между первым и последним положительными элементами;
- Преобразованная матрица.
Требования к выходным данным.
- Запрещен доступ к выходным данным пользователю;
- Предусмотреть вывод данных на лист Excel и на форму.
1.4 Обработка ошибок
Для проверки ввода исходных данных используется Метод OnKey, который устанавливает выполнение процедуры при нажатии заданной комбинации клавиш. Пользователь не может нажать ни одну клавишу кроме цифровых.
Неправильный ввод исходных данных сопровождается сообщением об ошибке, завершением процедуры и переносом курсора в начальную ячейку ввода данных. Только после ввода данных и подтверждения, путем нажатия на кнопку, пользователь имеет возможность выполнять следующие действия.
2. Проектирование программного модуля
2.1 Разработка алгоритма программного модуля и ее описании
Рисунок 2 - Блок-схема определения произведения элементов массива с четными номерами
Блок 1 - определение первоначального значения произведения;
Блок 2, 3 - организация цикла двумерного массива;
Блок 4 - определение побочной диогонали массива.
Блок 5,6 - определение минималного элемента массива
Блок 7 - вывод результат
Рисунок 3 - Блок-схема определения суммы элементов массива, расположенных между первым и последним положительными элементами
Блок 1, 2 - Организация циклов.
Блок 3 - счетчик для организации одномерного массива
Блок 4 - присвоение элементов матрицы одномерному массиву
Блок 5,6 - Организация циклов
Блок 7 -сравниваем массив
Блок 8 - счетчик для повторяющих элементов массива
Блок 9- проверка счетчик
Блок 10 определение максимального элемента среди повторяющих массива
Блок 11 - аннулирование счетчика
Блок 12 - вывод результат
Рисунок 4, Лист 1 - Блок-схема преобразования массива
Рисунок 4 Лист 2 - Блок-схема преобразования массива
Блок 1-4 - Организация двойного цикла формирования одномерного массива.
Блок 5-8 - Упорядочить матрицу по убыванию модулей элементов дномерном массиве.
Блок 9-10 - вывод результат
Блок 11-13 - Организация двойного цикла для формирования двумерной матрицы из одномерного.
Блок 14- Вывод элементов двумерного массива.
2.2 Структурная диаграмма программного модуля
Программа будет иметь структуру, изображённую на рисунке 1.
Структурная диаграмма включает три уровня. Первый уровень - рабочая книга и пользовательская форма.
Второй уровень:
UserForm1 - пользовательская форма с текстовыми полями для ввода и вывода данных и девятью кнопками.
Лист1 - Лист Excel на котором отображаются исходные данные, а также имеется кнопка вызова пользовательской формы.
Третий уровень состоит из процедур, которые вызываются теми или иными событиями, связанными с элементами UserForm1 и Лист1.
Рисунок 1 - Структурная диаграмма программного модуля
CommandButton3_Click() - процедура, срабатывающая при нажатии кнопки "Заполнить". Процедура предназначена для заполнения элементов матрицы случайными числами.
CommandButton6_Click() - процедура, срабатывающая при нажатии кнопки "Заполнить" и осуществляет заполнения элементов матрицы числами с листа Excel.
CommandButton5_Click() - процедура, срабатывающая при нажатии кнопки "Ок", которая осуществляет ввод размерности массива.
CommandButton7_Click() - процедура выполняет первое задание.
CommandButton8_Click() - процедура выполняет второе задание.
CommandButton9_Click() - процедура выполняет третье задание.
CommandButton4_Click() - процедура, срабатывающая при нажатии кнопки "Очистить", которая осуществляет очистку полей Excel и пользовательской формы.
CommandButton2_Click() - процедура, срабатывающая при нажатии кнопки "Выход" и осуществляет выход из программы.
TextBox1_KeyPress - процедура перехвата нажатий клавиш, вводимых в элемент управления TextBox1.
TextBox2_KeyPress - процедура перехвата нажатий клавиш, вводимых в элемент управления TextBox2.
OptionButton6_Click() - процедура, срабатывающая при выборе способа заполнения массива.
OptionButton7_Click() - процедура, срабатывающая при выборе способа заполнения массива.
CommandButton10_Click() - процедура перехода на лист Excel
UserForm_Initialize() - процедура загрузки пользовательской формы.
2.3 Разработка пользовательского интерфейса
В соответствии с представленным описанием была разработана пользовательская форма, представленная на рисунке 5.
Рисунок 5 - Пользовательская форма
Форма сформирована с помощью следующих элементов управления:
TextBox 1 и TextBox 2 - поля для ввода числа столбцов и числа столбцов матрицы;
OptionButton - переключатели, при выборе которых, пользователь выбирает способ вывод исходных данных.
CommandButton - кнопки для реализации действий пользователя.
ListBox - поля для ввода исходного и преобразованных массивов
Frame2 - используется для объединения элементов в группы
Label - используется для организации надписей на форме и для вывода результата первого и второго задания.
При начальном запуске программы на экране появляется форма, в которой доступны только два поля ввода размерности матрицы. Рабочий лист Excel скрыт. Как только ввод размерности подтверждается нажатием кнопки, становится доступным выбор способа заполнения массива.
Все поля на пользовательской форме и на листе Excel можно очистись в любой момент и начать заново расчет.
Вывод результатов вычислений можно просмотреть и на листе Excel. Для этого необходимо нажать соответствующую кнопку на пользовательской форме. Чтобы вернуться на форму, на листе расположена кнопка возврата.
3. Реализация программного модуля
3.1 Код программы
`Глобальное описание переменных
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer
Dim mas() As Integer, t() As Integer
Dim min As Integer
Процедура выхода на лист Excel
Private Sub CommandButton10_Click()
Application.Visible = True
UserForm1.Hide
End Sub
Процедура заполнения массива случайными числами
Private Sub CommandButton3_Click()
If OptionButton7.Value = True Then
ReDim mas(1 To n, 1 To m) As Integer
Randomize
l = "40;"
For i = 1 To n
For j = 1 To m
mas(i, j) = Int((Rnd() * (-20)) + 10)
Cells(i, j).Value = mas(i, j)
Next j
s = s + l
Next i
With ListBox1
ColumnCount = m
ColumnWidths = s
List = mas
End With
End If
CommandButton7.Enabled = True
CommandButton8.Enabled = True
CommandButton9.Enabled = True
End Sub
Очистка пользовательской формы и листа
Private Sub CommandButton4_Click()
Worksheets("Лист1").Cells = Clear
Worksheets("Лист2").Cells = Clear
Frame2.Enabled = False
CommandButton7.Enabled = False
CommandButton8.Enabled = False
CommandButton9.Enabled = False
CommandButton6.Enabled = False
CommandButton3.Enabled = False
Label6.Caption = " "
Label7.Caption = " "
TextBox1.Enabled = True
TextBox2.Enabled = True
TextBox1.Text = " "
TextBox2.Text = " "
OptionButton6.Value = False
OptionButton7.Value = False
CommandButton5.Enabled = True
ListBox1.List = Array(" ")
ListBox2.List = Array(" ")
TextBox1.SetFocus
End Sub
Определение размерности массива
программный модуль матрица интерфейс
Private Sub CommandButton5_Click()
If TextBox1.Text = "" Or TextBox2.Text = "" Then
Frame2.Enabled = False
MsgBox "А размерность массива где?!", vbCritical, "!"
TextBox1.SetFocus
Exit Sub
Else
Frame2.Enabled = True
n = TextBox1.Text
m = TextBox2.Text
End If
TextBox1.Enabled = False
TextBox2.Enabled = False
End Sub
Процедура обработки ошибок ввода элементов массива на лист Excel
Private Sub CommandButton6_Click()
ReDim mas(1 To n, 1 To m)
l = "40;"
For i = 1 To n
For j = 1 To m
If IsNumeric(Cells(i, j)) Then
If Cells(i, j) < 256 Then
mas(i, j) = Worksheets(1).Cells(i, j)
Else: MsgBox "Вы ввели очень большое число" & Chr(10) & "попробуйте снова", vbCritical, "Ошибка"
Application.Visible = True
UserForm1.Hide
Exit For
End If
Else: MsgBox "Введение буквенных символов недопустимо!!!" & Chr(10) & "Попробуйте снова", vbCritical, "Ошибка"
Application.Visible = True
UserForm1.Hide
Exit For
End If
Next j
s = s + l
Next i
With ListBox1
.ColumnCount = m
.ColumnWidths = s
.List = mas
End With
CommandButton7.Enabled = True
CommandButton8.Enabled = True
CommandButton9.Enabled = True
End Sub
Процедура минимальный элемент по модулю элемент побочной диогонали
Private Sub CommandButton7_Click()
Dim min As Integer
Dim sa As String
min = 1000
For i = 1 To n
For j = 1 To m
If i + j = n + 1 Then
If Abs(mas(i, j)) < min Then
min = Abs(mas(i, j))
End If
End If
Next j
Next i
Label6.Caption = ("= " & min)
Cells(n + 6, 1) = "минимальное число=" & minEnd Sub
Процедура вычислить максимальное из чисел, встречающихся в заданной матрице более одного раза;
Private Sub CommandButton8_Click()
Dim max As Integer
Dim g As Integer
Dim sum As Integer
ReDim t(1 To (n * m)) As Integer
max = -1000
For i = 1 To n
For j = 1 To m
p = p + 1
t(p) = mas(i, j)
Next
Next
For i = 1 To p
For j = 1 To p
If t(i) = t(j) Then
sum = sum + 1
End If
Next
If sum >= 2 Then
If t(i) > max Then
max = t(i)
End If
End If
sum = 0
Next
Label7.Caption = ("= " & max)
Cells(n + 7, 1) = "вычислить максимальное из чисел, встречающихся в заданной матрице более одного раза=" & max
End Sub
Процедура упорядочить матрицу по убыванию модулей элементов
Private Sub CommandButton9_Click()
Dim q As Integer
Dim w As Integer, e As Integer
ReDim t1(1 To (n * m))
For i = 1 To n
For j = 1 To m
w = w + 1
t1(w) = mas(i, j)
Worksheets("Лист2").Cells(w, 8) = t1(w)
Next j
Next i
For i = 1 To n * m
For j = 1 To n * m
If t1(i) > t1(j) Then
e = t1(i): t1(i) = t1(j): t1(j) = e
End If
Next
Next
For w = 1 To n * m
Worksheets("Лист2").Cells(w, 11) = t1(w)
Next
q = 0
For i = 1 To n
For j = 1 To m
q = q + 1
mas(i, j) = Worksheets("Лист2").Cells(q, 11)
Worksheets("Лист2").Cells(i + 9, j) = mas(i, j)
Next
s = s + l:
Next
With ListBox2
.ColumnCount = m
.ColumnWidths = s
.List = mas
End WithEnd Sub
Процедура доступа к кнопкам выбора заполнения массива
Private Sub OptionButton7_Click()
CommandButton3.Enabled = True
CommandButton6.Enabled = False
End Sub
Процедуры ограничения ввода в текстовые поля
Private Sub TextBox1_KeyPress(ByVal KeyAscii _
As MSForms.ReturnInteger)
If KeyAscii < "48" Or KeyAscii > "57" Then
MsgBox "Недопустимый символ!", vbCritical, "Вводите только цифры!!!!!"
KeyAscii = 0
End If
End Sub
Private Sub TextBox2_KeyPress(ByVal KeyAscii _
As MSForms.ReturnInteger)
If KeyAscii < "48" Or KeyAscii > "57" Then
MsgBox "Недопустимый символ!", vbCritical, "Вводите только цифры!!!!!"
KeyAscii = 0
End If
End Sub
Процедура начальной загрузки формы
Private Sub UserForm_Initialize()
Frame2.Enabled = False
CommandButton3.Enabled = False
CommandButton6.Enabled = False
CommandButton7.Enabled = False
CommandButton8.Enabled = False
CommandButton9.Enabled = False
End Sub
Процедура открытия формы и скрытия рабочей книги.
Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show
End Sub
Процедура выхода
Private Sub CommandButton2_Click()
Application.Quit
UserForm1.Hide
End Sub
3.2 Описание использованных операторов и функций
В программе использованы следующие функции:
Worksheets (1).Cells (1, 1).Value = "" - оператор присваивания значения ячейки листа Excel;
If…Then…Else…End If - условный оператор, который позволяет выбирать и выполнять действия в зависимости от истинности некоторого условия;
For…Next - оператор цикла с параметром, который позволяет повторять группу операторов заданное число раз;
IsNumeric(…) - логическая функция проверки типа данных. Позволяют узнать, является ли переменная числовым значением;
CDbl, CInt, CLng, CStr - переход от данного типа к указанному (соответственно Double, Long, Integer, String)
Application.Quit - функция выхода из программы
Событие KeyPress используется для перехвата нажатий клавиш, вводимых в элемент управления. Оно позволяет немедленно проверять достоверность нажатой клавиши, а также форматировать символы в процессе набора.
Процедура MsgBox - выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис:
MsgBox(prompt[, buttons] [, title])
В программе использованы следующие операторы:
"/" - деление;
"*" - умножение;
"+" - сложение;
"-" - вычитание;
"^" - возведение в степень.
4. Тестирование программного модуля
Для тестирования программного модуля, введу размерность массива 4*4, выбираю способ заполнения случайными числами и получаю результат, представленный на рисунке 6. Результат вывод данных на листе Excel, представлен на рисунке 7.
Во втором тестировании выбираю способ заполнения - через ячейки Excel, перехожу на лист и ввожу неверные данные. Это видно на рисунке 8. После этого появляется окно сообщения об ошибке ввода данных, представленное на рисунке 9. И только после верного ввода программа продолжит работу. На рисунке 10 представлен еще один результат выполнения программы.
Рисунок 6 - Тестирование программы
Рисунок 7 - Тестирование программы
Рисунок 8 - Тестирование программы. Неверный ввод данных на листе Excel.
Рисунок 9- Сообщение об ошибке
Рисунок 10- Тестирование программы
Заключение
В ходе проекта была разработана логическая модель задачи для выполнения трех заданий курсовой работы, разработана структурная диаграмма программного модуля, представлены схемы для основных расчетов программного модуля, разработан пользовательский интерфейс, реализован программный модуль, произведены ее тестирование и отладка.
Тестирование показало, что задача курсовой работы выполняется в полном объеме и в соответствии с заданием.
Список использованных источников
1. Мантуров О.В. Курс высшей математики, учеб. Для вузов.- М.: Высш. шк., 1991. - 448 с.: ил.
2. Быкадоров Ю.А. Информатика и вычислительная математика. - Мн.: Нар. Асвета, 1997. - 98 с.
3. Браун С. Б87 Visual Basic 6: учебный курс - СПб: ЗАО Издательство "Питер", 1999. - 584 с.: ил.
4. Симонович С.В. и др. Информатика. Базовый курс - Спб: Питер, 2000 - 604 с.
5. Галинская И.Г. и др. Вычислительная техника и программирование. - ГУВПО "Белорусско-Российский Университет", 2004 - 42 с.: ил.
6. ГОСТ 2.105-95. Единая система конструкторской документации. Общие требования к текстовым документам.
Размещено на Allbest.ru
Подобные документы
Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Структурная диаграмма программного модуля. Нахождение суммы элементов, находящихся над главной диагональю. Реализация программного модуля: код программы; описание использованных операторов и функций. Особенности тестирования программного модуля.
курсовая работа [146,6 K], добавлен 01.09.2010Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Проектирование программного модуля. Описание схемы программы и структуры разрабатываемого пакета. Написание кода ввода исходных данных и основных расчетов. Тестирование программного модуля. Тестирование решения задачи. Методы численного интегрирования.
курсовая работа [549,9 K], добавлен 20.03.2014Основные стадии разработки, принципы тестирования и отладка программного модуля "VFS". Особенности проектирования на языке UML. Методы "грубой силы" и их применение при отладке программы. Вредные факторы, присутствующие на рабочем месте программиста.
дипломная работа [827,0 K], добавлен 07.03.2012Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.
дипломная работа [3,2 M], добавлен 27.10.2017Создание программного модуля, выполненного на языке программирования VBA (Visual Basic for Applications) и позволяющего во введенном массиве символов удалить все повторные вхождения этих символов. Разработка пользовательского интерфейса. Код программы.
курсовая работа [317,4 K], добавлен 11.10.2012Проектирование модуля регистрации документов. Анализ предметной области, спецификация требований. Построение диаграммы прецедентов Анализ архитектуры модуля в "OpenText Content Server 16.2". Разработка программы регистрации документов, ее тестирование.
дипломная работа [1,9 M], добавлен 25.08.2017Разработка структурной схемы и алгоритма функционирования микропроцессорного модуля программного обеспечения автоматизированной информатизационно-измерительной системы. Характеристика принципиальной схемы модуля, распределения памяти и задание портов.
курсовая работа [1,2 M], добавлен 28.08.2012Разработка структурной диаграммы программного модуля для целочисленного решения задачи линейного программирования с использованием симплекс-метода. Краткое описание всех уровней диаграммы с назначением всех ее блоков. Язык программирования Visual C#.
курсовая работа [874,7 K], добавлен 27.02.2013