Читайте также:
|
|
ОТЧЕТ
по дисциплине «Решение задач на ЭВМ»
(Вариант 13)
Выполнил студент группы 3АИСн-4
очного отделения
Поткин Олег Александрович
Преподаватель дисциплины:
_______________________________
Москва, 2012
Содержание
Постановка задачи…………………………………………………………... | |
1. Создание информационного хранилища на базе MS Excel 2007……… | |
2. Структура программы …………………………………………………… | |
3. Разработка программы…………………………………………………… | |
3.1. Добавление данных…...……………………………………...……… | |
3.1.1. Листинг………………………………………………………… | |
3.2. Поиск………………………………………………………………….. | |
3.2.1. Листинг………………………………………………………… | |
3.3. Расписание (в определенном временном интервале)………….…... | |
3.3.1. Листинг………………………………………………………… | |
3.4. Сортировка…………………………………………………………… | |
3.4.1. Листинг………………………………………………………… | |
3.5. Изменение данных (по параметру)…………………………………. | |
3.5.1. Листинг………………………………………………………… | |
3.6. Удаление записей (по параметру)…………………………………... | |
3.6.1. Листинг………………………………………………………… | |
Список используемой литературы, интернет-ресурсы…………………… | |
Постановка задачи (Вариант 13)
1. Создать таблицу, которая содержит сведения об отправлении поездов.
Структура таблицы:
- номер поезда;
- станция назначения;
- дата отправления;
- время отправления;
- время прибытия;
- наличие (количество) билетов в вагоны каждого вида отдельно: купе и плацкарт.
2. Предусмотреть возможность добавления в таблицу произвольного количества строк.
3. Определить:
- количество свободных мест в купейные вагоны поезда с заданными номерами и датой;
- количество поездов, следующих до заданной станции назначения.
4. Создать на 2 листе книги таблицу, которая содержит информацию о поездах, которые отправляются до заданной станции в заданном интервале времени (временной интервал задать двумя значениями, например 13:00 и 18:30).
5. Сортировать данные в таблице по заданному столбцу.
6. Изменить сведения о наличии билетов на поезд с заданным номером.
7. Удалить запись о поездах, которые следуют до заданной станции.
Всю бизнес-логику программы реализовать в среде VBA for Excel 2007.
Создание информационного хранилища на базе MS Excel 2007
Структура данных:
1. номер поезда (тип - строка);
2. станция назначения (тип - строка);
3. дата отправления (тип - дата);
4. время отправления (тип - дата);
5. время прибытия (тип - дата);
6. наличие (количество) билетов в купе (тип – целое число);
7. наличие (количество) билетов в плацкарт (тип – целое число).
Пример данных:
Структура программы
Разработка программы
В данном разделе описаны все бизнес-функции программы, которые обособлены друг от друга и являются взаимонезависимыми (данная архитектура значительно упрощает процесс отладки и дальнейшей поддержки программы).
Добавление данных
Данная функция позволяет пользователю добавить новую строку с информацией о поезде.
1. Заполнение формы:
2. Диагностика:
3. Результат:
Листинг
' Запуск формы производится при открытии рабочей книги, а также при нажатии
' комбинации клавиш "Ctrl + s"
' Прототип структуры (фактически, это описание пользовательского типа данных)
Private Type Trip_inf
train_id As String ' Номер поезда
destination As String ' Станция назначения
start_date As Date ' Дата отправления
st_time As Date ' Время отправления в формате ЧЧ:ММ
fin_time As Date ' Время прибытия в формате ЧЧ:ММ
tic_coupe As Integer ' Количество билетов в купе
tic_reserve As Integer ' Количество билетов в плацкарт
End Type
'====================================================================================
'Добавление новой записи в общий список (Лист 1)
'====================================================================================
Private Sub CommandButton1_Click ()
'--------ОПИСАНИЕ ВНУТРЕННИХ ПЕРЕМЕННЫХ----------
Dim train_id As String ' Номер поезда
Dim destination As String ' Станция назначения
Dim start_date As Date ' Дата отправления
Dim st_hour As Integer ' Час отправления
Dim st_min As Integer ' Минута отправления
Dim st_time As String ' Время отправления в формате ЧЧ:ММ
Dim fin_hour As Integer ' Час прибытия
Dim fin_min As Integer ' Минута прибытия
Dim fin_time As String ' Время прибытия в формате ЧЧ:ММ
Dim tic_coupe As Integer ' Количество билетов в купе
Dim tic_reserve As Integer ' Количество билетов в плацкарт
Dim i As Integer
Dim work As String
'------------СБОР ДАННЫХ С ИНТЕРФЕЙСА------------
train_id = TextBox1.Value
destination = TextBox2.Value
' Формат даты отправления строго типизирован, поэтому необходимо отслеживать
' возможные ошибки при вводе этого параметра:
On Error GoTo m_error_1
start_date = TextBox3.Value
' Час отправления строго типизирован - отслеживаем ошибки:
On Error GoTo m_error_2
st_hour = TextBox4.Value
' Диапазон часов - от 0 до 23:
If ( st_hour < 0 Or st_hour > 23) Then GoTo m_error_2
' Минута отправления строго типизирована - отслеживаем ошибки:
On Error GoTo m_error_2
st_min = TextBox5.Value
' Диапазон минут - от 0 до 59:
If ( st_min < 0 Or st_min > 59) Then GoTo m_error_2
' Формируем строку с временем отправления поезда:
st_time = st_hour & ":" & st_min
' Час прибытия строго типизирован - отслеживаем ошибки:
On Error GoTo m_error_3
fin_hour = TextBox6.Value
' Диапазон часов - от 0 до 23:
If ( fin_hour < 0 Or fin_hour > 23) Then GoTo m_error_3
' Минута прибытия строго типизирована - отслеживаем ошибки:
On Error GoTo m_error_3
fin_min = TextBox7.Value
' Диапазон минут - от 0 до 59:
If ( fin_min < 0 Or fin_min > 59) Then GoTo m_error_3
' Формируем строку с временем прибытия поезда:
fin_time = fin_hour & ":" & fin_min
' Количество билетов купе - отслеживаем возможные ошибки при вводе:
On Error GoTo m_error_4
tic_coupe = TextBox8.Value
' Количество билетов плацкарт - отслеживаем возможные ошибки при вводе:
On Error GoTo m_error_5
tic_reserve = TextBox9.Value
'-----------ДОБАВЛЕНИЕ НОВОЙ ЗАПИСИ--------------
i = 0 ' Счетчик строк
work = "" ' Рабочая переменная
Do
i = i + 1 ' Считаем очередную строку
work = Лист1.Cells ( i, 1). Value ' Считываем строку
If ( work = "" ) Then ' Если она пустая, то в не можно
'записать
Лист1.Cells ( i, 1). Value = train_id
Лист1.Cells ( i, 2). Value = destination
Лист1.Cells ( i, 3). Value = start_date
Лист1.Cells ( i, 4). Value = st_time
Лист1.Cells ( i, 5). Value = fin_time
Лист1.Cells ( i, 6). Value = tic_coupe
Лист1.Cells ( i, 7). Value = tic_reserve
Exit Do
End If
Loop Until ( False )
GoTo m_success ' Все операции выполнены без ошибок
'------БЛОК ОБРАБОТКИ ВНЕШТАТНЫХ СИТУАЦИЙ--------
m_error_1:
MsgBox "Ошибка при вводе ДАТЫ ОТПРАВЛЕНИЯ!"
Exit Sub
m_error_2:
MsgBox "Ошибка при вводе ВРЕМЕНИ ОТПРАВЛЕНИЯ!"
Exit Sub
m_error_3:
MsgBox "Ошибка при вводе ВРЕМЕНИ ПРИБЫТИЯ!"
Exit Sub
m_error_4:
MsgBox "Ошибка при вводе КОЛИЧЕСТВА БИЛЕТОВ(КУПЕ)!"
Exit Sub
m_error_5:
MsgBox "Ошибка при вводе КОЛИЧЕСТВА БИЛЕТОВ(ПЛАЦКАРТ)!"
Exit Sub
'----ДИАГНОСТИКА УСПЕШНОГО ВЫПОЛНЕНИЯ ЗАДАЧИ-----
m_success:
MsgBox "Информация о поезде № " & train_id & " успешно добавлена (строка № " & i & ")"
End Sub
Поиск
Функция поиска решает две задачи:
1. Определение количества свободных мест в купейных вагонах по заданному номеру поезда и дате отправления.
2. Определение количества поездов, следующих до заданной станции.
Результат выполнения функции:
Листинг
'====================================================================================
'Определение количества свободных мест в купейных вагонах поезда с заданными номером
'и датой
'====================================================================================
Private Sub CommandButton2_Click ()
'--------ОПИСАНИЕ ВНУТРЕННИХ ПЕРЕМЕННЫХ----------
Dim train_id As String ' Номер поезда
Dim start_date As Date ' Дата отправления
Dim tic_coupe As Integer ' Количество билетов в купе
Dim i As Integer ' Переменная-счетчик
'------------СБОР ДАННЫХ С ИНТЕРФЕЙСА------------
Label12.Caption = ""
train_id = TextBox10.Value
' Формат даты отправления строго типизирован, поэтому необходимо отслеживать
' возможные ошибки при вводе этого параметра:
On Error GoTo m_error_6
start_date = TextBox11.Value
'--------------ПОИСК ПО ПАРАМЕТРАМ---------------
i = 0 ' Счетчик строк
Do
i = i + 1 ' Считаем очередную строку
' Ищем совпадения:
If ( Лист1.Cells ( i, 1). Value = train_id And Лист1.Cells ( i, 3). Value = start_date ) Then
' Нашли нужную запись - выводим искомое значение на форму:
Label12.Caption = Лист1.Cells ( i, 6). Value
Exit Do
' Все ли записи проверили?
ElseIf ( Лист1.Cells ( i, 1). Value = "" ) Then
GoTo m_error_7 ' Нужная запись не найдена
End If
Loop Until ( False )
GoTo m_success ' Все операции выполнены без ошибок
'------БЛОК ОБРАБОТКИ ВНЕШТАТНЫХ СИТУАЦИЙ--------
m_error_6:
MsgBox "Ошибка при вводе ДАТЫ ОТПРАВЛЕНИЯ!"
Exit Sub
m_error_7:
MsgBox "Данные отсутствуют!"
Exit Sub
'----ДИАГНОСТИКА УСПЕШНОГО ВЫПОЛНЕНИЯ ЗАДАЧИ-----
m_success:
MsgBox "Информация о наличии свобобных мест в купе найдена!"
End Sub
'====================================================================================
'Определение количества поездов, следующих до заданной станции назначения
'====================================================================================
Private Sub CommandButton3_Click ()
'--------ОПИСАНИЕ ВНУТРЕННИХ ПЕРЕМЕННЫХ----------
Dim destination As String ' Станция назначения
Dim num_of_trains As Integer ' Количество поездов
Dim i As Integer ' Счетчик для циклов
'------------СБОР ДАННЫХ С ИНТЕРФЕЙСА------------
destination = TextBox12.Value
'--------------ПОИСК ПО ПАРАМЕТРАМ---------------
i = 0 ' Счетчик строк
num_of_trains = 0
Do
i = i + 1 ' Считаем очередную строку
' Ищем совпадения:
If ( Лист1.Cells ( i, 2). Value = destination ) Then
' Нашли нужную запись - суммируем с остальными:
num_of_trains = num_of_trains + 1
' Все ли записи проверили?
ElseIf ( Лист1.Cells ( i, 2). Value = "" ) Then
GoTo m_over ' Список закончился
End If
Loop Until ( False )
' Визуализация результата:
m_over:
Label14.Caption = num_of_trains
End Sub
Дата добавления: 2015-10-29; просмотров: 206 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Распознавание (pattern recognition) | | | Расписание (в определенном временном интервале) |