ЗОТФ-ЗФ / 4.10. Модули и классы. Введение в объективно-ориентированное программирование
.docxФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ
Государственное образовательное учреждение
Высшего профессионального образования
Московский технический университет связи и информатики
Курсовая работа
по дисциплине «Программирование и алгоритмизация».
Тема 4.10. «Модули и классы. Введение в объективно-ориентированное программирование».
Вариант №6.
2016 г.
Задание.
Цель работы. Изучение средств, приемов и получения практических навыков разработки, написания и отладки проектов, использующих несколько форм, закреплении материала по обработке строковых данных и текстовых файлов, и практическом использовании объектно-ориентированной технологии, стандартных модулей и классов при решении различных задач.
Задание.
1. Выбрать задание в соответствии с вариантом. И выбрать не менее двух вариантов реализации проекта: один со стандартным модулем и двумя формами и второй - со стандартным модулем, классом и двумя формами.
2. Провести формализацию задачи, для чего необходимо:
* определить перечень исходных данных и предусмотреть для них проверку правильности ввода;
* представить смысловые данные, которые будут использоваться в ходе решения задачи в виде переменных или массивов, присвоив им соответствующие имена;
* определить размерности и типы используемых данных;
* привести геометрическую иллюстрацию решения задачи;
* при необходимости привести расчетные формулы, которые будут использоваться для преобразования исходных данных в результаты.
3. Разработать интерфейс пользователя:
* разработать форму, предназначенную для ввода исходных данных как с клавиатуры, так и из текстового файла, и для отображения входных данных на форме;
* разработать выходную форму, предназначенную для вывода результатов решения задачи как на форму, так и для записи в файл.
4. Составить общую (укрупненную) схему алгоритма решения задачи.
5. Составить схемы алгоритмов решения функциональных задач с учетом того, что они будут реализованы в виде процедур.
6. Создать программный код проекта, реализующий поставленную задачу.
7. Подготовить текстовые наборы исходных данных, соответствующие смысловой направленности решаемой задачи как для ввода с клавиатуры, так и из текстового файла.
8. Получить решение.
9. Обосновать правильность полученных результатов.
Задача.
Имеется список n команд, принимающих участие в чемпионате мира по футболу. Перед турниром проведен опрос k человек, каждый из которых назвал по 3 команды, которые с его точки зрения, займут 1-е, 2-е и 3-е место. Составить алгоритм и программу, которые по результату турнира определяют приз каждого из тех опрошенных, которые точно угадали последовательность победителей, если общий призовой фонд - S.
Графический интерфейс.
Таблица объектов.
Имя |
Свойство |
Значение свойства |
Form1 |
Name |
Form1 |
Label1
|
Text
|
Введите людей и их прогнозы |
Label2 |
Text
|
Введите имя файла |
TextBox1
|
Name |
TextBox1
|
TextBox2
|
Name |
TextBox2
|
Button1
|
Name |
Button1
|
Text |
Ок |
|
Button2
|
Name |
Button2
|
Text |
Стереть |
|
Button3
|
Name |
Button3
|
Text |
Считать из файла |
Имя |
Свойство |
Значение свойства |
Form2 |
Name |
Form2 |
Label1
|
Text
|
Результаты |
TextBox1
|
Name |
TextBox1
|
Button1
|
Name |
Button1
|
Text |
Рассчитать |
|
Button2
|
Name |
Button2
|
Text |
Стереть |
Программный код.
Module Module1
Public massiv() As String
Public pobed As String
Public sum As Double
End Module
__________________________________________________________
Public Class Form1
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = My.Computer.FileSystem.ReadAllText(TextBox2.Text)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
TextBox2.Text = ""
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
massiv = Split(TextBox1.Text, Chr(13) + Chr(10)) 'Запись введёных людей и их прогнозов в массив
pobed = InputBox("Введите через пробел команды занявшие соответственно 1,2 и 3 места") 'Запись команд победителей
sum = Val(InputBox("Введите общую сумму выигрыша")) 'Запись общей суммы выигрыша
Me.Hide() 'Скрыть текущую форму
Form2.Show() 'Показать форму 2
End Sub
End Class
__________________________________________________________
Public Class Form2
Private Sub Form2_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Application.Exit()
End Sub
'Процедура очистки поля результата
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
End Sub
'Процедура расчёта по нажатию кнопки
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
raschet(massiv, pobed, sum)
End Sub
'Процедура расчёта
Sub raschet(ByVal massiv_vxod() As String, ByVal pobediteli As String, ByVal summa As Double)
Dim i As Short 'Переменная счётчик цикла
Dim vixod As String 'Переменная для хранения имён победителей
Dim k As Short 'Переменная для хранения количества победителей
k = 0
vixod = ""
For i = 0 To massiv_vxod.Length - 1 'Цикл перебора участников и их прогнозов
If massiv_vxod(i) = pobediteli Then 'Проверка условия, что прогноз участника оказался верным
'Занесение участника в список победителей
k = k + 1
vixod = vixod + massiv_vxod(i - 1) + Chr(13) + Chr(10)
'
End If
Next i
If k > 0 Then 'Проверка условия, что победители есть
summa = summa / k 'Разделение суммы выигрыша между количеством победителей
summa = Int(summa)
If k > 1 Then 'Если победителей больше одного
TextBox1.Text = "По" + Str(summa) + " рублей(ля) получат:" + Chr(13) + Chr(10) + vixod 'Вывод данных на форму в случае если победителей больше одного
Else
TextBox1.Text = Str(summa) + " рублей(ля) получит:" + Chr(13) + Chr(10) + vixod 'Вывод данных на форму в случае если победитель один
End If
Else
TextBox1.Text = "Победителей нет" 'Вывод данных на форму в случае если победителей нет
End If
End Sub
End Class
Блок-схема.
~