Разработка приложения "Записная книжка"

Разработка в среде Delphi приложения "Записная книжка" для ввода и корректировки информации, поиска данных. Выбор состава технических и программных средств. Текст программы, ее описание и тестирование. Основные условия программы, требования к компьютеру.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 08.12.2011
Размер файла 565,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Разработка приложения "Записная книжка"

Содержание

  • Введение
  • Основная часть
  • 1. Разработка эскизного и технического проектов программы
  • 1.1 Задание
  • 1.2 Назначение и область применения
  • 1.3 Технические характеристики
  • 1.3.1 Постановка задачи
  • 1.3.2 Описание алгоритма
  • 1.3.3 Организация входных и выходных данных
  • 1.3.4 Выбор состава технических и программных средств
  • 2. Разработка рабочего проекта
  • 2.1 Разработка программы
  • 2.2 Спецификация программы
  • 2.3 Текст программы
  • 2.4 Описание программы
  • 2.5 Тестирование программы
  • 3. Внедрение
  • Заключение
  • Глоссарий
  • Список использованных источников

Введение

В течение последнего времени среда разработки программного обеспечения Delphi была одним из наиболее ожидаемых программных продуктов. Причиной этого, прежде всего, является, то, что Borland - достаточно серьезная фирма, продуктами и разработками которой на сегодня пользуются миллионы людей. Далеко не каждая фирма достигает таких результатов. За всю свою историю разработчиками Borland было создано достаточно большое количество инструментальных средств разработки программ для операционных систем MS DOS (Turbo/Borland Pascal, Turbo/Borland C/C++, Turbo Assembler), Windows (Delphi, C++ Builder, JBuilder) и Linux (Kylix) [4].

С появлением новой версии программного продукта ожидалось и появление новых его возможностей, которые позволяли бы использовать самые последние технологии в области программирования. Разработчикам Delphi удалось преподнести сюрприз - ими была создана принципиально новая среда разработки программ.

Delphi - это среда разработки, продукт, предназначенный для создания программ. С помощью этой среды можно достаточно быстро и эффективно создавать программы любой сложности и любого назначения [3].

Данная среда является одной из ведущих систем программирования, используемых для разработки современных программных продуктов, и в первую очередь приложений операционной системы Windows. Система программирования Delphi позволяет значительно упростить процесс создания Windows-приложений (до ее появления основным средством для разработки Windows-приложений был весьма сложный для изучения язык C++), а также резко повысить производительность труда программиста. Поэтому не случайно, что систему Delphi относят к категории RAD-систем программирования (RAD - Rapid Application Development, быстрая разработка приложений).

Система Delphi базируется на использовании языка программирования Object Pascal, который является логическим продолжением и развитием классического языка программирования Паскаль [4].

Кратко можно отметить следующие основные особенности среды разработки:

· визуальное конструирование программ;

· использование готовых компонентов-заготовок для будущих программ;

· поддержка нескольких языков программирования;

· возможность создания программ под разные платформы;

· введение множества технологий, ускоряющих и облегчающих написание программ.

В основе идеи использования Delphi при разработке программ лежит технология визуального конструирования. Важнейшая характеристика программы - удобство ее пользовательского интерфейса, наличие и доступность необходимых элементов управления. В ней имеется специальный проектировщик форм, с помощью которого окна будущей программы подготавливаются в виде форм. Проектировщик позволяет подобрать оптимальные размеры окон, разместить и настроить всевозможные элементы управления и меню, добавить готовые изображения, указать заголовки, подсказки, подписи и т.д. Для разработчика это означает, что при разработке пользовательского интерфейса своих приложений он может получить значительную экономию времени [5].

Цель курсовой работы: Разработать приложение "Записная книжка". Программа должна обеспечивать ввод и корректировку информации, а по запросу - поиск следующей информации:

· номер телефона указанного лица и ФИО по номеру телефона;

· почтовый адрес и адрес электронной почты указанного лица;

· ФИО лиц, чьи даты рождения приходятся на указанный месяц (неделю).

Для этого были поставлены следующие задачи:

· Разработать блок - схему программы;

· Использовать среду разработки Delphi;

· Разработать приложение "Записная книжка"

1. Разработка эскизного и технического проектов программы

1.1 Задание

Тема: Разработать приложение "Записная книжка".

Условие задачи:

Программа должна обеспечивать ввод и корректировку информации, а по запросу - поиск следующей информации:

· номер телефона указанного лица и ФИО по номеру телефона;

· почтовый адрес и адрес электронной почты указанного лица;

· ФИО лиц, чьи даты рождения приходятся на указанный месяц (неделю).

1.2 Назначение и область применения

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

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

Поскольку ставится задача разработать приложение для Windows, то использоваться программа может под управлением Windows 9х, Windows XP и т.п.

1.3 Технические характеристики

1.3.1 Постановка задачи

В условии задачи необходимо cоздать приложение "Записная книжка".

Программа должна обеспечивать ввод и корректировку информации, а по запросу - поиск следующей информации:

· номер телефона указанного лица и ФИО по номеру телефона;

· почтовый адрес и адрес электронной почты указанного лица;

· ФИО лиц, чьи даты рождения приходятся на указанный месяц (неделю).

В программе предусмотрена вкладка "Справочники"

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

1.3.2 Описание алгоритма

В программе решаются следующие независимые задачи:

1) ввод данных;

2) проверка на корректировку информации;

3) запрос - поиск необходимой информации;

4) фильтрация информации;

5) вывод информации.

Обобщенная схема алгоритма приведена на рис.1.

1.3.3 Организация входных и выходных данных

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

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

1.3.4 Выбор состава технических и программных средств

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

В основе языка Delphi лежит язык программирования Pascal, который показал себя как наиболее универсальный и легко изучаемый язык. При этом его удобно использовать для создания сложных приложений, включая работу с Internet, базами данных, приложения масштаба предприятия. За время своего развития язык Pascal постоянно совершенствовался, и на его основе создан Object Pascal - это наиболее радикальное и удачное расширение возможностей языка. Начиная с версии Delphi 7 - язык Object Pascal называется язык Delphi.

Языки программирования разрабатываются для того, чтобы помочь программисту, точнее и понятнее представить логику алгоритма с помощью нескольких зарезервированных слов, исходных значений (операндов) и действий над ними (операторов). Понятно, что для отображения логики алгоритма используются различные способы, например, можно все описать обычными словами или использовать уже широко применяемые математические знаки и символы. А можно использовать конструкции и синтаксис языка программирования, наиболее подходящего для этого алгоритма, благодаря которым логика алгоритма будет более понятной, а решение задачи - оптимальным.

Это обусловлено тем, что среда Delphi позволяет достаточно быстро разрабатывать приложения для Windows.

Технические характеристики компьютера:

Pentium IV и выше;

Объем оперативной памяти не менее 512 Мб;

Жесткий диск объемом не менее 1 Гб.

Именно эти параметры создают условия для полноценной работы IDE Delphi 7 и программ, созданных в этой среде.

Дополнительных средств (принтер, сканер, дополнительные дисководы и т.д.) не требуется.

2. Разработка рабочего проекта

2.1 Разработка программы

Для разработки приложения "Записная книжка" используются средства визуального программирования Delphi и система управления базами данных MS Access. Проект программы содержит четыре окна:

1. frmMain - рисунок 1;

2. frmClient - рисунок 2;

3. frmMessage - рисунок 3;

Рис.1 Окно игры - frmMain

Компонент frmMain: TForm

Свойства:

Сaption - “Записная книжка”;

Border - bsSingle;

BiSystemMenu - false;

1 - компонент BitBtn1: TBitBtn

Свойства:

Caption - "Добавить";

События: открывается окно для заполнения и добавления данных о клиенте.

2 - компонент BitBtn2: TBitBtn

Свойства:

Caption - "Редактировать";

События: открывается окно для редактирования данных о клиенте.

3 - компонент BitBtn3: TBitBtn

Свойства:

Caption - "Обновить";

События: обновляется таблица с данными.

4 - компонент BitBtn4: TBitBtn

Свойства:

Caption - "Удалить";

События: удаляется выбранный клиент из таблицы.

5 - компонент BitBtn5: TBitBtn

Свойства:

Caption - "Отправить в Excel";

События: все данные отправляются в Excel.

6 - компонент BitBtn6: TBitBtn

Свойства:

Caption - "Отправить сообщение";

События: открывается окно для написание сообщения и отправки его клиентам.

7 - компонент ComboBox1: TComboBox

Свойства:

Style - csDropDownList;

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

8 - компонент DBGrid: TDBGrid

Свойства: отображает данные о человеке

События: нет.

8 - компонент Label1: TLabel

Caption: “ - сегодня день рождения”

События: нет.

9 - компонент Label2: TLabel

Caption: “ - день рождения на этой недели”

События: нет.

10 - компонент Label3: TLabel

Caption: “ - день рождения в этом месяце”

События: нет.

11 - компонент Shape1: TShape

Color: clYellow;

События: нет.

12 - компонент Shape2: TShape

Color: clMoneyGreen;

События: нет.

13 - компонент Shape3: TShape

Color: clActiveCaption;

События: нет.

14 - компонент Edit1: TEdit

Text: “”

События: при вводе значений производит поиск по столбцу "ФИО" людей.

15 - компонент Edit2: TEdit

Text: “”

События: при вводе значений производит поиск по столбцу "Емайл" людей.

16 - компонент Edit3: TEdit

Text: “”

События: при вводе значений производит поиск по столбцу "Номер телефона" людей.

17 - компонент ADOConnection: TADOConnection

Свойства: связывает базу данных с программой;

События: нет.

18 - компонент tbClient: TADOQuery

Свойства: связывает таблицу tbClient с программой;

События: нет.

19 - компонент tbCity: TADOQuery

Свойства: связывает таблицу tbCity с программой;

События: нет.

20 - компонент tbDomen: TADOQuery

Свойства: связывает таблицу tbDomen с программой;

События: нет.

21 - компонент ExcelApplication1: TExcelApplication1

Свойства: нет;

События: для построения отчетов.

Рис.2 Окно добавления, редактирования записи

Компонент Client: TForm

Свойства:

Сaption - “”;

Border - bsSingle;

BiSystemMenu - false;

1 - компонент BitBtn1: TBitBtn

Свойства:

Caption - "Добавить";

Enable - false;

События: добавляет нового человека в записную книжку.

2 - компонент BitBtn2: TBitBtn

Свойства:

Caption - "Сохранить";

Enable - false;

События: сохраняет сделанные изменения.

3 - компонент BitBtn3: TBitBtn

Свойства:

Caption - "Отмена";

События: закрывает окно.

4 - компонент Edit1: TEdit

Text: “”

Font - Arial;

Color - black;

События: нет.

5 - компонент Edit2: TEdit

Text: “”

Font - Arial;

Color - black;

События: нет.

6 - компонент Edit3: TEdit

Text: “”

Font - Arial;

Color - black;

События: нет.

7 - компонент ComboBox1: TComboBox

Text: “”

Font - Arial;

Color - black;

События: нет.

8 - компонент ComboBox2: TComboBox

Text: “”

Font - Arial;

Color - black;

События: нет.

9 - компонент DateTimePicker1: TDateTimePicker

Date - now;

Font - Arial;

Color - black;

События: нет.

Рис.3 Окно написания и отправления сообщения

Компонент frmMessage: TForm

Свойства:

Сaption - “Сообщение ”;

Border - bsSingle;

BiSystemMenu - false;

1 - компонент TBitBtn

Свойства:

Caption - "Отправить";

События: отправляет сообщение выбранному человеку.

2 - компонент TEdit

Свойства:

Text - "";

События: нет.

3 - компонент TMemo

Свойства:

Text - "";

События: нет.

Написание программы

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

При созданий главной формы приложения - frmMain обрабатывается событие frmMainShow. В ней динамически создается строка соединение с БД Note. db, далее открываются все таблицы, заполнение списков городов. Ошибка вызова события может возникнуть при отсутствии файла Note. db.

При нажатие кнопки "Добавить" открывается форма - Client (с параметром Client. Flag_Save = 1), обрабатывается событие ClientShow.

При нажатие кнопки "Редактировать" открывается форма - Client (с параметром Client. Flag_Save = 2), обрабатывается событие ClientShow. В ней происходит условие проверки флага открытия, блок схема на рис.4.

Рис.4 Блок-схема открытия формы для добавления редактирования.

Если будет нажата кнопка "Удалить", то текущая запись будет удалена с таблицы.

Если будет нажата кнопка "Обновить", то будут сброшены все фильтры и поиски в таблице.

В программе присутствует процедура заполнения всплывающих списков - ComboAdd. Здесь три обязательных параметра Combo - компонент который должен заполнится, TableStr, FieldStr - название таблицы и поля от куда считывается данные. В случае неправильной передачи параметров в блоке составления запроса вызовется исключительная ситуация, с сообщением об ошибки. Листинг процедуры:

ComboAdd (Combo: tComboBox; TableStr,FieldStr: string);

var

ado: TADOQuery;

temp: Variant;

begin

try

ado: = TADOQuery. Create (nil);

ado. Connection: = ADOConnection1;

ado. CursorType: = ctStatic;

ado. Close;

ado. SQL. Clear;

ado. SQL. Add ('Select '+FieldStr+' from '+TableStr);

ado. Open;

except

MessageDlg (`ComboAdd () procedure!!! ',mtError, [mbOK],0);

exit;

end;

ado. First;

Combo. Items. Clear;

while not ado. Eof do

begin

temp: = ado [fieldstr];

Combo. Items. Add (trim (temp));

ado. Next;

end;

end;

2.2 Спецификация программы

Исполняемый файл программы "Записная книжка" имеет название Note. EXE. Его работоспособность не зависит от расположения на диске. Наименования файлов входящих в проект и краткая информация об их содержании отображены в таблице 1.

Таблица 1

Наименование

Обозначение

Примечание

Note. dof

Файл параметров проекта

Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы

Note. dpr

Файл проекта

Связывает все файлы, из которых состоит приложение

Note. cfg

Файл, содержащий настройки проекта

Содержит информацию о том, какие окна открыты и в каких позициях они расположены.

Note. res

Файл ресурсов

Содержит пиктограммы, графические изображения

unMain. pas

Файл программного модуля для формы frmMain

Определяет функциональность формы frmMain

unMain. dfm

Файл формы frmMain

Содержит список свойств всех компонентов, включённых в форму frmMain

unMain. dcu

Объектный файл для unMain. pas

Откомпилированная версия unMain. pas

unClient. pas

Файл программного модуля для формы Client

Определяет функциональность формы Client

unClient. dfm

Файл формы

Client

Содержит список свойств всех компонентов, включённых в форму Client

unClient. dcu

Объектный файл для unClient. pas

Откомпилированная версия unClient. pas

unMessage. pas

Файл программного модуля для формы Message

Определяет функциональность формы Message

unClient. dfm

Файл формы

Message

Содержит список свойств всех компонентов, включённых в форму Message

unClient. dcu

Объектный файл для unMessage. pas

Откомпилированная версия unMessage. pas

2.3 Текст программы

Текст программы для формы - frmMain:

unit Main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ExtCtrls, Menus, Grids, DBGrids, DB, ADODB, StdCtrls,

Buttons, DBCtrls,Mapi, OleServer, ExcelXP,DateUtils;

type

TfrmMain = class (TForm)

ProgressBar1: TProgressBar;

PageControl1: TPageControl;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

DBGrid1: TDBGrid;

ADOConnection1: TADOConnection;

tbClient: TADOQuery;

dsClient: TDataSource;

tbCity: TADOQuery;

dsCity: TDataSource;

GroupBox1: TGroupBox;

DBGrid2: TDBGrid;

DBNavigator1: TDBNavigator;

Panel2: TPanel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

tbDomen: TADOQuery;

dsDomen: TDataSource;

GroupBox3: TGroupBox;

DBGrid4: TDBGrid;

DBNavigator2: TDBNavigator;

tbClientid: TAutoIncField;

tbClientfio: TWideStringField;

tbClientemail: TWideStringField;

tbClientphone: TWideStringField;

tbClientdater: TDateTimeField;

tbClientcity: TWideStringField;

tbClientflag: TIntegerField;

tbClientdomen: TWideStringField;

tbClientMail: TStringField;

BitBtn4: TBitBtn;

ExcelApplication1: TExcelApplication;

BitBtn10: TBitBtn;

BitBtn7: TBitBtn;

Panel3: TPanel;

Shape2: TShape;

Label4: TLabel;

GroupBox2: TGroupBox;

Label2: TLabel;

ComboBox2: TComboBox;

GroupBox4: TGroupBox;

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Label3: TLabel;

Label5: TLabel;

Shape1: TShape;

Label7: TLabel;

Shape3: TShape;

Label8: TLabel;

Temp: TADOQuery;

procedure N3Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure FormShow (Sender: TObject);

procedure BitBtn3Click (Sender: TObject);

procedure ComboAdd (Combo: tComboBox; TableStr,FieldStr: string);

procedure ComboBox1CloseUp (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure tbClientGoCalcFields (DataSet: TDataSet);

procedure BitBtn4Click (Sender: TObject);

function SendEMail (Handle: THandle; Mail: TStrings): Cardinal;

procedure BitBtn7Click (Sender: TObject);

procedure big_report (Title: String; dbgrida: TDBGrid; ITOGO: integer = 0);

procedure BitBtn10Click (Sender: TObject);

procedure DBGrid1DrawColumnCell (Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

procedure Edit1Change (Sender: TObject);

procedure Edit2Change (Sender: TObject);

procedure Edit3Change (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmMain: TfrmMain;

implementation

uses unAbout, unClient, unMessage;

{$R *. dfm}

procedure TfrmMain. N3Click (Sender: TObject);

begin

Close; // Закрытие главного окна

end;

procedure TfrmMain. N2Click (Sender: TObject);

begin

// Открытие форма о программе

AboutProgram. ShowModal;

end;

procedure TfrmMain. FormShow (Sender: TObject);

begin

// поиск и подключение БД к программе

ADOConnection1. Close ();

ADOConnection1. ConnectionString: = 'Provider=Microsoft. Jet. OLEDB.4.0; Data Source='+GetCurrentDir+'\Note. mdb; Persist Security Info=False';

ADOConnection1. Open ();

// Открытие таблиц

tbClient. Open;

tbCity. Open;

tbDomen. Open;

// Заполнение ComboBox2

ComboAdd (ComboBox2, 'tbCity','City_name');

end;

procedure TfrmMain. BitBtn3Click (Sender: TObject);

begin // если таблица открыта

if tbClient. Active then

if tbClient. RecordCount > 0 then

begin

// удаляем выбранную запись

Temp. Close;

Temp. SQL. Clear;

Temp. SQL. Add ('DELETE FROM tbClient where id = '+inttostr (tbClient ['id']));

Temp. ExecSQL;

// обновляем таблицу

tbClient. Close;

tbClient. Open;

end;

end;

// процедура заполнения ComboBox

procedure TfrmMain.comboAdd (Combo: tComboBox; TableStr,FieldStr: string);

var

ado: TADOQuery;

temp: Variant;

begin

try

ado: = TADOQuery. Create (nil);

ado. Connection: = ADOConnection1;

ado. CursorType: = ctStatic;

ado. Close;

ado. SQL. Clear;

ado. SQL. Add ('Select '+FieldStr+' from '+TableStr);

ado. Open;

except

MessageDlg ('Error in unFuncProc: in the ComboAdd () procedure!!! ',mtError, [mbOK],0);

exit;

end;

ado. First;

Combo. Items. Clear;

while not ado. Eof do

begin

temp: = ado [fieldstr];

Combo. Items. Add (trim (temp));

ado. Next;

end;

end;

procedure TfrmMain.comboBox1CloseUp (Sender: TObject);

begin

try

// при выборе города, поиск по заданному городу

tbClient. Close;

tbClient. SQL. Clear;

tbClient. SQL. Add ('Select * from tbClient where flag<>3');

if ComboBox2. ItemIndex <> - 1 then

tbClient. SQL. Add (' and city = '''+ComboBox2. Text+'''');

tbClient. Open;

except

end;

end;

procedure TfrmMain. BitBtn1Click (Sender: TObject);

begin

// Открытие формы, для добавления человека в записную книжку

frmClient: = TfrmClient. Create (frmClient);

try

unClient. flag_save: = 1;

frmClient. ShowModal;

finally

FreeAndNil (frmClient);

end;

end;

procedure TfrmMain. BitBtn2Click (Sender: TObject);

begin

// Открытие формы, для редактирования человека в записную книжку

frmClient: = TfrmClient. Create (frmClient);

try

unClient. flag_save: = 2;

frmClient. ShowModal;

finally

FreeAndNil (frmClient);

end;

end;

procedure TfrmMain. tbClientGoCalcFields (DataSet: TDataSet);

begin // создано поля для отображения соединенных двух полей

DataSet. FieldValues ['Mail']: = DataSet. FieldValues ['email'] +'@'+ DataSet. FieldValues ['domen'];

end;

procedure TfrmMain. BitBtn4Click (Sender: TObject);

begin

// обновить программу

tbClient. Close;

tbClient. SQL. Clear;

tbClient. SQL. Add ('Select * from tbClient');

tbClient. Open;

end;

// функция для отправки письма

function TfrmMain. SendEMail (Handle: THandle; Mail: TStrings): Cardinal;

type

TAttachAccessArray = array [0.0] of TMapiFileDesc;

PAttachAccessArray = ^TAttachAccessArray;

var

MapiMessage: TMapiMessage;

Receip1: TMapiRecipDesc;

Attachments: PAttachAccessArray;

AttachCount: Integer;

i1: integer;

FileName: string;

dwRet: Cardinal;

MAPI_Session: Cardinal;

WndList: Pointer;

begin

dwRet: = MapiLogon (Handle,

PChar (''),

PChar (''),

MAPI_LOGON_UI or MAPI_NEW_SESSION,

0, @MAPI_Session);

if (dwRet <> SUCCESS_SUCCESS) then

begin

MessageBox (Handle,

PChar ('Error while trying to send email'),

PChar ('Error'),

MB_ICONERROR or MB_OK);

end

else

begin

FillChar (MapiMessage, SizeOf (MapiMessage), #0);

Attachments: = nil;

FillChar (Receip1, SizeOf (Receip1), #0);

// FillChar (Receip, SizeOf (Receip), #0);

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

if Mail. Values ['to1'] <> '' then

begin

Receip1. ulReserved: = 0;

Receip1. ulRecipClass: = MAPI_TO;

Receip1. lpszName: = StrNew (PChar (Mail. Values ['to1']));

Receip1. lpszAddress: = StrNew (PChar ('SMTP: ' + Mail. Values ['to1']));

Receip1. ulEIDSize: = 0;

MapiMessage. nRecipCount: = 1;

MapiMessage. lpRecips: = @Receip1;

end;

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

AttachCount: = 0;

for i1: = 0 to MaxInt do

begin

if Mail. Values ['attachment' + IntToStr (i1)] = '' then

break;

Inc (AttachCount);

end;

if AttachCount > 0 then

begin

GetMem (Attachments, SizeOf (TMapiFileDesc) * AttachCount);

for i1: = 0 to AttachCount - 1 do

begin

FileName: = Mail. Values ['attachment' + IntToStr (i1)];

Attachments [i1]. ulReserved: = 0;

Attachments [i1]. flFlags: = 0;

Attachments [i1]. nPosition: = ULONG ($FFFFFFFF);

Attachments [i1]. lpszPathName: = StrNew (PChar (FileName));

Attachments [i1]. lpszFileName: =

StrNew (PChar (ExtractFileName (FileName)));

Attachments [i1]. lpFileType: = nil;

end;

MapiMessage. nFileCount: = AttachCount;

MapiMessage. lpFiles: = @Attachments^;

end;

if Mail. Values ['subject'] <> '' then

MapiMessage. lpszSubject: = StrNew (PChar (Mail. Values ['subject']));

if Mail. Values ['body'] <> '' then

MapiMessage. lpszNoteText: = StrNew (PChar (Mail. Values ['body']));

WndList: = DisableTaskWindows (0);

try

Result: = MapiSendMail (MAPI_Session, Handle,

MapiMessage, MAPI_DIALOG, 0);

finally

EnableTaskWindows (WndList);

end;

for i1: = 0 to AttachCount - 1 do

begin

StrDispose (Attachments [i1]. lpszPathName);

StrDispose (Attachments [i1]. lpszFileName);

end;

if Assigned (MapiMessage. lpszSubject) then

StrDispose (MapiMessage. lpszSubject);

if Assigned (MapiMessage. lpszNoteText) then

StrDispose (MapiMessage. lpszNoteText);

if Assigned (Receip1. lpszAddress) then

StrDispose (Receip1. lpszAddress);

if Assigned (Receip1. lpszName) then

StrDispose (Receip1. lpszName);

MapiLogOff (MAPI_Session, Handle, 0, 0);

end;

end;

// отправка письма выбранному человека

procedure TfrmMain. BitBtn7Click (Sender: TObject);

var

mail: TStringList;

begin

mail: = TStringList. Create ();

try

frmMessage. Edit1. Text: ='Привет ' +tbClient ['fio'];

frmMessage. Caption: = 'Отправить сообщение ' +tbClient ['fio'];

frmMessage. ShowModal;

mail. values ['to1']: = trim (tbClient ['email'] +'@'+tbClient ['domen']);

mail. values ['subject']: = frmMessage. Edit1. Text;

mail. values ['body']: = frmMessage. Memo1. Text;

SendEMail (Handle, mail);

finally

mail. Free;

end;

end;

// процедура отправки Записной книжки в Excel

procedure TfrmMain. big_report (Title: String; dbgrida: TDBGrid; ITOGO: integer = 0);

var

WorkBk: _WorkBook; // определяем WorkBook

WorkSheet: _WorkSheet; // определяем WorkSheet

XL: TExcelApplication;

i,j,c: Smallint;

begin

TRY

XL: = TExcelApplication. Create (nil);

XL. Disconnect;

XL. ConnectKind: = ckRunningOrNew;

XL. Connect;

XL. Visible [0]: = false;

XL. EnableEvents: = false;

XL. SheetsInNewWorkbook [0]: = 1; // N - новое количество листов (integer)

XL. Workbooks. Add (EmptyParam,0);

WorkBk: = XL. ActiveWorkbook;

WorkSheet: = WorkBk. Worksheets. Get_Item (1) as _WorkSheet;

dbgrida. DataSource. DataSet. First;

ProgressBar1. Position: = 0;

ProgressBar1. Max: = dbgrida. DataSource. DataSet. RecordCount;

c: = 0;

// добавляем информацию для имён колонок

WorkSheet. Cells. Item [1,1]: = Title;

for i: = 0 to dbgrida. FieldCount - 1 do

if dbgrida. Columns. Items [i]. Visible then

begin

Inc (c);

with WorkSheet. Range ['A2','A'+IntToStr (c+1)] do

begin

Item [1,c]: = dbgrida. Columns [i]. Title. Caption;

Item [1,c]. Font. Bold: = true;

Item [1,c]. Borders. Weight: = 3;

Item [1,c]. Borders. LineStyle: = 1;

end;

end;

// добавляем данные

for i: = 1 to dbgrida. DataSource. DataSet. RecordCount do

begin

ProgressBar1. Position: = i;

c: = 0;

for j: = 0 to dbgrida. FieldCount - 1 do

if dbgrida. Columns. Items [j]. Visible then

begin

Inc (c);

WorkSheet. Cells. Item [i+2,c]. NumberFormat: = '@';

WorkSheet. Cells. Item [i+2,c]: = dbgrida. Fields [j]. AsString;

WorkSheet. Cells. Item [i+2,c]. Borders. Weight: = 2;

WorkSheet. Cells. Item [i+2,c]. Borders. LineStyle: = 1;

end;

dbgrida. DataSource. DataSet. Next;

end;

if ITOGO = 1 then

begin

WorkSheet. Cells. Item [i+2,1]: = 'ИТОГО: ';

WorkSheet. Cells. Item [i+2,2]: = inttostr (dbgrida. DataSource. DataSet. RecordCount);

end;

XL. Visible [0]: = true;

FINALLY

XL. Disconnect;

FreeAndNil (XL);

ProgressBar1. Position: = 0;

END;

end;

procedure TfrmMain. BitBtn10Click (Sender: TObject);

begin

// Отчет

big_report ('',DBGrid1,1);

end;

// процедура напоминаний о днях рождениях за 1 день, за неделю, за месяц

procedure TfrmMain. DBGrid1DrawColumnCell (Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

const

clPaleGreen = TColor ($CCFFCC);

clPaleRed = TColor ($CCCCFF);

var

holdColor: TColor;

begin

if tbClient. RecordCount > 0 then

begin

holdColor: = DBGrid1. Canvas. Brush. Color;

// если день рождения в этом месяце

if Column. FieldName='dater' then

if StrToDate (Formatdatetime ('dd. mm. '+inttostr (YearOf (now)),tbClient ['dater']))

> StrToDate (Formatdatetime ('dd. mm. yyyy',now)) then

if Formatdatetime ('mm',tbClient ['dater']) = Formatdatetime ('mm',now) then

begin

DBGrid1. Canvas. Brush. Color: =clActiveCaption;

DBGrid1. DefaultDrawColumnCell (Rect, DataCol, Column, State);

DBGrid1. Canvas. Brush. Color: = holdColor;

end;

// если день рождения на этой недели

if Column. FieldName='dater' then

if StrToDate (Formatdatetime ('dd. mm. '+inttostr (YearOf (now)),tbClient ['dater']))

> StrToDate (Formatdatetime ('dd. mm. yyyy',now)) then

if WeekOf (StrToDate (Formatdatetime ('dd. mm. '+inttostr (YearOf (now)),tbClient ['dater'])))

= WeekOf (StrToDate (Formatdatetime ('dd. mm. yyyy',now))) then

begin

DBGrid1. Canvas. Brush. Color: = clMoneyGreen;

DBGrid1. DefaultDrawColumnCell (Rect, DataCol, Column, State);

DBGrid1. Canvas. Brush. Color: = holdColor;

end;

// если день рождения сегодя

if Column. FieldName='dater' then

if Formatdatetime ('dd. mm',tbClient ['dater']) = Formatdatetime ('dd. mm',now) then

begin

DBGrid1. Canvas. Brush. Color: =clYellow;

DBGrid1. DefaultDrawColumnCell (Rect, DataCol, Column, State);

DBGrid1. Canvas. Brush. Color: = holdColor;

end;

end;

end;

// выборка записной книжки по ФИО

procedure TfrmMain. Edit1Change (Sender: TObject);

begin

tbClient. Close;

tbClient. SQL. Clear;

tbClient. SQL. Add ('Select * from tbClient where fio like ''%'+Edit1. Text+'%''');

tbClient. Open;

if tbClient. RecordCount = 0 then

MessageDlg ('Записей не найдено! ',mtInformation, [mbOK],0);

end;

// выборка записной книжки по Емайлу

procedure TfrmMain. Edit2Change (Sender: TObject);

begin

tbClient. Close;

tbClient. SQL. Clear;

tbClient. SQL. Add ('Select * from tbClient where email like '''+Edit2. Text+'%''');

tbClient. Open;

if tbClient. RecordCount = 0 then

MessageDlg ('Записей не найдено! ',mtInformation, [mbOK],0);

end;

// выборка записной книжки по номеру телефона

procedure TfrmMain. Edit3Change (Sender: TObject);

begin

tbClient. Close;

tbClient. SQL. Clear;

tbClient. SQL. Add ('Select * from tbClient where phone like '''+Edit3. Text+'%''');

tbClient. Open;

if tbClient. RecordCount = 0 then

MessageDlg ('Записей не найдено! ',mtInformation, [mbOK],0);

end;

end.

Текст программы для формы - frmClient:

unit unClient;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls;

type

TfrmClient = class (TForm)

Panel1: TPanel;

BitBtn1: TBitBtn;

BitBtn3: TBitBtn;

BitBtn2: TBitBtn;

Panel2: TPanel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

GroupBox1: TGroupBox;

Label2: TLabel;

Label1: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit4: TEdit;

DateTimePicker1: TDateTimePicker;

ComboBox1: TComboBox;

Label6: TLabel;

ComboBox2: TComboBox;

procedure BitBtn3Click (Sender: TObject);

procedure FormShow (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmClient: TfrmClient;

flag_save: integer = 0;

implementation

uses Main;

{$R *. dfm}

procedure TfrmClient. BitBtn3Click (Sender: TObject);

begin // закрываем окно

Close;

end;

procedure TfrmClient. FormShow (Sender: TObject);

begin

// заполняем списки данными

frmMain.comboAdd (ComboBox1, 'tbDomen','Domen');

frmMain.comboAdd (ComboBox2, 'tbCity','City_name');

// Если окно открыто для добавления записи

if flag_save = 1 then

begin

BitBtn1. Enabled: =true;

end;

// если окно открыто для редактирования

if flag_save = 2 then

begin

BitBtn2. Enabled: =true;

if frmMain. tbClient ['FIO'] <>NULL then

Edit1. Text: = trim (frmMain. tbClient ['FIO']);

if frmMain. tbClient ['email'] <>NULL then

Edit2. Text: = trim (frmMain. tbClient ['email']);

if frmMain. tbClient ['phone'] <>NULL then

Edit4. Text: = trim (frmMain. tbClient ['phone']);

if frmMain. tbClient ['city'] <>NULL then

ComboBox2. Text: = trim (frmMain. tbClient ['city']);

if frmMain. tbClient ['domen'] <>NULL then

ComboBox1. Text: = trim (frmMain. tbClient ['domen']);

if frmMain. tbClient ['dater'] <>NULL then

DateTimePicker1. Date: = frmMain. tbClient ['dater'];

end;

end;

procedure TfrmClient. BitBtn1Click (Sender: TObject);

begin

// Добавляем человека в записную книжку

frmMain. Temp. Close;

frmMain. Temp. SQL. Clear;

frmMain. Temp. SQL. Add ('INSERT INTO tbClient');

frmMain. Temp. SQL. Add (' (fio, email, phone, dater, city, flag, domen) ');

frmMain. Temp. SQL. Add ('VALUES ('''+Edit1. Text+'''');

frmMain. Temp. SQL. Add (','''+Edit2. Text+'''');

frmMain. Temp. SQL. Add (','''+Edit4. Text+'''');

frmMain. Temp. SQL. Add (','''+DateToStr (DateTimePicker1. Date) +'''');

frmMain. Temp. SQL. Add (','''+ComboBox2. Text+'''');

frmMain. Temp. SQL. Add (',0');

frmMain. Temp. SQL. Add (','''+ComboBox1. Text+''') ');

frmMain. Temp. ExecSQL;

frmMain. tbClient. Close;

frmMain. tbClient. Open;

Close;

end;

procedure TfrmClient. BitBtn2Click (Sender: TObject);

begin

// редактируем человека

frmMain. Temp. Close;

frmMain. Temp. SQL. Clear;

frmMain. Temp. SQL. Add ('UPDATE tbClient');

frmMain. Temp. SQL. Add ('SET fio = '''+Edit1. Text+'''');

frmMain. Temp. SQL. Add (',email = '''+Edit2. Text+'''');

frmMain. Temp. SQL. Add (', phone ='''+Edit4. Text+'''');

frmMain. Temp. SQL. Add (',dater = '''+DateToStr (DateTimePicker1. Date) +'''');

frmMain. Temp. SQL. Add (',city ='''+ComboBox2. Text+'''');

frmMain. Temp. SQL. Add (',domen = '''+ComboBox1. Text+'''');

frmMain. Temp. SQL. Add ('where id ='+inttostr (frmMain. tbClient ['id']));

frmMain. Temp. ExecSQL;

frmMain. tbClient. Close;

frmMain. tbClient. Open;

Close;

end;

end.

2.4 Описание программы

Условие задачи:

Программа должна обеспечивать ввод и корректировку информации, а по запросу - поиск следующей информации:

· номер телефона указанного лица и ФИО по номеру телефона;

· почтовый адрес и адрес электронной почты указанного лица;

· ФИО лиц, чьи даты рождения приходятся на указанный месяц (неделю).

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

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

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

Поскольку ставится задача разработать приложение для Windows, то использоваться программа может под управлением Windows 9х, Windows XP и т.п.

При решении данной задачи необходимо использовать интегральную среду разработки программ Delphi 7, так как среда Delphi 7 позволяет достаточно быстро разрабатывать приложения для Windows.

Технические характеристики компьютера:

Pentium IV и выше;

Объем оперативной памяти не менее 512 Мб;

Жесткий диск объемом не менее 1 Гб.

Именно эти параметры создают условия для полноценной работы IDE Delphi 7 и программ, созданных в этой среде.

Дополнительных средств (принтер, сканер, дополнительные дисководы и т.д.) не требуется.

2.5 Тестирование программы

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

1) ввод данных;

2) проверка на корректировку информации;

3) запрос - поиск необходимой информации;

4) фильтрацию информации;

5) вывод информации.

3. Внедрение

В разделе описываются (руководство ГОСТ 19.505-79):

- Условие выполнения программы;

- Выполнение программы;

- Сообщение оператору;

Условия выполнения программы

Данное приложение, разработанное в Delphi7, способно работать на персональных компьютерах с минимальными требованиями Pentium IV, оперативной памятью 512 Мб, операционной средой Windows.

Выполнение программы

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

Напоминания о предстоящих днях рождениях высвечиваются в таблице разными цветами, в зависимости от оставшегося срока (пример рисунок 4).

Рис.4 Напоминания о днях рождениях

Для поиска людей необходимо ввести данные в панели "Поиска" (рисунок 5).

Рис.5 Поиск в записной книжки

Сообщение оператору

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

1. во время поиска не было найдено не одной записи;

2. во время фильтраций не было найдено не одной записи;

3. при неправильно удаленной записи.

приложение delphi программа тестирование

Заключение

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

В будущем хотелось бы добавить возможность отправки бесплатных сообщений на сотовые телефоны.

Глоссарий

№ п/п

Понятие

Определение

1

Инспектор объектов

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

2

Форма

окно приложения на этапе разработки

3

Проект

совокупность файлов, обеспечивающих разработку приложения в Delphi

4

Файл проекта

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

5

Файлы параметров проекта

текстовые файлы, содержащие текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы и параметры командной строки, Desktop - настройки проекта и т.д.

6

Файл ресурсов

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

7

Свойство

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

8

Событие

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

9

Тип дата - время

тип данных, предназначенный для хранения даты и времени

10

Исключительная ситуация

нештатное событие, которое может повлиять на дальнейшее выполнение программы

Список использованных источников

1. Архангельский А. Я.100 компонентов Delphi.

2. Дарахвелидае П.Г., Марков Е.П. Программирование в Delphi 7. - СПб.: БХВ-Петербург, 2003. - 784 с: ил.

3. Культин Н. Програмирование на Object Pascal. Киев, 2004.

4. Галисеев Г.В. Программирование в среде Delphi 8 for.net. Самоучитель.: - М.: Издательский дом "Вильяме", 2004. - 304 с.: ил.

5. Попов В.Б. Паскаль и Дельфи. Самоучитель. - СПб.: Питер - 2004 - 544с.

6. Парижский С.М. Delphi. Учимся на примерах/Под ред. Ю.А. Шпака - К.: "МК-Пресс", 2005. - 216с, ил.

7. Тейксейра, Стив, Пачеко, Ксавье Borland Delphi 6. Руководство разработчика.: Пер. с англ. - М.: Издательский дом “Вильямс”, 2002. - 1120 с.: ил. - Парал. тит. англ.

8. Федоров А.Г. Delphi 6.0 для всех. М., 2003.

9. Фленов М.Е. Библия программиста (Delphi). 2007.

10. Delphi: быстрый старт. - СПб.: БХВ - Петербург, 2002. - 288 с.: ил.

Размещено на Allbest.ru


Подобные документы

  • Рассмотрение основных этапов создания приложения "Записная книжка", основное предназначение. Анализ способов выбора среды программирования. Знакомство с элементом управления Data Grid View. Общая характеристика методов конструкции языка программирования.

    контрольная работа [1002,4 K], добавлен 21.06.2014

  • Необходимость создания и исполняемые функции базы данных "Записная книжка руководителя". Описание схемы "объект-отношение", обоснование выбора модели данных, процесс нормализации данных и описание таблиц. Преимущества программы Microsoft Access 2000.

    курсовая работа [324,0 K], добавлен 09.03.2009

  • Разработка базы данных "электронная записная книжка". Определение типов и размеров атрибутов. Поддержка целостности данных в реляционной БД. Создание формы для удобного и быстрого ввода данных, запросов и отчетов для удобного вывода требуемой информации.

    курсовая работа [2,5 M], добавлен 08.12.2013

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.

    курсовая работа [1,3 M], добавлен 15.11.2009

  • Исследование создания программного продукта для хранения информации о персональных данных. Характеристика разработки алгоритма программы, предназначенного для выполнения следующих функций: заполнения и удаления информации о людях, чтения и сохранения.

    курсовая работа [33,3 K], добавлен 17.01.2012

  • Выбор состава технических и программных средств для создания данного приложения "Экзаменатор", использование среды разработки Borland Delphi. Основные компоненты и спецификация программы. Используемые технические средства, описание и запуск программы.

    курсовая работа [540,8 K], добавлен 18.07.2012

  • Разработка Windows-приложения, представляющего собой компьютерную игру "Кости". Организация входных и выходных данных. Минимальные требования. Выбор состава технических и программных средств. Спецификация программы, ее описание и внедрение, тестирование.

    курсовая работа [475,8 K], добавлен 18.07.2012

  • Базовые принципы объектно-ориентированного программирования, его реализация в Тurbo Рascal. Разработка информационно-поисковой системы "Записная книжка врача-педиатра" на языке программирования Рascal. Описание алгоритма решения задачи и интерфейса.

    курсовая работа [2,8 M], добавлен 14.11.2013

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [700,6 K], добавлен 26.01.2010

  • Разработка эскизного и технического проекта программы идентификации личности по отпечатку. Назначение и область применения, описание алгоритма, входных и выходных данных. Выбор состава технических и программных средств. Тестирование и внедрение продукта.

    курсовая работа [61,9 K], добавлен 12.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.