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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    214,1 Кб
  • Опубликовано:
    2015-05-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Введение

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

1)       вычислить минимальный по модулю элемент побочной диагонали;

2)       вычислить максимальное из чисел, встречающихся в заданной матрице более одного раза;

)         Упорядочить матрицу по убыванию модулей элементов

Ввод исходных данных осуществляется с использованием окна диалога в пользовательской форме и листа Excel. Для вывода результатов вычислений предусмотрены различные способы - на рабочие листы и пользовательскую форму.

Выполнение работы предусматривает четыре раздела.

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

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

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

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

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.

.2 Входные данные

число строк матрицы;

число столбцов матрицы;

элементы матрицы.

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

- предусмотрена проверка на допустимость исходных данных и повторение ввода при ошибочных данных;

ввод исходных данных осуществлено в соответствующие ячейки листа Excel и поля ввода формы;

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

.3 Выходные данные

Произведение элементов массива с четными номерами;

Сумма элементов массива, расположенных между первым и последним положительными элементами;

Преобразованная матрица.

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

Запрещен доступ к выходным данным пользователю;

Предусмотреть вывод данных на лист Excel и на форму.

.4 Обработка ошибок

Для проверки ввода исходных данных используется Метод OnKey, который устанавливает выполнение процедуры при нажатии заданной комбинации клавиш. Пользователь не может нажать ни одну клавишу кроме цифровых.

Неправильный ввод исходных данных сопровождается сообщением об ошибке, завершением процедуры и переносом курсора в начальную ячейку ввода данных. Только после ввода данных и подтверждения, путем нажатия на кнопку, пользователь имеет возможность выполнять следующие действия.

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 Структурная диаграмма программного модуля

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

Второй уровень:- пользовательская форма с текстовыми полями для ввода и вывода данных и девятью кнопками.

Лист1 - Лист Excel на котором отображаются исходные данные, а также имеется кнопка вызова пользовательской формы.

Третий уровень состоит из процедур, которые вызываются теми или иными событиями, связанными с элементами UserForm1 и Лист1.

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

_Click() - процедура, срабатывающая при нажатии кнопки "Заполнить". Процедура предназначена для заполнения элементов матрицы случайными числами._Click() - процедура, срабатывающая при нажатии кнопки "Заполнить" и осуществляет заполнения элементов матрицы числами с листа Excel._Click() - процедура, срабатывающая при нажатии кнопки "Ок", которая осуществляет ввод размерности массива._Click() - процедура выполняет первое задание._Click() - процедура выполняет второе задание._Click() - процедура выполняет третье задание._Click() - процедура, срабатывающая при нажатии кнопки "Очистить", которая осуществляет очистку полей Excel и пользовательской формы._Click() - процедура, срабатывающая при нажатии кнопки "Выход" и осуществляет выход из программы._KeyPress - процедура перехвата нажатий клавиш, вводимых в элемент управления TextBox1._KeyPress - процедура перехвата нажатий клавиш, вводимых в элемент управления TextBox2._Click() - процедура, срабатывающая при выборе способа заполнения массива._Click() - процедура, срабатывающая при выборе способа заполнения массива._Click() - процедура перехода на лист Excel_Initialize() - процедура загрузки пользовательской формы.

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

В соответствии с представленным описанием была разработана пользовательская форма, представленная на рисунке 5.

Рисунок 5 - Пользовательская форма

Форма сформирована с помощью следующих элементов управления:1 и TextBox 2 - поля для ввода числа столбцов и числа столбцов матрицы;- переключатели, при выборе которых, пользователь выбирает способ вывод исходных данных.- кнопки для реализации действий пользователя.- поля для ввода исходного и преобразованных массивов- используется для объединения элементов в группы- используется для организации надписей на форме и для вывода результата первого и второго задания.

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

Все поля на пользовательской форме и на листе Excel можно очистись в любой момент и начать заново расчет.

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

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

.1 Код программы

‘Глобальное описание переменных

n As Integer, m As Integeri As Integer, j As Integermas() As Integer, t() As Integermin As Integer

Процедура выхода на лист Excel

Sub CommandButton10_Click().Visible = True.HideSub

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

Sub CommandButton3_Click()OptionButton7.Value = True Thenmas(1 To n, 1 To m) As Integer= "40;"i = 1 To nj = 1 To m(i, j) = Int((Rnd() * (-20)) + 10)(i, j).Value = mas(i, j)j= s + liListBox1

ColumnCount = m= s= mas

End WithIf.Enabled = True.Enabled = True.Enabled = TrueSub

Очистка пользовательской формы и листа

Sub CommandButton4_Click()("Лист1").Cells = Clear("Лист2").Cells = Clear.Enabled = False.Enabled = False.Enabled = False.Enabled = False.Enabled = False.Enabled = False.Caption = " ".Caption = " ".Enabled = True.Enabled = True.Text = " ".Text = " ".Value = False.Value = False.Enabled = True.List = Array(" ").List = Array(" ").SetFocusSub

Определение размерности массива

программный модуль матрица интерфейс

Private Sub CommandButton5_Click()

If TextBox1.Text = "" Or TextBox2.Text = "" Then.Enabled = False"А размерность массива где?!", vbCritical, "!".SetFocusSub.Enabled = True= TextBox1.Text= TextBox2.TextIf.Enabled = False.Enabled = False

End Sub

Процедура обработки ошибок ввода элементов массива на лист Excel

Private Sub CommandButton6_Click()mas(1 To n, 1 To m)= "40;"i = 1 To nj = 1 To mIsNumeric(Cells(i, j)) ThenCells(i, j) < 256 Then(i, j) = Worksheets(1).Cells(i, j)

Else: MsgBox "Вы ввели очень большое число" & Chr(10) & "попробуйте снова", vbCritical, "Ошибка"

Application.Visible = True.HideFor

End If: MsgBox "Введение буквенных символов недопустимо!!!" & Chr(10) & "Попробуйте снова", vbCritical, "Ошибка"

Application.Visible = True.HideForIfj= s + liListBox1

.ColumnCount = m

.ColumnWidths = s

.List = masWith.Enabled = True.Enabled = True

CommandButton9.Enabled = TrueSub

Процедура минимальный элемент по модулю элемент побочной диогонали

Private Sub CommandButton7_Click()min As Integersa As String= 1000i = 1 To nj = 1 To mi + j = n + 1 ThenAbs(mas(i, j)) < min Then= Abs(mas(i, j))IfIfji.Caption = ("= " & min)

Cells(n + 6, 1) = "минимальное число=" & minEnd Sub

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

Private Sub CommandButton8_Click()max As Integerg As Integersum As Integert(1 To (n * m)) As Integer= -1000i = 1 To nj = 1 To m= p + 1(p) = mas(i, j)i = 1 To pj = 1 To pt(i) = t(j) Then= sum + 1Ifsum >= 2 Thent(i) > max Then= t(i)IfIf= 0

Next.Caption = ("= " & max)(n + 7, 1) = "вычислить максимальное из чисел, встречающихся в заданной матрице более одного раза=" & maxSub

Процедура упорядочить матрицу по убыванию модулей элементов

Private Sub CommandButton9_Click()q As Integerw As Integer, e As Integert1(1 To (n * m))i = 1 To nj = 1 To m= w + 1(w) = mas(i, j)("Лист2").Cells(w, 8) = t1(w)jii = 1 To n * mj = 1 To n * mt1(i) > t1(j) Then= t1(i): t1(i) = t1(j): t1(j) = eIfw = 1 To n * m("Лист2").Cells(w, 11) = t1(w)= 0i = 1 To nj = 1 To m= q + 1(i, j) = Worksheets("Лист2").Cells(q, 11)("Лист2").Cells(i + 9, j) = mas(i, j)= s + l:ListBox2

.ColumnCount = m

.ColumnWidths = s

.List = mas

End WithEnd Sub

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

Private Sub OptionButton7_Click().Enabled = True

CommandButton6.Enabled = FalseSub

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

Private Sub TextBox1_KeyPress(ByVal KeyAscii _MSForms.ReturnInteger)KeyAscii < "48" Or KeyAscii > "57" Then

MsgBox "Недопустимый символ!", vbCritical, "Вводите только цифры!!!!!"

KeyAscii = 0IfSubSub TextBox2_KeyPress(ByVal KeyAscii _MSForms.ReturnInteger)KeyAscii < "48" Or KeyAscii > "57" Then

MsgBox "Недопустимый символ!", vbCritical, "Вводите только цифры!!!!!"= 0IfSub

Процедура начальной загрузки формы

Private Sub UserForm_Initialize().Enabled = False.Enabled = False.Enabled = False.Enabled = False.Enabled = False

CommandButton9.Enabled = FalseSub

Процедура открытия формы и скрытия рабочей книги.

Private Sub Workbook_Open().Visible = False.ShowSub

Процедура выхода

Sub CommandButton2_Click().Quit

UserForm1.HideSub


В программе использованы следующие функции:(1).Cells (1, 1).Value = "" - оператор присваивания значения ячейки листа Excel;…Then…Else…End If - условный оператор, который позволяет выбирать и выполнять действия в зависимости от истинности некоторого условия;…Next - оператор цикла с параметром, который позволяет повторять группу операторов заданное число раз;(…) - логическая функция проверки типа данных. Позволяют узнать, является ли переменная числовым значением;, CInt, CLng, CStr - переход от данного типа к указанному (соответственно Double, Long, Integer, String).Quit - функция выхода из программы

Событие KeyPress используется для перехвата нажатий клавиш, вводимых в элемент управления. Оно позволяет немедленно проверять достоверность нажатой клавиши, а также форматировать символы в процессе набора.

Процедура MsgBox - выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис:

(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 с.

. Галинская И.Г. и др. Вычислительная техника и программирование. - ГУВПО "Белорусско-Российский Университет", 2004 - 42 с.: ил.

. ГОСТ 2.105-95. Единая система конструкторской документации. Общие требования к текстовым документам.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!