Скачиваний:
9
Добавлен:
17.06.2023
Размер:
1.78 Mб
Скачать

2014.

211

с.

Режим

доступа:

http://biblioclub.ru/index.php?page=book_red&id=277476&sr=1

 

12

Ачкасов В. Ю. Программирование баз данных в Delphi

[электронный

ресурс]: М. : Интернет-Университет Информационных Технологий, 2010. 382 с.

Режим доступа: URL http://biblioclub.ru/index.php?page=book_red&id=233558&sr=1 13 Описание бизнес процессов [Электронный ресурс]: Режим доступа: URL:

http://www.bsc-consulting.ru/services/business_consulting/business_processes_definition/

14 Дарахвелидзе П. Г. Программирование в Delphi 7. Спб. : БХВ-Петербург, 2013. 784 с.

15 Проектная деятельность на уроке с использованием информационных технологий [электронный ресурс]: Проектная деятельность – Режим доступа: URL http://window.edu.ru/window/library/pdf2txt?p_id=26689

16 Нечаев Д. Ю., Чекмарев Ю. В. Надежность информационных систем

[электронный ресурс]: учебное пособие. М. : Изд. «ДМК Пресс» 2012. 64 с. Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=3030

32

ПРИЛОЖЕНИЕ А Функциональная модель по стандарту IDEF0

Рисунок А.1 – Контекстная диаграмма

Рисунок А.2 – Диаграмма IDEF0 первого уровня

33

Рисунок А.3 – Диаграмма IDEF0 второго уровня «Прием заявки»

Рисунок А.4 – Диаграмма IDEF0 второго уровня «Исполнение работы»

Рисунок А.5 – Диаграмма IDEF0 второго уровня «Обработка данных»

34

Рисунок А.6 – Диаграмма IDEF0 второго уровня «Создание отчетов»

Рисунок А.7 – Диаграмма IDEF3 третьего уровня «Смена пароля»

35

ПРИЛОЖЕНИЕ Б Описание таблиц базы данных

Таблица Б.1 – Описание свойств полей таблиц базы данных

Имя поля

Тип данных

Размер

Обязательное

Индексированной поле

 

 

 

поля

поле

 

 

 

PSWDTBL

 

 

 

 

 

 

P_Id

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

P_Login

Текстовый

50

Да

Нет

 

 

P_Pass

Текстовый

50

Нет

Нет

 

 

 

Логический

-

-

Нет

 

 

Klient

 

 

 

 

 

 

Klient

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

NazvanieFirm

Текстовый

50

Да

Да

(Совпадения

не

 

 

 

 

допускаются)

 

FIO

Текстовый

50

-

Нет

 

 

paspotr

Текстовый

50

Нет

Нет

 

 

adres

Текстовый

50

Нет

Нет

 

 

telefon

Текстовый

50

Нет

Нет

 

 

EDIT

Логический

-

Нет

Нет

 

 

nSkidka

 

 

 

 

 

 

id_sk

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

nazvanie

Текстовой

50

Нет

Да

(Совпадения

не

 

 

 

 

допускаются)

 

velichina

Числовой

Действител

Нет

Нет

 

 

 

 

ьное

 

 

 

 

EDIT

Логический

 

-

Нет

 

 

Oplata

 

 

 

 

 

 

ID_OPLATA

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

Status

Текстовый

50

Нет

Нет

 

 

SostojnieZakaza

 

 

 

 

 

 

id_CZ

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

Sostojnie

Текстовый

50

Нет

Нет

 

 

Sotrudnik

 

 

 

 

 

 

id_sotr

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

FIO

Текстовый

50

Нет

Нет

 

 

FIO

Текстовый

50

Нет

Нет

 

 

Dolgnost

Текстовый

50

Нет

Нет

 

 

Telefon

Текстовый

50

Нет

Нет

 

 

36

Продолжение таблицы Б1

Adres

Текстовый

50

Нет

Нет

 

 

Works

 

 

 

 

 

 

id_Work

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

Nazvanie

Текстовый

50

Да

Да

(Совпадения

не

 

 

 

 

допускаются)

 

 

 

 

 

 

 

 

Praice

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

Zakaz

 

 

 

 

 

 

id_zakaz

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

Nazvanie

Текстовый

50

Нет

Нет

 

 

Klient

Числовой

Длинное

Нет

Нет

 

 

 

 

целое

 

 

 

 

Sotrudnik

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

Skidka

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

DataNach

Дата/время

-

-

Нет

 

 

StatusZakaza

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

StatusOplat

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

Zakaz_Work

 

 

 

 

 

 

nomer

Счетчик

Длинное

Да

Да

(Совпадения

не

 

 

целое

 

допускаются)

 

id_zakaza

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

id_work

Числовой

Длинное

Да

Нет

 

 

 

 

целое

 

 

 

 

37

ПРИЛОЖЕНИЕ В

Листинг программы

unit DataM;

O1Query: TADOQuery;

 

O1DataSource: TDataSource;

interface

Label10: TLabel;

 

Otchet2: TLabel;

uses

DogQuery: TADOQuery;

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

DogDataSource: TDataSource;

Forms,

pQuery: TADOQuery;

Dialogs, DB, ADODB, IniFiles, StdCtrls;

pDataSource: TDataSource;

 

CheckEditQuery: TADOQuery;

type

DataSource1: TDataSource;

TDM = class(TForm)

Label11: TLabel;

ADOConnection1: TADOConnection;

Edit: TADODataSet;

SotrQuery: TADOQuery;

procedure ADOConnection1BeforeConnect(Sender: TObject);

KlientQuery: TADOQuery;

private

SkidkaQuery: TADOQuery;

{ Private declarations }

SotrDataSource: TDataSource;

public

KlientDataSource: TDataSource;

{ Public declarations }

SkidkaDataSource: TDataSource;

end;

ZakazDataSource: TDataSource;

 

ZakazQuery: TADOQuery;

var

ZWQuery: TADOQuery;

DM: TDM;

ZWDataSource: TDataSource;

 

WorkQuery: TADOQuery;

implementation

WorkDataSource: TDataSource;

Uses MainFor;

Label1: TLabel;

{$R *.dfm}

Label2: TLabel;

 

Label3: TLabel;

procedure TDM.ADOConnection1BeforeConnect(Sender: TObject);

Label4: TLabel;

var DBPath:widestring; //путь к БД

Label5: TLabel;

F :TIniFile; // файл с путем к БД

Label6: TLabel;

begin

S_zakazaQuery1: TADOQuery;

 

S_zakazaDataSource: TDataSource;

F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini')

S_oplatQuery: TADOQuery;

;

S_olaDataSource: TDataSource;

DBPath:=F.ReadString('Section_DBPath','Path','');

Label7: TLabel;

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.

Label8: TLabel;

0;Data Source='+DBPath+'db1.mdb;Persist Security Info=False';

Label9: TLabel;

end;

ZaprosQuery: TADOQuery;

end.

ZaprosDataSource1: TDataSource;

 

unit Klient;

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

 

procedure DBNavigator1BeforeAction(Sender: TObject;

interface

Button: TNavigateBtn);

 

procedure DBEdit1Change(Sender: TObject);

uses

procedure DBEdit2Enter(Sender: TObject);

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

procedure DBEdit3Enter(Sender: TObject);

Forms,

procedure DBEdit4Enter(Sender: TObject);

Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls, ExtCtrls;

procedure DBEdit5Enter(Sender: TObject);

 

procedure DBEdit6Enter(Sender: TObject);

type

procedure DBEdit2Exit(Sender: TObject);

TS_Klient = class(TForm)

procedure DBEdit3Exit(Sender: TObject);

DBGrid1: TDBGrid;

procedure DBEdit4Exit(Sender: TObject);

DBNavigator1: TDBNavigator;

procedure DBEdit5Exit(Sender: TObject);

DBEdit1: TDBEdit;

procedure DBEdit6Exit(Sender: TObject);

DBEdit2: TDBEdit;

procedure DBNavigator1Click(Sender: TObject; Button:

DBEdit3: TDBEdit;

TNavigateBtn);

DBEdit4: TDBEdit;

private

DBEdit5: TDBEdit;

{ Private declarations }

DBEdit6: TDBEdit;

procedure Refresh;

Label1: TLabel;

procedure isEdit;

Label2: TLabel;

procedure notEdit;

Label3: TLabel;

function checkEdit:boolean;

Label4: TLabel;

public

Label5: TLabel;

{ Public declarations }

Label6: TLabel;

end;

Timer1: TTimer;

const

DBEdit7: TDBEdit;

Klient_SQL='SELECT * FROM Klient';

DBEdit8: TDBEdit;

var

Label7: TLabel;

S_Klient: TS_Klient;

procedure FormCreate(Sender: TObject);

ins:boolean;// признак редактирования

procedure Timer1Timer(Sender: TObject);

 

38

implementation

begin

Uses DataM;

ins:=false;

{$R *.dfm}

// Если нажата кнопка "Вставить", тогда

procedure TS_Klient.Refresh;

// передаём фокус в DBEdit1,если он доступен

var i:integer;

if Button=nbInsert then

begin

begin

 

ins:=true;

DM.ADOConnection1.Connected:=true;

if DBEdit1.Enabled then DBEdit1.SetFocus;

DM.KlientQuery.SQL.Clear;

end;

DM.KlientQuery.SQL.Add('SELECT * FROM Klient;');

// Если нажата кнопка "Обновить"

DM.KlientQuery.Open;

if (Button=nbRefresh) then

end;

 

 

end;

procedure TS_Klient.FormCreate(Sender: TObject);

 

begin

procedure TS_Klient.DBEdit1Change(Sender: TObject);

DM.ADOConnection1.Connected:=true;

begin

DM.KlientQuery.SQL.Clear;

if (DBEdit1.Text<>'')and(not ins) then checkEdit;

DM.KlientQuery.SQL.Add('SELECT * FROM Klient;');

end;

DM.KlientQuery.Open;

 

end;

procedure TS_Klient.DBEdit2Enter(Sender: TObject);

 

begin

 

Timer1.Enabled:=false;

procedure TS_Klient.isEdit;

if (DBEdit1.Text<>'')and(not ins) then

begin

if not checkEdit then isEdit;

 

end;

if DBEdit1.Text<>'' then

 

begin

procedure TS_Klient.DBEdit3Enter(Sender: TObject);

DM.CheckEditQuery.SQL.Text:='UPDATE Klient SET Klient.EDIT =

begin

True WHERE Klient.Klient='+DBEdit1.Text+';';

Timer1.Enabled:=false;

DM.CheckEditQuery.ExecSQL;

if (DBEdit1.Text<>'')and(not ins) then

DM.CheckEditQuery.SQL.Text:=Klient_SQL+' WHERE

if not checkEdit then isEdit;

Klient='+DBEdit1.Text+';';

end;

DM.CheckEditQuery.Open;

 

end;

procedure TS_Klient.DBEdit4Enter(Sender: TObject);

end;

begin

procedure TS_Klient.notEdit;

Timer1.Enabled:=false;

begin

if (DBEdit1.Text<>'')and(not ins) then

 

if not checkEdit then isEdit;

if DBEdit1.Text<>'' then

end;

begin

 

DM.CheckEditQuery.SQL.Text:='UPDATE Klient SET Klient.EDIT =

procedure TS_Klient.DBEdit5Enter(Sender: TObject);

False WHERE Klient.Klient='+DBEdit1.Text+';';

begin

DM.CheckEditQuery.ExecSQL;

Timer1.Enabled:=false;

DM.CheckEditQuery.SQL.Text:=Klient_SQL+' WHERE

if (DBEdit1.Text<>'')and(not ins) then

Klient='+DBEdit1.Text+';';

if not checkEdit then isEdit;

DM.CheckEditQuery.Open;

end;

end;

 

end;

procedure TS_Klient.DBEdit6Enter(Sender: TObject);

function TS_Klient.checkEdit:boolean;

begin

var bool:boolean;

Timer1.Enabled:=false;

begin

if (DBEdit1.Text<>'')and(not ins) then

checkEdit:=false;

if not checkEdit then isEdit;

if DBEdit1.Text<>'' then DM.CheckEditQuery.SQL.Text:=Klient_SQL+'

end;

WHERE Klient='+DBEdit1.Text+';';

 

DM.CheckEditQuery.Open;

procedure TS_Klient.DBEdit2Exit(Sender: TObject);

if DBEdit8.Text<>'' then

begin

begin

Timer1.Enabled:=true;

bool:=not strtobool(DBEdit8.Text);

notEdit;

DBEdit1.Enabled:=bool;

end;

DBEdit2.Enabled:=bool;

 

DBEdit3.Enabled:=bool;

procedure TS_Klient.DBEdit3Exit(Sender: TObject);

DBEdit4.Enabled:=bool;

begin

DBEdit5.Enabled:=bool;

Timer1.Enabled:=true;

DBEdit6.Enabled:=bool;

notEdit;

Label7.Visible:= not bool;

end;

checkEdit:=not bool;

 

end;

procedure TS_Klient.DBEdit4Exit(Sender: TObject);

end;

begin

procedure TS_Klient.FormClose(Sender: TObject; var Action:

Timer1.Enabled:=true;

TCloseAction);

notEdit;

begin

end;

notEdit;

 

DM.KlientQuery.Close;

procedure TS_Klient.DBEdit5Exit(Sender: TObject);

end;

begin

 

Timer1.Enabled:=true;

procedure TS_Klient.DBNavigator1BeforeAction(Sender: TObject;

notEdit;

Button: TNavigateBtn);

end;

var n:integer;

 

39

procedure TS_Klient.DBEdit6Exit(Sender: TObject); begin

Timer1.Enabled:=true;

notEdit;

end;

procedure TS_Klient.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

begin

if (Button=nbPost ) then

begin

if (S_Klient.DBEdit3.Text='') or (S_Klient.DBEdit6.Text='') then begin

MessageDlg('Введите все данные!',mtError,[mbOk],0);

Abort;

end;

//if bool=true then end;

end;

procedure TS_Klient.Timer1Timer(Sender: TObject); begin

if DBNavigator1.Controls[6].Enabled then begin

DBNavigator1.BtnClick(nbEdit);

DBNavigator1.BtnClick(nbRefresh);

end;

end;

end.

unit MainFor;

interface

uses

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

Dialogs, Menus, jpeg, ExtCtrls, IniFiles;

type

TMainForm = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

BD: TMenuItem;

Exit: TMenuItem; Klient: TMenuItem; Sotr: TMenuItem; Skidka: TMenuItem; Work: TMenuItem; Oformlenie: TMenuItem; N14: TMenuItem;

OpenDialog1: TOpenDialog; N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

procedure BDClick(Sender: TObject); procedure SotrClick(Sender: TObject); procedure KlientClick(Sender: TObject); procedure SkidkaClick(Sender: TObject); procedure WorkClick(Sender: TObject); procedure OformlenieClick(Sender: TObject); procedure N5Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject); private

{Private declarations } public

{Public declarations } end;

var

MainForm: TMainForm;

implementation

Uses DataM, Klient, Skidka, Work, Zakaz, O_1, O2, O_3, O_31, O3, Sotrr,

o_sotr; {$R *.dfm}

procedure TMainForm.BDClick(Sender: TObject); var F:TiniFile;// дискриптор DBPath:widestring;// путь к БД

begin

//создаем объект ини-файла, ассоциируя его с физическим файлом на диске

F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini')

;

//запускаем диалог открытия, если запущен успешно, то...

if OpenDialog1.Execute then begin

//сохраняем пользовательский путь

DBPath:=ExtractFilePath(OpenDialog1.FileName);

//записываем в разделе Section_DBPath значение DBPath в параметр Path ини-файла

F.WriteString('Section_DBPath','Path', DBPath); DM.ADOConnection1.Close;

//формируем ConnectionString DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLE DB.4.0;DataSourse='+DBPath+'db1.mdb;Persist Security Info=False';

//открываем соединение

DM.ADOConnection1.Open;

end;

//освобождаем память

F.Free;

end;

procedure TMainForm.SotrClick(Sender: TObject); begin

S_Sotr:= TS_Sotr.Create(self); //создаём форму

S_Sotr.ShowModal; //выводим на экран модально end;

procedure TMainForm.KlientClick(Sender: TObject); begin

S_Klient:=TS_Klient.Create(self); S_Klient.ShowModal;

end;

procedure TMainForm.SkidkaClick(Sender: TObject); begin

S_Skidka:=TS_Skidka.Create(self); S_Skidka.ShowModal;

end;

procedure TMainForm.WorkClick(Sender: TObject); begin

S_Work:=TS_Work.Create(self); S_Work.ShowModal;

end;

procedure TMainForm.OformlenieClick(Sender: TObject); begin

S_Zakaz:= TS_Zakaz.Create(self); //создаём форму

S_Zakaz.ShowModal; //выводим на экран модально

end;

procedure TMainForm.N5Click(Sender: TObject);

40

begin

O1:= TO1.Create(self); //создаём форму

O1.ShowModal; //выводим на экран модально end;

procedure TMainForm.N7Click(Sender: TObject); begin

O_2:= TO_2.Create(self); //создаём форму

O_2.ShowModal; //выводим на экран модально end;

procedure TMainForm.N8Click(Sender: TObject); begin

O_YSLYGA:= TO_YSLYGA.Create(self); //создаём форму

O_YSLYGA.ShowModal; //выводим на экран модально end;

procedure TMainForm.N9Click(Sender: TObject); begin

SmenaParol:= TSmenaParol.Create(self); //создаём форму

SmenaParol.ShowModal; //выводим на экран модально end;

procedure TMainForm.N10Click(Sender: TObject); begin

Form1:= TForm1.Create(self); //создаём форму

Form1.ShowModal; //выводим на экран модально end;

procedure TMainForm.N11Click(Sender: TObject); begin

Form3:= TForm3.Create(self); //создаём форму Form3.ShowModal;

end;

procedure TMainForm.N12Click(Sender: TObject); var F:TiniFile;

DBPath1:string; begin

F:=TiniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini');

//Считываем путь резервного копирования из файла option.ini

DBPath1:=F.ReadString('Section_DBPath','Path',''); F.Free;

// делаем резервную копию файла БД

CopyFile(pchar(DBPath1+'db1.mdb'),pchar(DBPath1+'COPY_db1.mdb') ,false);

MessageDlg('Создана резервная копия БД ',mtInformation, [mbOk], 0);

end;

end.

unit O_1;

interface

uses

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

Dialogs, Menus, ComCtrls, Grids, DBGrids, StdCtrls, OleServer, ExcelXP,

WordXP;

type

TO1 = class(TForm) DBGrid1: TDBGrid;

HeaderControl1: THeaderControl; PopupMenu1: TPopupMenu; SaveDialog1: TSaveDialog; Excel1: TMenuItem;

Edit1: TEdit;

ComboBox1: TComboBox; WordDocument1: TWordDocument; WordApplication1: TWordApplication; procedure FormCreate(Sender: TObject);

procedure Edit1Change(Sender: TObject); private

{Private declarations } public

{Public declarations } end;

var

O1: TO1;

implementation Uses DataM;

{$R *.dfm}

procedure TO1.FormCreate(Sender: TObject); var i:integer;

begin DM.ADOConnection1.Connected:=true; DM.O1Query.SQL.Clear;

DM.O1Query.SQL.Add('SELECT * FROM Opros;'); DM.O1Query.Open;

for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);

end;

procedure TO1.Edit1Change(Sender: TObject); Var S:String;

begin

if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0;

//Сохранение имени поля DBGrid1 в переменную S, по индексу выбранной записи в ComboBox1

S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName;

DM.O1Query.SQL.Clear;

//Формирования запроса по полю сохранённому в переменной S

DM.O1Query.SQL.Add('Select * from Opros WHERE '+s+' LIKE

"'+Edit1.text+'%"'); // Обновляем

DM.O1Query.Close;

DM.O1Query.Open;

end;

end.

unit O_31;

interface

uses

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

Dialogs, StdCtrls, Buttons, DBCtrls;

type

TSmenaParol = class(TForm) DBLookupComboBox1: TDBLookupComboBox; Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;

procedure BitBtn2Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject);

procedure DBLookupComboBox1Click(Sender: TObject); procedure FormShow(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

var

41

Соседние файлы в папке Курсовые работы