Примеры программ, выполненных
в среде С++ Builder
6.0
Одним из подходов к обучению программирования является изучение чужого программного кода. В чужом программном коде можно найти много нового для себя, увидеть стиль, новаторские идеи автора, решения различных проблем программирования, понять принципы по которым строится программа. Понять, как нужно правильно писать программу – чтобы все получалось быстро, сразу и без лишнего геморроя.
Да конечно, всего этого можно достичь методом проб и ошибок – но вот вопрос какой ценой ?
Здесь представлены примеры простейших программ, созданных в среде C++ Builder 6.0. Они демонстрируют технологию создания программ, возможности среды разработки, назначение компонентов, знакомят с принципами работы с графикой, звуком, базами данных.
Базовые
компоненты |
||
001. Конвертор. Программа Конвертор
(usd2rub.exe) пересчитывает цену из долларов в рубли. Демонстрирует
использование компонентов TextBox и Label. Программа спроектирована таким
образом, что пользователь может ввести в поля редактирования только
правильные данные (числа). Компонент Label предназначен для вывода на поверхность формы. |
|
|
002. Сила тока. Программа Сила тока
демонстрирует использование компонентов TextBox и Label, а также обработку исключения
«деление на ноль». |
|
|
003. Сопротивление. Программа
Сопротивление вычисляет сопротивление электрической цепи, состоящей из двух
резисторов, которые могут быть соединены последовательно или параллельно.
Демонстрирует использование компонента RadioButton. |
|
|
004. Кофе. Программа Кофе
демонстрирует использование компонента CheckBox. |
|
|
005. Любимый напиток. Программа
Любимый напиток демонстрирует использование компонента ComboBox. Списки компонентов ComboBox2 и ComboBox3 формируются во
время работы программы (делает это конструктор формы). Пользователь может
добавить элементы в списке компонентов ComboBox2 и ComboBox3,
однако элемент в список компонента ComboBox3 добавляется только в том случае, если такого элемента
в списке нет. |
|
|
006. Электроэнергия. Программа
Электроэнергия показывает, как одна функция может обрабатывать события
разных, но однотипных компонентов. |
|
|
007. ОСАГО. Программа ОСАГО, позволяет
рассчитать размер страховой премии, подлежащей уплате по договору
обязательного страхования гражданской ответственности. Демонстрирует
использование компонента ComboBox,
обработку одной функцией событий от нескольких компонентов. Программа
спроектирована таким образом, что кнопка ОК доступна только в том случае,
если введены все данные, необходимые для расчета. |
|
|
008. Калькулятор. Программа
Калькулятор позволяет выполнить простейшие расчеты. Следует обратить
внимание, что в качестве индикатора используется компонент StaticText. |
|
|
009. Калькулятор-2. Программа
Калькулятор-2 демонстрирует создание компонентов во время работы программы
или, как иногда говорят, «в коде». Кнопки калькулятора – это объединение в
массив компоненты SpeedButton.
Создание и настройку кнопок выполняет конструктор формы, он же определяет
(задает) процедуру обработки события Click. Следует обратить внимание, что объявление массива
компонентов SpeedButton
и функции обработки события Click
находится в объявлении типа формы, в заголовочном файле. |
|
|
010. Секундомер. Программа Секундомер
демонстрирует использование компонента Timer. |
|
|
011. Доступ в Internet.
Программа Доступ в Internet
показывает, как запустить Internet Explorer
или другой браузер для доступа к веб-странице. Браузер запускается в
результате щелчка в поле Labe11. |
|
|
012. Вывод справочной информации. Конвертор. Программа Конвертор демонстрирует различные способы отображения справочной информации в формате Wimhelp (файл с расширением hlp). Окно справки появляется в результате нажатия клавиши <F1> ил щелчка на кнопке Справка. Следует обратить внимание, что при нажатии клавиши <F1> в тот момент, когда курсор находится в одном из полей ввода, в окне справочной системы отображения раздел, поясняющтй назначение того поля, в котором находится курсор. Справочная
информация программы Конвертор состоит из пяти разделов. |
|
|
013. Вывод справочной информации. Конвертор – 2.
Программа Конвертор – 2 демонстрирует различные способы отображения
справочной информации в формате HTML (файл с расширением chm). Окно справки
появляется в результате нажатия клавиши <F1> ил щелчка на кнопке Справка,
когда курсор находится в одном из полей ввода/редактирования. В последнем
случае в окне справочной информации сразу отображается конкретный (нужный)
раздел справки. Следует обратить внимание, что отображение справки
активизирует процедура обработки события KeyDown, а не KeyPress. |
|
Файлы |
||
014. Погода. Программа Погода
добавляет в базу данных, представляющую собой текстовый файл, информацию о
температуре воздуха. Каждая строка файла данных meteo.txt содержит дату и значение
температуры. Если файла данных в текущем каталоге нет, то программа создает
его. Программа спроектирована так, что кнопка ОК доступна только в том случае,
если поле Температура содержит данные. |
|
|
015. MEdit. Простой редактор текста
(medit.exe). Демонстрирует использование компонентов RichEdit, MainMenu,
ToolBar, SpeedButton, OpenDialog, SaveDialog, работу с меню, выполнение
операций чтения и записи текста в файл |
|
Графики |
||
016. Приветствие. Программа Приветствие в зависимости от времени суток выводит приветствие Доброе утро, Добрый день, Добрый вечер или Доброй ночи. Демонстрирует вывод текста на поверхность формы. Следует обратить внимание на то, что вне зависимости от размера шрифта, который используется для вывода приветствия, текста всегда размещается в центре окна, даже в том случае, если пользователь во время работы программы изменит размер окна. |
|
|
017. Диаграмма. В окне Диаграммы отображается диаграмма, которая иллюстрирует изменение курса доллара. Программа спроектирована так, что, независимо от размера окна, диаграмма располагается в центре окна и занимает большую его часть, даже после того, как пользователь изменит размер окна. |
|
|
018. График. В окне программы График отображается график изменения курса доллара. Следует обратить внимание, что на графике отображаются не значения, а отклонение от минимально значения ряда. Это делает график наглядным даже в том случае, если разброс значений (разница между минимальным и максимальным значениями) ряда незначительный. |
|
|
019. КР диаграмма. В окне программа Круговая Диаграмма отображается диаграмма, которая отображает долю каждой категории в общей сумме. Исходные могут быть представлены как в «готовом виде» (доля каждой категории в общей сумме), так и без предварительной обработки. Во втором случае программа сама вычисляет долю каждой категории. Также выполняется сортировка исходных данных. |
|
|
020. Просмотр иллюстраций. Программа
Просмотр иллюстраций позволяет файлы формата JPEG, например – фотографии. Выбор
рабочей папки (каталог) выполняется в стандартном окне Выбор папки.
Иллюстрации можно просматривать по кадрам или в режиме слайд-шоу. Чистоту смены кадров в режиме слайд-шоу
определяет значение свойства Interval таймера. |
|
|
021. Пинг-понг. Программа
демонстрирует, как можно сделать графики интерактивной. В окне программы два
объекта: мячик и ракетка, которой при помощи клавиш перемещения курсора
управляет игрок. На форме программы только один компонент – Timer. |
|
|
022. Часы. В окне программы Часы
находится изображение идущих часов, которые показывают текущее время. |
|
|
023. Полет в облаках. Программа Полет в облаках демонстрирует принципы мультипликации (движение объекта на фоне картинки). Изображение фона и объекта загружаются из файла. Очередной кадр формируется в памяти (на поверхности невидимого битового образа), а затем выводится на поверхность формы с некоторым смещением относительно предыдущего положения. |
|
|
024. Бегущая строка. В этой программе баннер (бегущая строка) загружается из ресурса. Баннер "выплывает" из-за правой границы формы. В момент времени, когда банер достигает центра окна, движение приостанавливается на несколько секунд, а затем - возобновляется. Создать файл ресурсов можно при помощи утилиты Image Editor. |
|
|
025. Фоновый рисунок. Программа Фоновый рисунок демонстрирует, как можно получить фоновый рисунок путем многократного вывода битового образа на поверхность формы. Битовый образ загружается из файла, но может быть загружен и из ресурса. Окно программы и битовый образ. |
|
|
026. Олимпийский флаг. Программа олимпийский флаг демонстрирует вывод графики на поверхность формы. |
|
Мультимедиа |
||
027. MIDI. Программа Успеть за 60
секунд (gone60.exe) демонстрирует использование компонента MediaPlayer для
воспроизведения MIDI-файла. Мелодия воспроизводится "по кругу", до
тех пор, пока пользователь не угадает число или не истечет время, отведенное
на решение задачи. |
|
|
028. CDP. Полнофункциональный проигрыватель CD дисков (cdp.exe). Контролирует наличие диска в дисководе и его тип. Демонстрирует использование компонента MediaPlayer, а также отображение окна программы без границ и заголовка. |
|
|
029. CD Player. Программа позволяет
прослушать компакт-диск. После запуска или после того, как в дисковод будет
вставлен компакт-диск, в окне программы отображается количество треков диска
и общее время звучания CD,
в процессе воспроизведения – номер воспроизводимого трека, его длинна (время)
и время от начала воспроизведения. Демонстрирует использование компонента
MediaPlayer. |
|
|
030. Анимация. Программа анимация
демонстрирует воспроизведение AVI-анимации
при помощи компонента Animate.
Анимация загружается из файла в начале работы программы. Процесс
воспроизведения активизируется автоматически, в момент появления окна
прграммы на экране. Следует обратить внимание, что компонент Animate обеспечивает
воспроизведение только простой, не сопровождаемой звуком анимации. |
|
Базы данных |
||
031. Записная книжка. Программа
Записная книжка демонстрирует использование компонентов BDE для работы с одноименной базой
данных формата Paradox.
База данных состоит из одной единственной таблицы adrbk.db. Программа работает с данными в
режиме таблицы и позволяет просматривать, редактировать, добавлять и удалять
записи, а также обеспечивает выборку (поиск) информации по содержимому поля Name. Для доступа к базе
данных программа использует псевдоним adrbk. Создать псевдоним можно при помощи утилиты BDE Administrator. |
|
|
032. Ежедневник. Программа Ежедневник
демонстрирует использование компонентов ADO для доступа к базе данных формата Microsoft Access. База данных
содержит информацию о запланированных мероприятиях (дата, задача). Программа
позволяет вносить в базу данных изменения (добавлять, удалять и редактировать
записи), а также обеспечивает выбор информации по запросу – выводит список
мероприятий, запланированных «на сегодня», «на завтра» и «на неделю». При
запуске программа автоматически выводит список мероприятий, запланированных
«на сегодня» или, если программа запущена в пятницу, субботу или воскресенье,
«на сегодня и ближайшие дни». |
|
Игры и другие
полезные программы |
||
033. Сапер. Программа демонстрирует
работу с графикой, массивами, вывод справочной информации и показывает, как
можно запустить программу доступа в Internet. Окно О программе появляется на экране в результате
выбора в меню Справка команды О программе. |
|
|
034. Игра 15. Всем известна игра «15». Вот ее правила. В прямоугольной коробочке находятся 15 фишек, на которых написаны числа от 1 до 15. Размер коробочки – 4*4, таким образом в коробочке есть одна пустая ячейка. В начале игры фишки перемешаны. Задача игрока состоит в том, чтобы, не вынимая фишки из коробочки, выстроить фишки в правильном порядке. |
|
|
035. Игра «Собери картинку». Игра
Собери картинку. Задача игрока – расположить фишки в правильном порядке. Игра
заключается, когда картинка будет собрана. Программа загружает картинку из
файла формата BMP,
имя которого указано в командной строке запуска программы, или из файла,
который находится в каталоге программы. Если в каталоге программы несколько
файлов с расширением bmp,
то будет загружен первый по порядку файл. При повторной активизации игры в
результате выбора в строке меню команды Новая игра загружается следующий файл
с расширением bmp. |
|
|
036. Парные картинки. Игра Парные картинки развивает внимание. Вот ее правила. Игровое поле разделено на клетки, за каждой из которых скрыта картинка. Картинка парные, т.к. на игровом поле есть две клетки, в которых находятся одинаковые картинки. В начае игры всеклетки «закрыты». Щелчек левой кнопкой мыши «открывает» клетку, в клетке появляется картинка. Теперь надо найти клетку, в которой находится такая же картинка, как и в открытой клетке. Щелчок по другой клетке открывает вторую картинку. Программа, реализующая игру Парные картинки, демонстрирует работу с графикой. В приведенной реализации игры все картинки квадратные и находятся в одном файле. Это позволило сделать программу «интелектуальной2 – размер игрового поля (количество клеток по горизонтали и ертикали) определяется количеством картинок в файле: зная высоту и ширину картинки в файле, программа вычисляет размер и количество картинок и устанавливает соответствующий размер игрового поля. Таймер используется для организации задержки исчезновения открытых клеток, в которых находятся одинаковые картинки. |
|
|
037. Экзаменатор. Программа экзаменатор позволяет автоматизировать процесс тестирования. В окне программы отображается текст – последовательность вопросов, на которые используемый должен ответить путем выбора правильного ответа. В рассматриваемой программе вопросы загружаются из файла. Имя файла теста передается программе при ее запуске – указывается в качестве параметра команды запуска. |
||
038. Календарь. Программа Календарь
выводит изображение календаря на текущий месяц. Имеется возможность задать
праздничные дни. Демонстрирует вывод графики на поверхность формы, работу с
функциями манипулирования датами. Как видно, заголовок окна во время работы
программы не отображается (значение свойства BorderStyle равно
bsNone), однако
пользователь все-таки может переместить окно, «захватив» мышью сам календарь.
Непосредственное перемещение календаря (окна программы) выполняет функция
обработки события MouseUp,
которое возникает в момент отпускания кнопки мыши. |
|
|
039. Будильник. Программа будильник
выводит сообщение в установленное время пользователем время. После того как
пользователь задает сообщение, время и сделает щелчек на кнопке OK, окно программы исчезает
с экрана (сворачивается). В установленное время окно Будильник появляется на
экране. Отличительной особенностью программы является то, что значок,
обозначающий работающую программу (когда окно свернуто), отображается не в
панели задач, а в системной области панели задач (System Tray). При позиционировании
указателя мыши на значок программы отображается время, на которое установлен
будильник, а в результате нажатия правой кнопки появляется контекстное меню,
команды которого позволяют завершить работу программы или развернуть ее окно. |
|
|
040. Очистка диска. Очистка диска (clear.exe). Программа удаляет ненужные, созданные в процессе компиляции проектов C++Builder, файлы (obj, tds) и резервные копии (~bpr, ~dfm, ~h, ~cpp) из указанного пользователем каталога и всех его подкаталогов. Для выбора каталога используется стандартное окно Обзор папок. |
|
|
041. Печать. Программа Счет позволяет распечатать (вывести на принтер) счет. |
|
Дополнительные
программы |
||
042. Spending. Программа Расходы (spending.exe) обеспечивает работу с базой данных, которая представляет собой текстовый файл (tabl.grd). Для редактирования и просмотра данных используется компонент StringGrid. Внимание! Каталог проекта называется Spending а не Расходы, так как при испозовании в имени каталога буквы Ы, компилятор не может выполнить компиляцию. |
|
|
043. Звуки Windows. Программа Звуки
Windows (WinSound.exe) позволяет прослушать звуковые файлы (форматов WAV, RMI
,и MID), которые находятся в каталоге Windows\Media. Демонстрирует
использование компонента MediaPlayer. |
|
|
044. Кофе. Программа Кофе
демонстрирует использование компонента CheckBox. |
|
|
045. Просмотр анимации. |
|
|
046. Фунт. Программа Фунты-килограммы
позволяет пересчитать вес из фунтов в килограммы. Кнопка Пересчет доступна
только в том случае, если пользователь ввел исходные данные. |
|
Список
используемой литературы
1. Культин Н. Б. C++ Builder в
задачах и примерах. – СПб.: БХВ – Петербург, 2007. – 336 с.: ил.