Проектирование программного модуля для создания прямоугольной матрицы с заданными числом строк и столбцов

Разработка структурной диаграммы программного модуля. Представление схемы для основных расчетов выбранного приложения для создания прямоугольной матрицы. Особенности создания пользовательского интерфейса. Тестирование и отладка спроектированного модуля.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.