Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
06.11.2017
Размер:
1.71 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СВЯЗИ И ИНФОРМАТИКИ

Кафедра информатики

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

по теме: «5.1. Стандартные модули и модульная структура приложений в VB»

Задание

1. Выбрать вариант задания из таблицы 5.1-1 в соответствии с указанием преподавателя, а также, по указанию преподавателя, студент выбирает варианты реализации проекта: со стандартным модулем и двумя формами и вводом с клавиатуры; со стандартным модулем и двумя формами и вводом из файла.

2. Провести формализацию задачи, для чего необходимо:

• определить перечень исходных данных и предусмотреть для них проверку правильности ввода;

• представить смысловые данные, которые будут использоваться в ходе решения задачи в виде переменных и массивов, присвоив им соответствующие имена;

• определить размерности и типы используемых данных;

• представить выходные данные в виде массивов;

• привести геометрическую иллюстрацию решения задачи;

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

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

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

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

4. Составить общую (укрупненную) схему алгоритма решения задачи.

5. Составить схемы алгоритмов решения функциональных задач с учетом того, что они будут реализованы в виде процедур с параметрами.

6. Создать программный код проекта, реализующий поставленную задачу.

Графический интерфейс

Программный код Form 1

'на этой форме вводятся и выводятся исходные данные о кандидатах

Option Strict On

Public Class Form1

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

Public Sub vvod(ByVal n As Integer, ByVal m As Integer, _

ByRef okr() As String, ByRef part() As String, ByRef oc(,) As Integer)

Dim i, j As Integer

For i = 0 To n - 1

part(i) = InputBox("Введите название партии")

Next

For j = 0 To m - 1

okr(j) = InputBox("Введите название округа")

For i = 0 To n - 1

oc(i, j) = CInt(InputBox("Сколько голосов набрал кандидат от партии " + part(i) + " в округе " + okr(j)))

Next i

Next j

End Sub

'кнопка для ввода с клавиатуры

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) _

Handles Button1.Click

Dim s As String = ""

n = CInt(InputBox("Введите количество партий"))

m = CInt(InputBox("Введите количество округов"))

ReDim oc(n - 1, m - 1), part(n - 1), okr(m - 1), sr(m - 1), proh(n - 1), maxo(n - 1), max(n - 1) 'liner(m - 1)

'вызов процедуры ввода группы с клавиатуры

vvod(n, m, okr, part, oc)

ReDim so(m - 1)

func1(n, m, oc, so, sr, proh) ' Подсчет значений

VivodMasStr(okr, s) ' Вывод в текстовые поля, после ввода данных.

TextBox5.Text = s

VivodMasStr(part, s)

TextBox3.Text = s

vivodMatr(oc, n, m, s)

TextBox2.Text = s

'Кнопку3 делаем доступной после ввода данных и расчета

'средних баллов

Button3.Enabled = True

End Sub

'Процедура для продолжения работы программы(перехода на 2-ю форму)

Private Sub Button2_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) _

Handles Button2.Click

Dim Form2 As New Form2

Me.Hide()

Form2.ShowDialog()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) _

Handles Button3.Click

End

End Sub

End Class

Программный код Form 2

Public Class Form2

' Формирование массива f() фамилий кандидатов,

' и массива sb() с количествами прошедших кандидатов

Public Sub FormirSpisok(ByVal n As Integer, ByVal sr() As Integer, _

ByVal so() As Integer, _

ByRef f() As String, ByRef sb() As Integer, ByRef k As Integer)

Dim i As Integer

k = 0

For i = 0 To n - 1

f(k) = part(i)

sb(k) = proh(i)

k = k + 1

Next

ReDim Preserve f(k - 1), sb(k - 1)

End Sub

'сортировка по убыванию

Sub sort(ByRef s() As String, ByRef kol() As Integer, ByRef max() As Integer)

Dim i, j, k As Integer, temp As String, t As Integer, z As Integer

k = s.Length - 1

For i = 0 To k - 1

For j = i + 1 To k

If kol(i) < kol(j) Then

t = kol(i) : kol(i) = kol(j) : kol(j) = t

temp = s(i) : s(i) = s(j) : s(j) = temp

z = maxo(i) : maxo(i) = maxo(j) : maxo(j) = z

End If

Next

Next

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button1.Click

Dim z As String = "" 'строка для вывода массивов

Dim k As Integer 'кол-во партий, прошедших в Думу

Dim f(n - 1) As String 'массив партий победителей

Dim sb(n - 1) As Integer 'Набранный балл

FormirSpisok(n, sr, so, f, sb, k)

sort(f, sb, maxo)

VivodMasStr(f, z) 'Финальные выводы

TextBox1.Text = z

TextBox3.Text = okr(maxo(0))

VivodMas(sb, z)

TextBox2.Text = z

End Sub

' Кнопка для повторения

Private Sub Button2_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button2.Click

Me.Hide()

Dim Frm1 As New Form1

Frm1.TextBox2.Text = ""

Frm1.TextBox3.Text = ""

Frm1.Button1.Enabled = True

Frm1.Button2.Enabled = True

Frm1.Button3.Enabled = True

Frm1.Show()

End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

End

End Sub

End Class

Программный код Module1

Option Strict On

Option Explicit On

Module Module1

Public n As Integer ' Количество партий

Public m As Integer ' Количество округов

Public oc(,) As Integer ' Голоса, полученные в сессию

Public part() As String ' Название партии по n обязательная

Public okr() As String ' Названия округов по м обязательная

Public sr() As Integer ' Максимальное число голосов в регионе по м

Public so() As Integer ' номер победителей в округе по m

' Public liner() As Integer ' Сумма всех голосов по m (не пригодился)

Public proh() As Integer ' Число прошедших кандидатов по n

Public max() As Integer ' Максимальное число голосов за партию по n

Public maxo() As Integer ' Номер победного региона по n

Public Sub func1(ByVal n As Integer, ByVal m As Integer, _

ByRef oc(,) As Integer, ByRef so() As Integer, _

ByRef sr() As Integer, ByRef proh() As Integer) ' Подсчет значений

Dim i, j As Integer

For j = 0 To m - 1

' liner(j) = 0

sr(j) = 0

For i = 0 To n - 1

If sr(j) < oc(i, j) Then

sr(j) = oc(i, j) ' Максимальное значение в регионе

so(j) = i ' Номера победителей в округе

End If

' liner(j) = liner(j) + oc(i, j) ' Всего голосов в регионе

Next i

Next j

For i = 0 To n - 1

maxo(i) = -1

For j = 0 To m - 1

If i = so(j) Then

proh(i) = proh(i) + 1

If max(i) > -1 Then

If max(i) < sr(j) Then

max(i) = sr(j)

maxo(i) = j

End If

End If

End If

Next

Next

End Sub

'Процедура вывода строкового массива данных

Public Sub VivodMasStr(ByVal a() As String, ByRef z As String)

Dim i As Integer

z = ""

For i = 0 To UBound(a)

z = z + a(i) + vbNewLine

Next

End Sub

'Процедура вывода вещественного массива данных

Public Sub VivodMas(ByVal a() As Integer, ByRef z As String)

Dim i As Integer

z = ""

For i = 0 To UBound(a)

z = z + Format(a(i), "0") + vbNewLine

Next

End Sub

'Процедура вывода двумерного массива

'(собираем матрицу в одну строку)

Sub vivodMatr(ByRef x(,) As Integer, ByVal n As Integer, _

ByVal m As Integer, ByRef z As String)

Dim i, j As Integer

z = ""

For j = 0 To m - 1

For i = 0 To n - 1

z = z + CStr(x(i, j)) & Space(3)

Next i

z = z + vbNewLine

Next j

End Sub

End Module

~ 11 ~

Соседние файлы в папке 5.1. Стандартные модули и модульная структура приложений в VB