
- •Оглавление
- •Глава 1. Общая часть. 4
- •Введение.
- •Глава 1. Общая часть.
- •1.1 Сущность поставленной задачи.
- •2. Разработка программного обеспечения.
- •2.1 Технологический процесс машинной реализации задачи.
- •2.2 Алгоритм задачи его описание.
- •2.3 Описание переменных, процедур и функций.
- •2.4 Программы и их описания.
- •2.4.1 Меню.
- •2.4.2 Алгоритмы и тексты форм ввода.
- •2.4.3 Описание и алгоритмы формирования выходных документов
- •2.5 Результаты работы программы
- •2.6 Инструкция пользователю
- •3.Заключение
- •Приложение 2- Эскизный проект
- •Приложение 3- sadt и dfd модели
- •Приложение 4- Тексты программ
Приложение 2- Эскизный проект
Ведомость эскизного проекта
Документы по разработанному продукту:
Техническое задание на создание информационной системы СуБД «Кадровое агенство».
Пояснительная записка к эскизному проекту.
Общие положения:
Данный документ является эскизным проектом на создание Системы Управления Базой Данных для ВУЗа (СуБД «кадровое агенство»).
Основные технические решения:
Решения по структуре системы СуБД «Кадровое агенство» будет представлять собой персональную систему управления локальной базой данных, работающей на одном компьютере.
Система будет управлять реляционной базой данных,
представляющей собой набор связанных между собой таблиц в
формате FoxPro (Visual *.DBF), доступ к которым осуществляется с помощью ключей или/и индексов. Сведения в одной таблице могут отражать
сведения из другой, и при изменении сведений в первой таблице
эти изменения немедленно отображаются во второй.
Таким образом будет достигнута непротиворечивость данных. Таблицы распределены на типы «Справочники» и «Динамические данные».
Общая структура базы данных:
Хранение информации о работниках и вакансиях осуществляется с сохранением целостности данных при изменении или удалении записей таблицы.
Указанные решения должны удовлетворять требованиям,
приведенным в техническом задании на разработку системы.
Состав функций комплексов задач, реализуемых системой:
Автоматизированная система должна выполнять следующие
функции:
• Обеспечивать целостное хранение данных в базе;
•Выводить корректные данные в случае поиска;
• Формировать необходимые отчеты;
Решения по составу программных средств, языкам деятельности, алгоритмам процедур и операций и методам их реализации.
Для реализации АС будет использоваться среда
программирования Lazarus и язык программирования FreePascal.
Источники разработки:
Данный документ разрабатывался на основании ГОСТ
34.698—90 на написание ТЗ на автоматизированные системы
управления от 01.01.1992 г.
Приложение 3- sadt и dfd модели
SADT модель
Рисунок 19- SADT модель
DFD модель
Рисунок 20- DFD модель
Приложение 4- Тексты программ
Form1 (Редактор таблиц)
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, DB, dbf, FileUtil, Forms, Controls, Graphics, Dialogs,
Menus, DBGrids, StdCtrls, DbCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
list_t: TComboBox;
d: TDatasource;
t: TDbf;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure list_tChange(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure MenuItem4Click(Sender: TObject);
procedure MenuItem6Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses Unit2;
{ TForm1 }
procedure t_close();
begin
if (Form1.t.State = dsEdit) then Form1.t.Post;
Form1.t.Close;
end;
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
t_close();
t.TableName:=list_t.Text;
t.Open;
end;
procedure TForm1.MenuItem3Click(Sender: TObject);
begin
t_close();
end;
procedure TForm1.MenuItem4Click(Sender: TObject);
begin
t.TableName := 'rab.dbf';
t.FieldDefs.Add('id_r', ftString, 10);
t.FieldDefs.Add('fio', ftString, 250);
t.FieldDefs.Add('tel', ftString, 10);
t.FieldDefs.Add('kod_c', ftString, 10);
t.CreateTable;
t.FieldDefs.Clear;
t.TableName := 'cpec.dbf';
t.FieldDefs.Add('kod_c', ftString, 10);
t.FieldDefs.Add('naim', ftString, 250);
t.FieldDefs.Add('oklad', ftInteger);
t.CreateTable;
t.FieldDefs.Clear;
t.TableName := 'd_rabot.dbf';
t.FieldDefs.Add('id_ra', ftString, 10);
t.FieldDefs.Add('naimen', ftString, 250);
t.FieldDefs.Add('adres', ftString, 250);
t.FieldDefs.Add('tel', ftString, 10);
t.FieldDefs.Add('kod_c', ftString, 30);
t.CreateTable;
t.FieldDefs.Clear;
end;
procedure TForm1.MenuItem6Click(Sender: TObject);
begin
form2.ShowModal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.FormShow(Sender: TObject);
begin
end;
procedure TForm1.list_tChange(Sender: TObject);
begin
t_close();
t.TableName:=list_t.Text;
t.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
t_close();
form1.close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
t.Delete;
end;
end.
Form2 (Анкета)
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, dbf, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DbCtrls, StdCtrls, Calendar;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
now_kod: TDBEdit;
kod_c: TDBEdit;
DBText1: TDBText;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
dd: TDatasource;
kod_sotr: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
tt: TDbf;
d: TDatasource;
t: TDbf;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure kod_cChange(Sender: TObject);
procedure kod_sotrChange(Sender: TObject);
procedure now_kodChange(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Label1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.lfm}
{ TForm2 }
procedure TForm2.FormCreate(Sender: TObject);
begin
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
tt.Prior;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
tt.next;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
t.append;
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
t.delete;
t.close;
tt.close;
Form2.close;
end;
procedure TForm2.kod_cChange(Sender: TObject);
begin
end;
procedure TForm2.kod_sotrChange(Sender: TObject);
begin
end;
procedure TForm2.now_kodChange(Sender: TObject);
begin
kod_c.text:=now_kod.text;
end;
procedure TForm2.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
if(t.State=dsEdit) then
t.post;
t.close;
tt.close;
end;
procedure TForm2.FormShow(Sender: TObject);
var x:string;
begin
t.open;
tt.open;
t.First;
while not(t.EOF) do begin
if (kod_sotr.Text <> '') then
x := IntToStr(StrToInt(kod_sotr.Text)+1);
t.Next;
end;
//ShowMessage(x);
t.Append;
t.Edit;
kod_sotr.Text:=x;
end;
procedure TForm2.Label1Click(Sender: TObject);
begin
end;
end.
Form3 (Меню)
unit Unit3;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, dbf, db, FileUtil, Forms, Controls, Graphics, Dialogs,
Menus, DBGrids, StdCtrls;
type
{ TForm3 }
TForm3 = class(TForm)
Button1: TButton;
temp: TDatasource;
temp1: TDbf;
rab: TDatasource;
rabi: TDatasource;
cpec: TDatasource;
rab1: TDbf;
rabi1: TDbf;
cpec1: TDbf;
DBGrid1: TDBGrid;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure MenuItem4Click(Sender: TObject);
procedure MenuItem5Click(Sender: TObject);
procedure MenuItem6Click(Sender: TObject);
procedure MenuItem7Click(Sender: TObject);
procedure MenuItem8Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.lfm}
uses unit1, unit2, unit4, unit5, unit6, Unit7;
{ TForm3 }
procedure TForm3.MenuItem1Click(Sender: TObject);
begin
end;
procedure TForm3.FormShow(Sender: TObject);
begin
rab1.Open;
cpec1.Open;
rabi1.open;
temp1.TableName := 'temp.dbf';
temp1.FieldDefs.Add('fio', ftString, 250);
temp1.FieldDefs.Add('tel', ftString, 10);
temp1.FieldDefs.Add('s', ftString, 10);
temp1.FieldDefs.Add('naimen', ftString, 250);
temp1.FieldDefs.Add('adres', ftString, 250);
temp1.FieldDefs.Add('tel1', ftString, 10);
temp1.FieldDefs.Add('naim', ftString, 250);
temp1.CreateTable;
temp1.FieldDefs.Clear;
temp1.Open;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
end;
procedure TForm3.MenuItem2Click(Sender: TObject);
begin
form2.ShowModal;
end;
procedure TForm3.MenuItem3Click(Sender: TObject);
begin
form4.ShowModal;
end;
procedure TForm3.MenuItem4Click(Sender: TObject);
begin
form5.ShowModal;
end;
procedure TForm3.MenuItem5Click(Sender: TObject);
begin
form7.ShowModal;
end;
procedure TForm3.MenuItem6Click(Sender: TObject);
begin
form6.ShowModal;
end;
procedure TForm3.MenuItem7Click(Sender: TObject);
begin
form1.showmodal;
end;
procedure TForm3.MenuItem8Click(Sender: TObject);
var x,c,v,b,n,m,z:string;
begin
dbgrid1.Visible:=true;
button1.Visible:=true;
cpec1.First;
rab1.First;
rabi1.First;
while not(rab1.eof) do
begin
while not(rabi1.eof) do
begin
if((rab1.FieldByName('kod_c').AsString=rabi1.FieldByName('kod_c').AsString))
then
begin
x:= rab1.FieldByName('fio').AsString;
c:= rab1.FieldByName('tel').AsString;
v:= '-->';
b:= rabi1.FieldByName('naimen').AsString;
n:= rabi1.FieldByName('adres').AsString;
m:= rabi1.FieldByName('tel').AsString;
z:= cpec1.FieldByName('naim').AsString;
temp1.Append;
temp1.FieldByName('fio').AsString:=x;
temp1.FieldByName('tel').AsString:=c;
temp1.FieldByName('s').AsString:=v;
temp1.FieldByName('naimen').AsString:=b;
temp1.FieldByName('adres').AsString:=n;
temp1.FieldByName('tel1').AsString:=m;
temp1.FieldByName('naim').AsString:=z;
end ;
rabi1.next;
end;
rab1.next;
end;
cpec1.close;
rab1.close;
rabi1.close;
end;
end.
Form4 (Ввод специальности)
unit Unit4;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, dbf, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DbCtrls, StdCtrls;
type
{ TForm4 }
TForm4 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
d: TDatasource;
kod_c: TDBEdit;
naim: TDBEdit;
oklad: TDBEdit;
t: TDbf;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure naimChange(Sender: TObject);
procedure okladChange(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.lfm}
{ TForm4 }
procedure TForm4.FormShow(Sender: TObject);
var x:string;
begin
t.open;
//d2.open;
t.First;
while not(t.EOF) do begin
if (kod_c.Text <> '') then
x := IntToStr(StrToInt(kod_c.Text)+1);
t.Next;
end;
//ShowMessage(x);
t.Append;
t.Edit;
kod_c.Text:=x;
end;
procedure TForm4.naimChange(Sender: TObject);
begin
end;
procedure TForm4.okladChange(Sender: TObject);
begin
// oklad:=StrToInt(oklad.text);
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
t.append;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
t.delete;
t.close;
Form4.close;
end;
end.
Form5 (Ввод вакансии)
unit Unit5;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, dbf, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DbCtrls, StdCtrls;
type
{ TForm5 }
TForm5 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
dd: TDatasource;
DBEdit5: TDBEdit;
tt: TDbf;
DBText1: TDBText;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
d: TDatasource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
t: TDbf;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure DBText1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.lfm}
{ TForm5 }
procedure TForm5.FormCreate(Sender: TObject);
begin
end;
procedure TForm5.FormShow(Sender: TObject);
begin
t.Open;
tt.Open;
end;
procedure TForm5.Button1Click(Sender: TObject);
begin
t.Append;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
t.delete;
t.close;
Form5.close;
end;
procedure TForm5.Button3Click(Sender: TObject);
begin
tt.Prior;
end;
procedure TForm5.Button4Click(Sender: TObject);
begin
tt.next;
end;
procedure TForm5.DBText1Click(Sender: TObject);
begin
end;
end.
Form6 (Запрос работника)
unit Unit6;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, dbf, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DbCtrls, StdCtrls, DBGrids;
type
{ TForm6 }
TForm6 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
dd: TDatasource;
fio: TDBEdit;
Label2: TLabel;
Label3: TLabel;
code: TMemo;
SaveDialog1: TSaveDialog;
tel: TDBEdit;
naim: TDBEdit;
DBGrid1: TDBGrid;
temp1: TDatasource;
temp: TDbf;
DBText1: TDBText;
d: TDatasource;
Label1: TLabel;
now_k: TDBEdit;
t: TDbf;
tt: TDbf;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure DBText1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Label1Click(Sender: TObject);
procedure now_kChange(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.lfm}
{ TForm6 }
procedure TForm6.Button1Click(Sender: TObject);
begin
t.Prior;
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
t.next;
end;
procedure TForm6.Button3Click(Sender: TObject);
var x,y,z,w: string;
begin
//while not(tt.eof) do begin
//if(now_k.Text = t.FieldByName('kod_c').AsString) then
//begin
//temp.Append; temp.Edit;
//fio.text:=tt.FieldByName('fio').AsString;
//tel.text:=tt.FieldByName('tel').AsString;
//naim.text:=t.FieldByName('naim').AsString;
//end;
//tt.Next;
// end;
x:=now_k.text;
tt.First;
temp.open;
temp.First;
while not(tt.eof) do begin
if(x=tt.FieldByName('kod_c').AsString) then begin
z:= tt.FieldByName('fio').AsString;
y:= t.FieldByName('naim').AsString;
w:= tt.FieldByName('tel').AsString;
Label2.caption:=z;
Label3.caption:=y;
//tt.FieldDefs.;
temp.Append;
temp.FieldByName('fio').AsString:=z;
temp.FieldByName('tel').AsString:=w;
temp.FieldByName('naim').AsString:=y;
end;
tt.Next;
end;
Button5.Visible:=true;
end;
procedure TForm6.Button4Click(Sender: TObject);
begin
tt.close;
t.close;
Form6.close;
temp.close;
end;
procedure TForm6.Button5Click(Sender: TObject);
var s:string;
begin
Button6.Visible:=true;
code.Visible:=true ;
if(savedialog1.Execute) then begin
temp.First;
code.Lines.Add( ' Список работников ');
code.Lines.Add( ' ФИО '+' Телефон '+' Специальность ' );
while not(temp.EOF) do begin
code.Lines.Add(
temp.FieldByName('fio').AsString+' '+
temp.FieldByName('tel').AsString+' '+
temp.FieldByName('naim').AsString+' '
);
temp.Next;
end;
code.Lines.SaveToFile(UTF8ToSys(SaveDialog1.FileName+'.txt'));
end;
end;
procedure TForm6.Button6Click(Sender: TObject);
begin
code.Visible:=false ;
Button6.Visible:=false;
end;
procedure TForm6.DBText1Click(Sender: TObject);
begin
end;
procedure TForm6.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
temp.Close;
t.Close;
tt.Close;
end;
procedure TForm6.FormShow(Sender: TObject);
begin
temp.TableName := 'temp2.dbf';
temp.FieldDefs.Add('fio', ftString, 250);
temp.FieldDefs.Add('tel', ftString, 10);
temp.FieldDefs.Add('naim', ftString, 250);
temp.CreateTable;
temp.FieldDefs.Clear;
temp.Open;
t.open;
tt.open;
end;
procedure TForm6.Label1Click(Sender: TObject);
begin
end;
procedure TForm6.now_kChange(Sender: TObject);
begin
end;
end.
Form7 (Запрос вакансии)
unit Unit7;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, dbf, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DbCtrls, StdCtrls, DBGrids, ExtCtrls;
type
{ TForm7 }
TForm7 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
d: TDatasource;
temp1: TDatasource;
temp: TDbf;
dd: TDatasource;
now_k: TDBEdit;
tt: TDbf;
DBGrid1: TDBGrid;
DBText1: TDBText;
Label1: TLabel;
t: TDbf;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.lfm}
{ TForm7 }
procedure TForm7.Button1Click(Sender: TObject);
begin
t.Prior;
end;
procedure TForm7.Button2Click(Sender: TObject);
begin
t.next;
end;
procedure TForm7.Button3Click(Sender: TObject);
var x,z,y,w,u:string;
begin
x:=now_k.text;
tt.First;
temp.open;
temp.First;
while not(tt.eof) do begin
if(x=tt.FieldByName('kod_c').AsString) then begin
z:= tt.FieldByName('naimen').AsString;
w:= tt.FieldByName('tel').AsString;
u:= tt.FieldByName('adres').AsString;
y:= t.FieldByName('naim').AsString;
temp.Append;
temp.FieldByName('naimen').AsString:=z;
temp.FieldByName('tel').AsString:=w;
temp.FieldByName('adres').AsString:=u;
temp.FieldByName('naim').AsString:=y;
end;
tt.Next;
end;
end;
procedure TForm7.Button4Click(Sender: TObject);
begin
form7.close;
tt.close;
t.close;
temp.close;
end;
procedure TForm7.FormShow(Sender: TObject);
begin
temp.TableName := 'temp.dbf';
temp.FieldDefs.Add('naimen', ftString, 250);
temp.FieldDefs.Add('tel', ftString, 10);
temp.FieldDefs.Add('adres', ftString, 250);
temp.FieldDefs.Add('naim', ftString, 250);
temp.CreateTable;
temp.FieldDefs.Clear;
temp.Open;
tt.open;
t.open;
end;
end.
Исполняемый код.
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1, dbflaz, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm7, Form7);
Application.Run;
end.