48712 (Разработка электронного органайзера средствами C++ Builder 6), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Разработка электронного органайзера средствами C++ Builder 6", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48712"

Текст 2 страницы из документа "48712"

Таблица 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 ("Вы действительно хотите удалить эту запись??","Подтвердите удаление",MB_OKCANCEL + MB_ICONQUESTION) ! = IDCANCEL)

{

try

{

DM->qr5->Close ();

DM->qr5->SQL->Clear ();

DM->qr5->SQL->Text = "DELETE from TBL_EVENTS where id=: id";

DM->qr5->ParamByName ("id") - >AsInteger=DM->qr1->FieldByName ("id") - >AsInteger;

DM->qr5->Prepare ();

DM->qr5->ExecSQL ();

DM->IBTransaction1->Commit ();

DM->qr1->Close ();

DM->qr1->SQL->Clear ();

DM->qr1->SQL->Text = "SELECT * FROM TBL_EVENTS";

DM->qr1->Open ();

DM->qr1->FetchAll ();

}

catch (. .)

{

DM->IBTransaction1->Rollback ();

ShowMessage ("Error");

}

}

}

При нажатии кнопки "Удалить" функция вызывает диалоговое окно пользователя MessageBox, под названием "Подтвердите удаление", вопросом пользователю "Вы действительно хотите удалить эту запись?" и кнопками "Да" и "Отмена".

При нажатии кнопки "Да" функция выполняет SQL-запрос к таблице TBL_EVENTS, удаляющий запись с текущим ID.

При нажатии "Отмена" функция возвращается на форму управления планировщиком задач.

На форме также представлена возможность просмотра записей таблицы TBL_EVENTS за определенный промежуток времени. Для этого на форму помещены два компонента DataTimePicker, задающие этот промежуток по датам. Нажатие кнопки "Просмотр" реализует следующая функция:

void __fastcall TfrmViewEv:: btnViewClick (TObject *Sender)

{

DM->qr1->Close ();

DM->qr1->SQL->Clear ();

DM->qr1->SQL->Text="SELECT DATE1, NAME FROM TBL_EVENTS where DATE1 between: d1 and: d2";

DM->qr1->ParamByName ("d1") - >AsDate=DateTimePicker1->Date;

DM->qr1->ParamByName ("d2") - >AsDate=DateTimePicker2->Date;

DM->qr1->Open ();

DM->qr1->FetchAll ();

}

После нажатия кнопки "Просмотр" выполняется SQL-запрос, который делает выборку тех записей в таблице TBL_EVENTS, значения столбца которых находятся в промежутке между значениями DataTimePickerов, которые посылаются в запрос в качестве параметров.

Функциональные клавиши "Добавить" и "Редактировать" вызывают формы добавления и редактирования событий соответственно.

2.4.2 Форма добавления нового напоминания

Форма вызывается как из главного меню, так и с главной формы приложения нажатием кнопки "Напомнить о…", а также из формы управления планировщиком задач.

Рис.5. Форма добавления нового напоминания

На форме помещены 2 компонента: DateTimePicker1 и Memo1. после ввода соответствующей информации и нажатии на кнопку "ОК" вызывается функция BitBtn1Click:

void __fastcall TfrmAddEv:: BitBtn1Click (TObject *Sender)

{

try

{

DM->qr1->SQL->Clear ();

DM->qr1->SQL->Add ("INSERT into tbl_events (DATE1,TIME1,NAME) values (: par1,: par2,: par3)");

DM->qr1->ParamByName ("par1") - >AsDate=DateTimePicker1->Date;

DM->qr1->ParamByName ("par2") - >AsTime=DateTimePicker1->Time;

DM->qr1->ParamByName ("par3") - >AsString= (Memo1->Text);

DM->qr1->ExecSQL ();

DM->IBTransaction1->Commit ();

ShowMessage ("successfull");

}

catch (. .)

{

DM->IBTransaction1->Rollback ();

ShowMessage ("Error");

}

Она выполняет подстановку значений DateTimePicker1и Memo1 при помощи параметров в запрос qr1 для добавления новой записи в таблицу TBL_EVENTS.

2.4 3 Форма редактирования выбранного напоминания

Форма редактирования выбранного напоминания вызывается при помощи нажатия кнопки "Редактировать" на форме управления планировщиком задач.

Рис.6. Форма редактирования выбранного напоминания

Чтобы форма выводила значения компонентов DateTimePicker1и Memo1 была написана функция FormShow:

void __fastcall TfrmEditEv:: FormShow (TObject *Sender)

{

DM->IBQuery1->Close ();

DM->IBQuery1->SQL->Clear ();

DM->IBQuery1->SQL->Text = "SELECT * FROM TBL_EVENTS where id=: par";

DM->IBQuery1->ParamByName ("par") - >AsInteger=DM->qr1->FieldByName ("ID") - >AsInteger;

DM->IBQuery1->Open ();

DM->IBQuery1->FetchAll ();

// ShowMessage (DM->IBQuery1->FieldByName ("DATE1") - >AsString);

DateTimePicker1->Date = DM->IBQuery1->FieldByName ("DATE1") - >AsDateTime;

Memo1->Text = DM->IBQuery1->FieldByName ("NAME") - >AsString;

}

А процесс сохранения измененной записи описывается функцией BitBtn1Click:

void __fastcall TfrmEditEv:: BitBtn1Click (TObject *Sender)

{

// DM->IBTransaction1->StartTransaction ();

try

{

DM->qr2->Params->Clear ();

DM->qr2->Close ();

DM->qr2->SQL->Clear ();

DM->qr2->SQL->Text="UPDATE TBL_EVENTS a SET a. name=: par22,date1=: par1 where id=: par3";

DM->qr2->ParamByName ("par1") - >AsDateTime= DateTimePicker1->DateTime;

DM->qr2->ParamByName ("par22") - >AsString= Memowhat->Text;

DM->qr2->ParamByName ("par3") - >AsInteger=DM->qr1->FieldByName ("id") - >AsInteger;

DM->qr2->Prepare ();

DM->qr2->ExecSQL ();

DM->IBTransaction1->Commit ();

frmEditEv->ModalResult = mrOk;

}

catch (. .)

{

DM->IBTransaction1->Rollback ();

ShowMessage ("Ошибка при обновлении данных");

}

}

Она выполняет обновление таблицы TBL_EVENTS новыми значениями DateTimePicker1и Memo1 запросом qr2.

2.5 Адресная книга

2.5 1 Форма управления адресной книгой

Адресная книга вызывается из помощи главного меню "Файл"-"Адресная книга" или "Адресная книга"-"Просмотреть" или нажатием кнопки "Адресная книга" на главной форме.

Рис.7. Форма управления адресной книгой

Адресная книга позволяет просматривать, добавлять, удалять и редактировать записи таблицы TBL_PEOPLE.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее