Описание выходной информации
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Теоретический раздел

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

 

Основной задачей данного курсового проекта является разработка базы данных и соответствующего приложения для автоматизации ведения кадрового учёта некоторого предприятия. Конечная цель этой задачи формирование таблицы анкетных данных. В программе используется много информации, и ее нужно где то хранить. Поэтому мы будем использовать базу данных. Очевидно, что первой задачей и является разработка базы данных для хранения всей необходимой информации. В зависимости от расположения программы, использующей данные, и самих данных, а также способа разделения данных между несколькими пользователями различают локальные (Paradox, dBase, FoxPro и Access) и удаленные (Interbase Sybase, Oracle и т.д.) базы данных. В данном случае мы будем создавать удалённую базу данных. Данные удалённой базы данных (файлы данных) находятся на одном удалённом устройстве, в качестве которого может выступать диск компьютера.

База данных — это набор файлов (таблиц), в которых находится информация. Как правило, база данных состоит из нескольких таблиц, которые размещают в одном каталоге. Каталог для новой базы данных создается обычным образом, например, при помощи Проводника. Таблицу мы будем создавать, воспользовавшись утилитой IBConsole. Сначала при помощи этой утилиты мы создадим сами таблицы, а затем еще генераторы и триггеры. Генератор – это специальная функция InterBase, с помощью которой создается счетчик для поля базы данных. А триггер нужен для того, чтобы привязать генератор к нужной таблице и к нужному полю.

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

· создание каталога;

· создание таблиц;

· создание генераторов;

· создание триггеров.

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

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

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

· разработка структуры таблиц базы данных;

· создание таблиц;

· создание генераторов и триггеров;

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

· разработка графического интерфейса пользователя клиентских приложений;

· обеспечить работоспособность программного продукта на любом компьютере.

Описание входной информации

В данной программе в качестве входной информации выступают данные в таблицу: Анкета. В этой таблице хранится фамилия, имя, отчество, пол, рост, вес, фото, дата рождения, адрес(страна), адрес(область), адрес(город), адрес(улица), адрес(квартира), адрес(индекс), адрес(телефон), место рождения(страна), место рождения(область), место рождения(город), гражданство, образование, номер страхового свидетельства, ИНН, серия трудовой книжки, номер трудовой книжки, номер паспорта, серия паспорта, выдан паспорт, дата выдачи паспорта.

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

· TRadioButton – визуальный компонент, позволяющий зафиксировать одно значение, из нескольких, принадлежащих к одной группе.

· TEdit – однострочный текстовый редактор, при помощи которого вводится нужная информация, например пароль и имя преподавателя.

· TDBEdit – компонент, имеющий такие же свойства как и TEdit, но с дополнительной возможностью связи с каким либо полем таблицы базы данных;

· TComboBox – визуальный компонент, позволяет выбрать одно значение из списка.

Экспериментальный раздел

Описание процесса отладки

 

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

Обычно программа редко сразу начинает работать так, как надо, или работает правильно только на некотором ограниченном наборе исходных данных. Это свидетельствует о том, что в программе есть алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой.

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

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

Исправил я эту ошибку, создав папку «BD» и поместил в неё базу «BD». Далее в свойстве DatabaseName компонента IBDatabase1 я написал следуюшее:

BD\BD.gdb

Программа автоматически определяет свое место положения и сообщает компоненту IBDatabase путь до базы данных.

Характеристика программы

 

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

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

 


Окно о программе


Инструкция пользователя

 

Для работы в данной программе вам не потребуются большие навыки работы с Windows-приложениями. Сам интерфейс программы прост и ясен.

Для начала работы необходимо в корневой директории диска открыть папку «Анкетные данные», в которой находиться программа и запустить файл Анкетные данные.exe. При запуске программы на экране появиться главное окно в котором вы можите просмотреть все личные данные. При нажатии на кнопку «Поиск» можно произвести поиск по трем полям: фамилия, пол, ИНН. При нажатии на кнопку «Сортировка» можно провести сортировку по полям указанным в программе.

При нажатии на вкладку «Редактировать» возникает окошко с данными той записи, на которой стоит указатель. Здесь можно изменить информацию любую информацию, имеющуюся в базе данных.

При нажатии на кнопку «Фильтрация» можно включить или выключить фильтр. Фильтрация происходит по всем полям базы данных.

При выборе вкладки «Добавление записи» можно добавить в базу свои анкетные данные предварительно заполнив все поля после чего нажимаем на кнопку «Добавить» поля добавляются. Также можно добавить свою фотографию нажав на кнопку «Добавить фото» и прописать путь к своей фотографии.

При нажатии на вкладку «Редактирование записей» возникает окошко с данными той записи, на которой стоит указатель. Здесь можно изменить информацию любую информацию, имеющуюся в базе данных.

Чтобы вывести распечатать анкетные данные в главном окне выбираем нужное поле нажимаем кнопку «Отчет» и распечатываем.

При нажатии на кнопку «О программе» на панели сверху, возникает окно с информацией о разработчике данного программного продукта.



Заключение

 

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий.

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

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



Литература

 

1. Бобровский С.И. Delphi7. Учебный курс.- СПб.: Питер.2004.

2. Избачков Ю. С., Петров В. Н. Информационные системы: Учебник. - СПб.: Питер, 2005.

3. Волков Ю.С., Петров В.Н. Информационные системы. - СПб.: Питер. 2005.

4. Рудаков А. В. Технология разработки программных продуктов: Учеб. пособие. – М.: Издательский центр «Академия», 2005.

5. Стандартная документация Delphi.


Приложение

Основной модуль приложения

 

program Project1;

uses

 Forms,

 Unit1 in 'Unit1.pas' {Form1},

 Unit2 in 'Unit2.pas' {DataModule2: TDataModule},

 Unit3 in 'Unit3.pas' {Form3},

 Unit4 in 'Unit4.pas' {Form4},

 Unit5 in 'Unit5.pas' {Form5};

{$R *.res}

begin

 Application.Initialize;

 Application.Title := 'Àíêåòíûå äàííûå';

 Application.CreateForm(TForm1, Form1);

 Application.CreateForm(TForm4, Form4);

 Application.CreateForm(TDataModule2, DataModule2);

 Application.CreateForm(TForm3, Form3);

 Application.CreateForm(TForm5, Form5);

 Application.Run;

end.

 

Модуль хранения невизуальных компонентов

 

unit Unit2;

interface

uses

 SysUtils, Classes, IBDatabase, DB;

type

 TDataModule2 = class(TDataModule)

IBDatabase1: TIBDatabase;

IBTransaction1: TIBTransaction;

 private

{ Private declarations }

 public

{ Public declarations }

 end;

var

 DataModule2: TDataModule2;

implementation

{$R *.dfm}

end.

 

Модуль основной формы

 

unit Unit1;

interface

uses

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

 Dialogs, DB, Grids, DBGrids, IBCustomDataSet, IBTable, ExtCtrls,

 StdCtrls, Mask, DBCtrls, XPMan, Menus, IBQuery, ComCtrls, ExtDlgs;

 

type

 TForm1 = class(TForm)

DataSource1: TDataSource;

Panel1: TPanel;

Panel2: TPanel;

DBGrid1: TDBGrid;

XPManifest1: TXPManifest;

OpenDialog1: TOpenDialog;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

GroupBox4: TGroupBox;

Label19: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Edit18: TEdit;

Edit20: TEdit;

Edit21: TEdit;

Edit22: TEdit;

GroupBox5: TGroupBox;

Label24: TLabel;

Label25: TLabel;

Edit23: TEdit;

Edit24: TEdit;

GroupBox2: TGroupBox;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Edit8: TEdit;

Edit9: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;

Edit15: TEdit;

Edit14: TEdit;

GroupBox3: TGroupBox;

Label17: TLabel;

Label18: TLabel;

Label20: TLabel;

Edit16: TEdit;

Edit17: TEdit;

Edit19: TEdit;

GroupBox6: TGroupBox;

Label28: TLabel;

Label29: TLabel;

Edit27: TEdit;

Edit28: TEdit;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label26: TLabel;

Label27: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit5: TEdit;

Edit4: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit25: TEdit;

Edit26: TEdit;

Button1: TButton;

Button3: TButton;

TabSheet3: TTabSheet;

IBQuery1NOM: TSmallintField;

IBQuery1FAM: TIBStringField;

IBQuery1NAME: TIBStringField;

IBQuery1OTCH: TIBStringField;

IBQuery1POL: TIBStringField;

IBQuery1ROST: TIBStringField;

IBQuery1VES: TIBStringField;

IBQuery1FOTO: TBlobField;

IBQuery1DR: TDateField;

IBQuery1ADR_STR: TIBStringField;

IBQuery1ADR_OBL: TIBStringField;

IBQuery1ADR_GOR: TIBStringField;

IBQuery1ADR_YL: TIBStringField;

IBQuery1ADR_DOM: TIBStringField;

IBQuery1ADR_KV: TIBStringField;

IBQuery1ADR_IND: TIBStringField;

IBQuery1ADR_TEL: TIBStringField;

IBQuery1MROZ_STR: TIBStringField;

IBQuery1MROZ_OBL: TIBStringField;

IBQuery1MROZ_GOR: TIBStringField;

IBQuery1GRAZDAN: TIBStringField;

IBQuery1OBRAZOV: TIBStringField;

IBQuery1NOM_STRAX_SVED: TIBStringField;

IBQuery1INN: TIBStringField;

IBQuery1TRYD_KN_SERIYA: TIBStringField;

IBQuery1TRYD_KN_NOMER: TIBStringField;

IBQuery1PASPOST_NOM: TIBStringField;

IBQuery1PASPOST_SER: TIBStringField;

IBQuery1PASPOST_VIDAN: TIBStringField;

IBQuery1PASPOST_DATA: TDateField;

GroupBox8: TGroupBox;

Label30: TLabel;

Label31: TLabel;

Label32: TLabel;

Label33: TLabel;

Label34: TLabel;

Label35: TLabel;

Label36: TLabel;

Label37: TLabel;

Label38: TLabel;

Label39: TLabel;

GroupBox9: TGroupBox;

Label40: TLabel;

Label41: TLabel;

GroupBox10: TGroupBox;

Label42: TLabel;

Label43: TLabel;

Label44: TLabel;

GroupBox11: TGroupBox;

Label45: TLabel;

Label46: TLabel;

Label47: TLabel;

Label48: TLabel;

Label49: TLabel;

Label50: TLabel;

Label51: TLabel;

Label52: TLabel;

GroupBox12: TGroupBox;

Label53: TLabel;

Label54: TLabel;

Label55: TLabel;

Label56: TLabel;

GroupBox13: TGroupBox;

Label57: TLabel;

Label58: TLabel;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBEdit5: TDBEdit;

DBEdit6: TDBEdit;

DBEdit7: TDBEdit;

DBEdit8: TDBEdit;

DBEdit9: TDBEdit;

DBEdit10: TDBEdit;

DBEdit11: TDBEdit;

DBEdit12: TDBEdit;

DBEdit13: TDBEdit;

DBEdit14: TDBEdit;

DBEdit15: TDBEdit;

DBEdit16: TDBEdit;

DBEdit17: TDBEdit;

DBEdit18: TDBEdit;

DBEdit19: TDBEdit;

DBEdit20: TDBEdit;

DBEdit21: TDBEdit;

DBEdit22: TDBEdit;

DBEdit23: TDBEdit;

DBEdit24: TDBEdit;

DBEdit25: TDBEdit;

DBEdit26: TDBEdit;

DBEdit27: TDBEdit;

DBEdit28: TDBEdit;

GroupBox7: TGroupBox;

ComboBox1: TComboBox;

Edit500: TEdit;

Button2: TButton;

DBNavigator3: TDBNavigator;

IBQueryFoto: TIBQuery;

OpenPictureDialog1: TOpenPictureDialog;

DBImage2: TDBImage;

DBImage1: TDBImage;

GroupBox14: TGroupBox;

Label59: TLabel;

Label60: TLabel;

Label61: TLabel;

Label62: TLabel;

Label63: TLabel;

Label64: TLabel;

Label65: TLabel;

Label66: TLabel;

Label67: TLabel;

Label68: TLabel;

Edit29: TEdit;

Edit30: TEdit;

Edit31: TEdit;

Edit32: TEdit;

Edit33: TEdit;

Edit34: TEdit;

Edit35: TEdit;

Edit36: TEdit;

Edit37: TEdit;

GroupBox15: TGroupBox;

Label69: TLabel;

Label70: TLabel;

Edit38: TEdit;

Edit39: TEdit;

GroupBox16: TGroupBox;

Label71: TLabel;

Label72: TLabel;

Label73: TLabel;

Edit40: TEdit;

Edit41: TEdit;

Edit42: TEdit;

GroupBox17: TGroupBox;

Label74: TLabel;

Label75: TLabel;

Label76: TLabel;

Label77: TLabel;

Label78: TLabel;

Label79: TLabel;

Label80: TLabel;

Label81: TLabel;

Edit43: TEdit;

Edit44: TEdit;

Edit45: TEdit;

Edit46: TEdit;

Edit47: TEdit;

Edit48: TEdit;

Edit49: TEdit;

Edit50: TEdit;

GroupBox18: TGroupBox;

Label82: TLabel;

Label83: TLabel;

Edit51: TEdit;

Edit52: TEdit;

GroupBox19: TGroupBox;

Label84: TLabel;

Label85: TLabel;

Label86: TLabel;

Label87: TLabel;

Edit53: TEdit;

Edit54: TEdit;

Edit55: TEdit;

Edit56: TEdit;

Button4: TButton;

IBQuery3: TIBQuery;

DBImage3: TDBImage;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

Button5: TButton;

N12: TMenuItem;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

IBQuery4: TIBQuery;

N18: TMenuItem;

procedure FormDestroy(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

  procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure IBQuery1AfterScroll(DataSet: TDataSet);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N18Click(Sender: TObject);

 private

{ Private declarations }

 public

{ Public declarations }

 end;

 

var

 Form1: TForm1;

 

implementation

 

uses Unit2, Unit3, Unit4, Unit5;

 

{$R *.dfm}

 

procedure TForm1.FormDestroy(Sender: TObject);

begin

IBQuery1.Close;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenPictureDialog1.Execute Then

 begin

DBImage2.Picture.LoadFromFile(OpenPictureDialog1.FileName);

IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);

IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value;

Try

IBQueryFoto.ExecSQL;

Except

DataModule2.IBTransaction1.RollbackRetaining;

ShowMessage('Ошибка установки фотографии');

Exit;

End;

 DataModule2.IBTransaction1.CommitRetaining;

 IBQuery1.Close;

 IBQuery1.Open;

 ShowMessage('Фотография установлена');

end;

end;

 

procedure TForm1.N2Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

 s : String;

begin

 case ComboBox1.ItemIndex of

  0 : S := 'Fam';

  1 : S := 'Pol';

  2 : S := 'INN';

 end;

IBQuery1.Locate(S, Edit500.Text,[loPartialKey]);

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

Form3.QuickRep1.Preview;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

IBQuery2.Params.ParamByName('Fam').Value:=Edit1.Text;

IBQuery2.Params.ParamByName('Name').Value:=Edit2.Text;

IBQuery2.Params.ParamByName('Otch').Value:=Edit3.Text;

IBQuery2.Params.ParamByName('Pol').Value:=Edit4.Text;

IBQuery2.Params.ParamByName('DR').Value:=Edit5.Text;

IBQuery2.Params.ParamByName('Ves').Value:=Edit6.Text;

IBQuery2.Params.ParamByName('Rost').Value:=Edit7.Text;

IBQuery2.Params.ParamByName('Adr_str').Value:=Edit8.Text;

IBQuery2.Params.ParamByName('Adr_obl').Value:=Edit9.Text;

IBQuery2.Params.ParamByName('Adr_gor').Value:=Edit10.Text;

IBQuery2.Params.ParamByName('Adr_yl').Value:=Edit11.Text;

IBQuery2.Params.ParamByName('Adr_dom').Value:=Edit12.Text;

IBQuery2.Params.ParamByName('Adr_kv').Value:=Edit13.Text;

IBQuery2.Params.ParamByName('Adr_ind').Value:=Edit14.Text;

IBQuery2.Params.ParamByName('Adr_tel').Value:=Edit15.Text;

IBQuery2.Params.ParamByName('Mroz_str').Value:=Edit16.Text;

IBQuery2.Params.ParamByName('Mroz_obl').Value:=Edit17.Text;

IBQuery2.Params.ParamByName('Paspost_nom').Value:=Edit18.Text;

IBQuery2.Params.ParamByName('Mroz_gor').Value:=Edit19.Text;

IBQuery2.Params.ParamByName('Paspost_ser').Value:=Edit20.Text;

IBQuery2.Params.ParamByName('Paspost_vidan').Value:=Edit21.Text;

IBQuery2.Params.ParamByName('Paspost_data').Value:=Edit22.Text;

IBQuery2.Params.ParamByName('Tryd_kn_seriya').Value:=Edit23.Text;

IBQuery2.Params.ParamByName('Tryd_kn_nomer').Value:=Edit24.Text;

IBQuery2.Params.ParamByName('Obrazov').Value:=Edit25.Text;

IBQuery2.Params.ParamByName('Grazdan').Value:=Edit26.Text;

IBQuery2.Params.ParamByName('Nom_strax_sved').Value:=Edit27.Text;

IBQuery2.Params.ParamByName('INN').Value:=Edit28.Text;

try

IBQuery2.ExecSQL;

Except

DataModule2.IBTransaction1.RollbackRetaining;

ShowMessage('Невозможно передать запись');

Exit;

end;

DataModule2.IBTransaction1.CommitRetaining;

ShowMessage('Запись добавлена');

IBQuery1.Close;

IBQuery1.Open;

end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

if MessageDlg('Обновить анкетные данные?', mtConfirmation, [mbYes, mbNo],0)=mrYes then

begin

IBQuery4.Params.ParamByName('Nom').Value:=IBQuery1NOM.Value;

IBQuery4.Params.ParamByName('Fam').Value:=Edit29.Text;

IBQuery4.Params.ParamByName('Name').Value:=Edit30.Text;

IBQuery4.Params.ParamByName('Otch').Value:=Edit31.Text;

IBQuery4.Params.ParamByName('Pol').Value:=Edit33.Text;

IBQuery4.Params.ParamByName('DR').Value:=Edit32.Text;

IBQuery4.Params.ParamByName('Ves').Value:=Edit34.Text;

IBQuery4.Params.ParamByName('Rost').Value:=Edit35.Text;

IBQuery4.Params.ParamByName('Adr_str').Value:=Edit43.Text;

IBQuery4.Params.ParamByName('Adr_obl').Value:=Edit44.Text;

IBQuery4.Params.ParamByName('Adr_gor').Value:=Edit45.Text;

IBQuery4.Params.ParamByName('Adr_yl').Value:=Edit46.Text;

IBQuery4.Params.ParamByName('Adr_dom').Value:=Edit47.Text;

IBQuery4.Params.ParamByName('Adr_kv').Value:=Edit48.Text;

IBQuery4.Params.ParamByName('Adr_ind').Value:=Edit50.Text;

IBQuery4.Params.ParamByName('Adr_tel').Value:=Edit49.Text;

IBQuery4.Params.ParamByName('Mroz_str').Value:=Edit40.Text;

IBQuery4.Params.ParamByName('Mroz_obl').Value:=Edit41.Text;

IBQuery4.Params.ParamByName('Paspost_nom').Value:=Edit53.Text;

IBQuery4.Params.ParamByName('Mroz_gor').Value:=Edit42.Text;

IBQuery4.Params.ParamByName('Paspost_ser').Value:=Edit54.Text;

IBQuery4.Params.ParamByName('Paspost_vidan').Value:=Edit55.Text;

IBQuery4.Params.ParamByName('Paspost_data').Value:=Edit56.Text;

IBQuery4.Params.ParamByName('Tryd_kn_seriya').Value:=Edit51.Text;

IBQuery4.Params.ParamByName('Tryd_kn_nomer').Value:=Edit52.Text;

IBQuery4.Params.ParamByName('Obrazov').Value:=Edit36.Text;

IBQuery4.Params.ParamByName('Grazdan').Value:=Edit37.Text;

IBQuery4.Params.ParamByName('Nom_strax_sved').Value:=Edit38.Text;

IBQuery4.Params.ParamByName('INN').Value:=Edit39.Text;

try

IBQuery4.ExecSQL;

Except

DataModule2.IBTransaction1.RollbackRetaining;

ShowMessage('Запись не добавлена');

exit;

end;

DataModule2.IBTransaction1.CommitRetaining;

ShowMessage('Запись обновлена');

IBQuery1.Close;

IBQuery1.Open;

end;

end;

 

procedure TForm1.IBQuery1AfterScroll(DataSet: TDataSet);

begin

 if IBQuery1.FieldValues['Fam']<> null then

 Edit29.Text:=IBQuery1.FieldValues['Fam'];

 

 if IBQuery1.FieldValues['Name']<> null then

 Edit30.Text:=IBQuery1.FieldValues['Name'];

 

 if IBQuery1.FieldValues['Otch']<> null then

 Edit31.Text:=IBQuery1.FieldValues['Otch'];

 

 if IBQuery1.FieldValues['Pol']<> null then

 Edit33.Text:=IBQuery1.FieldValues['Pol'];

 

 if IBQuery1.FieldValues['DR']<> null then

 Edit32.Text:=IBQuery1.FieldValues['DR'];

 

 if IBQuery1.FieldValues['Ves']<> null then

 Edit34.Text:=IBQuery1.FieldValues['Ves'];

 

 if IBQuery1.FieldValues['Rost']<> null then

 Edit35.Text:=IBQuery1.FieldValues['Rost'];

 

 if IBQuery1.FieldValues['Adr_str']<> null then

 Edit43.Text:=IBQuery1.FieldValues['Adr_str'];

 

 if IBQuery1.FieldValues['Adr_obl']<> null then

 Edit44.Text:=IBQuery1.FieldValues['Adr_obl'];

 

 if IBQuery1.FieldValues['Adr_gor']<> null then

 Edit45.Text:=IBQuery1.FieldValues['Adr_gor'];

 

 if IBQuery1.FieldValues['Adr_yl']<> null then

 Edit46.Text:=IBQuery1.FieldValues['Adr_yl'];

 

 if IBQuery1.FieldValues['Adr_dom']<> null then

 Edit47.Text:=IBQuery1.FieldValues['Adr_dom'];

 

 if IBQuery1.FieldValues['Adr_kv']<> null then

 Edit48.Text:=IBQuery1.FieldValues['Adr_kv'];

 

 if IBQuery1.FieldValues['Adr_ind']<> null then

 Edit50.Text:=IBQuery1.FieldValues['Adr_ind'];

 

 if IBQuery1.FieldValues['Adr_tel']<> null then

 Edit49.Text:=IBQuery1.FieldValues['Adr_tel'];

 

 if IBQuery1.FieldValues['Mroz_str']<> null then

 Edit40.Text:=IBQuery1.FieldValues['Mroz_str'];

 

 if IBQuery1.FieldValues['Mroz_obl']<> null then

 Edit41.Text:=IBQuery1.FieldValues['Mroz_obl'];

 

 if IBQuery1.FieldValues['Paspost_nom']<> null then

 Edit53.Text:=IBQuery1.FieldValues['Paspost_nom'];

 

 if IBQuery1.FieldValues['Mroz_gor']<> null then

 Edit42.Text:=IBQuery1.FieldValues['Mroz_gor'];

 

 if IBQuery1.FieldValues['Paspost_ser']<> null then

 Edit54.Text:=IBQuery1.FieldValues['Paspost_ser'];

 

 if IBQuery1.FieldValues['Paspost_vidan']<> null then

 Edit55.Text:=IBQuery1.FieldValues['Paspost_vidan'];

 

 if IBQuery1.FieldValues['Paspost_data']<> null then

 Edit56.Text:=IBQuery1.FieldValues['Paspost_data'];

 

 if IBQuery1.FieldValues['Tryd_kn_seriya']<> null then

 Edit51.Text:=IBQuery1.FieldValues['Tryd_kn_seriya'];

 

 if IBQuery1.FieldValues['Tryd_kn_nomer']<> null then

 Edit52.Text:=IBQuery1.FieldValues['Tryd_kn_nomer'];

 

  if IBQuery1.FieldValues['Obrazov']<> null then

 Edit36.Text:=IBQuery1.FieldValues['Obrazov'];

 

  if IBQuery1.FieldValues['Grazdan']<> null then

 Edit37.Text:=IBQuery1.FieldValues['Grazdan'];

 

  if IBQuery1.FieldValues['Nom_strax_sved']<> null then

 Edit38.Text:=IBQuery1.FieldValues['Nom_strax_sved'];

 

  if IBQuery1.FieldValues['INN']<> null then

 Edit39.Text:=IBQuery1.FieldValues['INN'];

end;

 

procedure TForm1.N5Click(Sender: TObject);

begin

Form4.Notebook1.PageIndex := 0;

Form4.GroupBox1.Caption := ' По фамилии: ';

Form4.ShowModal;

end;

 

procedure TForm1.N6Click(Sender: TObject);

begin

Form4.Notebook1.PageIndex := 1;

Form4.GroupBox1.Caption := ' По полу: ';

Form4.ShowModal;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

Form4.Notebook1.PageIndex := 2;

Form4.GroupBox1.Caption := ' По дате рождения: ';

Form4.ShowModal;

end;

 

procedure TForm1.N9Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('select * from anketa order by fam');

IBQuery1.Open;

end;

 

procedure TForm1.N10Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('select * from anketa order by dr');

IBQuery1.Open;

end;

 

procedure TForm1.N11Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('select * from anketa order by rost');

IBQuery1.Open;

end;

 

procedure TForm1.Button5Click(Sender: TObject);

begin

if OpenPictureDialog1.Execute Then

 begin

DBImage3.Picture.LoadFromFile(OpenPictureDialog1.FileName);

IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);

IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value;

Try

IBQueryFoto.ExecSQL;

Except

DataModule2.IBTransaction1.RollbackRetaining;

ShowMessage('Ошибка установки фотографии');

Exit;

End;

 DataModule2.IBTransaction1.CommitRetaining;

 IBQuery1.Close;

 IBQuery1.Open;

 ShowMessage('Фотография установлена');

end;

end;

 

 

procedure TForm1.N13Click(Sender: TObject);

begin

 PageControl1.ActivePageIndex := 1;

end;

 

procedure TForm1.N14Click(Sender: TObject);

begin

 PageControl1.ActivePageIndex := 2;

end;

 

procedure TForm1.N15Click(Sender: TObject);

begin

if MessageBox(Handle,'Вы действительно хотите удалить запись?','Подтверждение удаления', MB_YESNO or MB_ICONWARNING)=mrYes then

 begin

 IBQuery3.ParamByName('NOM').Value := IBQuery1.FieldByName('NOM').Value;

 Try

IBQuery3.ExecSQL;

 Except

DataModule2.IBTransaction1.RollbackRetaining;

MessageBox(Handle,'Невозможно удалить запись.','Ошибка удаления записи', MB_OK or MB_ICONERROR);

Exit;

 End;

 DataModule2.IBTransaction1.CommitRetaining;

 IBQuery1.Close;

 IBQuery1.Open;

 MessageBox(Handle,'Запись удалина.','Событие', MB_OK or MB_ICONINFORMATION);

 end;

end;

 

procedure TForm1.FormActivate(Sender: TObject);

begin

IBQuery1.Open;

end;

 

procedure TForm1.N16Click(Sender: TObject);

begin

Form5.ShowModal;

end;

 

procedure TForm1.N18Click(Sender: TObject);

begin

IBQuery1.Close;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Add('SELECT * FROM ANKETA');

IBQuery1.Open;

end;

 

end.

 

Модуль формы с фильтрацией

 

unit Unit4;

 

interface

 

uses

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

 Dialogs, StdCtrls, ExtCtrls;

 

type

 TForm4 = class(TForm)

GroupBox1: TGroupBox;

Notebook1: TNotebook;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Button4: TButton;

Button5: TButton;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Edit3: TEdit;

Button6: TButton;

Button7: TButton;

Button8: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

 private

{ Private declarations }

 public

{ Public declarations }

 end;

 

var

 Form4: TForm4;

 

implementation

 

uses Unit1, Unit2, Unit3;

 

{$R *.dfm}

 

procedure TForm4.Button1Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE Fam='+#39+Edit1.text+#39'');

Form1.IBQuery1.Open;

end;

 

procedure TForm4.Button2Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');

Form1.IBQuery1.Open;

end;

 

procedure TForm4.Button3Click(Sender: TObject);

begin

Edit1.Text:='';

end;

 

procedure TForm4.Button5Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');

Form1.IBQuery1.Open;

end;

 

procedure TForm4.Button4Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

if RadioButton1.Checked=true then

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE POL='+#39+'М'+#39);

if RadioButton2.Checked=true then

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE POL='+#39+'Ж'+#39);

Form1.IBQuery1.Open;

end;

 

procedure TForm4.Button6Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE(DR>='+#39+Edit2.text+#39+') and (DR<='+#39+Edit3.text+#39+') ');

Form1.IBQuery1.Open;

end;

 

procedure TForm4.Button8Click(Sender: TObject);

begin

Edit2.Text:='';

Edit3.Text:='';

end;

 

procedure TForm4.Button7Click(Sender: TObject);

begin

Form1.IBQuery1.Close;

form1.IBQuery1.SQL.Clear;

Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');

Form1.IBQuery1.Open;

end;

 

end.


Теоретический раздел

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

 

Основной задачей данного курсового проекта является разработка базы данных и соответствующего приложения для автоматизации ведения кадрового учёта некоторого предприятия. Конечная цель этой задачи формирование таблицы анкетных данных. В программе используется много информации, и ее нужно где то хранить. Поэтому мы будем использовать базу данных. Очевидно, что первой задачей и является разработка базы данных для хранения всей необходимой информации. В зависимости от расположения программы, использующей данные, и самих данных, а также способа разделения данных между несколькими пользователями различают локальные (Paradox, dBase, FoxPro и Access) и удаленные (Interbase Sybase, Oracle и т.д.) базы данных. В данном случае мы будем создавать удалённую базу данных. Данные удалённой базы данных (файлы данных) находятся на одном удалённом устройстве, в качестве которого может выступать диск компьютера.

База данных — это набор файлов (таблиц), в которых находится информация. Как правило, база данных состоит из нескольких таблиц, которые размещают в одном каталоге. Каталог для новой базы данных создается обычным образом, например, при помощи Проводника. Таблицу мы будем создавать, воспользовавшись утилитой IBConsole. Сначала при помощи этой утилиты мы создадим сами таблицы, а затем еще генераторы и триггеры. Генератор – это специальная функция InterBase, с помощью которой создается счетчик для поля базы данных. А триггер нужен для того, чтобы привязать генератор к нужной таблице и к нужному полю.

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

· создание каталога;

· создание таблиц;

· создание генераторов;

· создание триггеров.

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

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

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

· разработка структуры таблиц базы данных;

· создание таблиц;

· создание генераторов и триггеров;

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

· разработка графического интерфейса пользователя клиентских приложений;

· обеспечить работоспособность программного продукта на любом компьютере.

Описание входной информации

В данной программе в качестве входной информации выступают данные в таблицу: Анкета. В этой таблице хранится фамилия, имя, отчество, пол, рост, вес, фото, дата рождения, адрес(страна), адрес(область), адрес(город), адрес(улица), адрес(квартира), адрес(индекс), адрес(телефон), место рождения(страна), место рождения(область), место рождения(город), гражданство, образование, номер страхового свидетельства, ИНН, серия трудовой книжки, номер трудовой книжки, номер паспорта, серия паспорта, выдан паспорт, дата выдачи паспорта.

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

· TRadioButton – визуальный компонент, позволяющий зафиксировать одно значение, из нескольких, принадлежащих к одной группе.

· TEdit – однострочный текстовый редактор, при помощи которого вводится нужная информация, например пароль и имя преподавателя.

· TDBEdit – компонент, имеющий такие же свойства как и TEdit, но с дополнительной возможностью связи с каким либо полем таблицы базы данных;

· TComboBox – визуальный компонент, позволяет выбрать одно значение из списка.

Описание выходной информации

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


Пример отчета

 


Дата: 2019-05-28, просмотров: 163.