Программирование Visual Basic
Лабораторная работа, 20 Декабря 2011, автор: пользователь скрыл имя
Краткое описание
Задание
Поместить на форму два текстовых поля и командную кнопку. Свойству Name первого поля задать значение Field1, второго — Field2. Свойству Text первого поля задать значение Иванов, другого — Петров.
Оглавление
1. Работа с текстовыми данными………………………………………………2
2. Работа с датами……………………………………………………………… 5
3. Построение треугольника из частей отрезка………………………………11
4. Изменение цвета текстового поля………………………………………….17
5. Список использованных источников информации………………………..22
Файлы: 1 файл
лаб basic.doc
— 218.50 Кб (Скачать)Содержание
1. Работа с текстовыми данными
Задание
Поместить на форму два текстовых поля и командную кнопку. Свойству Name первого поля задать значение Field1, второго — Field2. Свойству Text первого поля задать значение Иванов, другого — Петров.
В модуле кода формы написать следующее:
Option Explicit
Private Sub cmdGo_Click()
Field1.Text = Field2.Text
Field2.Text = Field1.Text
End Sub
Вопросы к заданию
- Разработать интерфейс пользователя и привести в отчёте изображение формы с описанием всех объектов интерфейса и их назначения.
Ответ: Интерфейс пользователя представлен на рисунке 1
1—поле вывода; 2—поле вывода; 3—кнопка
Рисунок
1− Интерфейс пользователя
- В отчёте объяснить результат работы программы.
Ответ:
При
нажатии на кнопку «Задание 1» свойству
Text элемента Field1 присваивается значение
свойства Text элемента Field2. При этом происходит
замена и старое значение удаляется. Результатом
выполнения данных действий показан на
рисунке 2.
Рисунок 2 − Результат задания
- Поменять местами строки с операторами присваивания. В отчёте объяснить результат.
Ответ:
При
замене строк местами свойству Text
элемента Field2 присваивается значение
свойства Text элемента Field1. При этом старое
значение свойства Text элемента Field2
исчезает. Вместо него появляется новое
значение. Результат выполнения данных
действий показан на рисунке 3.
Рисунок 3 − Результат задания
- Усовершенствовать программу, чтобы значения полей менялись местами. В отчёте привести соответствующий фрагмент кода и описать суть сделанных изменений.
Ответ: Для замены значений местами необходимо ввести дополнительную переменную, которая будет использоваться в качестве буфера. В данной программе используются две переменные для упрощения дальнейшего использования значений.
Переменной х присваивается значение первого поля, а у второго. Затем значению первого поля присваивается значение у, а значению второго поля значение х. В итоге значения полей поменяются местами. Результат показан на рисунке 4.
Рисунок
4 − Результат задания
Листинг
программы:
Private Sub cmdGo3_Click() ' меняем поля местами
Dim x As String
Dim y As String
x = field1.Text ' заносим в буфер значение поля 1
y = field2.Text ' заносим в буфер значение поля 2
field1.Text = y
field2.Text = x
End Sub
Листинг
программы:
Option Explicit
Private Sub cmdGo1_Click() ' присваиваем значение поля 2 значению поля 1
field1.Text = field2.Text
field2.Text = field1.Text
End
Sub
Private Sub cmdGo2_Click() ' присваиваем значение поля 1 значению поля 2
field2.Text = field1.Text
field1.Text = field2.Text
End
Sub
Private Sub cmdGo3_Click() ' меняем поля местами
Dim x As String
Dim y As String
x = field1.Text ' заносим в буфер значение поля 1
y = field2.Text ' заносим в буфер значение поля 2
field1.Text = y
field2.Text = x
End
Sub
Private Sub cmdGo4_Click() 'возвращаем исходные значения
field1.Text = "Иванов "
field2.Text = "Петров"
End
Sub
- Работа с датами
Задание
Разработать программу для обработки вводимой пользователем даты.
Программа должна реализовывать следующие функции.
- Показывать составные части введённой даты (число, месяц, год) по отдельности (функции DateSerial, Day, Month, Year, раздел справки Dates, подраздел Dates and Times Keyword Summary).
- Дублировать вывод номера месяца в году его текстовым названием (например: месяц апрель — выводится число 4 и название месяца — апрель).
- Показывать название дня недели для введённой даты (функция WeekDay).
- Показывать текущую дату и время.
- Вычислять разницу между указанной и текущей датой в целых годах.
- Определять день недели первого числа месяца указанной даты (DateSerial).
Вопросы к заданию
- Разработать интерфейс пользователя. В отчёте привести список объектов интерфейса и их назначение.
Ответ:
Интерфейс пользователя приведен на рисунке
5.
1—поле ввода даты; 2 —метка «День»; 3 —метка «Месяц»; 4 — метка «Год»;
5 — метка «День недели»; 6 — метка «день недели 1-го числа введенного месяца»;
7 — метка «Разница между текущей и введенной датой в годах»; 8 — метка «текущее время»;
9 — кнопка «Вычислить»
Рисунок 5 – Интерфейс пользователя
- В отчёте привести алгоритм дублирования номера месяца в году его текстовым названием.
Ответ:
Для
дублирования номера месяца в году
его текстовым названием
Затем
нужно выбрать исходя из значения
числового номера месяца какое значение
присвоить переменной mes. При значении
числового номера месяца 1 – переменной
mes присваивается значение «Январь», 2
–«Февраль» и т.д. после сравнения и присвоения
текстового значения, полученное значение
переменной mes выводится на экран.
- Проверить правильность работы программы при вводе даты в различных форматах (через точку, через дробь, с ведущими нулями и без них) и сделать выводы. Результаты проверки отразить в отчёте.
Ответ:
При вводе даты в формате отличном от DD.MM.YYYY получаются следующие результаты:
- Если ввести дату с ведущими нулями, но через пробел, точку, запятую, дробь, то результат программы будет верным так как при выборке значений из текстового поля для дня берутся два символа слева, для месяца два символа 4-й и 5-й слева, для года четыре символа справа. При этом не важно какие стоят разделители не учитываются. Если введенные числа будут больше стандартных (например: 33.01.2000), программа автоматически добавит в следующий разряд даты то, количество единиц , на которое введенное число больше (например: 33.01.2000 будет распознано программой как 02.02.2000).
- Если же ввести дату без ведущих нулей, то результат вычислений будет не верным т.к. переменным будут присвоены некорректные значения. Программа выдаст неверные результаты. Пример введения даты без ведущих нулей показан на рисунке 6.
Рисунок
6 − Пример ввода неправильного
формата даты
Листинг программы:
Option
Explicit
Private Sub cmdEXE_Click()
Dim varDay As Integer
Dim varMon As Integer
Dim varGod As Integer
Dim varDate As Date
Dim varDate1 As Date
Dim mes As String
Dim varWeekDay As Integer
Dim varStr As String
varDay = Val(Left(tbDay.Text, 2)) 'два символа слева
varMon = Val(Mid(tbDay.Text, 4, 2)) 'два символа из центра
varGod = Val(Right(tbDay.Text, 4)) ' четыре символа справа
varDate = DateSerial(varGod, varMon, varDay) ' перевели в формат фаты
varDay = Day(varDate) ' выделили день из даты
varMon = Month(varDate) ' выделили месяц из даты
varGod = Year(varDate) ' выделили год из даты
Select Case varMon ' определяем какой месяц
Case 1
mes = "январь"
Case 2
mes = "февраль"
Case 3
mes = "март"
Case 4
mes = "апрель"
Case 5
mes = "май"
Case 6
mes = "июнь"
Case 7
mes = "июль"
Case 8
mes = "август"
Case 9
mes = "сентябрь"
Case 10
mes = "октябрь"
Case 11
mes = "ноябрь"
Case 12
mes = "декабрь"