Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР-05-01 «Стандартные модули и модульная структура приложений в VB».doc
Скачиваний:
48
Добавлен:
03.05.2015
Размер:
880.13 Кб
Скачать

1 Вариант реализации проекта:

Одна группа студентов; в программном коде проекта используется стандартный модуль и две формы; исходные данные вводятся с клавиатуры и отображаются на 1-ой форме; результаты отображаются на 2-ой форме.

  1. Разработка проекта:

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

Разработанные формы интерфейса пользователя могут быть такими, как на рис. 5.1-2 и рис. 5.1-3.

Рис. 5.1-2 Рис. 5.1-3

    1. Установка свойств объекта

Свойства объектов управления разработанной формы студенты устанавливают самостоятельно и отображают в таблице.

    1. Разработка схемы алгоритма

В соответствии с заданием 1-го варианта реализации проекта, решение задачи можно разбить на следующие функциональные части:

    • Ввод количества студентов в группе – n;

    • ввод исходных данных с клавиатуры – vvod(fam, oc, n, p1, p2);

    • отображение данных в текстовом поле на форме – vivod(p, TextBox);

    • нахождение общего среднего балла за сессию студентов одной группы – sr и средних баллов студентов – sred(oc, n, so, sr);

    • сортировка массива so( ) в порядке убывания – sort(so, fam, n);

    • решение задачи: определение студентов, для которых средняя оценка меньше общей средней в группе и формирование двух строк-списков из их фамилий и средних оценок – Reshenie(sr, fam, so, n, p1, p2).

Для отображения на форме исходных данных в процедурах vvod( ) и Reshenie( ) предполагается формировать две строки (p1 и p2), содержащие соответственно фамилии и оценки студентов. Эти строки должны возвращаться из процедуры и их значения выводятся в текстовые поля TextBox1 и TextBox2 процедурой vivod( ). Аналогичным образом происходит и отображение результатов на 2-ой форме.

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

Рис. 5.1-4

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

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

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

Option Strict On

Option Explicit On

Module Module1

Public n As Integer 'Количество студентов

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

Public fam() As String 'Фамилии студентов

Public sr As Single 'Общий средний балл за сессию

Public so() As Single 'Средние баллы каждого студента

'Процедура сортировки массивов методом пузырька

Sub sort(ByRef so() As Single, ByRef fam() As String, _

ByVal n As Integer)

Dim i, j As Integer

Dim m As Single

Dim c As String

For i = n - 1 To 1 Step -1

For j = 1 To i

If so(j) > so(j - 1) Then

m = so(j) : so(j) = so(j - 1) : so(j - 1) = m

c = fam(j) : fam(j) = fam(j - 1) : fam(j - 1) = c

End If

Next

Next

End Sub

' Определение общего среднего балла за сессию

' и средних баллов каждого студента

Sub sred(ByVal oc(,) As Integer, ByVal n As Integer, _

ByRef so() As Single, ByRef sr As Single)

Dim i, j As Integer

ReDim so(n - 1)

sr = 0

For i = 0 To n - 1

For j = 0 To 4

sr = sr + oc(i, j)

so(i) = so(i) + oc(i, j)

Next j

so(i) = so(i) / 5

Next i

sr = sr / (5 * n)

End Sub

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

Sub vvod(ByRef fam() As String, ByRef oc(,) As Integer, _

ByRef n As Integer, ByRef p1 As String, ByRef p2 As String)

Dim i, j As Integer

n = CInt(Val(InputBox("Введите количество студентов")))

ReDim fam(n - 1), oc(n - 1, 4)

p1 = "" 'формируемая строка из фамилий

p2 = "" 'формируемая строка из оценок

For i = 0 To n - 1

fam(i) = InputBox("Фамилия")

p1 = p1 & fam(i) & vbNewLine

For j = 0 To 4

oc(i, j) = CInt(Val(InputBox("Оценка")))

p2 = p2 & " " & СStr(oc(i, j))

Next j

p2 = p2 & vbNewLine

Next i

End Sub

' Процедура формирования списка студентов

' имеющих средний балл ниже общего среднего

Sub Reshenie(ByVal sr As Single, ByVal fam() As String, _

ByVal so() As Single, ByVal n As Integer, _

ByRef p1 As String, ByRef p2 As String)

Dim i As Integer

p1 = "" 'формируемая строка из фамилий

p2 = "" 'формируемая строка средних баллов ниже общ. средн.

For i = 0 To n - 1

If so(i) < sr Then

p1 = p1 & fam(i) & vbNewLine 'строка с фамилиями

'строка со средним баллом

p2 = p2 & " " & СStr(so(i)) & vbNewLine

End If

Next i

End Sub

'Процедура вывода строки в Textbox

Sub vivod(ByVal z As String, ByVal T As TextBox)

T.Text = z

End Sub

End Module

Public Class Form1

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

ByVal e As System.EventArgs) _

Handles Button1.Click

Dim p1 As String = ""

Dim p2 As String = ""

vvod(fam, oc, n, p1, p2)

vivod(p1, TextBox1)

vivod(p2, TextBox2)

End Sub

'Процедура для продолжения работы программы

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

ByVal e As System.EventArgs) _

Handles Button2.Click

Form2.Show()

End Sub

End Class

Public Class Form2

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

ByVal e As System.EventArgs) _

Handles Button1.Click

Dim p1 As String = ""

Dim p2 As String = ""

'Вызов процедуры расчета средних баллов

sred(oc, n, so, sr)

vivod(CStr(sr), TextBox1)

'Вызов процедуры сортировки по убыванию средних оценок

sort(so, fam, n)

' Вызов процедуры формирования списка студентов,

' имеющих средний балл ниже общего среднего

Reshenie(sr, fam, so, n, p1, p2)

vivod(p1, TextBox2)

vivod(p2, TextBox3)

End Sub

'Процедура для окончания работы программы

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

ByVal e As System.EventArgs) _

Handles Button2.Click

End

End Sub

End Class

Рис. 5.1-5