Автор: Пользователь скрыл имя, 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…………………………………………………………………
Заключение……………………………………………………………………………..
Глоссарий ……………………………………………………………………………...
Список использованной литературы………………………………………………..
{ TTypFile }
//****************************
// БАЗОВЫЙ КЛАСС *
//****************************
// СОЗДАЕМ ФАЙЛ БАЗЫ ДАННЫХ
function TTypFile.CreateDb(const DBname: string): boolean;
begin
AssignFile(FFile, Dbname); // ПРИВЯЗЫВАЕМ К ФАЙЛУ ИМЯ
try
Rewrite(FFile); // СОЗДАЕМ ФАЙЛ С ЭТИМ ИМЕНЕМ
DbOpen:= true; // ОТМЕЧАЕМ ЧТО ФАЙЛ ОТКРЫТ
except
DbOpen:= False; // ФАЙЛ НЕ ОТКРЫТ
end;
NumberRec:= 0; // КОЛ-ВО СТРОК РАВНО НУЛЮ
Result:= DbOpen; // РЕЗУЛЬТАТ СОЗДАНИЯ ФАЙЛА
end;
// ОТКРЫВАЕМ ФАЙЛ.
function TTypFile.OpenDb(const DBName: string): boolean;
begin
AssignFile(FFile, DbName);
{$I-}
Reset(FFile);
{$I+}
if IOResult <> 0 then
begin
NumberRec:= 0;
DbOpen:= False;
end
else
begin
NumberRec:= FileSize(FFile); // кол-во записей
DbOpen:= True;
end;
Result:= DbOpen;
end;
// ДОБАВИТЬ ЗАПИСЬ В ФАЙЛ
procedure TTypFile.AddRec(const Rec: TEGRec);
begin
ModifyNextRec(Rec, NumberRec); // переместиться на последнею запись и добавить запись
NumberRec := FileSize(FFile); // новое кол. записей
end;
// ИЗМЕНИТЬ ЗАПИЬ ПОД НОМЕРОМ N
procedure TTypFile.ModifyNextRec(const Rec: TEGRec; N: integer);
begin
Seek(FFile, n); // переместиться на n - запись
Write(FFile, rec);
end;
// ЧИТАТЬ ЗАПИСЬ ПОД НОМЕРОМ RecNo
function TTypFile.ReadRec(const RecNo: integer): TEGRec;
begin
Seek(FFile, RecNo);
read(FFile, result);
end;
// ЗАКРЫВАЕМ ФАЙЛ
procedure TTypFile.CloseDB;
begin
if DbOpen then
CloseFile(FFile);
end;
// КОНСТРУКТОР
constructor TTypFile.Create;
begin
if not OpenDb('BD.txt') then
CreateDB('BD.txt');
end;
// ОСБОЖДАЕМ ПАМЯТЬ
destructor TTypFile.Destroy;
begin
inherited Destroy;
end;
// ПРОЦЕДУРА ПОИСКА ДАТЫ
function TTypFile.FindRec(d: string): integer;
var
i: integer;
begin
Seek(FFile, 0);
DableDate:= false;
for i:= 0 to NumberRec - 1 do
begin
Read(FFile, EG);
if D = EG.Date then
begin
result:= i;
dableDate:= true;
exit;
end;
end;
end;
// ПРОЦЕДУРА УДАЛЕНИЯ ВСЕХ ЗАПИСЕЙ
procedure TTypFile.DeleteDb;
begin
Seek(FFile, 0);
Truncate(FFile);
NumberRec:= FileSize(FFile);
end;
// ПРОЦЕДУРА УДАЛЕНИЯ N ЗАПИСИ
procedure TTypFile.DeleteRec(n: integer);
begin
seek(FFile, NumberRec - 1);
read(FFile, EG);
Seek(FFile, n);
write(FFile,
eg);
seek(FFile, NumberRec-1);
truncate(FFile);
NumberRec:= FileSize(FFile);
end;
// ПРОЦЕДУРА ЗАПИСЫВАЕТ НОМЕР ЗАПИСИ
procedure TTypFile.SetCurNum(n: integer);
begin
CurNum:= n;
end;
// ПРОЦЕДУРА ЧТЕНИЯ НОМЕРА ЗАПИСИ
function TTypFile.GetCurNum: integer;
begin
result:= CurNum;
end;
// ПРОЦЕДУРА ИЩЕТ НАЧАЛО СЛЕДУЮЩЕЙ НЕДЕЛИ
function TTypFile.NextWeek(CurDate: TDate): TDate;
var
Y,M,D: word; // ГОД МЕСЯЦ ДЕНЬ
i: integer;
begin
i:= DayOfWeek(CurDate); //
DecodeDate(CurDate, Y, M, D);
case i of
1: D:= D + 1; // ВОСКРЕСЕНИЕ
2: D:= D + 7; // ПОНЕДЕЛЬНИК
3: D:= D + 6; // ВТОРНИК
4: D:= D + 5; // СРЕДА
5: D:= D + 4; // ЧЕТВЕРГ
6: D:= D + 3; // ПЯТНИЦА
7: D:= D + 2; // СУББОТА
end;
CheckDay(Y,M,D);
result:= EncodeDate(Y,M,D);
end;
// ПРОВЕРЯЕМ ДАТУ НА ПЕРЕПОЛНЕНИЕ
procedure TTypFile.CheckDay(var Y, M, D: word);
begin
// 30 ДНЕВНЫЕ МЕСЕЦА
if (M = 4) or (M = 6) or (m = 9) or (m = 11) then
if d > 30 then
begin
d:= d mod 30;
m:= m + 1;
end;
// 31 ДНЕВНЫЕ МЕСЕЦА
if (M = 1) OR (M = 3) OR (M = 5) OR (M = 7) OR (M = 8) OR (M = 10) OR (M = 12) then
if d > 31 then
begin
d:= d mod 31;
m:= m + 1;
end;
// ФЕВРАЛЬ МЕСЯЦ
if m = 2 then
begin
if y mod 4 <> 0 then // не высокосный год
if d > 28 then
begin
d:= d mod 28;
m:= m + 1;
end;
if y mod 4 = 0 then // высокосный год
if d > 29 then
begin
d:= d mod 29;
m:= m + 1;
end;
end;
if m > 12 then
begin
y:= y + 1;
m:= 1;
end;
end;
{ TPhoneFile }
//****************************
//
КЛАСС НАСЛЕДНИК
//****************************
// СОЗДАЕМ ИЛИ ОТРЫВАЕМ ФАЙЛ
constructor TPhoneFile.create;
begin
if not OpenDb('PhoneDb.txt') then
CreateDB('PhoneDb.txt');
end;
// ОСВОБОЖДЕНИЕ ПАМЯТИ
destructor TPhoneFile.Destroy;
begin
inherited Destroy;
end;
// СОЗДАНИЕ ФАЙЛА БАЗЫ ДАННЫХ ТЕЛЕФОНОВ
function TPhoneFile.CreateDb(const DBname: string): boolean;
begin
AssignFile(FPhoneFile, Dbname); // ПРИВЯЗЫВАЕМ К ФАЙЛУ ИМЯ
try
Rewrite(FPhoneFile);
DbOpen:= true; // ОТМЕЧАЕМ ЧТО ФАЙЛ ОТКРЫТ
except
DbOpen:= False; // ФАЙЛ НЕ ОТКРЫТ
end;
NumberRec:= 0; // КОЛ-ВО СТРОК РАВНО НУЛЮ
Result:= DbOpen; // РЕЗУЛЬТАТ СОЗДАНИЯ ФАЙЛА
end;
// ОТКРЫТИЕ ФАЙЛА БАЗЫ ДАННЫХ
function TPhoneFile.OpenDb(const DBName: string): boolean;
begin
AssignFile(FPhoneFile, DbName);
{$I-}
Reset(FPhoneFile);
{$I+}
if IOResult <> 0 then
begin
NumberRec:= 0;
DbOpen:= False;
end
else
begin
NumberRec:= FileSize(FPhoneFile); // кол-во записей
DbOpen:= True;
end;
Result:= DbOpen;
end;
// ЗАКРЫВАЕМ ФАЙЛ
procedure TPhoneFile.CloseDB;
begin
if DbOpen then
CloseFile(FPhoneFile);
end;
// ДОБАВИТЬ ЗАПИСЬ
procedure TPhoneFile.AddRec(const Rec: TPhoneRec);
begin
ModifyNextRec(Rec, NumberRec); // переместиться на последнею запись и добавить запись
NumberRec := FileSize(FPhoneFile); // новое кол. записей
end;
// ИЗМЕНИТЬ ЗАПИЬ ПОД НОМЕРОМ N
procedure TPhoneFile.ModifyNextRec(const Rec: TPhoneRec; N: integer);
begin
Seek(FPhoneFile, n); // переместиться на n - запись
Write(FPhoneFile, rec);
end;
// ПРОЦЕДУРА ЧТЕНИЯ ДАННЫХ
function TPhoneFile.ReadRec: TPhoneRec;
begin
read(FphoneFile, result);
end;
// ИЩЕМ ИМЯ
function TPhoneFile.FindName(s: string): integer;
var
i: integer;
begin
Seek(FPhoneFile, 0);
for i:= 0 to NumberRec - 1 do
begin
Read(FPhoneFile, phone);
if s = phone.Name then
begin
result:= i;
exit;
end;
end;
end;
// УДАЛЯЕМ ЗАПИСЬ
procedure TPhoneFile.DeleteRec(n: integer);