Розробка програмного забезпечення “Бюро знайомств”

МІНІСТЕРСТВО  ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ  УНІВЕРСИТЕТ КОРАБЛЕБУДУВАННЯ

ім. адм. Макарова

Херсонський філіал 
 
 
 

Кафедра інформаційних технологій 
 
 
 
 
 

Курсова робота 
 
 

З ДИСЦИПЛІНИ 
 

“Об’єктно – орієнтоване програмування” 
 

ТЕМА: Розробка програмного забезпечення “Бюро знайомств” 
 
 
 
 
 
 
 
 
 
 
 
 
 

Виконав: 

Перевірив: 
 
 
 
 
 

Херсон 2004

   Ход работы программы 

     Модуль Proect1 содержит информацию о всех 7-ми Формах.

   Форма 1 (Unit1) состоит из 6-ти кнопок и хранит процедуры их обработки:

    • Кнопка Новая анкета позволяет создать новую анкету клиента, содержащую данные о нем.
    • Кнопка Просмотр анкет выводит список ранее зарегистрированных клиентов.
    • Кнопка Работа с архивом  открывает таблицу, содержащую личные данные клиентов о себе и раздел анкет по полу.
    • Кнопка Просмотр архива открывает таблицу архива, содержащую личные данные и параметры клиентов.
    • Кнопка Просмотр сохраненных приглашений открывает диалоговое окно, содержащее информацию о текущем приглашении пары (по умолчанию в кафе “Ночной Тарзан”).
    • Кнопка Выход завершает работу программы Бюро знакомств.

      Форма 2 (Unit 2) создаёт новую анкету, содержащую такие поля: Дата, Регистрационный номер (задаётся автоматически), Фамилия, Имя, Отчество, Пол, Возраст, О себе, Требования. Так же имеются 2 кнопки: OK – сохраняет новую, заполненную анкету, Cancel - отменяет создание новой анкеты.

      Форма 3 (Unit3) – это форма, просмотра анкет, она содержит такие заполненные поля: Рег №, Дата регистрации, Имя, Фамилия, Возраст, Пол, данные клиента о себе и требования к партнёру. Так же есть строка поиска по регистрационному номеру и две кнопки: Удалить – удаляет полностью выбранную анкету, Выход – закрывает форму Просмотр анкет.

      Форма 4 (Unit4) содержит таблицу, содержащую личные данные клиентов и сортировку пар по полу. Имеются 3 кнопки: Занести в архив – занос в архив выбранной пары, Выход – завершение работы с архивом, Подготовить приглашение – открывает окно подготовки приглашения пары в кафе “Ночной Тарзан” на вечер знакомства с кандидатом женского пола и кандидатом мужского пола. Далее приглашение можно сохранить нажатием кнопки Сохранить, либо отменить приглашение, нажатием кнопки Выйти.

      Форма 5 (Unit5) состоит из строк для просмотра всех данных клиента: регистрационный номер, дата регистрации, пол, данные о себе, требования, возраст, ФИО. Так же имеется кнопка Выход – завершающая просмотр данной формы.

      Форма 6 (Unit 6) открывает окно подготовки приглашения пары в кафе “Ночной Тарзан” на вечер знакомства с кандидатом женского пола и кандидатом мужского пола. Далее приглашение для дальнейшего редактирования можно сохранить нажатием кнопки Сохранить, что открывает окно диалога сохранения файла и сохраняем текстовую область Mtmo1 в указанный файл, либо отменить приглашение, нажатием кнопки Выйти.

      Форма 7 (Unit7) представляет собой окно, для просмотра готовых приглашений тех пар, которым были назначены встречи, тут же можно отредактировать приглашение и сохранить заново. Имеются 3 кнопки:

    Открытие  приглашения – открытие готового приглашения, путём вывода окна диалога, которое открывает файл. В этом окне происходит заполнение текстовой области Memo1 из указанного файла;

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

    Выход – завершение работы Unite7. 
     

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

program Project1; 

uses

  Forms,

  Unit1 in 'Unit1.pas' {Form1},

  Unit2 in 'Unit2.pas' {Form2},

  Unit3 in 'Unit3.pas' {Form3},

  Unit4 in 'Unit4.pas' {Form4},

  Unit5 in 'Unit5.pas' {Form5},

  Unit6 in 'Unit6.pas' {Form6},

  Unit7 in 'Unit7.pas' {Form7}; 

{$R *.res} 

begin

  Application.Initialize;

  Application.CreateForm(TForm1, Form1);

  Application.CreateForm(TForm2, Form2);

  Application.CreateForm(TForm3, Form3);

  Application.CreateForm(TForm4, Form4);

  Application.CreateForm(TForm5, Form5);

  Application.CreateForm(TForm6, Form6);

  Application.CreateForm(TForm7, Form7);

  Application.Run;

end. 
 
 
 
 

unit Unit1; 

interface 

uses

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

  Dialogs, StdCtrls; 

type

  TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button4: TButton;

    Button3: TButton;

    Button5: TButton;

    Button6: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form1: TForm1; 

implementation 

uses Unit2, Unit3, Unit4, Unit5, Unit7; 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject);//Процедура обработки клика  кнопки "Новая форма"

begin

form2.ShowModal; //показ формы Form2. Форма открывается в режиме при котором другие формы не доступны

end; 

procedure TForm1.Button2Click(Sender: TObject);//Процедура обработки клика кнопки "Просмотр анкет"

begin

Form3.showmodal;//показ  формы Form3. Форма открывается в режиме при котором другие формы не доступны

end; 

procedure TForm1.Button4Click(Sender: TObject);//Процедура обработки клика  кнопки "Выход"

begin

Close;//Закрытие формы Form1, что означает выход из программы

end; 

procedure TForm1.Button3Click(Sender: TObject);//Процедура обработки клика кнопки "Работа с архивом"

begin

form4.ShowModal;//показ  формы Form4. Форма открывается в режиме при котором другие формы не доступны

end; 

procedure TForm1.Button5Click(Sender: TObject);//Процедура обработки клика кнопки "Просмотр архива"

begin

form5.Table1.Open; //откритие таблицы Table1 находящейся на форме FORM5

form5.ShowModal; //показ  формы Form5. Форма открывается в режиме при котором другие формы не доступны

end; 

procedure TForm1.Button6Click(Sender: TObject);

begin

form7.ShowModal;//показ  формы Form7. Форма открывается в режиме при котором другие формы не доступны

end; 

end. 

 
 
 
 
 
 
 
 
 
 
 

unit Unit2; 

interface 

uses

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

  Dialogs, DBCtrlsEh, Mask, DBCtrls, DB, DBTables, StdCtrls, Buttons; 

type

  TForm2 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    DBMemo1: TDBMemo;

    DBMemo2: TDBMemo;

    Table1: TTable;

    DataSource1: TDataSource;

    DBEdit1: TDBEdit;

    DBEdit2: TDBEdit;

    DBEdit3: TDBEdit;

    DBEdit4: TDBEdit;

    DBDateTimeEditEh1: TDBDateTimeEditEh;

    DBEdit5: TDBEdit;

    Label6: TLabel;

    Label7: TLabel;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

   DBEdit6: TDBEdit;

    Label8: TLabel;

    procedure FormCreate(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

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

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form2: TForm2; 

implementation 

uses Unit3; 

{$R *.dfm} 

procedure TForm2.FormCreate(Sender: TObject);//При показе, активации и создании формы Form2 выполняются действия:

begin

Table1.Open;//Открывается таблица Table1

table1.Append;//Добавляется в конец таблицы новая строка в таблицу Table1

table1.FieldByName('date').AsDateTime:=date;//Записываем в текущую строку в поле Date сегодняшнее число

table1.Post; //Сохранение изменений

table1.edit; //Начинаем изменения в таблице Table1 в текущей сторке 

end; 

procedure TForm2.BitBtn1Click(Sender: TObject);//Процедура обработки клика  кнопки "ОК"

begin

table1.Post; //Сохранение изменений

close;//Закрытие формы Form2

end; 

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

table1.Cancel;//отмена изменений

table1.Delete;//Удаление текущей строки в таблице Table1

close;//Закрытие формы Form2 

end; 

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);//Процедура обработки событя при закрытии формы Form2

begin

form3.Table1.Refresh;//Обновление данных в таблице Table1 находящейся на форме Form3

end; 

end. 

 
 

unit Unit3; 

interface 

uses

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

  Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, Buttons, ExtCtrls, DB,

  DBTables; 

type

  TForm3 = class(TForm)

    DataSource1: TDataSource;

    Table1: TTable;

    Panel1: TPanel;

    DBGrid1: TDBGrid;

    DBMemo1: TDBMemo;

    DBMemo2: TDBMemo;

    Button1: TButton;

    Button2: TButton;

    Label1: TLabel;

    Label2: TLabel;

    Edit1: TEdit;

    Label3: TLabel;

    procedure FormCreate(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Edit1Change(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form3: TForm3; 

implementation 

{$R *.dfm} 

procedure TForm3.FormCreate(Sender: TObject); //прцедура обработки события при создании формы Form3

begin

table1.Open;//Открытие  таблицы table1

end; 

procedure TForm3.BitBtn1Click(Sender: TObject);//Процедура обработки клика  кнопки "Удалить"

begin

table1.Delete;//Удаление текущей строки в таблице Table1

end; 

procedure TForm3.Button2Click(Sender: TObject);//Процедура обработки клика  кнопки "Выход"

begin

Close;//Закрытие Form3

end; 
 

procedure TForm3.Edit1Change(Sender: TObject);

begin

Try                                       //Задействование обработчика ошибок

Table1.FindKey([strtoint(edit1.Text)]);   //Поиск по индексу (ставит курсор в таблице ближе всего находящейся к искомому значению)

except

Showmessage('Не верный параметр для поиска'); //в солучае возникновения ошибки будет дано сообщение

end;

end; 

end. 
 
 
 

 
 
 
 
 
 
 

unit Unit4; 

interface 

uses

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

  Dialogs, StdCtrls, DB, Grids, DBGrids, DBTables; 

type

  TForm4 = class(TForm)

    Table1: TTable;

    Table2: TTable;

    Table3: TTable;

    DBGrid1: TDBGrid;

    DBGrid2: TDBGrid;

    DataSource1: TDataSource;

    DataSource2: TDataSource;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure FormShow(Sender: TObject);

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

    procedure Button3Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form4: TForm4; 

implementation 

uses Unit6; 

{$R *.dfm} 

procedure TForm4.Button2Click(Sender: TObject);

begin

close;

end; 

procedure TForm4.Button1Click(Sender: TObject);//Процедура обработки клика  кнопки "Занести в архив"

begin

//table1.Open;

//table2.Open;

table1.DisableControls;//Отмена слежения за изменениями в таблице Table1

table2.DisableControls;//Отмена слежения за изменениями в таблице Table2

table3.Open;//Открываем таблицу Table3

table3.Append;//Добавляем в конец таблицы новую строку

table3.FieldByName('reg').AsInteger:=table1.FieldByName('reg').AsInteger;//копируем в поле "REG" таблицы Table3 значение поля "REG" таблицы Table1

table3.FieldByName('date').Asdatetime:=table1.FieldByName('date').Asdatetime;//копируем в поле "DATE" таблицы Table3 значение поля "DATE" таблицы Table1

table3.FieldByName('pol').Asstring:=table1.FieldByName('pol').Asstring;//копируем в поле "POL" таблицы Table3 значение поля "POL" таблицы Table1

table3.FieldByName('osebe').AsVariant:=table1.FieldByName('osebe').AsVariant;//копируем в поле "OSEBE" таблицы Table3 значение поля "OSEBE" таблицы Table1

table3.FieldByName('treb').AsVariant:=table1.FieldByName('treb').AsVariant;//копируем в поле "TREB" таблицы Table3 значение поля "TREB" таблицы Table1

table3.FieldByName('name').Asstring:=table1.FieldByName('name').Asstring;//копируем в поле "NAME" таблицы Table3 значение поля "NAME" таблицы Table1

table3.FieldByName('family').Asstring:=table1.FieldByName('family').Asstring;//копируем в поле "FAMILY" таблицы Table3 значение поля "FAMILY" таблицы Table1

table3.FieldByName('father').Asstring:=table1.FieldByName('Father').Asstring;//копируем в поле "FATHER" таблицы Table3 значение поля "FATHER" таблицы Table1

table3.Post;//Сохраняем изменения в таблице Table3

table3.Append;//Добавляем в конец таблицы новую строку

table3.FieldByName('reg').AsInteger:=table2.FieldByName('reg').AsInteger;//копируем в поле "REG" таблицы Table3 значение поля "REG" таблицы Table2

table3.FieldByName('date').Asdatetime:=table2.FieldByName('date').Asdatetime;//копируем в поле "DATE" таблицы Table3 значение поля "DATE" таблицы Table2

table3.FieldByName('pol').Asstring:=table2.FieldByName('pol').Asstring;//копируем в поле "POL" таблицы Table3 значение поля "POL" таблицы Table2

table3.FieldByName('osebe').AsVariant:=table2.FieldByName('osebe').AsVariant;//копируем в поле "OSEBE" таблицы Table3 значение поля "OSEBE" таблицы Table2

table3.FieldByName('treb').AsVariant:=table2.FieldByName('treb').AsVariant;//копируем в поле "TREB" таблицы Table3 значение поля "TREB" таблицы Table2

table3.FieldByName('name').Asstring:=table2.FieldByName('name').Asstring;//копируем в поле "NAME" таблицы Table3 значение поля "NAME" таблицы Table2

table3.FieldByName('family').Asstring:=table2.FieldByName('family').Asstring;//копируем в поле "FAMILY" таблицы Table3 значение поля "FAMILY" таблицы Table2

table3.FieldByName('father').Asstring:=table2.FieldByName('Father').Asstring;//копируем в поле "FATHER" таблицы Table3 значение поля "FATHER" таблицы Table2

table3.Post;//Сохраняем изменения в таблице Table3

Button3Click(Sender);//Вызов  процедуры Button3Click(см ниже)

table1.Delete;//Удаляем текущую строку из таблицы TABLE1

table2.Delete;//Удаляем текущую строку из таблицы TABLE2

table1.EnableControls;//Возобновляем контроль над таблицей TABLE1

table2.EnableControls;//Возобновляем контроль над таблицей TABLE2

table1.Refresh;//Обновляем данные в таблице Table1

table2.Refresh;//Обновляем данные в таблице Table1 

end; 

procedure TForm4.FormShow(Sender: TObject); //При показе формы Form4 выполняются действия:

begin

table1.Open;//открытие  таблицы Table1

table2.Open;//открытие  таблицы Table2

end; 

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);//При закрытии  формы Form4 выполняются действия:

begin

table1.Close;//Закрытие  таблицы Table1

table2.Close;//Закрытие  таблицы Table2

end; 

procedure TForm4.Button3Click(Sender: TObject);//Процедура обработки клика  кнопки "Подготовить приглашение"

var ff:textfile;//Объявление типа файловой переменной

begin

assignfile(ff,'c:\Prigl.txt');  //процедура ассоциации имени файла с файловой переменной FF

rewrite(ff);//Перезапись файла

Writeln(ff,'Приглашение в кафе "Ночной Тарзан"');//Добавляем строку в файл

Writeln(ff,'На вечер знакомства с '+table1.fieldbyname('Family').asstring+' '+table1.fieldbyname('Name').asstring);//Добавляем строку в файл со значениями некоторых полей из таблиц Table1 и Table2

Writeln(ff,' и '+table2.fieldbyname('Family').asstring+' '+table2.fieldbyname('Name').asstring);

closefile(ff);//Закрытие  файла

form6.Memo1.Lines.LoadFromFile('c:\Prigl.txt');//Заполняем  текстовое поле Memo1 в окне формы  6 содержимым только что сохранненого файла

form6.ShowModal;//показ  формы Form6. Форма открывается в режиме при котором другие формы не доступны

end;

end. 
 

 
 

unit Unit5; 

interface 

uses

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

  Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls, DB, DBTables, Grids,

  DBGrids; 

type

  TForm5 = class(TForm)

    DataSource1: TDataSource;

    DBGrid1: TDBGrid;

    Table1: TTable;

    Panel1: TPanel;

    DBMemo1: TDBMemo;

    DBMemo2: TDBMemo;

    BitBtn1: TBitBtn;

    Label1: TLabel;

    Label2: TLabel;

    procedure BitBtn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form5: TForm5; 

implementation 

{$R *.dfm} 

procedure TForm5.BitBtn1Click(Sender: TObject);

begin

close;//закрытие  формы Form5

end; 

end. 

 
 
 
 
 
 
 
 

unit Unit6; 

interface 

uses

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

  Dialogs, StdCtrls, ExtCtrls; 

type

  TForm6 = class(TForm)

    Memo1: TMemo;

    Panel1: TPanel;

    Button1: TButton;

    Button2: TButton;

    SaveDialog1: TSaveDialog;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end; 

var

  Form6: TForm6; 

implementation 

{$R *.dfm} 

procedure TForm6.Button1Click(Sender: TObject);

begin

if SaveDialog1.Execute then memo1.Lines.SaveToFile(SaveDialog1.FileName);//Открываем окно диалога сохранения файла и сохраняем текстовую область Memo1 в указанный файл

end; 

procedure TForm6.Button2Click(Sender: TObject);

begin

Close;//Закрытие  формы

end; 

end. 
 

 
 
 
 

unit Unit7; 

interface 

uses

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

  Dialogs, StdCtrls, ExtCtrls; 

type

  TForm7 = class(TForm)

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    Panel1: TPanel;

    Memo1: TMemo;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    procedure Button3Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);