Ежедневник

 
 
 
 
 
 

 

 
 
 
 
 
 

КУРСОВАЯ  РАБОТА

по  дисциплине

«Программирование высокого уровня»

на тему: «Ежедневник» 
 
 
 

Выполнила: Тихомирова Т.Г. 

2009г 
 

 

      Содержание

Введение………………………………………………………………………………..

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

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

Заключение……………………………………………………………………………..

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

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

4

5

5

5

5

5

6

7

8

12

18

18

28

33

35

35

46

47

49

 

 

      Введение

     Задумывались ли вы когда-нибудь над тем, почему одни люди успевают все, а другие ничего? Вовсе не потому, что первые могут делать несколько дел одновременно. Весь секрет здесь в четком планировании своего времени. Тот, кто знает ему настоящую цену, взял себе за правило пользоваться ежедневниками, занося туда важные дела по мере их появления. Иные же с вечера составляют список мероприятий на завтра и стараются придерживаться этого расписания. Дел бывает так много, что всех не упомнишь.

Некоторые пользуются записными книжками или блокнотами со специальной разметкой страниц, которые в изобилии продаются в магазинах и киосках «Информпечать» — это органайзеры в традиционной бумажной форме. Другие — более продвинутые — компьютерами или сотовыми телефонами — это органайзеры в электронной форме. И все таки проблема эта приобрела в наш век огромное значение.

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

 

     1 Техническое задание 
 

     
    1. Название и назначение разрабатываемой программы

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

 
    1. Основание для разработки

     Основанием  для разработки является задание  на курсовую работу по дисциплине «Программирование высокого уровня» на тему «Ежедневник». 

     
    1. Техническое требования к программе

       Для  работы программы необходимы:

    - процессор  Pentium100 или выше;

    - операционная  система Windows 9x или выше;

    - манипулятор  мышь;

    - 2 Мб внешней  памяти; 

 
    1. Функциональные  требования к программе

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

    - ежедневник  открывается на текущей дате;

    - просмотр  записей без ограничений по  дате;

    - установление будильника на определенное время

    - добавление  и изменение заметок о распорядке  дня;

    - информация  о свободном времени на следующую  неделю;

    - телефонный  справочник;

    - сохранение информации о всех внесенных записях во внешнем файле;

    - программа  должна обладать понятным интерфейсом  и относительной простотой работы с ней;

    - реализовать  вызов файла помощи, содержащего  руководство по пользованию программой. 

 
    1. Требования  по надежности

       Программа не должна проводить  к нарушению работы операционной  системы или других приложений. Программа должна работать без  сбоев и аварий. 

 

  1.    Анализ технического задания

     Необходимо  написать программу в среде, реализующую  функцию Ежедневник. Данная программа должна полностью соответствовать требованиям технического задания. Необходимо, чтобы при запуске программы Ежедневник открывал страницу с текущей датой и информацией о свободном времени на следующую неделю. Кроме того, необходимо реализовать функцию выбора произвольной даты с формированием списка дел на выбранную дату. Кроме планировщика заданий в программе реализован  справочник телефонных номеров. При разработке программы следует учесть, что информация о внесенных событиях и контактах должны храниться в файле.

     Для написания программы целесообразно  использовать среду DELPHI. Использование среды DELPHI позволяет написать программу с удобным интерфейсом. Кроме того программы, написанные на DELPHI, хорошо сочетаются с широко распространенными на сегодняшний день операционными системами WINDOWS. Использование WINDOWS накладывает ограничение на переход по дате (год должен находиться в интервале 1980 - 2099). Поскольку используется среда DELPHI, для удобной работы с программой необходим манипулятор "мышь". Для слаженной работы программы (реализации вставки рисунков), необходимо наличие свободных 2 Мб внешней памяти.

     Одним из основных требований к программе  является требование не нарушения работы операционной системы и других приложений. Поэтому при, написании программы следует не работать или до минимума сократить работу с системными файлами.

 

     3   Разработка и описание программу

     В программе используется пять модулей:

     - модуль описания классов;

     - модуль основной части программы;

     - модуль редактор дат;

     - модуль для удаления записей из телефонного справочника;

     - модуль для календаря.

     В модуле для удаления записей из телефонного  справочника  используются процедуры  для загрузки фамилий из файла, вызов  процедур и функций для поиска и удаления нужной фамилии.

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

     Модуль  основной части программы использует в своей работе все остальное  модули программы и процедуры, реализующие все этапы работы программы и взаимодействия с пользователем.

     Рассмотрим  программную реализацию этого модуля. Данный модуль включает в себя следующие процедуры:

     FormCreate

     FormClose

     PlanDay

     DateTimePicker1Change

     AddPhoneClick

     SaveDBClick

     DelRecClick

     PhoneDbButtonClick

     AlarmButtonClick

     GetAlarm

     ControlWindow

     IconMouse

     Ic

     PlanNextWeek 

     Процедура FormCreate производит открытие файла или при его отсутствии создание файла, а также инициализацию ежедневника на текущую дату, загрузка из файла список задач и инициализация заголовков таблицы телефонного справочника.

     Процедура FormClose производит закрытие ежедневника и освобождение памяти.

     Процедура DateTimePicker1Change производит поиск даты в файле. Если дата найдена формируется список задач на найденную дату.

     Процедура AddPhoneClick производит добавление строки ввода в телефонном справочнике.

     Процедура SaveDBClick производит сохранение всего телефонного справочника, при его редактировании или добавлении контакта, в файл.

     Процедура DelRecClick вызывает диалоговое окно для удаления необходимого контакта.

     Процедура PhoneDbButtonClick позволяет загрузить в телефонный справочник все контакты, которые хранятся в файле.

     Процедура AlarmButtonClick производит включение или отключение будильника.

     Процедура GetAlarm считывает время включения будильника и сообщение о том что время истекло.

     Процедура ControlWindow позволяет отловить минимизацию окна главной формы и добавляет значок в системный трей.

     Процедура IconMouse производит реакцию нажатия клавиш мышки на значке.

     Процедура Ic производит операции со значком в системном трее. В зависимости от того какой параметр передается в процедуру изменяется операции со значком: 1 – добавить, 2 – удалить, 3 – заменить.

     Процедура PlanNextWeek производит вычисление начала следующей недели, а также вычисляет количество свободного времени на следующую неделю

     Рассмотрим  основные этапы работы программы. После  запуска программы происходит инициализация  ежедневника сегодняшним числом, открытие или при отсутствии файла, его создание, создания заголовков таблицы телефонного справочники и таблицы на форме редактор дней, а также количество свободного времени за текущий день и за следующую неделю. Программа имеет 4 основных блока: работа с телефонным справочником, работа с редактором дней, работа с будильником. Блок-схема разрабатываемой программы представлена на рисунке 3.1

Рисунок 3.1 – Блок-схема работы программы (начало)

Рисунок 3.1 – Блок-схема работы программы (продолжение) 

  1. Руководство пользователя

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

     Рассмотрим  возможности программы. После запуска  программы в разделе «Сегодня»  мы видим сегодняшнюю дату (рисунок 4.1). C помощью этого раздела можно просматривать запланированные задачи на другие даты, если нажать на него, то появиться мини-календарь (рисунок 4.2), где собственно и производиться выбор необходимой даты. Выбираемый год должен входить в интервал 1980 – 2099 гг.

     

     Рисунок 4.1 – Главное окно программы.

     После выбора даты, в разделе «Запланировано» появятся все ваши запланированные задачи. Для примера выберем 10 апреля и посмотрим, что у нас там запланировано (рисунок 4.2). Мы видим, что на 10 апреля у нас назначено 3 важных задачи. Если теперь щелкнуть по одной из них мышью, то мы увидим что время и сообщение автоматически переносятся в раздел «Будильник». Будильник нам поможет не забыть о наших задачах, что бы его включить необходимо нажать на клавишу «Вкл.», после чего она примет утопленное состояние и надпись на ней измениться на «Выкл.» (рисунок 4.3).

     

     Рисунок 4.2 – Реализация перехода по дате

     Для того что бы выключить будильник  вам необходимо повторно нажать на ту же самую клавишу, при этом она вернется в обратное состояние.

     

     Рисунок 4.3 – Реализация автоматического переноса данных в раздел «Будильник»

     Допустим, что у нас истекло время, при  этом зазвучит звуковой сигнал, в виде сирены и на экране появиться сообщение  с указанием на время и сообщение. Это окно приведено на рисунке 4.4.

     Кроме запланированных задач на 10 апреля программа нам сообщает сколько у вас осталось свободного времени в разделе «Количество свободного времени» (рисунок 4.3). В этом разделе две записи первая указывает количество свободного времени на выбранный день, а вторая – на следующую неделю. Для того что бы не возникло путаницы в количестве свободного времени записи выделены разным цветом. Количество свободного времени на следующую неделю вычисляется только при запуске программы, и не меняется при смене даты в разделе «Сегодня»

     

     Рисунок 4.4 – Диалоговое окно сообщающее, что время истекло

     Для редактирования дат в программе  предусмотрена дополнительная форма, в этой форме вы можете добавлять, удалять и редактировать ваши даты. Рассмотрим

ее (рисунок 4.5).

 

Рисунок 4.5 – Окно «Редактор дня» 

      Слева в окне «Редактор дня» находится  таблица с помощью, которой вы можете ввести данные на определенное время. Справа находятся: кнопки управления датами, список дат, на которые у вас запланированы задачи и раздел «Дата», где указывается интересующая вас дата. Для того что бы быстро перейти к интересуемой вами дате достаточно выбрать дату в списке дат, при этом дата автоматически переноситься в раздел «Дата»

     Для того чтобы добавить дату в список дат необходимо:

  1. Выбрать необходимую вам дату в верхней части окна, в разделе «Дата»
  2. Перейти к таблице находящейся слева от раздела «Дата», и внести в соответствии с указанным временем необходимые задачи
  3. Нажать кнопку «Добавить запись»

      

     Если  у вас по какой-то причине изменился  план дня его можно легко изменить, для этого вам потребуется выполнить следующие действия:

  1. Выбрать необходимую вам дату в разделе «Дата» или в «Списке дат»
  2. Нажать на кнопку  «Редактировать запись», при этом таблица заполниться запланированными задачами
  3. Отредактировать в таблице ваши изменения
  4. Нажать на кнопку «Сохранить запись»
 

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

  1. Выбрать необходимую вам дату в разделе «Дата» или в «Списке дат»
  2. Нажать на кнопку «Удалить запись», после этого появиться диалоговое окно с подтверждением об удалении, рисунок 4.6
  3. В появившемся диалоговом окне подтвердить ваше действие
 

     Для удаления всех записей из списка дат  необходимо нажать на кнопку <Удалить все записи> 

     

     Рисунок 4.6 – Диалоговое окно подтверждающие удаление даты 

     Для хранения телефонных номеров в программе предусмотрен телефонный справочник (рисунок 4.7), куда вы можете занести наиболее важные вам контакты. 

     

     Рисунок 4.7 – Телефонный справочник

     Для работы с телефонным справочником предусмотрено  контекстовое меню, которое вызывается щелчком правой кнопкой мышки.

           Для добавлении записи необходимо выбрать раздел меню «Добавить контакт», при этом в таблице появляется свободная строка ввода данных. После того как все данные будут введены их необходимо сохранить, для этого в контекстовом меню выбираем пункт «Сохранить изменения».

     Для того чтобы удалить ненужный контакт  выбираем пункт контекстового меню «Удалить контакт». После чего на экране появиться диалоговое окно «Список контактов» (рис. 4.7). В нем вам необходимо выбрать фамилию удаляемого контакта и нажать на кнопку «Ok». После этого таблица телефонного справочника сократиться на одну запись. Данные в этом случае не нужно сохранять,  через пункт контекстового меню «Сохранить изменения» 

     

 

     Рисунок 4.7 – Диалоговое окно «Список контактов». 

     Дополнительной  возможностью программы является окно «Календарь», здесь вы можете уточнить, без особых усилий, интересующую вас  дату. Это окно показано на рисунке 4.8.

Рисунок 4.8 – Диалоговое окно «Календарь» 

     Для удобства в использовании программой, в ней предусмотрен механизм сворачивания программы в системный трейе (рисунок 4.9), при этом программа не мешает работе пользователя и может быть вызвана в любой момент времени. При нажатии правой кнопки мыши на значке появляется контекстовое меню из 4 пунктов: «Восстановить», «Добавить/Редактировать дату», «Включить/Выключить будильник», «Выход».  

     

     Рисунок 4.9 – Значок программы в системном  трейе 

     При нажатии «Восстановить» восстанавливается  главное окно программы. При нажатии  «Добавить/Редактировать дату» на экране появляется окно «Редактор дат», которое было описано выше. При нажатии «Включить/Выключить будильник» происходит включение либо выключение будильника. При выборе пункта «Выход» программы закрывается. 
 
 

 

     

  1.    Приложение
 

    5.1   Модуль класса Unit1 

unit Unit1; 

interface 

uses

      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, MyUnit, Mask,  ImgList, Grids, Buttons, ShellApi; 

type

     TForm1 = class(TForm)

             MainMenu1: TMainMenu;

             MenuEg: TMenuItem;

             MenuListDay: TMenuItem;

             MenuEditDay: TMenuItem;

             ToolBar1: TToolBar;

             DayButton: TToolButton;

             EditDayButton: TToolButton;

             ToolButton3: TToolButton;

             ToolButton5: TToolButton;

             ToolButton6: TToolButton;

             Panel1: TPanel;

             Label1: TLabel;

             DateTimePicker1: TDateTimePicker;

             GroupBox1: TGroupBox;

             Label2: TLabel;

             GroupBox2: TGroupBox;

             ListBox1: TListBox;

             ImageList1: TImageList;

             PhoneDbButton: TToolButton;

             GroupBox3: TGroupBox;

             Label3: TLabel;

             MaskEdit1: TMaskEdit;

             Label4: TLabel;

             Edit1: TEdit;

             Panel2: TPanel;

             StringGrid1: TStringGrid;

             PopupMenu1: TPopupMenu;

             AddPhone: TMenuItem;

             SaveDB: TMenuItem;

             DelRec: TMenuItem;

             MenuCalend: TMenuItem;

             Tire: TMenuItem;

             MenuExit: TMenuItem;

             MenuBook: TMenuItem;

             PhoneBook: TMenuItem;

             Timer1: TTimer;

             AlarmButton: TSpeedButton;

             PopupMenu2: TPopupMenu;

             PopEG: TMenuItem;

             PopAddDate: TMenuItem;

             PopOnAlarm: TMenuItem;

             N1: TMenuItem;

             PopExit: TMenuItem;

             Label5: TLabel;

             Help: TMenuItem;

             procedure MenuEditDayClick(Sender: TObject);

             procedure EditDayButtonClick(Sender: TObject);

             procedure FormCreate(Sender: TObject);

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

             procedure DateTimePicker1Change(Sender: TObject);

             procedure PhoneDbButtonClick(Sender: TObject);

             procedure DayButtonClick(Sender: TObject);

             procedure AddPhoneClick(Sender: TObject);

             procedure SaveDBClick(Sender: TObject);

             procedure DelRecClick(Sender: TObject);

             procedure MenuListDayClick(Sender: TObject);

             procedure MenuCalendClick(Sender: TObject);

             procedure ToolButton3Click(Sender: TObject);

             procedure MenuExitClick(Sender: TObject);

             procedure ToolButton6Click(Sender: TObject);

             procedure PhoneBookClick(Sender: TObject);

             procedure AlarmButtonClick(Sender: TObject);

             procedure Timer1Timer(Sender: TObject);

             procedure ListBox1Click(Sender: TObject);

             procedure PopEGClick(Sender: TObject);

             procedure PopAddDateClick(Sender: TObject);

             procedure PopOnAlarmClick(Sender: TObject);

             procedure PopExitClick(Sender: TObject);

             procedure HelpClick(Sender: TObject);

           private

             procedure ControlWindow(var MSG: TMessage); // ОТЛАВЛИМАЕМ МИНИМИЗАЦИЮ ПРИЛОЖЕНИЯ

             message WM_SYSCOMMAND;

             procedure IconMouse(var Msg: Tmessage); // РЕАКЦИЯ НАЖАТИЙ КНОПОК НА ЗНАЧКЕ В ТРЕЕ

             message WM_USER + 1;

           public

             procedure PlanDay(n: integer);

             procedure PlanNextWeek(DT: TDate);

             procedure GetAlarm;           // СЧИТЫВАЕМ ВРЕМЯ И СООБЩЕНИЕ 

             procedure Ic(n: integer; Icon: TIcon);

             procedure OnMinimizeProc(sender: TObject);

      end; 

var

     Form1: TForm1; 

implementation 

uses Unit2, Unit3, Unit4; 

{$R *.dfm} 
 

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

Ежедневник