Разработка электронного органайзера средствами C++ Builder 6

Разработка электронного органайзера средствами C++ Builder 6

Разработка электронного органайзера средствами C++ Builder 6

Курсовая работа
РАЗРАБОТКА ЭЛЕКТРОННОГО ОРГАНАЙЗЕРА СРЕДСТВАМИ C++ BUILDER 6

Оглавление
Введение
Глава 1. Реализация программного кода Organizer 1.0″
1.1 Borland C++ Builder 6. Общие сведения
1.2 Borland C++ Builder 6. Разработка приложений баз данных
1.3 Компоненты C++ Builder 6, предназначенные для работы по технологии InterBase
Глава 2. Технология разработки программного кода и интерфейса «Organizer 1.0»
2.1 Структура приложения «Organizer 1.0»
2.2 Программная структура приложения «Organizer 1.0»
2.3 Главная форма
2.3.1 Структура Главного меню
2.3.2 Календарь
2.3.3 Список текущих событий
2.4 Планировщик задач
2.4.1 Форма управления планировщиком задач
2.4.2 Форма добавления нового напоминания
2.4 3 Форма редактирования выбранного напоминания
2.5 Адресная книга
2.5 1 Форма управления адресной книгой
2.5.2 Форма поиска по параметрам
Заключение
Список использованных источников

Введение
При современном темпе жизни и объеме информации, которую всегда нужно держать под рукой, электронный органайзер становится самой необходимой вещью любого современного человека. И неважно, кто он по профессии — главный директор крупной компании или забывчивый студент. Электронный органайзер поможет любому человеку помнить все даты, события и поручения.
Электронный органайзер «Organizer 1.0» — это не просто планировщик задач или ежедневник. Кроме функций классического органайзера он может использоваться как база клиентов, программа записной книжки для хранения контактов людей и предприятий, заметок, событий, праздников, юбилеев. Электронный ежедневник содержит удобный планировщик задач с напоминалкой. Каждая персона может сопровождаться такой информацией как Ф.И. О, адрес, телефон (дом, раб, сотовый), ICQ, e-mail, дата рождения, название фирмы, должность. В приложении есть функция быстрого поиска по адресной книге по нескольким параметрам, что существенно сокращает время для поиска нужной информации. В планировщике задач есть возможность просмотра событий за определенный промежуток времени, что поможет еще лучше спланировать свой рабочий график.

Глава 1. Реализация программного кода «Organizer 1.0»
1.1 Borland C++ Builder 6. Общие сведения
Система программирования Borland C++ Builder 6 завоевала достаточно прочные позиции среди профессиональных и начинающих программистов. Здесь можно отметить ряд причин большую популярность языка программирования C++, удобство визуального конструирования приложений, развитые возможности доступных средств системы, эффективность генерируемого кода и др.
Несмотря на появление современных технологий типа.net и соответствующих систем программирования, таких как Visual C++.net, система C++ Builder будет устойчиво занимать свою нишу. Это обусловлено меньшей требовательностью к аппаратным ресурсам при разработке приложений, большей легкостью в освоении и применении средств системы для разработки приложений различной степени сложности.
Программа на C++ состоит из объявлений (переменных, констант, типов, классов, функций) и описаний функций. Среди функций всегда имеется главная — main для консольных приложений (работающих с WIN32) или WinMain для приложений Windows. Именно эта главная функция выполняется после начала работы программы. Обычно в C++Builder эта функция очень короткая и выполняет только некоторые подготовительные операции, необходимые для начала работы. А далее при объектно-ориентированном подходе работа приложения определяется происходящими событиями и реакцией на них объектов.
Как правило, программы строятся по модульному принципу и состоят из множества модулей. Принцип модульности очень важен для создания надежных и относительно легко модифицируемых и сопровождаемых приложений. Четкое соблюдение принципов модульности в сочетании с принципом скрытия информации позволяет внутри любого модуля проводить какие-то модификации, не затрагивая при этом остальных модулей и головную программу.
В C++Builder все объекты компонентов размещаются в объектах — формах. Для каждой формы, которую вы проектируете в своем приложении, C++Builder создает отдельный модуль. Именно в модулях и осуществляется программирование задачи. В обработчиках событий объектов — форм и компонентов, вы помещаете все свои алгоритмы. В основном они сводятся к обработке информации, содержащейся в свойствах одних объектов, и задании по результатам обработки свойств других объектов. При этом вы постоянно обращаетесь к методам различных объектов.
Согласно принципам скрытия информации обычно текст модуля разделяют на заголовочный файл интерфейса, который содержит объявления классов, функций, переменных и т.п., и файл реализации, в котором содержится описание функций.
Стандартное расширение файлов реализации — срр. Стандартное расширение заголовочных файлов — h.
После того как программа написана, на ее основе должен быть создан выполняемый файл (модуль). Этот процесс осуществляется в несколько этапов.
Сначала работает препроцессор, который преобразует исходный текст. Препроцессор осуществляет преобразования в соответствии со специальными директивами препроцессора, которые размещаются в исходном тексте. Препроцессор может в соответствии с этими директивами включать тексты одних файлов в тексты других, развертывать макросы — сокращенные обозначения различных выражений и выполнять множество других преобразований.
После окончания работы препроцессора начинает работать компилятор. Его задача — перевести тексты модулей в машинный (объектный) код. В результате для каждого исходного файла. срр создается объектный файл, имеющий расширение. obj.
После окончания работы компилятора работает компоновщик, который объединяет объектные файлы в единый загрузочный выполняемый модуль, имеющий расширение. ехе. Этот модуль можно запускать на выполнение.
1.2 Borland C++ Builder 6. Разработка приложений баз данных
В зависимости от взаимного расположения приложения и БД можно выделить локальные и удаленные БД. Для выполнения операций с локальными БД разрабатываются и используются так называемые локальные приложения, а для операций с удаленными БД — клиент-серверные приложения.
Расположение БД в значительной степени влияет на разработку приложения, обрабатывающего содержащиеся в этой базе данные.
Так, различают следующие виды приложений
приложения, использующие локальные базы данных, называют одноуровневыми (однозвенными) приложениями, поскольку приложение и базы данных образуют единую файловую систему;
приложения, использующие удаленные базы данных, разделяют на двухуровневые (двухзвенные) и многоуровневые (многозвенные). Двухуровневые приложения содержат клиентскую и серверную части;
многоуровневые (обычно трехуровневые) приложения кроме клиентской и серверной частей имеют дополнительные части. К примеру, в трехуровневых приложениях имеются клиентская часть, сервер приложений и сервер базы данных.
Одно — и двухуровневые приложения C++ Builder могут осуществлять доступ к локальным и удаленным БД с использованием следующих механизмов
BDE (Borland Database Engine — процессор баз данных фирмы Borland), предоставляющий развитый интерфейс API для взаимодействия с базами данных;
ADO (ActiveX Data Objects — объекты данных ActiveX) осуществляет доступ к информации с помощью OLE DB (Object Linking and Embedding Data Base — связывание и внедрение объектов баз данных);
dbExpress обеспечивает быстрый доступ к информации в базах данных с помощью набора драйверов;
InterBase Express реализует непосредственный доступ к базам данных сервера InterBase.
Механизм доступа InterBase Express, с помощью которого реализовано приложение «Organizer 1.0», ориентирован строго на работу с сервером InterBase и основан на прямом применении функций API этого сервера. Отсюда следуют все достоинства и недостатки использования этого механизма доступа. Он обеспечивает высокую скорость работы компонентов
доступа к данным. Очевидным недостатком механизма доступа InterBase является невозможность применения его для серверов баз данных, отличных от сервера InterBase SQL Server.
Технология InterBase Express строго ориентирована на работу с сервером InterBase версии не ниже 5.5. Отсюда следуют основные достоинства и недостатки этой технологии.
При реализации «Organizer 1.0» была использована утилита IB Expert, она обеспечивает более удобную работу с базами данных. Позволяет быстро и легко взаимодействовать с сервером InterBase создавать, удалять, регистрировать и использовать базы данных.
1.3 Компоненты C++ Builder 6, предназначенные для работы по технологии InterBase
Компоненты C++ Builder 6, предназначенные для работы по технологии InterBase Express, расположены на странице InterBase Палитры компонентов.
Охарактеризуем кратко назначение основных из этих компонентов
IBTable — для получения данных из таблицы или представления базы данных. Является аналогом компонента table для BDE, совместим с визуальными компонентами. Полученный с помощью этого компонента набор данных является редактируемым;
IBQuery — для получения данных с помощью SQL-запроса. Является аналогом компонента Query для BDE, совместим с визуальными компонентами;
IBstoredProc — для вызова хранимых процедур и получения набора данных на основе результатов выполнения процедуры. Соответствующий набор данных является не редактируемым. Совместим с визуальными компонентами;
IBDatabase — для установления соединения с базой данных;
IBTransaction — для управления транзакцией;
IBUpdateSQL — для создания модифицируемых наборов данных, основанных на SQL-запросах. Является аналогом компонента updateSQL для BDE. Используется совместно с компонентом iBQuery;
IBDataSet — для получения и редактирования данных. Совместим со всеми визуальными компонентами. Обеспечивает эффективный доступ к данным для просмотра и редактирования;
IBSQL — для быстрого выполнения SQL-запроса с минимальными накладными расходами. Не имеет локального буфера данных, не совместим с визуальными компонентами;
IBDatabaseInfo — для получения системной информации о свойствах базы данных, соединения и сервера;
IBSQLMonitor — для перехвата и отслеживания SQL-запросов, которые выполняют приложения пр технологии InterBase Express;
IBEvents — для обработки событий сервера InterBase;
IBExtract — для получения метаданных от сервера InterBase;
IBClientDataSet — для получения данных и применения обновлений. Использует внутренние компоненты TIBDataSet И TDataSetProvider.
Компоненты IBTable, IBQuery, IBStoredProc И IBUpdateSQL во многом похожи на свои аналоги механизма BDE.

Глава 2. Технология разработки программного кода и интерфейса «Organizer 1.0»
2.1 Структура приложения «Organizer 1.0»
«Organizer 1.0» — программный продукт, который состоит из нескольких компонентов планировщик задач, связанный с ним календарь и адресная книга.

Рис.1 Структура приложения «Organizer 1.0».
В качестве основы приложения с помощью IB Expert была разработана база данных ORGANIZER, состоящая из двух таблиц TBL_EVENTS и TBL_PEOPLE.
Табл.1 Структура таблицы TBL_EVENTS

id_events
date1
name

Табл. 2 Структура таблицы TBL_ PEOPLE

id_people
imja
familia
otch
birth
email
icq
phone_mob
phone_home
phone_work
firm
post

phone_work
firm
post

Таблицы между собой не связаны, т.к несут разную смысловую нагрузку и реализуют разные задачи в приложении.
Таблица TBL_EVENTS предназначена для работы планировщика задач. Она содержит данные о введенных событиях (название, дата).
Таблица TBL_ PEOPLE предназначена для работы адресной книги. Она содержит данные о персоне (Ф.И. О, адрес, телефон (дом, раб, сотовый), ICQ, e-mail, дата рождения, название фирмы, должность).
2.2 Программная структура приложения «Organizer 1.0»
В приложении используются
главная форма с главным меню, обеспечивающим переход ко всем функциям приложения (frmMain);
формы, используемые Планировщиком задач для просмотра (frmViewEv), редактирования (frmEditEv) и добавления событий (frmAddEv);
формы, используемые Адресной книгой для просмотра (frmBook), добавления (frmAddB) и редактирования записей (frmEditB), а также форма поиска в книге по различным параметрам (frmSearchB);
модуль данных (DM), который содержит в себе компоненты DataSource, IBDataBase, IBTranzaction, IBQuery, обеспечивающие работу с базой данных.
Для реализации просмотра, добавления и редактирования информации в приложении использованы следующие компоненты С++ Builder
IBDatabase Этот компонент в основном используется в приложениях, работающих на платформе InterBase. Его задачи связаны с общением с удаленным сервером, реализацией транзакций, работой с паролями.
IBTransaction — организует управление транзакциями.
DataSource В качестве источника данных всегда используется размещенный на странице Data Access компонент DataSource. Он связывается с набором данных своим свойством Data Set.
IBQuery — невизуальный компонент набора данных, выполняющий запросы SQL к серверу InterBase.
DBGrid представляет собой таблицу, в которой могут отображаться поля строк, числовые и булевы поля. Для связи этого компонента с набором данных используется только одно свойство — DataSource.
DBNavigator — набор кнопок для навигации по DBGrid.
2.3 Главная форма
На главной форме приложения представлено
главное меню,
календарь,
навигационные кнопки, обеспечивающие быстрый доступ к адресной книге и планировщику задач соответственно,
список событий запланированных на сегодня.

Рис. Главная форма
2.3.1 Структура Главного меню
Файл
Адресная книга (осуществляет переход на форму, отображающую записи Адресной книги — frmBook)
Напоминалка (осуществляет переход на форму, отображающую записи о событиях frmViewEv)
Выход (закрывает приложение)
Адресная книга
2.1 Просмотреть (осуществляет переход на форму, отображающую записи Адресной книги — frmBook)
2.2 Найти человека (осуществляет переход на форму поиска персоны по различным введенным данным — frmSearchB)
2.3 Добавить новую запись (осуществляет переход на форму, добавляющую записи в Адресную книгу — frmAddB)
3. События
3.1 Просмотр событий (осуществляет переход на форму, отображающую записи о событиях frmViewEv)
3.2 Создать напоминание (осуществляет переход на форму, добавляющую записи в Планировщик задач — frmAddEv)
2.3.2 Календарь
В качестве календаря для приложения был взят компонент C++ Builder TMonthCalendar, который находится во вкладке Win32.
Компонент TMonthCalendar (Календарь) используется для быстрого выбора даты с помощью мыши. Сразу после размещения в форме календарь готов к работе.

Рис.3. Календарь на форме
В красном кружке выделена текущая дата (она же подробнее указана в нижней части календаря), синим подсвечена дата, выбранная с помощью мыши или дата, устанавливаемая в календаре по умолчанию. Слева можно отображать номера недель в году (свойство WeekNumbers). С помощью кнопок в верхней части календаря можно перемещаться по месяцам. Чтобы вернуться к месяцу с текущей датой, достаточно щелкнуть на ней в нижней части календаря.
Кроме информативной, календарь выполняет также одну из основных функций приложения. При двойном щелчке мыши на календарь вызывается форма добавления нового напоминания, что упрощает работу пользователя с программой.

2.3.3 Список текущих событий
Реализован при помощи компонента DBGrid. Он связан с ресурсом данных DS1 и запросом на выборку qr4, находящимися в модуле данных DM.
При каждом запуске приложения выполняется функция FormCreate, которая выглядит следующим образом
void __fastcall TfrmMain FormCreate (TObject *Sender)
{
MonthCalendar1->Date = Date ();
DM->qr4->Close ();
DM->qr4->SQL->Clear ();
DM->qr4->SQL->Text=»SELECT DATE1, NAME FROM TBL_EVENTS where DATE1= CURRENT_DATE»;
DM->qr4->ParamByName («CURRENT_DATE») — >AsDate = Date ();
DM->qr4->Open ();
DM->qr4->FetchAll ();
}
Здесь запрос qr4 производит выборку данных из таблицы TBL_EVENTS, значение столбца DATE1 которых совпадает с текущей датой.
2.4 Планировщик задач
2.4.1 Форма управления планировщиком задач
Планировщик задач вызывается с помощью главного меню «События», «Просмотр событий». Появляется форма (frmViewEv), которая позволяет просматривать, добавлять, редактировать и удалять записи.

Рис.4 Форма управления планировщиком задач.
На форме представлено содержимое таблицы TBL_EVENTS, с помощью DBGrid. Под таблицей расположены навигационные клавиши, позволяющие перемещаться по записям таблицы вперед и назад. Они реализованы при помощи компонента DBNavigator. Он связывается с базой данных ORGANIZER через свойство DataSet.
Функциональная клавиша «Удалить» удаляет всю текущую запись в DBGrid с помощью функции btnDelClick
void __fastcall TfrmViewEv btnDelClick (TObject *Sender)
{
if (Application->MessageBox («Вы действительно хотите удалить эту запись??»