- •Прикладное программирование
- •Часть 1
- •Прикладное программирование
- •Часть 1
- •1. Информация о дисциплине
- •1.1. Предисловие
- •2.1. Рабочая программа (220 часов) Введение
- •Раздел 1. Технология программирования
- •Раздел 2. Ввод данных
- •1.2. Содержание дисциплины и виды учебной работы
- •1.2.2. Перечень видов практических занятий и контроля
- •2. Рабочие учебные материалы
- •Раздел 3. Управляющие окна
- •Раздел 4. Развитые компоненты
- •Раздел 5. Основные понятия субд
- •Раздел 6. Программирование баз данных
- •6.1. Невизуальные компоненты для построения бд
- •Раздел 7. Основные приёмы программирования бд
- •Раздел 8. Развитые приёмы программирования бд
- •Раздел 9. Интерфейс прикладного программирования api
- •Заключение
- •2.2. Тематический план изучения дисциплины
- •Тематический план для студентов заочной формы обучения
- •Структурно-логическая схема дисциплины «Прикладное программирование»
- •2.4. Временной график изучения дисциплины при использовании информационно-коммуникационных технологий
- •2.5. Практический блок
- •2.5.1. Практические занятия
- •2.5.2. Лабораторный практикум
- •2.5.2.1. Лабораторные работы для очной формы обучения
- •2.5.2.2. Лабораторные работы для очно-заочной формы обучения
- •2.5.2.3. Лабораторные работы для заочной формы обучения
- •2.6. Балльно-рейтинговая система оценки знаний
- •3. Информационные ресурсы дисциплины
- •3.1. Библиографический список
- •Опорный конспект Введение
- •Раздел 1. Технология программирования
- •1.1. Основная тенденция технологии программирования
- •Раздел 2. Ввод данных
- •2.1. Организация надежного ввода
- •2.2. Обработка строк
- •2.3. Средства группирования компонентов
- •Раздел 3. Управляющие окна
- •3.1. Управление выбором
- •3.2. Диалоговые окна
- •3.3. Многострочные окна
- •Раздел 4. Развитые компонеты
- •4.1. Работа с данными типа DateTime
- •4.2. Работа с двумерными массивами
- •4.3. Компоненты навигаторов.
- •4.4. Использование указателей
- •Раздел 5. Основные понятия субд
- •5.1. Общие сведения о базах данных (бд)
- •5.2. Концепция управления бд из среды Builder
- •5.3. Файлы и индексы
- •Раздел 6. Программирование баз данных
- •6.1. Невизуальные компоненты для построения бд
- •6.2. Навигация по нд
- •6.3. Доступ к полям нд
- •6.4. Визуальные компоненты для работы с бд
- •Раздел 7. Основные приёмы программирования бд
- •7.1. Сортировка, фильтрация и редактирование нд
- •7.2.Организация надежного ввода данных в бд
- •Раздел 8. Развитые приёмы программирования бд
- •8.1. Построение связей между таблицами бд
- •8.2. Работа с изображениями.
- •Раздел 9. Интерфейс прикладного программирования api
- •9.1 Встраивание звука
- •9.2. Вызов других приложений
- •Заключение
- •3.3. Глоссарий (краткий словарь основных терминов и положений)
- •3.4. Технические средства обеспечения дисциплины
- •3.5. Методические указания к выполнению лабораторных работ
- •3.5.1. Лабораторные работы, семестр 1
- •Работа 1.1. Проектирование программного проекта.
- •Вспомогательный теоретический материал Основная тенденция технологии программирования
- •Компонент ActionList
- •Связь пунктов меню Main Menu1 с действиями ActionList
- •Связь действий ActionList с изображениями ImageList
- •Кнопки быстрого доступа
- •Всплывающие подсказки
- •Использование стандартных действий
- •10 Правил технологии программирования
- •Работа 1.2. Надёжный ввод
- •Работа 1.3. Контейнеры
- •Работа 1.4. Компоненты выбора
- •Работа 1.5. Диалоги
- •Работа 1.6. Многострочные окна
- •Работа 1.7. Определение даты и временного интервала.
- •Работа 1.8. Обработка двумерных массивов.
- •Работа 1.9. Работа с каталогами и файлами.
- •3.5.2. Лабораторные работы, семестр 2
- •Работа 2.1. Начальное создание базы данных
- •Вспомогательный теоретический материал Общие сведения о базах данных
- •Концепция управления бд из среды Builder
- •Средство dbe (Database Borland Engine – машина Borland управления базой данных)
- •Альяс базы данных
- •Поля файла бд
- •Набор данных таблицы бд
- •Управление наборами данных в среде Builder
- •Модуль данных DataModule
- •Файлы и индексы
- •Содержание работы
- •Работа 2.2. Сортировка набора данных, русификация заголовков
- •Работа 2.3. Организация надежного ввода
- •//Проверка полей Panel2 - только для режима замены
- •Работа 2.4. Ввод данных посредством вспомогательных словарей.
- •Работа 2.5. Связи таблиц типа 1:1 и 1:n
- •Работа 2.6. Поля синхронного просмотра типа Lookup
- •Работа 2.7. Поиск и фильтрация
- •Работа 2.8. Особенности сохранения изображений в бд
- •Работа 2.9. Встраивание звука
- •Работа 2.10. Вызов других приложений
- •Методические указания к практическим занятиям
- •Заключение
- •4. Блок контроля освоения дисциплины
- •Часть 1, первый семестр – контрольная работа, зачёт.
- •Часть 1, второй семестр – курсовой проект, экзамен.
- •4.1. Задание на контрольную работу и методические указания к её выполнению
- •Вниманию студентов, обучающихся с элементами дот.
- •Задание на курсовой проект и методические указания к его выполнению
- •Этапы работы над курсовым проектом
- •4.3. Текущий контроль Тренировочные тесты
- •4.4. Итоговый контроль Вопросы к зачёту, семестр 1
- •Вопросы к экзамену, семестр2
Раздел 4. Развитые компонеты
При изучении данного раздела вы должны проработать следующие темы:
4.1. Работа с данными типа DateTime.
4.2. Работа с двумерными массивами.
4.3. Компоненты навигаторов.
4.4. Использование указателей.
Для проверки усвоения материала вам предстоит ответить на вопросы для самопроверки, приведённые в конце раздела, а затем выполнить контрольную работу №1 (только для студентов очно-заочной и заочной форм обучения), лабораторные работы №1.7, №1.8, №1.9 и тренировочный тест №4. Изучение раздела заканчивается контролем знаний: необходимо ответить на вопросы контрольного теста №4. Максимальное количество баллов, которое вы можете получить по данному разделу, равно 20 (1.5 баллов за тестирование, 9.5 за контрольную работу и ещё 9 баллов за лабораторные работы).
4.1. Работа с данными типа DateTime
Данные этого тапа предназначены для обработки как текущих значений даты и времени, так и для определения интервалов между двумя датами. Последняя операция постоянно встречается в задачах по управлению персоналом, когда требуется узнать, сколько дней, месяцев или лет проработал сотрудник на предприятии. Для этой цели система C++Builder предлагает множество удобных функций и процедур.
Тип TDateTime во внутреннем представлении является числом с плавающей точкой типа double , целая часть которого содержит число дней, отсчитанное от некоторого начала календаря, а дробная часть выражает число миллисекунд текущих суток, начиная с 00 часов.
Для 32-разрядных версий операционной системы за начало календаря принята дата 00 часов 30 декабря 1899 года. Таким образом, данное типа TDateTime, рассмотренное как число типа double :
39948.794278
представляет дату 15 мая 2009 года и время 23 ч, 38 мин , 49 сек, 654 мсек.
Прибавление к значению типа TDateTime целого числа D равносильно увеличению даты на D дней. Разность двух значений типа TDateTime дает разность двух дат с точностью до долей дня.
Компоненты типа «календарь»
Назначение: ввод даты и времени с клавиатуры
Варианты:
DateTimePicker выпадающий календарь
MonthCalendar постоянный календарь
Оба типа компонента расположены на вкладке Win32 палитры компонентов. Их внешний вид изображен на рис. 49.
Рис. 49. Варианты календарей, начальное состояние
Наиболее удобным является компонент DateTimePicker (см. рис. 49, на котором слева этот компонент показан в режиме ввода времени, а ниже– в режиме ввода даты). Компонент очень эффектен за счет появления выпадающего календаря и обеспечивает безошибочный с точки зрения синтаксиса ввод дат и времени. Собственно календарь выводится на экран при нажатии на традиционную кнопку вызова выпадающего меню (рис. 50).
Рис. 50. Календарь выводится при нажатии на кнопку выпадающего меню
Его свойство Kind определяет режим работы компонента: dtkDate – ввод даты, tkTidme – ввод времени.
При вводе дат можно задать свойство DateMode равным dmComboBox – наличие выпадающего календаря, или равным dmUpDown – наличие кнопок увеличения и уменьшения, напоминающих те, которые используются в компонентах UpDown и SpinEdit. Только в данном случае пользователь может независимо устанавливать с помощью кнопок число, месяц и год, как это делается в задаче «Системные часы». Формат представления дат определяется свойством DateFormat, которое может принимать значения dfShort – краткий формат (например, 01.09.10), или dfLong – полный формат (например, 1 сентября 2010 г.).
Значение даты по умолчанию можно задать в Инспекторе объектов через свойство Date. Это же свойство читается для определения заданной пользователем даты.
Для преобразования значения свойства Date в строку можно воспользоваться DateToStr. Например, оператор
Memo1->Ilenes->Add(«Дата: » + DateToStr(DateTimePicker->Date) );
добавит в окно Memo1 строку вида <Дата: 01.05.2010>.
При вводе дат можно задать значения свойств MaxDate и MinDate, определяющих соответственно максимальную и минимальную дату, которую может задать пользователь.
В режиме ввода времени dtkTime введенное пользователем значение можно найти в свойстве Time, тип которого – тот же TDateTime. Преобразовать время в строку можно функцией TimeToStr.
Компонент MonthCalendar похож на рассмотренный выше компонент DateTimePicker, работающий в режиме ввода дат. Основное отличие состоит в том, что календарь данного компонента постоянно открыт, что позволяет вводить данные с пульта более быстро без дополнительных нажатий на кнопку со стрелкой для вызова выпадающего календаря. Правда, это требует существенно большего места на экране. При запуске программы календарь автоматически показывает текущую дату – на рисунке она обводится росчерком, похожим на кружок. В компоненте MonthCalendar предусмотрены некоторые дополнительные возможности: можно допустить множественный выбор дат в некотором диапазоне (свойство MultiSelect), можно указывать в календаре номера недель ( на рисунке – слева от календаря; свойство WeekNumbers=true), перестраивать календарь, задавая первый день каждой недели (свойство WeekNumbers) и т.п. В ряде практических случаев все это достаточно удобно.
Для обработки данных типа TDateTime предусмотрены многочисленные встроенные функции, некоторые из них представлены в следующей таблице.
Функция |
Описание |
CurrentYear |
Определяет текущий год по внутреннему таймеру |
Date function |
Возвращает текущую дату |
DateTimeToStr |
Преобразует дату формата DateTime в обычное представление даты в форме сроки |
DayOf |
Определяет порядковый номер дня в формате DateTime в текущем месяце |
DayOfTheWeek |
Определяет порядковый номер дня в формате DateTime в текущей неделе |
DayOfTheYear |
Определяет порядковый номер дня текущего года |
DaysBetween |
Определяет число целых дней между двумя датами |
DaysInAMonth |
Определяет число дней текущего месяца |
DaysInAYear |
Определяет число дней текущего года |
DecodeDate |
Процедура представляет текущую дату формата DateTime в тройку целых чисел Год-Месяц-День |
DecodeTime |
Процедура представляет текущую дату формата DateTime в четыре целых числа Час-Минута-Секунда-Миллисекунда |
EncodeDate |
Функция возвращает тип DateTime, если её аргументы представлены тройкой чисел Год-Месяц-День |
EncodeTime function |
Функция возвращает тип DateTime, если её аргументы представлены четырьмя числами Час-Минута-Секунда-Миллисекунда |
HoursBetween |
Определяет количество целых часов между двумя моментами времени, заданными в формате DateTime |
IsValidDate |
Показывает, является ли тройка чисел Год-Месяц-День допустимым изображением даты |
MonthsBetween |
Определяет число месяцев между двумя датами |
Now |
Возвращает текущую дату и время |
SameDate |
Определяет, являются ли две даты одинаковыми |
StartOfTheMonth |
Определяет в формате DateTime первый день текущего месяца |
StartOfTheYear |
Определяет в формате DateTime первый день текущего года |
StrToDate function |
Преобразует строку в формат DateTime |
Time, GetTime |
Возвращает текущее время |
TimeToStr |
Преобразует формат DateTime в строку |
Today |
Возвращает дату сегодняшнего дня |
Tomorrow |
Возвращает дату завтрашнего дня |
TryStrToDateTime. |
Булевская функция, приобретающая значение true, если попытка преобразования строкового представления даты в формат DateTime завершилась успешно |
WeekOf |
Возвращает порядковый номер недели текущего года |
WeeksInAYear |
Возвращает количество недель в текущем годе |
YearsBetween. |
Возвращает число лет между двумя датами |
Yesterday |
Возвращает дату вчерашнего дня |
