Курсовые работы / ПРИС П _5
.pdf18 Васильков, А.В. Информационные системы и их безопасность:
Учебное пособие / А.В. Васильков, А.А. Васильков, И.А. Васильков. - М.:
Форум, 2013. 528 c.
19 Кузнецов И.Н. Рефераты, курсовые работы и дипломное проектирование. Методика подготовки и оформления. М. : Изд-во Дашков и Ко, 2012. 340 с.
20 Осипов Д.Л. Базы данных и Delphi. Спб. : БХВ-Петербург, 2011.
854 с.
32
ПРИЛОЖЕНИЕ А Функциональная модель по стандарту IDEF0
Рисунок А.1 – Декомпозиция блока «Формирование перечня телефонов»
Рисунок А.2 – Декомпозиция блока «Осуществление продаж»
33
Рисунок А.3 – Декомпозиция блока «Гарантийное обслуживание»
Рисунок А.4 – Декомпозиция блока «Формирование отчетов»
34
ПРИЛОЖЕНИЕ Б Свойства полей таблиц БД
Рисунок Б.1 – Свойства полей таблицы «Izgot»
Рисунок Б.2 – Свойства полей таблицы «gar»
Рисунок Б.3 – Свойства полей таблицы «Pass»
Рисунок Б.4 – Свойства полей таблицы «Prod»
35
Рисунок Б.5 – Свойства полей таблицы «Reg»
Рисунок Б.6 – Свойства полей таблицы «Skid»
Рисунок Б.7 – Свойства полей таблицы «SkidD»
Рисунок Б.8 – Свойства полей таблицы «sklad»
Рисунок Б.9 – Свойства полей таблицы «tel»
36
Рисунок Б.10 – Свойства полей таблицы «zak»
37
ПРИЛОЖЕНИЕ В |
||
Листинг программы |
||
unit pass; |
dm.TEMP.Active:=false; |
|
|
dm.TEMP.CommandText:='Select * fROM pass WHERE |
|
interface |
(log="'+cb.Text+'") AND (pass="'+e.Text+'")'; |
|
|
dm.TEMP.Active:=true; |
|
uses |
if dm.TEMP.RecordCount=0 then showmessage('Ошибка в |
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, |
логине и(или) пароле') |
|
Controls, Forms, |
else |
|
Dialogs, StdCtrls, Buttons, ExtCtrls,inifiles; |
begin |
|
|
if cb.ItemIndex=0 then |
|
type |
begin |
|
TFpass = class(TForm) |
//fmain.N10.Visible:=false; |
|
Panel1: TPanel; |
login:=cb.Text; |
|
Panel2: TPanel; |
pas:=e.Text; |
|
BitBtn1: TBitBtn; |
fpass.Hide; |
|
BitBtn2: TBitBtn; |
fmain.ShowModal; |
|
Label1: TLabel; |
end |
|
cb: TComboBox; |
else |
|
Label2: TLabel; |
begin |
|
e: TEdit; |
fmain.N17.Visible:=false; |
|
procedure BitBtn1Click(Sender: TObject); |
login:=cb.Text; |
|
procedure FormCloseQuery(Sender: TObject; var CanClose: |
pas:=e.Text; |
|
Boolean); |
fpass.Hide; |
|
procedure BitBtn2Click(Sender: TObject); |
fmain.ShowModal; |
|
procedure FormShow(Sender: TObject); |
end; |
|
private |
end; |
|
{ Private declarations } |
end; |
|
public |
|
|
{ Public declarations } |
end; |
|
end; |
|
|
|
procedure TFpass.FormShow(Sender: TObject); |
|
var |
var inifile:tinifile; |
|
Fpass: TFpass; |
dbp:string; |
|
|
begin |
|
implementation |
IniFile |
:= |
|
TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.in |
|
uses datm, main; |
i'); |
// загрузка из фала настроек пути к базе |
|
DBP := IniFile.ReadString('Options', 'DBPath', |
|
{$R *.dfm} |
ExtractFilePath(Application.ExeName)+'DB\Base_V11.mdb'); |
|
|
//proc := IniFile.ReadString('Options', 'proc', |
|
procedure TFpass.BitBtn1Click(Sender: TObject); |
ExtractFilePath(Application.ExeName)+'DataBase\'); |
|
begin |
IniFile.Free; |
|
closequery; |
dm.ADO.Connected:=false; |
|
end; |
dm.ADO.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0; |
|
|
Data Source='+dbp+';Persist Security Info=False'; |
|
procedure TFpass.FormCloseQuery(Sender: TObject; var |
dm.ADO.Connected:=true; |
|
CanClose: Boolean); |
|
|
begin |
dm.TEMP.Active:=false; |
|
if application.MessageBox('Вы хоите выйти из |
dm.TEMP.CommandText:='Select * fROM pass'; |
|
программы?','Выход',mb_yesno+mb_iconquestion)=idyes then |
dm.TEMP.Active:=true; |
|
begin |
While not dm.TEMP.Eof do |
|
application.Terminate; |
begin |
|
end |
cb.Items.Add(dm.TEMP.Fields[0].AsString); |
|
else canclose:=false; |
dm.TEMP.Next; |
|
|
end; |
|
end; |
|
|
|
end; |
|
procedure TFpass.BitBtn2Click(Sender: TObject); |
|
|
begin |
end. |
|
if cb.Text='' then showmessage('Вы не выбрали пользователя') |
unit main; |
|
else if e.Text='' then showmessage('Вы не ввели пароль') |
|
|
else |
interface |
|
begin |
|
|
38
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls,registry, WordXP, OleServer,inifiles, jpeg,
ExtCtrls;
type
TFmain = class(TForm) StatusBar1: TStatusBar; MainMenu1: TMainMenu; N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N1: TMenuItem;
N10: TMenuItem;
N6: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
WordApplication1: TWordApplication; WordDocument1: TWordDocument; N2: TMenuItem;
N9: TMenuItem;
Image1: TImage;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure N4Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N18Click(Sender: TObject); procedure N19Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N1Click(Sender: TObject); function data(data:tdatetime):string; procedure N22Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N23Click(Sender: TObject); procedure N17Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N9Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
Fmain: TFmain;
implementation
uses datm, izgot, tel, skid, SkidD, sklad, prod2, zak, Gar, chpass, ot,
zaPeriod;
{$R *.dfm}
procedure TFmain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if application.MessageBox('Вы хоите выйти из программы?','Выход',mb_yesno+mb_iconquestion)=idyes then
begin application.Terminate; end
else canclose:=false; end;
procedure TFmain.N4Click(Sender: TObject); begin
dm.Iz.Active:=false;
dm.Iz.CommandText:='select id_iz,nazv_iz from izgot'; dm.Iz.Active:=true;
fizgot.ShowModal;
end;
procedure TFmain.N5Click(Sender: TObject); begin
dm.t.Active:=false;
dm.t.CommandText:='select id_t,nazv_t,nazv_iz,ves_t,dl_t,sh_t,vis_t,gprs_t,mp3_t,st_t from izgot,tel WHERE (id_iz=id_iz_t)';
dm.t.Active:=true;
ftel.ShowModal;
end;
procedure TFmain.N18Click(Sender: TObject); begin
dm.sk.Active:=false;
dm.sk.CommandText:='select id_sk,nazv_sk,vel_sk from skid'; dm.sk.Active:=true;
fskid.ShowModal;
end;
procedure TFmain.N19Click(Sender: TObject); begin
dm.sdd.Active:=false;
dm.sdd.CommandText:='select id_sdd,nazv_sk,dt1_sdd,dt2_sdd from skid,skidd WHERE (id_sk = id_sk_sdd)'; dm.sdd.Active:=true;
fskidd.ShowModal;
end;
procedure TFmain.N8Click(Sender: TObject); begin
dm.s.Active:=false;
dm.s.CommandText:='select id_s,nazv_t,nazv_iz,kol_s FROM sklad,tel,izgot WHERE (id_iz=id_iz_t) AND (id_t=id_t_s)'; dm.s.Active:=true;
fsklad.ShowModal;
end;
procedure TFmain.N12Click(Sender: TObject); begin
dm.pr.Active:=false;
dm.pr.CommandText:='select id_pr,nazv_t,nazv_iz,dataN_pr,sn_pr,st_pr,dataK_pr FROM prod,tel,izgot WHERE (id_iz = id_iz_t) AND (id_t = id_t_pr)'; dm.pr.Active:=true;
fprod2.ShowModal;
end;
procedure TFmain.N13Click(Sender: TObject);
39
begin dm.zk.Active:=false;
dm.zk.CommandText:='Select id_zk,fio_zk,nazv_t,nazv_iz,dataN_zk,st_zk,id_t_zk FROM tel,izgot,zak WHERE (id_iz = id_iz_t) AND (id_t = id_t_zk) AND (log_zk=false)';
dm.zk.Active:=true;
fzak.ShowModal;
end;
procedure TFmain.N1Click(Sender: TObject); begin
dm.gr.Active:=false;
dm.gr.CommandText:='select id_gr,nazv_t,nazv_iz,dataN_gr,dataK_gr,srok_gr FROM tel,izgot,gar,prod WHERE (id_iz = id_iz_t) AND (id_t = id_t_pr) AND (id_pr = id_pr_gr) AND (log_gr=false)'; dm.gr.Active:=true;
fgar.ShowModal;
end;
function TFmain.data (data:tdatetime):string; var g,m,d:word;
begin decodedate(data,g,m,d);
result:=''+currtostr(m)+'/'+currtostr(d)+'/'+currtostr(g)+'';
end;
procedure TFmain.N22Click(Sender: TObject); var peremen:string;
Template,NewTemplate,FindText, NewStr, Replace,ReplaceWith:OleVariant;
LinkToFile,SaveWithDocument,Range:OleVariant; Table1: Table;
i: integer;
Reg: TRegistry; flag:boolean;
begin fot.ShowModal; end;
procedure TFmain.N2Click(Sender: TObject); var peremen:string;
Template,NewTemplate,FindText, NewStr, Replace,ReplaceWith:OleVariant;
LinkToFile,SaveWithDocument,Range:OleVariant; Table1: Table;
i: integer;
Reg: TRegistry; flag:boolean;
begin
WordApplication1.Connect; // Устанавливаем связь с сервером //Открываем шаблон otchet.dot в Word
Template:=ExtractFilePath(Application.EXEName)+'Гарантия.dot '; //путь к шаблону документа
WordApplication1.Documents.Add(Template,EmptyParam,Empty
Param,EmptyParam);// создаем документ на основе шаблона
WordDocument1.ConnectTo(WordApplication1.ActiveDocument)
; //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)
dm.TEMP.Active:=false;
dm.TEMP.CommandText:='select id_gr,nazv_t,nazv_iz,dataN_gr,dataK_gr,srok_gr FROM tel,izgot,gar,prod WHERE (id_iz = id_iz_t) AND (id_t = id_t_pr) AND (id_pr = id_pr_gr) AND (log_gr=false) AND (dataK_gr <date())';
dm.TEMP.Active:=true;
//Заполняем таблицу списка объектов
Table1:=WordDocument1.Tables.Item(1); //связываем имя
Table1 с первой таблицей документа //WordDocument1.Tables - это массив таблиц документа (тип
Tables), а WordDocument1.Tables.Item(i) - i-ая таблица i:=2;
dm.temp.First;
While not dm.temp.Eof do begin
Table1.Rows.Add(EmptyParam);
Table1.Cell(i, 1).Range.Text := dm.temp.Fields[1].AsString; Table1.Cell(i, 2).Range.Text := dm.temp.Fields[2].AsString; Table1.Cell(i, 3).Range.Text := dm.temp.Fields[3].AsString; Table1.Cell(i, 4).Range.Text := dm.temp.Fields[4].AsString; Table1.Cell(i, 5).Range.Text := dm.temp.Fields[5].AsString; inc(i);dm.temp.next;
end; Table1.Rows.Item(i).Delete;
WordApplication1.Visible:=true; //делаем приложение MS Word видимым
WordApplication1.Disconnect; // Разрываем связь с сервером end;
procedure TFmain.N23Click(Sender: TObject); var peremen:string;
Template,NewTemplate,FindText, NewStr, Replace,ReplaceWith:OleVariant;
LinkToFile,SaveWithDocument,Range:OleVariant; Table1: Table;
i: integer;
Reg: TRegistry; flag:boolean;
begin
WordApplication1.Connect; // Устанавливаем связь с сервером //Открываем шаблон otchet.dot в Word Template:=ExtractFilePath(Application.EXEName)+'Заказы.dot';
//путь к шаблону документа
WordApplication1.Documents.Add(Template,EmptyParam,Empty
Param,EmptyParam);// создаем документ на основе шаблона
WordDocument1.ConnectTo(WordApplication1.ActiveDocument)
; //Связываем компонент WordDocument1 c активным документом (т.е. с только что созданным документом)
dm.TEMP.Active:=false;
dm.TEMP.CommandText:='Select id_zk,fio_zk,nazv_t,nazv_iz,dataN_zk,st_zk,id_t_zk FROM tel,izgot,zak WHERE (id_iz = id_iz_t) AND (id_t = id_t_zk) AND (log_zk=false) AND (dataN_zk<date())';
dm.TEMP.Active:=true;
//Заполняем таблицу списка объектов
Table1:=WordDocument1.Tables.Item(1); //связываем имя
Table1 с первой таблицей документа //WordDocument1.Tables - это массив таблиц документа (тип
Tables), а WordDocument1.Tables.Item(i) - i-ая таблица i:=2;
dm.temp.First;
While not dm.temp.Eof do
40
begin Table1.Rows.Add(EmptyParam);
Table1.Cell(i, 1).Range.Text := dm.temp.Fields[1].AsString; Table1.Cell(i, 2).Range.Text := dm.temp.Fields[2].AsString; Table1.Cell(i, 3).Range.Text := dm.temp.Fields[3].AsString; Table1.Cell(i, 4).Range.Text := dm.temp.Fields[4].AsString; Table1.Cell(i, 5).Range.Text := dm.temp.Fields[5].AsString; inc(i);dm.temp.next;
end; Table1.Rows.Item(i).Delete;
WordApplication1.Visible:=true; //делаем приложение MS Word видимым
WordApplication1.Disconnect; // Разрываем связь с сервером end;
procedure TFmain.N17Click(Sender: TObject); var inifile:tinifile;
dbp:string; begin IniFile :=
TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.in i'); // загрузка из фала настроек пути к базе
DBP := IniFile.ReadString('Options', 'DBPath', ExtractFilePath(Application.ExeName)+'DB\Base_V11.mdb'); IniFile.Free; copyfile(pchar(DBP),pchar(ExtractFilePath(Application.ExeName )+'rezerv\base_'+datetostr(date)+'.mdb'),true);
if fileexists(ExtractFilePath(Application.ExeName)+'rezerv\base_'+d atetostr(date)+'.mdb') =true then showmessage('Резервная копия создана успешно')
else showmessage('Ошибка при создании резервной копии'); end;
procedure TFmain.N16Click(Sender: TObject); begin
fchpass.ShowModal;
end;
procedure TFmain.N9Click(Sender: TObject);
begin fzaperiod.ShowModal;
end;
end.
unit agar;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons, ExtCtrls;
type
TFagar = class(TForm) Panel1: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel;
dtp1: TDateTimePicker; e1: TEdit;
dtp2: TDateTimePicker;
procedure BitBtn1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure BitBtn2Click(Sender: TObject);
procedure e1KeyPress(Sender: TObject; var Key: Char); private
{Private declarations } public
{Public declarations } end;
var
Fagar: TFagar;
implementation
uses datm;
{$R *.dfm}
procedure TFagar.BitBtn1Click(Sender: TObject); begin
closequery;
end;
procedure TFagar.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin dtp1.Date:=date;dtp2.Date:=date;e1.Text:='';close; end;
procedure TFagar.BitBtn2Click(Sender: TObject); begin
if (e1.Text='') then showmessage('Не все поля заполнены') else
begin
if dtp1.Date>dtp2.Date then begin
showmessage('Неправильная последовательность дат'); exit;
end; try
if strtoint(e1.Text)<=0 then begin
showmessage('Срок не может быть отрицательным числом');
exit;
end; except
showmessage('Срок - числовое значение'); exit;
end;
dm.TEMP.Active:=false;
dm.TEMP.CommandText:='select * from gar where (id_pr_gr = '+tmp+') AND (log_gr = false)';
dm.TEMP.Active:=true;
if dm.TEMP.RecordCount>0 then begin
showmessage('Данный телефон уже в ремонте'); exit;
end;
dm.COM.CommandText:='Insert into gar (id_pr_gr,dataN_gr,dataK_gr,srok_gr) values
41