МІНІСТЕРСТВООСВІТИ І НАУКИУКРАЇНИ
НАЦІОНАЛЬНИЙУНІВЕРСИТЕТКОРАБЛЕБУДУВАННЯ
ім.адм. Макарова
Херсонськийфіліал
Кафедра інформаційнихтехнологій
Курсоваробота
З ДИСЦИПЛІНИ
“Об’єктно– орієнтованепрограмування”
ТЕМА:Розробкапрограмногозабезпечення“Бюрознайомств”
Виконав:
Перевірив:
Херсон 2004
Ход работыпрограммы
Модуль Proect1содержит информациюо всех 7-ми Формах.
Форма 1 (Unit1)состоит из 6-тикнопок и хранитпроцедуры ихобработки:
КнопкаНовая анкетапозволяетсоздать новуюанкету клиента,содержащуюданные о нем.
КнопкаПросмотр анкетвыводит списокранее зарегистрированныхклиентов.
КнопкаРабота с архивом открываеттаблицу, содержащуюличные данныеклиентов осебе и разделанкет по полу.
КнопкаПросмотр архиваоткрываеттаблицу архива,содержащуюличные данныеи параметрыклиентов.
КнопкаПросмотрсохраненныхприглашенийоткрываетдиалоговоеокно, содержащееинформациюо текущемприглашениипары (по умолчаниюв кафе “НочнойТарзан”).
КнопкаВыход завершаетработу программыБюро знакомств.
Форма 2 (Unit2) создаёт новуюанкету, содержащуютакие поля:Дата, Регистрационныйномер (задаётсяавтоматически),Фамилия, Имя,Отчество, Пол,Возраст, О себе,Требования.Так же имеются2 кнопки: OK– сохраняетновую, заполненнуюанкету, Cancel- отменяетсоздание новойанкеты.
Форма 3 (Unit3)– это форма,просмотраанкет, она содержиттакие заполненныеполя: Рег №, Датарегистрации,Имя, Фамилия,Возраст, Пол,данные клиентао себе и требованияк партнёру. Также есть строкапоиска порегистрационномуномеру и двекнопки: Удалить– удаляетполностьювыбраннуюанкету, Выход– закрываетформу Просмотранкет.
Форма 4 (Unit4)содержит таблицу,содержащуюличные данныеклиентов исортировкупар по полу.Имеются 3 кнопки:Занести в архив– занос в архиввыбранной пары,Выход – завершениеработы с архивом,Подготовитьприглашение– открываетокно подготовкиприглашенияпары в кафе“Ночной Тарзан”на вечер знакомствас кандидатомженского полаи кандидатоммужского пола.Далее приглашениеможно сохранитьнажатием кнопкиСохранить,либо отменитьприглашение,нажатием кнопкиВыйти.
Форма 5 (Unit5)состоит изстрок для просмотравсех данныхклиента: регистрационныйномер, датарегистрации,пол, данные осебе, требования,возраст, ФИО.Так же имеетсякнопка Выход– завершающаяпросмотр даннойформы.
Форма 6 (Unit6) открываетокно подготовкиприглашенияпары в кафе“Ночной Тарзан”на вечер знакомствас кандидатомженского полаи кандидатоммужского пола.Далее приглашениедля дальнейшегоредактированияможно сохранитьнажатием кнопкиСохранить,что открываетокно диалогасохраненияфайла и сохраняемтекстовуюобласть Mtmo1в указанныйфайл, либо отменитьприглашение,нажатием кнопкиВыйти.
Форма 7 (Unit7)представляетсобой окно, дляпросмотраготовых приглашенийтех пар, которымбыли назначенывстречи, тутже можно отредактироватьприглашениеи сохранитьзаново. Имеются3 кнопки:
Открытиеприглашения– открытиеготового приглашения,путём выводаокна диалога,которое открываетфайл. В этомокне происходитзаполнениетекстовойобласти Memo1из указанногофайла;
Сохранитьприглашение– даёт возможностьсохранитьновое, отредактированноеприглашениепутём открытияокна диалогасохраненияфайла и сохраняетсятекстоваяобласть Memo1в указанныйфайл;
Выход – завершениеработы Unite7.
Текст программы
programProject1;
uses
Forms,
Unit1 in 'Unit1.pas'{Form1},
Unit2 in 'Unit2.pas'{Form2},
Unit3 in 'Unit3.pas'{Form3},
Unit4 in 'Unit4.pas'{Form4},
Unit5in '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.
unitUnit1;
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;
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
procedureButton4Click(Sender: TObject);
procedureButton3Click(Sender: TObject);
procedureButton5Click(Sender: TObject);
procedureButton6Click(Sender: TObject);
private
{Private declarations }
public
{ Publicdeclarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3,Unit4, Unit5, Unit7;
{$R *.dfm}
procedureTForm1.Button1Click(Sender: TObject);//Процедураобработки кликакнопки "Новаяформа"
begin
form2.ShowModal;//показ формыForm2. Форма открываетсяв режиме прикотором другиеформы не доступны
end;
procedureTForm1.Button2Click(Sender:TObject);//Процедураобработки кликакнопки "Просмотранкет"
begin
Form3.showmodal;//показформы Form3. Формаоткрываетсяв режиме прикотором другиеформы не доступны
end;
procedureTForm1.Button4Click(Sender: TObject);//Процедураобработки кликакнопки "Выход"
begin
Close;//Закрытиеформы Form1,что означаетвыход из программы
end;
procedureTForm1.Button3Click(Sender:TObject);//Процедураобработки кликакнопки "Работас архивом"
begin
form4.ShowModal;//показформы Form4. Формаоткрываетсяв режиме прикотором другиеформы не доступны
end;
procedureTForm1.Button5Click(Sender:TObject);//Процедураобработки кликакнопки "Просмотрархива"
begin
form5.Table1.Open;//откритие таблицыTable1 находящейсяна форме FORM5
form5.ShowModal;//показ формыForm5. Форма открываетсяв режиме прикотором другиеформы не доступны
end;
procedureTForm1.Button6Click(Sender: TObject);
begin
form7.ShowModal;//показформы Form7. Формаоткрываетсяв режиме прикотором другиеформы не доступны
end;
end.
unitUnit2;
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;
procedureFormCreate(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedureBitBtn2Click(Sender: TObject);
procedureFormClose(Sender: TObject; var Action: TCloseAction);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form2: TForm2;
implementation
uses Unit3;
{$R *.dfm}
procedureTForm2.FormCreate(Sender: TObject);//При показе,активации исоздании формыForm2 выполняютсядействия:
begin
Table1.Open;//Открываетсятаблица Table1
table1.Append;//Добавляетсяв конец таблицыновая строкав таблицу Table1
table1.FieldByName('date').AsDateTime:=date;//Записываемв текущую строкув поле Dateсегодняшнеечисло
table1.Post;//Сохранениеизменений
table1.edit;//Начинаем измененияв таблице Table1в текущей сторке
end;
procedureTForm2.BitBtn1Click(Sender: TObject);//Процедураобработки кликакнопки "ОК"
begin
table1.Post;//Сохранениеизменений
close;//Закрытиеформы Form2
end;
procedureTForm2.BitBtn2Click(Sender: TObject);
begin
table1.Cancel;//отменаизменений
table1.Delete;//Удалениетекущей строкив таблице Table1
close;//Закрытиеформы Form2
end;
procedureTForm2.FormClose(Sender: TObject; var Action:TCloseAction);//Процедураобработкисобытя призакрытии формыForm2
begin
form3.Table1.Refresh;//Обновлениеданных в таблицеTable1 находящейсяна форме Form3
end;
end.
unitUnit3;
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;
procedureFormCreate(Sender: TObject);
procedureBitBtn1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
procedureEdit1Change(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedureTForm3.FormCreate(Sender: TObject); //прцедураобработкисобытия присоздании формыForm3
begin
table1.Open;//Открытиетаблицы table1
end;
procedureTForm3.BitBtn1Click(Sender: TObject);//Процедураобработки кликакнопки "Удалить"
begin
table1.Delete;//Удалениетекущей строкив таблице Table1
end;
procedureTForm3.Button2Click(Sender: TObject);//Процедураобработки кликакнопки "Выход"
begin
Close;//ЗакрытиеForm3
end;
procedureTForm3.Edit1Change(Sender: TObject);
begin
Try //Задействованиеобработчикаошибок
Table1.FindKey([strtoint(edit1.Text)]); //Поиск по индексу(ставит курсорв таблице ближевсего находящейсяк искомомузначению)
except
Showmessage('Неверный параметрдля поиска');//в солучаевозникновенияошибки будетдано сообщение
end;
end;
end.
unitUnit4;
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;
procedureButton2Click(Sender: TObject);
procedureButton1Click(Sender: TObject);
procedureFormShow(Sender: TObject);
procedureFormClose(Sender: TObject; var Action: TCloseAction);
procedureButton3Click(Sender: TObject);
private
{ Privatedeclarations }
public
{Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit6;
{$R *.dfm}
procedureTForm4.Button2Click(Sender: TObject);
begin
close;
end;
procedureTForm4.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;
procedureTForm4.FormShow(Sender: TObject); //При показеформы Form4 выполняютсядействия:
begin
table1.Open;//открытиетаблицы Table1
table2.Open;//открытиетаблицы Table2
end;
procedureTForm4.FormClose(Sender: TObject; var Action: TCloseAction);//Призакрытии формыForm4 выполняютсядействия:
begin
table1.Close;//Закрытиетаблицы Table1
table2.Close;//Закрытиетаблицы Table2
end;
procedureTForm4.Button3Click(Sender: TObject);//Процедураобработки кликакнопки "Подготовитьприглашение"
varff: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.
unitUnit5;
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;
procedureBitBtn1Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedureTForm5.BitBtn1Click(Sender: TObject);
begin
close;//закрытиеформы Form5
end;
end.
unitUnit6;
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;
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedureTForm6.Button1Click(Sender: TObject);
begin
ifSaveDialog1.Execute thenmemo1.Lines.SaveToFile(SaveDialog1.FileName);//Открываемокно диалогасохраненияфайла и сохраняемтекстовуюобласть Memo1 вуказанный файл
end;
procedureTForm6.Button2Click(Sender: TObject);
begin
Close;//Закрытиеформы
end;
end.
unitUnit7;
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;
procedureButton3Click(Sender: TObject);
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
procedureTForm7.Button3Click(Sender: TObject);
begin
Close;//Закрытиеформы Form7
end;
procedureTForm7.Button1Click(Sender: TObject);
begin
If OpenDialog1.Executethen memo1.Lines.LoadFromFile(OpenDialog1.FileName);//Открываемокно диалогаоткрытия файлаи заполняемтекстовуюобласть Memo1 изуказанногофайла
end;
procedureTForm7.Button2Click(Sender: TObject);
begin
If SaveDialog1.Executethen memo1.Lines.SaveToFile(SaveDialog1.FileName);//Открываемокно диалогасохраненияфайла и сохраняемтекстовуюобласть Memo1 вуказанный файл
end;
end.
Целью моей курсовой работы является программированиебазы даных с помощью Delphi7. Прежде чем начать выполнять свое задание рассмотрим эту систему программирования, в общем.
Delphi - этогреческийгород, где жилдельфийскийоракул. И этимименем былназван новыйпрограммныйпродукт сфеноменальнымихарактеристиками.
Delphi - этокомбинациянесколькихважнейшихтехнологий:
Высокопроизводительныйкомпиляторв машинный код
Объектно-ориентированнаямодель компонент
Визуальное(а, следовательно,и скоростное)построениеприложенийиз программныхпрототипов
Масштабируемыесредства дляпостроениябаз данных
Компилятор,встроенныйв Delphi,обеспечиваетвысокую производительность,необходимуюдля построенияприложенийв архитектуре“клиент-сервер”. Этот компиляторв настоящеевремя являетсясамым быстрымв мире, его скоростькомпиляциисоставляетсвыше 120 тысячстрок в минутуна компьютере486DX33. Он предлагаетлегкость разработкии быстрое времяпроверки готовогопрограммногоблока, характерногодля языковчетвертогопоколения (4GL)и в то же времяобеспечиваеткачество кода,характерногодля компилятора3GL.
В процессепостроенияприложенияразработчиквыбирает изпалитры компонентготовые компонентыкак художник,делающий крупныемазки кистью.Еще до компиляциион видит результатысвоей работы- после подключенияк источникуданных их можновидеть отображеннымина форме, можноперемещатьсяпо данным,представлятьих в том илиином виде.
Cреда Delphiвключает в себяполный наборвизуальныхинструментовдля скоростнойразработкиприложений(RAD - rapid application development), поддерживающейразработкупользовательскогоинтерфейсаи подключениек корпоративнымбазам данных.
В Delphiвизуальныекомпонентыпишутся наобъектномпаскале, на томже паскале, накотором пишетсяалгоритмическаячасть приложения.И визуальныекомпонентыDelphi получаютсяоткрытыми длянадстройкии переписывания.
Delphi используетструктурныйобъектно-ориентированныйязык (Object Pascal), которыйсочетает содной сторонывыразительнуюмощь и простотупрограммирования,характернуюдля языков 4GL,а с другой стороныэффективностьязыка 3GL.
Структурабазы данных
База данных— это набороднородной,как правило,упорядоченнойпо некоторомукритерию, информации.База данныхможет бытьпредставленав "бумажном"или в компьютерномвиде.
Типичнымпримером "бумажной"базы данныхявляется каталогбиблиотеки— набор бумажныхкарточек, содержащихинформациюо книгах. Информацияв этой базеоднородная(содержит сведениятолько о книгах)и упорядоченная(карточкирасставлены,например, всоответствиис алфавитнымпорядком фамилийавторов). Другимипримерами"бумажной"базы данныхявляются телефонныйсправочники расписаниедвижения поездов.
Компьютернаябаза данныхпредставляетсобой файл (илинабор связанныхфайлов), содержащийинформацию.
База данныхсостоит иззаписей. Каждаязапись содержитинформациюоб одном экземпляре.Записи состоятиз полей. Каждоеполе содержитинформациюоб одной характеристикеэкземпляра.Например, записьбазы данных“Бюро знакомств”состоит изследующихполей: "Регистрационныйномер", "Датарегистрации","ФИО", "Возраст","Пол". Содержимоеэтих полейхарактеризуетличность клиентовБюро знакомств.
Следуетобратить внимание,что каждаязапись состоитиз одинаковыхполей. Некоторыеполя могут бытьне заполнены,однако они всеравно присутствуютв записи.
На бумагебазу данныхудобно представитьв виде таблицы.Каждая строкатаблицы соответствуетзаписи, а ячейкатаблицы — полю.При этом заголовокстолбца таблицы— это имя поля,а номер строкитаблицы — номерзаписи.
Информациюкомпьютерныхбаз данныхобычно выводятна экран в видетаблиц. Поэтомув литературедовольно частовместо словосочетания"файл данных"используетсясловосочетание"таблица данных"или просто"таблица".
Программауправлениябазой данных
Перед темкак приступитьнепосредственнок разработкеприложенияуправлениябазой данных,необходимо,используяутилиту Database Desktop,создать файлданных (таблицу)и добавить внее несколькозаписей. Приложениеработы с базойданных должносодержатькомпоненты,обеспечивающиедоступ к данным,возможностьпросмотра иредактированиясодержимогополей. Компонентыдоступа к даннымнаходятся навкладке DataAccess палитрыкомпонентов,а компонентыотображенияданных — навкладке DataControls.
Созданиебазы данных
Приложениябаз данныхмогут получатьдоступ к источникамданных припомощи разнообразныхтехнологий
доступа,многие из которыхиспользуютсяи в приложенияхDelphi. Тем не менеелюбое приложениебаз данных в
Delphi имеет стандартноеядро, структуракоторого определенаархитектуройприложениябаз данных.
Набор базовыхкомпонентови способовразработкиявляется единойосновой, накоторой базируютсятехнологии
доступа кданным. Этопозволилоунифицироватьпроцесс разработкиприложенийбаз данных.
В основепроцесса разработкилежит триадакомпонентов:
- невизуальныекомпонентынабора данных;
- невизуальныекомпонентыTDataSource;
- визуальныекомпонентыотображенияданных.
Для созданиятаблицы автономнойбазы имеетсяприложение
DatabaseDesktop, котороевызываетсякомандойTools/DatabaseDesktop.
Оноимеет собственноеокно, меню икнопки (заставкаэтого пункта).Новая таблицасоздаетсяпостроителемтаблиц, которыйвызываетсякомандойFile/New/ТаЫе.На запрос типСУБД выберемРагаdох 7.
Рассмотримосновные колонкии поля окнаконструкторатаблиц.
FileName -идентификаторыполей (не болеелатинских букви цифр для совместимостис другими СУБД).
Туре- типполя (указываетсявыбором изконтекстногоменю): А1рhа(А - строка изне более чем255, символов),Number(N - число с плавающей точкой), Моnеу($ - аналогичентипу NumЬег,но добавляетсяденежный знак),Short(S - целое числов диапазоне-32768..32767), LongIntereger(I целое числов диапазоне-2147483..2147483647), ВСD (# - числов двоично-десятичномформате), Datе(D -дата). Time(Т - время), Timestamp(@ - дата и время),Меmо(М -строка любойдлины), FormattedMemo (F -аналогиченМеmо,но может содержатьформатированныйтекст), Graphic(G -изображениеВМР, РСХ, ТIF, СИР,ЕРS), ОLЕ (О - объектОLЕ), Logical(L логическое- Т, F), Autoincrement(+ - при добавлениизаписи, автоматическиформируетсяуникальноезначение), Вinary(В – последовательность байтов любойдлины), Вуtes(У последовательностьне более, чем255 байтов).
Size-размер поляв байтах.
Кеу -признак первичногоключевого поля(двойной щелчокпо колонке).
Таblesproperties -дополнительныесвойства таблицы:Secondary Index(задание вторичныхиндексов), ValidityChecks(ограниченияна ввод значенийполей). РasswordSecurity(определениепароля), ReferentialIntergity(определениессылочнойцелостностимежду таблицами),ТаЫе Language(заданиеязыка), ТаЫеLоокор(задание полейпросмотра),DependingТаЫеs(зависимыедочерние таблицы).
RequierdFiled- признакобязательногозаполненияполя.
Мiniтит...,Махiпит... -начало и конецдиапазонадопустимыхзначений.
Defaultvа1ие -значение поумолчанию придобавлениипустой записи.
Р1сture,Assist- шаблони построительшаблона значенияполя.
Вторичныеключи (индексы)создаются путемвыбора из списка свойств таблицыстрокиSecondaryIndexes,и после нажатиякнопкиDefine выводитсяокноDefine Secondary Indexes.Используякнопки со стрелкамиили двойнымищелчками, перенесемнужное полеили несколькополей, еслиключ составной,в список индексов.Имеются переключатели:Unique(уникальныйиндекс),Саsesensitive(учет регистровстроковыхполей),Descending(сортировкапо возрастанию).КнопкойОК.производитсявыход с указаниемимени индекса.Поле, котороеявляется первичнымключом другойродительскойтаблицы, называютвнешним ключом.Для связи таблицобычно создаютиндексы повнешним ключам.После формированиятаблицы онасохраняется,если нажатькнопку SaveAs, подуказаннымименем; приэтом в полеимени файламожно указатькак
полноеимя с каталогами,так и псевдонимбазы (Аlias). Псевдонимпозволяет непривязыватьсяк каталогу,который можетменяться вдальнейшем.
Длясозданияпсевдонимавыполним командуТоо1s/АliasМапаger,и появится окноАliasМаnаgег.
Нажмемкнопку Newи в поле Databasealiasвведем имя
псевдонимаУчет, кнопкойВrowseвыберем нашкаталог с базойЛюди, далееКеер New и ОК.
КомандойFile/WorkingDirectoryустановимтекущий каталог,выбрав псевдонимКурсовая всписке Alias,займемся созданиемтаблиц.
Таблица Люди,будет иметьстолбцы: Люди,Регистрационныйномер, Датарегистрасии,Пол, О себе,Требования,Возраст, ФИО.
Вторая таблица– Архив будетиметьаналогичныеназвания столбцов.
Длякорректировкии просмотраоткрытой таблицыимеются командыТаЫе/Restructure(кнопкаRestructure) иТаЫе/Into Structure.Для переименованиятаблицы следуетсохранить еепод новым именем.Для заполненияи редактированиятаблицы, послеее связыванияс другими таблицами,испочьзуетсякнопка Edit Data именю Record приложенияDatabase Deskot(кириллицу привводе использоватьнельзя).
Сведения о бюро знакомств
С судьбойможно встретитьсяеще в школе.Или в институте.Можно выйтизамуж за кучерявогобрюнета изсоседнего домаили познакомитьсяс будущей женойв очереди зажетончикамиметро. Вариантовмасса. Но дажеесли все вариантыиспробованы,а своего единственноговы еще не встретили,остается ещеодин вариант- знакомствочерез Бюрознакомств.
Бытует мнение,что в службузнакомствобращаютсяв основномнесчастные,никому ненужныелюди. Конечно,можно еще подумать,а можно отнестиськ проблемеболее целеустремленно.На самом делеэто люди с активнойжизненнойпозицией, которыесмогли поборотьв себе какие-токомплексы ирешили попробоватьцивилизованныйспособ знакомства.
Бюро знакомствуже не первыйгод успешноработает нарынке брачныхуслуг, имееточень многоположительныхрезультатов,и у каждогоесть свой шанснайти спутникажизни.
Названию"брачное агентство"лучше предпочестьболее нейтральное- "служба знакомств".Это позволитизбегатьтрудновыполнимыхобещаний, поскольку каких-либогарантий в делеустройствачьей-то судьбыпросто не существует.
Брачный бизнес- это коммерческая,то есть платная,подразумевающаяполучениедохода, деятельность,связанная спредоставлениемуслуг в сфере брачных знакомств.Организациями,занимающимисяданным видомдеятельностии предоставляющимиуслуги в этомвиде бизнеса,являются брачныеагентства ислужбы знакомств.Кроме организаций,в брачном бизнесеактивно работаюти индивидуальные брачные дилеры,в прошлом - брачныесвахи.
Применениепрограммы напрактике
С давнихвремен людиискали себеспутников жизнина протяжениидолгого времени.Постепенностали появлятьсяфирмы, помогающиелюдям найтисебе партнера,так называемые“службы знакомств”.
Люди приходилив эти службы,заполнялианкеты, оставляяданные о себе,оставляли также и требованияк человеку,которого хотелибы найти.
Так жеприходили вбюро знакомствлюди, которыехотели не толькозарегистрироваться,но и поискатьспутника илиспутницу в ужесуществующейбазе. В этихслужбах веласьогромнаядокументация,хранившаяадреса, фотографии,номера телефонов,личные данныесвоих клиентов.Следовательно,чтобы найтикого-то, нужнобыло пересмотретьи отсортироватьсотни, а то итысячи бумаг.
Моя задача– облегчитьпоиск и подборжелающихпознакомитьсяс новыми людьмичерез бюрознакомств.
Программа,написаннаямной, можетхранить данныео личности,такие как ФИО,возраст, пол,дату регистрации,описания внешностии других характеристикклиента, а также требования,удовлетворяющиежелание клиентав поиске избранницылибо избранника.Реализованпоиск по регистрационномуномеру, чтоудобно как дляработника бюрознакомств (длясортировкианкет), так идля клиентов.Клиент можетзарегистрироваться,оставив анкетув бюро знакомств,и автоматическиполучитьрегистрационныйномер, что поможетпри объявлениив той же газете.Введя определённыйрегистрационныйномер, компьютеравтоматическивыводит вседанные о человеке.
Б лок-схемаUnit1
Б
лок-схемаUnit2Б
лок-схемаUnit3Б
Подготовкаприглашенияи сохраненияв выбранныйфайл
Занесениеизменений втаблицу table3
Закрытиеформы Form4
лок-схемаUnit4Б
Закрытиеформы Form5
лок-схемаUnit5Б
Закрытиеформы Form5
Сохранениеизменений ввыбранный файл
лок-схемаUnit6Б
Сохранениеизменений ввыбранный файл
Открытиевыбранногофайл
Закрытиеформы Form7
лок-схемаUnit7