Разработка приложения "Записная книжка"
Разработка в среде 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