Курсовые работы / ПРИС КП_И_19
.pdfРисунок А.3 – Диаграмма IDEF0 второго уровня «Прием заявки»
Рисунок А.4 – Диаграмма IDEF0 второго уровня «Исполнение работы»
Рисунок А.5 – Диаграмма IDEF0 второго уровня «Обработка данных»
32
Рисунок А.6 – Диаграмма IDEF0 второго уровня «Создание отчетов»
Рисунок А.7 – Диаграмма IDEF3 третьего уровня «Смена пароля»
33
ПРИЛОЖЕНИЕ Б Описание таблиц базы данных
Таблица Б.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 |
Нет |
Нет |
|
|
34
Продолжение таблицы Б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 |
Числовой |
Длинное |
Да |
Нет |
|
|
|
|
целое |
|
|
|
|
35
31
ПРИЛОЖЕНИЕ В |
|
Листинг программы |
|
unit DataM; |
F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini') |
|
; |
interface |
DBPath:=F.ReadString('Section_DBPath','Path',''); |
|
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4. |
uses |
0;Data Source='+DBPath+'db1.mdb;Persist Security Info=False'; |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, |
end; |
Forms, |
end. |
Dialogs, DB, ADODB, IniFiles, StdCtrls; |
|
type
TDM = class(TForm) ADOConnection1: TADOConnection; SotrQuery: TADOQuery; KlientQuery: TADOQuery; SkidkaQuery: TADOQuery; SotrDataSource: TDataSource; KlientDataSource: TDataSource; SkidkaDataSource: TDataSource; ZakazDataSource: TDataSource; ZakazQuery: TADOQuery; ZWQuery: TADOQuery; ZWDataSource: TDataSource; WorkQuery: TADOQuery; WorkDataSource: TDataSource; Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel; S_zakazaQuery1: TADOQuery;
S_zakazaDataSource: TDataSource; S_oplatQuery: TADOQuery; S_olaDataSource: TDataSource; Label7: TLabel;
Label8: TLabel;
Label9: TLabel; ZaprosQuery: TADOQuery;
ZaprosDataSource1: TDataSource; O1Query: TADOQuery; O1DataSource: TDataSource; Label10: TLabel;
Otchet2: TLabel; DogQuery: TADOQuery;
DogDataSource: TDataSource; pQuery: TADOQuery; pDataSource: TDataSource; CheckEditQuery: TADOQuery; DataSource1: TDataSource; Label11: TLabel;
Edit: TADODataSet;
procedure ADOConnection1BeforeConnect(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
DM: TDM;
implementation Uses MainFor;
{$R *.dfm}
procedure TDM.ADOConnection1BeforeConnect(Sender: TObject); var DBPath:widestring; //путь к БД
F :TIniFile; // файл с путем к БД begin
32
unit Klient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls, ExtCtrls;
type
TS_Klient = class(TForm) DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Timer1: TTimer; DBEdit7: TDBEdit; DBEdit8: TDBEdit; Label7: TLabel;
procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure DBEdit1Change(Sender: TObject); procedure DBEdit2Enter(Sender: TObject); procedure DBEdit3Enter(Sender: TObject); procedure DBEdit4Enter(Sender: TObject); procedure DBEdit5Enter(Sender: TObject); procedure DBEdit6Enter(Sender: TObject); procedure DBEdit2Exit(Sender: TObject); procedure DBEdit3Exit(Sender: TObject); procedure DBEdit4Exit(Sender: TObject); procedure DBEdit5Exit(Sender: TObject); procedure DBEdit6Exit(Sender: TObject);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); private
{ Private declarations } procedure Refresh; procedure isEdit;
procedure notEdit;
function checkEdit:boolean; public
{ Public declarations } end;
const
Klient_SQL='SELECT * FROM Klient'; var
S_Klient: TS_Klient;
ins:boolean;// признак редактирования
implementation Uses DataM; {$R *.dfm}
procedure TS_Klient.Refresh; var i:integer;
begin
DM.ADOConnection1.Connected:=true;
DM.KlientQuery.SQL.Clear; DM.KlientQuery.SQL.Add('SELECT * FROM Klient;'); DM.KlientQuery.Open;
end;
procedure TS_Klient.FormCreate(Sender: TObject); begin
DM.ADOConnection1.Connected:=true;
DM.KlientQuery.SQL.Clear; DM.KlientQuery.SQL.Add('SELECT * FROM Klient;');
DM.KlientQuery.Open;
end;
procedure TS_Klient.isEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckEditQuery.SQL.Text:='UPDATE Klient SET Klient.EDIT = True WHERE Klient.Klient='+DBEdit1.Text+';'; DM.CheckEditQuery.ExecSQL;
DM.CheckEditQuery.SQL.Text:=Klient_SQL+' WHERE Klient='+DBEdit1.Text+';'; DM.CheckEditQuery.Open;
end;
end;
procedure TS_Klient.notEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckEditQuery.SQL.Text:='UPDATE Klient SET Klient.EDIT = False WHERE Klient.Klient='+DBEdit1.Text+';'; DM.CheckEditQuery.ExecSQL;
DM.CheckEditQuery.SQL.Text:=Klient_SQL+' WHERE Klient='+DBEdit1.Text+';'; DM.CheckEditQuery.Open;
end;
end;
function TS_Klient.checkEdit:boolean; var bool:boolean;
begin checkEdit:=false;
if DBEdit1.Text<>'' then DM.CheckEditQuery.SQL.Text:=Klient_SQL+' WHERE Klient='+DBEdit1.Text+';'; DM.CheckEditQuery.Open;
if DBEdit8.Text<>'' then begin
bool:=not strtobool(DBEdit8.Text); DBEdit1.Enabled:=bool; DBEdit2.Enabled:=bool; DBEdit3.Enabled:=bool; DBEdit4.Enabled:=bool; DBEdit5.Enabled:=bool; DBEdit6.Enabled:=bool; Label7.Visible:= not bool; checkEdit:=not bool;
end;
end;
procedure TS_Klient.FormClose(Sender: TObject; var Action: TCloseAction); begin
notEdit;
DM.KlientQuery.Close;
end;
procedure TS_Klient.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
var n:integer; begin ins:=false;
//Если нажата кнопка "Вставить", тогда
//передаём фокус в DBEdit1,если он доступен if Button=nbInsert then
begin ins:=true;
if DBEdit1.Enabled then DBEdit1.SetFocus; end;
//Если нажата кнопка "Обновить"
if (Button=nbRefresh) then
end;
procedure TS_Klient.DBEdit1Change(Sender: TObject); begin
if (DBEdit1.Text<>'')and(not ins) then checkEdit; end;
procedure TS_Klient.DBEdit2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'')and(not ins) then if not checkEdit then isEdit;
end;
procedure TS_Klient.DBEdit3Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'')and(not ins) then if not checkEdit then isEdit;
end;
procedure TS_Klient.DBEdit4Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'')and(not ins) then if not checkEdit then isEdit;
end;
procedure TS_Klient.DBEdit5Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'')and(not ins) then if not checkEdit then isEdit;
end;
procedure TS_Klient.DBEdit6Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'')and(not ins) then if not checkEdit then isEdit;
end;
procedure TS_Klient.DBEdit2Exit(Sender: TObject); begin
Timer1.Enabled:=true;
notEdit;
end;
procedure TS_Klient.DBEdit3Exit(Sender: TObject); begin
Timer1.Enabled:=true;
notEdit;
end;
procedure TS_Klient.DBEdit4Exit(Sender: TObject); begin
Timer1.Enabled:=true;
notEdit;
end;
procedure TS_Klient.DBEdit5Exit(Sender: TObject); begin
Timer1.Enabled:=true;
notEdit;
end;
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
//сохраняем пользовательский путь