Ежедневник

Автор: Пользователь скрыл имя, 12 Декабря 2010 в 02:16, курсовая работа

Описание работы

В данной курсовой работе разрабатывается прикладная программа «Ежедневник», реализующая функции телефонного справочника и планировщика заданий. Программа позволяет пользователю планировать свое расписание на целый день, который разбит с шагом 30 минут. А телефонный справочник позволяет хранить все важные контакты.

Содержание

Введение………………………………………………………………………………..
1 Техническое задание………………………………………………………………...

1.Название и назначение разрабатываемой программы……………………….
2.Основание для разработки……………………………………………………..
3.Технические требования к программе………………………………………...
4.Функциональные требования к программе....………………………………...
5.Требования по надежности…………………………………………………….
2.Анализ технического задания…...…………………………………………………
3.Разработка и описание программы………………………………………………..
4.Руководство пользователя…………………………………………………………
5.Приложение ……………………………………………………………………
1.Модуль Unit1……………………………………………………………………
2.Модуль Unit2……………………………………………………………………
3.Модуль Unit3……………………………………………………………………
4.Модуль Unit4……………………………………………………………………
5.Модуль MyUnit…………………………………………………………………
Заключение……………………………………………………………………………..

Глоссарий ……………………………………………………………………………...

Список использованной литературы………………………………………………..

Работа содержит 1 файл

пояснительная записка.doc

— 545.00 Кб (Скачать)

//                   ГЛАВНАЯ ФОРМА                          *

//******************************************************** 

// ПРИ СОЗДАНИИ  ФОРМЫ ИДТЕ ИНИЦИАЛИЗАЦИЯ ДАННЫХ

procedure TForm1.FormCreate(Sender: TObject);

var

      i: integer;

begin

     TypFile:= TTypFile.Create;

     PhoneFile:= TPhoneFile.create; 

     DateTimePicker1.Date:= Now;         // сегодняшняя дата

     GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ' запланировано: '; 

    i:= TypFile.FindRec(DateToStr(DateTimePicker1.Date)); // номер положения даты в файле

     if TypFile.DableDate then     // если дата  существует тогда формируем список  дел

         PlanDay(i)

     else

         begin

         ListBox1.Items.Add('На  этот день у вас ни чего  не запланировано');

         Label2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ': ' + 'Вы свободны';

          end; 

// таблица телефонного  справочника

     StringGrid1.Cells[0,0]:= 'Фамилия';

     StringGrid1.Cells[1,0]:= 'Телефон';

     StringGrid1.Cells[2,0]:=  'Адресс';

     StringGrid1.Cells[3,0]:= 'Организация';

     StringGrid1.Cells[4,0]:= 'Примечание'; 

     PlanNextWeek(Form1.DateTimePicker1.Date);

end; 

// ПРИ ЗАКРЫТИИ  ФОРМЫ ИДЕТ ОСВОБОЖДЕНИИ ПАМЯТИ

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

      PhoneFile.CloseDB;

      PhoneFile.Destroy;

      TypFile.CloseDB;

      TypFile.Destroy;

end; 

//*******************************************************

//                      СПРАВОЧНИК ДАТ                  *

//*******************************************************

// ФОРМИРУЕМ  СПИСОК ЗАДАЧ НА ТЕКУЩИЙ ДЕНЬ

procedure TForm1.PlanDay(n: integer);

var

    i: integer;

    s: string;

    hor,TimeFree: integer;

begin

      seek(TypFile.FFile, n);

      read(TypFile.FFile, EG);

      TimeFree:= 1440;

      hor:= 0;

      for i:= 0 to 49 do

        begin

            if eg.work[i] <> '' then

             begin

                 s:= eg.clock[i] + '  ' + eg.work[i];

                 Form1.ListBox1.Items.Add(s);

                 TimeFree:= TimeFree - 30;

             end;

        end; 

      hor:= TimeFree div 60;

      TimeFree:= TimeFree mod 60; 

      if hor <> 24 then

           Form1.Label2.Caption:= 'На ' + EG.Date + ': ' + IntToStr(hor) + ' час. ' + IntToStr(TimeFree) + ' мин.'

      else

           Form1.Label2.Caption:= 'На ' + EG.Date + ': вы свободны';

end; 

// ПРИ СМЕНЕ  ДАТЫ ФОРМИРУЕМ СПИСОК ДЕЛ

procedure TForm1.DateTimePicker1Change(Sender: TObject);

var

    i: integer;

begin

      ListBox1.Items.Clear;

      GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ' запланирвано: ';

      i:= TypFile.FindRec(DateToStr(DateTimePicker1.Date)); // номер положения даты в файле

      if TypFile.DableDate then     // если дата существует тогда формируем список дел

          PlanDay(i)

      else

       begin

          ListBox1.Items.Add('На этот день у вас ни чего не запланировано');

          Form1.Label2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ': ' + 'Вы свободны';

       end;

end; 

// ВЫСЧИТЫВАЕМ  СВОБОДНОЕ ВРЕМЯ НА СЛЕДУЮЩУЮ  НЕДЕЛЮ

procedure TForm1.PlanNextWeek(DT: TDate);

var

    i,j,n: integer; // СЧЕТЧИК

    Y,M,D: word;    // ГОД, МЕСЯЦ, ДЕНЬ

    Time_F, Hor, Min: integer; // СВОБОДНОЕ ВРЕМЯ, ЧАС, МИНУТА

begin

     DT:= TypFile.NextWeek(DT);  // ИЩЕМ НАЧАЛО СЛЕДУЮЩЕЙ  НЕДЕЛИ

     Time_F:= 10080;             // 10080 МИН. ЗА 7 ДНЕЙ

     for i:= 0 to 6 do           // ЦИКЛ ИЗ 7 ДНЕЙ

      begin

          n:= TypFile.FindRec(DateToStr(Dt));// ИЩЕМ В СПИСКЕ ДАТУ

          if TypFile.DableDate then     // ЕСЛИ НАШЛИ ВЫСЧИТЫВАЕМ ВРЕМЯ

             begin

                Seek(TypFile.FFile, n);

                Read(TypFile.FFile, EG);

                for j:= 0 to 49 do

                   begin

                      if eg.work[j] <> '' then

                         Time_F:= Time_F - 30;

                   end;

             end;

          DecodeDate(DT, Y, M, D); // РАЗБИВАЕМ ДАТУ НА  ГОД, МЕСЯЦ И ДЕНЬ

          D:= D + 1;               // ПЕРЕХОДИМ НА СЛЕДУЮЩИЙ ДЕНЬ

          TypFile.CheckDay(Y,M,D); // ПРОВЕРЯЕМ НЕ ПЕРЕШЕЛ  ЛИ ДЕНЬ ЗА 31 ЧИСЛО

                                 // ЕСЛИ ПЕРЕШЛИ ТО ПРОЦЕД. ВЕРНЕТ  ОТКОРЕКТИВАННУ ДАТУ

          DT:= EncodeDate(Y,M,D);  // ПРЕОБРАЗУЕМ

      end; 

      Hor:= Time_F div 60;

      Min:= Time_F mod 60; 

      if hor <> 168 then

        Form1.Label5.Caption:= 'На следующую неделю: ' + IntToStr(hor) + ' час : ' +

                               IntToStr(min) + ' мин'

      else

         Form1.Label5.Caption:= 'На следующую неделю: ' + 'ни чего нет' 

end; 

//********************************************************

//             ПАНЕЛЬ БЫСТРОГО ДОСТУПА И МЕНЮ             *

//******************************************************** 

// КНОПКА <1 В  ПАНЕЛИ БЫСТ. ДОСТУПА>

procedure TForm1.DayButtonClick(Sender: TObject);

var

  i: integer;

begin

    ListBox1.Items.Clear;

    GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ' запланировано: '; 

      i:= TypFile.FindRec(DateToStr(DateTimePicker1.Date)); // номер положения даты в файле

      if TypFile.DableDate then     // если дата существует тогда формируем список дел

          PlanDay(i)

      else

        ListBox1.Items.Add('На этот день у вас  ни чего не запланировано');

    Panel1.Visible:= true;

    Panel2.Visible:= False;

end; 

// КНОПКА <РЕДАКТОР  ДНЯ В ПАНЕЛИ БЫСТРОГО ДОСТУПА>

procedure TForm1.MenuEditDayClick(Sender: TObject);

begin

      Form2.ShowModal;

end; 

// КНОПКА <КАЛЕНДАРЬ  В ПАНЕЛИ БЫСТРОГО ДОСТУПА>

procedure TForm1.ToolButton3Click(Sender: TObject);

begin

     Form4.ShowModal;

end; 

// КНОПКА <ВЫХОД>

procedure TForm1.ToolButton6Click(Sender: TObject);

begin

     Form1.Close;

end; 

// МЕНЮ <СПИСОК>

procedure TForm1.MenuListDayClick(Sender: TObject);

begin

     DayButtonClick(nil);

end; 

// МЕНЮ <РЕДАКТИР ДАТЫ>

procedure TForm1.EditDayButtonClick(Sender: TObject);

begin

     Form2.ShowModal;

end; 

// МЕНЮ <КАЛЕНДАРЬ>

procedure TForm1.MenuCalendClick(Sender: TObject);

begin

     Form4.ShowModal;

end; 
 

// МЕНЮ <ВЫХОД>

procedure TForm1.MenuExitClick(Sender: TObject);

begin

     Form1.Close;

end; 

// МЕНЮ <СПРАВКА>

procedure TForm1.HelpClick(Sender: TObject);

begin

     WinHelp(Form1.Handle, 'Help.hlp', HELP_CONTEXT, 1);

end; 

//*****************************************************

//          ТЕЛЕФОННЫЙ СПРАВОЧНИК                   *

//***************************************************** 

// КОНСТЕКСТОВОЕ  МЕНЮ: ДОБАВИТЬ КОНТАКТ

procedure TForm1.AddPhoneClick(Sender: TObject);

begin    

          PhoneFile.NumberRec:= PhoneFile.NumberRec + 1;

          StringGrid1.RowCount:= PhoneFile.NumberRec + 2;

end; 

// КОНТЕКСТОВОЕ МЕНЮ:  <СОХРАНИТЬ ИЗМЕНЕНИЯ>

procedure TForm1.SaveDBClick(Sender: TObject);

var

    i: integer;

begin

    Seek(PhoneFile.FPhoneFile, 0);

    Truncate(PhoneFile.FPhoneFile); // СТИРАЕМ ВСЕ ЗАПИСИ ДЛЯ ПЕРЕЗАПИСИ 

    for i:= 0 to PhoneFile.NumberRec do

      begin

          Phone.Name:= StringGrid1.Cells[0, i+1];

          Phone.Tel:= StringGrid1.Cells[1, i+1];

          Phone.Address:= StringGrid1.Cells[2, i+1];

          Phone.Org:= StringGrid1.Cells[3, i+1];

          Phone.comment:= StringGrid1.Cells[4, i+1]; 

          write(PHoneFile.FPhoneFile, Phone);

      end;

end; 

// КОНТЕКСТОВОЕ МЕНЮ: <УДАЛИТЬ КОНТАКТ>

procedure TForm1.DelRecClick(Sender: TObject);

begin

     Form3.Show;

end; 
 

// ПАНЕЛЬ БЫСРОГО ДОСТУПА; КНОПКА <4>

procedure TForm1.PhoneDbButtonClick(Sender: TObject);

var

  i: integer;

begin

    if StringGrid1.RowCount < PhoneFile.NumberRec + 1 then

      StringGrid1.RowCount:= PhoneFile.NumberRec + 1;  // КОЛ-ВО СТРОК

    // ДОЛЖНО БЫТЬ НА ОДНУ БОЛЬШЕ 

    seek(PhoneFile.FPhoneFile, 0);      // УСТАНАВАЛИВАЕМ  КУРСОР В НАЧАЛО ФАЙЛА

    for i:= 0 to PhoneFile.NumberRec - 1 do // ИДЕМ ОТ НАЧАЛА ДО КОНЦА

        begin

          Phone:= PhoneFile.ReadRec;        // ЧИТАЕМ ДАННЫЕ И ЗАНОСИМ В ТАБЛИЦУ

          StringGrid1.Cells[0,i + 1]:= phone.Name;

          StringGrid1.Cells[1,i + 1]:= Phone.Tel;

          StringGrid1.Cells[2,i + 1]:= Phone.Address;

          StringGrid1.Cells[3,i + 1]:= Phone.Org;

          StringGrid1.Cells[4,i + 1]:= Phone.comment;

        end; 

    Panel2.Visible:= true;

    Panel1.Visible:= False

end; 
 

// МЕНЮ <ТЕЛЕФОНЫЙ СПРАВОЧНИК>

procedure TForm1.PhoneBookClick(Sender: TObject);

begin

     PhoneDbButtonClick(nil);

end; 
 

//************************************************

Информация о работе Ежедневник