- •Тема 5.1. Лабораторная работа «Стандартные модули и модульная структура приложений в vb»
- •5.1.1. Задание
- •5.1.2. Варианты задания
- •5.1.3. Содержание отчета
- •1 Вариант реализации проекта:
- •Разработка проекта:
- •Ввод количества студентов в группе – n;
- •Выполнение приложения и получение результатов:
- •Выполнение приложения и получение результатов:
- •Доказательство правильности работы программ.
- •3 Вариант реализации проекта:
- •Разработка проекта:
- •Выполнение приложения и получение результатов:
1 Вариант реализации проекта:
Одна группа студентов; в программном коде проекта используется стандартный модуль и две формы; исходные данные вводятся с клавиатуры и отображаются на 1-ой форме; результаты отображаются на 2-ой форме.
Разработка проекта:
Разработка графического интерфейса пользователя
Разработанные формы интерфейса пользователя могут быть такими, как на рис. 5.1-2 и рис. 5.1-3.
Рис. 5.1-2 Рис. 5.1-3
Установка свойств объекта
Свойства объектов управления разработанной формы студенты устанавливают самостоятельно и отображают в таблице.
Разработка схемы алгоритма
В соответствии с заданием 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
Схемы алгоритмов отдельных функциональных задач студенты должны разработать самостоятельно, в соответствии с укрупненной схемой.
Программный код:
Программный код решаемой задачи, реализованный с использованием процедур, стандартного модуля и двух форм, представлен на рис. 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