Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА Цымбалюк.doc
Скачиваний:
21
Добавлен:
29.08.2019
Размер:
2 Мб
Скачать
☆

Задание №9. Ежедневник

Цель занятия: Закрепить умения и навыки работы с базами данных

Студенты должны знать: свойства и методы компонентов для работы с графикой

уметь: создавать приложение для работы с графикой

Задание.

  1. Создайте новую базу данных Planner.mdb.

    1. Создайте таблицу, согласно рисунка ниже. Заполните данными (произвольно).

  1. Выберите в меню Пуск – Программы - CodeGear RAD Studio 2009 - C++Builder 2009

  2. Создание новое приложение (File – New – VCL Forms Application).

    1. Проектирование интерфейса приложения. Переименуйте заголовок приложения на Ежедневник.

      1. Подключите базу данных. Для этого измените свойство ConectionString компонента ADOConnection1. Измените свойство LoginPrompt на False, Connected=True.

      2. Измените свойства компонента ADODataSet1: Connection = ADOConnection1, CommandText= Select * From schedure order by aDate

      3. Измените свойство DataSet компонента DataSoure на ADODataSet1

      4. Измените свойства компонента DBGrid1: DataSource на DataSoure1, Columns[0].FieldName = aDate, Columns[0].Title.Caption = Когда, Columns[1].FieldName = aTask, Columns[1].Title.Caption = Что

    1. Программирование приложения

      1. Добавьте следующие модули #include <DateUtils.hpp>, #include <ComObj.hpp>

      2. Опишите переменные:

AnsiString stDay[7]={"воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"};

AnsiString stMonth[12]={"января","февраля","марта","апреля","мая","июня","июля","августа","сентября", "октября","ноября","декабря"};

      1. Самостоятельно опишите процедуру ShowSQL и её реализацию. Указания к выполнению: процедуру должна выводить в диалоговом окне значение свойства CommandText компонента ADODataSet1.

      2. Напишите процедуру на событие onShow формы:

Void __fastcall tForm1::FormShow(tObject *Sender)

{

TDateTime Today, NextDay;

Word Year,Month,Day;

Today=Now();

DecodeDate(Today,Year,Month,Day);

Label1->Caption="Сегодня"+IntToStr(Day)+" "+stMonth[Month-1]+" "+IntToStr(Year)+" года, "+stDay[DayOfWeek(Today)-1];

switch(DayOfWeek(Today)){

case 6:NextDay=Today+3; break; //сегодня пятница, смотрим, что запланировано на понедельник

case 7:NextDay=Today+2; break; //сегодня суббота - аналогично

default:NextDay=Today+1; break;

}

ADODataSet1->CommandText="SELECT*FROM schedule WHERE aDate BETWEEN DateValue('"+FormatDateTime("dd/mm/yyyy",Today)+"') AND DateValue('"+FormatDateTime("dd/mm/yyyy",NextDay)+"') ORDER BY aDate";

if (CheckBox1->Checked) ShowSQL();

Button1->Enabled=false;

Button2->Enabled=false;

Button3->Enabled=false;

Button4->Enabled=false;

return;

}

if (!ADODataSet1->RecordCount)

ShowMessage("На сегодня и ближайшие дни ни каких дел не запланировано.");

}

      1. Напишите процедуру при нажатии на кнопку Сегодня

Void __fastcall tForm1::Button1Click(tObject *Sender)

{

AnsiString today=FormatDateTime("dd/mm/yyyy",Now());

Form1->Label2->Caption="Сегодня";

ADODataSet1->Close();

ADODataSet1->CommandText="SELECT*FROM schedule WHERE aDate=DateValue('" +today+"')";

if (CheckBox1->Checked) ShowSQL();

ADODataSet1->Open();

if (!ADODataSet1->RecordCount) ShowMessage("На завтра никаких дел не запланировано!");

}

      1. Аналогично, напишите процедуру при нажатии на кнопку Завтра. Указания для выполнения: при определении завтрашней даты используйте функцию: Now()+1.

      2. Напишите процедуру для отображения запланированных мероприятий на текущей неделе: