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

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

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

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

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

Задание.

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

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

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

  2. Создание новое приложение (FileNewVCL 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. Напишите процедуру для отображения запланированных мероприятий на текущей неделе: