Автор: Пользователь скрыл имя, 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…………………………………………………………………
Заключение……………………………………………………………………………..
Глоссарий ……………………………………………………………………………...
Список использованной литературы………………………………………………..
// ГЛАВНАЯ ФОРМА *
//****************************
// ПРИ СОЗДАНИИ
ФОРМЫ ИДТЕ ИНИЦИАЛИЗАЦИЯ
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
TypFile:= TTypFile.Create;
PhoneFile:=
TPhoneFile.create;
DateTimePicker1.Date:= Now; // сегодняшняя дата
GroupBox2.Caption:=
'На ' + DateToStr(DateTimePicker1.
i:= TypFile.FindRec(DateToStr(
if
TypFile.DableDate then // если дата
существует тогда формируем
PlanDay(i)
else
begin
ListBox1.Items.Add('На этот день у вас ни чего не запланировано');
Label2.Caption:=
'На ' + DateToStr(DateTimePicker1.
end;
// таблица телефонного справочника
StringGrid1.Cells[0,0]:= 'Фамилия';
StringGrid1.Cells[1,0]:= 'Телефон';
StringGrid1.Cells[2,0]:= 'Адресс';
StringGrid1.Cells[3,0]:= 'Организация';
StringGrid1.Cells[4,0]:=
'Примечание';
PlanNextWeek(Form1.
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(
var
i: integer;
begin
ListBox1.Items.Clear;
GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.
i:= TypFile.FindRec(DateToStr(
if TypFile.DableDate then // если дата существует тогда формируем список дел
PlanDay(i)
else
begin
ListBox1.Items.Add('На этот день у вас ни чего не запланировано');
Form1.Label2.Caption:= 'На ' + DateToStr(DateTimePicker1.
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.
i:= TypFile.FindRec(DateToStr(
if TypFile.DableDate then // если дата существует тогда формируем список дел
PlanDay(i)
else
ListBox1.Items.Add('На этот
Panel1.Visible:= true;
Panel2.Visible:= False;
end;
// КНОПКА <РЕДАКТОР ДНЯ В ПАНЕЛИ БЫСТРОГО ДОСТУПА>
procedure TForm1.MenuEditDayClick(
begin
Form2.ShowModal;
end;
// КНОПКА <КАЛЕНДАРЬ В ПАНЕЛИ БЫСТРОГО ДОСТУПА>
procedure TForm1.ToolButton3Click(
begin
Form4.ShowModal;
end;
// КНОПКА <ВЫХОД>
procedure TForm1.ToolButton6Click(
begin
Form1.Close;
end;
// МЕНЮ <СПИСОК>
procedure TForm1.MenuListDayClick(
begin
DayButtonClick(nil);
end;
// МЕНЮ <РЕДАКТИР ДАТЫ>
procedure TForm1.EditDayButtonClick(
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(
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;
//****************************