Курсовые работы / ПРИС П _32
.pdf11 Гусятников В. Н. Безруков А. И. Стандартизация и разработка программных систем. [Электронный ресурс]: Электрон. текстовые дан. СПб. : Лань, 2012. Режим доступа: URL http://e.lanbook.com/ books/element.php?pl1_id=5321
12Дарахвелидзе П. Г. Программирование в Delphi 7. Спб. : БХВ-Петербург, 2013. 784 с.
13Нечаев Д. Ю., Чекмарев Ю. В. Надежность информационных систем
[электронный ресурс]: учебное пособие. М. : Изд. «ДМК Пресс» 2012. 64 с. Режим
доступа: http://e.lanbook.com/books/element.php?pl1_id=3030
14Осипов Д.Л. Базы данных и Delphi. Спб. : БХВ-Петербург, 2011. 854 с.
15Нечаев Д. Ю., Чекмарев Ю. В. Надежность информационных систем
[электронный ресурс]: учебное пособие. М. : Изд. «ДМК Пресс» 2012. 64 с. Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=3030
22
ПРИЛОЖЕНИЕ А
Модель бизнес-процессов предметной области по стандарту IDEF0
Рисунок А.1 – Верхний блок диаграммы бизнес-процессов IDEF0
Рисунок А.2 – Декомпозиция блока «Автоматизация учета сдачи экзаменов и выдачи водительских прав на вождение автотранспортных средств»
23
Рисунок А.3 – Декомпозиция блока «Ввод и редактирование данных»
Рисунок А.4 – Декомпозиция блока «Работа с сервисными функциями»
24
Рисунок А.5 – Декомпозиция блока «Аналитическая обработка данных»
25
ПРИЛОЖЕНИЕ Б
Описание таблиц базы данных
Таблица Б.1 – Описание свойств полей таблицы Pass
Имя поля |
Тип данных |
Размер |
Обязательное |
Индексированное |
Комментарий |
|
|
поля |
поле |
поле |
|
us |
Счетчик |
Длинное |
Да |
Да (Совпадения |
Ключевое поле |
|
|
целое |
|
не допускаются) |
|
pass |
Текстовый |
50 |
Да |
Нет |
Имя |
|
|
|
|
|
пользователя |
prava |
Текстовый |
50 |
Да |
Нет |
Пароль |
Таблица Б.2 – Описание свойств полей таблицы Klient
Имя поля |
Тип данных |
Размер |
Обязательное |
Индексированное |
Комментарий |
|
|
поля |
поле |
поле |
|
id_kl |
Счетчик |
Длинное |
Да |
Да (Совпадения |
Ключевое поле |
|
|
целое |
|
не допускаются) |
|
fio_kl |
Тектовый |
50 |
Нет |
Нет |
ФИО |
adr_kl |
Тектовый |
50 |
Нет |
Нет |
Адрес |
sp_kl |
Числовой |
Длинное |
Нет |
Нет |
Серия паспорта |
|
|
целое |
|
|
|
np_kl |
Числовой |
Длинное |
Нет |
Нет |
Номер паспорта |
|
|
целое |
|
|
|
dataR_kl |
Дата/время |
- |
Нет |
Нет |
Дата рождения |
|
|
|
|
|
|
dataT_kl |
Дата/время |
- |
Нет |
Нет |
Дата |
|
|
|
|
|
тестирования |
Test_kl |
Логический |
- |
- |
Нет |
Метка |
|
|
|
|
|
прохождения |
log_kl |
Логический |
- |
- |
Нет |
Метка занятости |
Таблица Б.3 – Описание свойств полей таблицы Otvet
Имя поля |
Тип данных |
Размер |
Обязательное |
Индексированное |
Комментарий |
|
|
|
поля |
поле |
поле |
|
|
id_o |
Счетчик |
Длинное |
Да |
Да (Совпадения |
Ключевое поле |
|
|
|
целое |
|
не допускаются) |
|
|
nazv_o |
Текстовый |
50 |
Нет |
Нет |
Текст ответа |
|
|
|
|
|
|
|
|
id_vp_o |
Числовой |
Длинное |
Нет |
Нет |
Вопрос, |
к |
|
|
целое |
|
|
которому |
|
|
|
|
|
|
относится ответ |
|
26
Таблица Б.4 – Описание свойств полей таблицы Prava
Имя поля |
Тип данных |
Размер |
Обязательное |
Индексированное |
Комментарий |
|
|
|
поля |
поле |
поле |
|
|
id_pr |
Счетчик |
Длинное |
Да |
Да (Совпадения |
Ключевое поле |
|
|
|
целое |
|
не допускаются) |
|
|
id_kl_pr |
Текстовый |
50 |
Нет |
Нет |
ФИО владельца |
|
|
|
|
|
|
|
|
k_pr |
Текстовый |
50 |
Нет |
Нет |
Категория прав |
|
|
|
|
|
|
|
|
dataV_pr |
Дата и время |
- |
Нет |
Нет |
Дата |
выдачи |
|
|
|
|
|
прав |
|
dataO_pr |
Дата и время |
- |
Нет |
Нет |
Дата |
обмена |
|
|
|
|
|
прав |
|
EDIT |
Логический |
- |
- |
Нет |
Метка занятости |
Таблица Б.5 – Описание свойств полей таблицы Vopr
Имя поля |
Тип данных |
Размер |
Обязательное |
Индексированное |
Комментарий |
|
|
поля |
поле |
поле |
|
id_vp |
Счетчик |
Длинное |
Да |
Да (Совпадения |
Ключевое поле |
|
|
целое |
|
не допускаются) |
|
nazv_vp |
Текстовый |
50 |
Нет |
Нет |
Текст вопроса |
|
|
|
|
|
|
po_vp |
Числовой |
Длинное |
Нет |
Нет |
Номер |
|
|
целое |
|
|
правильного |
|
|
|
|
|
ответа |
EDIT |
Логический |
- |
- |
Нет |
Метка занятости |
27
ПРИЛОЖЕНИЕ В
Текст программы
end;
var
main: Tmain;
implementation uses datm;
{$R *.dfm}
procedure Tmain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin halt; end;
end.
unit fvopr;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, ToolWin;
type
Tvopr = class(TForm) m: TMemo;
Label1: TLabel; e1: TEdit;
e2: TEdit; e3: TEdit; e4: TEdit;
rb1: TRadioButton; rb2: TRadioButton; rb3: TRadioButton; rb4: TRadioButton; ToolBar1: TToolBar;
ToolButton14: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton12: TToolButton;
procedure ToolButton10Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
procedure FormShow(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
vopr: Tvopr; klPo:integer; vsego:integer; implementation
uses datm, fklient; {$R *.dfm}
procedure Tvopr.ToolButton10Click(Sender: TObject); var b:boolean;
begin b:=false;
if id_kl<>'0' then begin
if (rb1.Checked=false) AND (rb2.Checked=false) AND (rb3.Checked=false) AND (rb4.Checked=false) then
begin
showmessage('Нужно выбрать 1 ответ'); exit;
end else
begin dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM otvet WHERE id_o = '+tmp+' ORDER BY id_o';
dm.temp.Active:=true;
tmp:=dm.temp.Fields[1].AsString; if rb1.Checked=true then
begin
if tmp=e1.Text then begin
b:=true;
end;
end;
if rb2.Checked=true then begin
if tmp=e2.Text then begin
b:=true;
end;
end;
if rb3.Checked=true then begin
if tmp=e3.Text then begin
b:=true;
end;
end;
if rb4.Checked=true then begin
if tmp=e4.Text then begin
b:=true;
end;
end;
//Правильный ли ответ if b=true then
begin klPo:=klPo+1; end;
end;
end;
if vsego=kolo then begin
if klpo>kolo then klpo:=kolo;
showmessage('Всего вопросов: '+inttostr(kolO)+'. Отвечено правильно: '+inttostr(klPo)+'');
if (kolO-klpo)>2 then begin
showmessage('Экзамен не сдан'); end
else begin
showmessage('Экзамен сдан'); dm.COM.CommandText:='Update klient SET test_k=TRUE
WHERE id_kl = '+id_kl+''; dm.COM.Execute; end;
application.MessageBox('При нажатии кнопки "OK" программа закроется','Выход',mb_ok+mb_iconasterisk);
closequery;
end;
dm.vop.Next;
vsego:=vsego+1;
28
if id_kl='0' then |
tmp:=dm.vop.Fields[2].AsString; |
begin |
|
vopr.rb1.Checked:=false; |
dm.temp.Active:=false; |
vopr.rb2.Checked:=false; |
dm.temp.CommandText:='SELECT * FROM otvet WHERE |
vopr.rb3.Checked:=false; |
id_vp_o = '+dm.vop.Fields[0].AsString+' ORDER BY id_o'; |
vopr.rb4.Checked:=false; |
dm.temp.Active:=true; |
m.Lines.Clear; |
|
|
vopr.e1.text:=dm.temp.Fields[1].AsString; |
vopr.m.Lines.Add(dm.vop.Fields[1].AsString); |
if tmp=dm.temp.Fields[0].AsString then |
tmp:=dm.vop.Fields[2].AsString; |
begin |
|
vopr.rb1.Checked:=true; |
dm.temp.Active:=false; |
end; |
dm.temp.CommandText:='SELECT * FROM otvet WHERE |
dm.temp.Next; |
id_vp_o = '+dm.vop.Fields[0].AsString+' ORDER BY id_o'; |
vopr.e2.Text:=dm.temp.Fields[1].AsString; |
dm.temp.Active:=true; |
if tmp=dm.temp.Fields[0].AsString then |
|
begin |
vopr.e1.text:=dm.temp.Fields[1].AsString; |
vopr.rb2.Checked:=true; |
if tmp=dm.temp.Fields[0].AsString then |
end; |
begin |
dm.temp.Next; |
vopr.rb1.Checked:=true; |
vopr.e3.Text:=dm.temp.Fields[1].AsString; |
end; |
if tmp=dm.temp.Fields[0].AsString then |
dm.temp.Next; |
begin |
vopr.e2.Text:=dm.temp.Fields[1].AsString; |
vopr.rb3.Checked:=true; |
if tmp=dm.temp.Fields[0].AsString then |
end; |
begin |
dm.temp.Next; |
vopr.rb2.Checked:=true; |
vopr.e4.Text:=dm.temp.Fields[1].AsString; |
end; |
if tmp=dm.temp.Fields[0].AsString then |
dm.temp.Next; |
begin |
vopr.e3.Text:=dm.temp.Fields[1].AsString; |
vopr.rb4.Checked:=true; |
if tmp=dm.temp.Fields[0].AsString then |
end; |
begin |
end |
vopr.rb3.Checked:=true; |
else |
end; |
begin |
dm.temp.Next; |
|
vopr.e4.Text:=dm.temp.Fields[1].AsString; |
end; |
if tmp=dm.temp.Fields[0].AsString then |
end; |
begin |
|
vopr.rb4.Checked:=true; |
procedure Tvopr.FormCloseQuery(Sender: TObject; var |
end; |
CanClose: Boolean); |
end |
begin |
else |
kolO:=0; |
begin |
if id_kl<>'0' then |
vopr.rb1.Checked:=false; |
begin |
vopr.rb2.Checked:=false; |
dm.COM.CommandText:='DELETE * FROM temp WHERE |
vopr.rb3.Checked:=false; |
kl='+id_kl+''; |
vopr.rb4.Checked:=false; |
dm.COM.Execute; |
m.Lines.Clear; |
halt; |
|
end; |
vopr.m.Lines.Add(dm.vop.Fields[1].AsString); |
close; |
tmp:=dm.vop.Fields[2].AsString; |
end; |
dm.temp.Active:=false; |
procedure Tvopr.FormShow(Sender: TObject); |
dm.temp.CommandText:='SELECT * FROM otvet WHERE |
begin |
id_vp_o = '+dm.vop.Fields[0].AsString+' ORDER BY id_o'; |
klPo:=0; |
dm.temp.Active:=true; |
vsego:=1; |
|
end; |
vopr.e1.text:=dm.temp.Fields[1].AsString; |
|
dm.temp.Next; |
end. |
vopr.e2.Text:=dm.temp.Fields[1].AsString; |
|
dm.temp.Next; |
unit FvidP; |
vopr.e3.Text:=dm.temp.Fields[1].AsString; |
|
dm.temp.Next; |
interface |
vopr.e4.Text:=dm.temp.Fields[1].AsString; |
|
end; |
uses |
end; |
Windows, Messages, SysUtils, Variants, Classes, Graphics, |
|
Controls, Forms, |
procedure Tvopr.ToolButton8Click(Sender: TObject); |
Dialogs, StdCtrls, Buttons, ComCtrls,dateutils; |
begin |
|
dm.vop.Prior; |
type |
if klient.Visible=false then |
TVidP = class(TForm) |
begin |
cb: TComboBox; |
vopr.rb1.Checked:=false; |
Label1: TLabel; |
vopr.rb2.Checked:=false; |
dtp1: TDateTimePicker; |
vopr.rb3.Checked:=false; |
Label2: TLabel; |
vopr.rb4.Checked:=false; |
BitBtn1: TBitBtn; |
m.Lines.Clear; |
BitBtn2: TBitBtn; |
|
procedure BitBtn1Click(Sender: TObject); |
vopr.m.Lines.Add(dm.vop.Fields[1].AsString); |
|
|
29 |
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
private
{Private declarations } public
{Public declarations } end;
var
VidP: TVidP;
implementation
uses datm;
{$R *.dfm}
procedure TVidP.BitBtn1Click(Sender: TObject); begin
if cb.Text='' then showmessage('Введена не вся информация') else
begin
dm.COM.CommandText:='Insert into prava (id_kl_pr,k_pr,dataV_pr,dataO_pr) values ('+dm.Kl.Fields[0].AsString+',"'+cb.Text+'","'+datetostr(dtp1.Date)+'","'+ datetostr(incyear(dtp1.Date,10))+'")';
dm.COM.Execute;
closequery;
end;
end;
procedure TVidP.FormClose(Sender: TObject; var Action: TCloseAction);
begin close; end;
procedure TVidP.BitBtn2Click(Sender: TObject); begin
closequery;
end;
procedure TVidP.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin close; end;
end.
unit Fsprav;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids;
type
TSprav = class(TForm) DBGrid1: TDBGrid;
private
{Private declarations } public
{Public declarations } end;
var
Sprav: TSprav;
implementation uses datm;
{$R *.dfm}
end.
unit fklient; interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, Menus, StdCtrls, ComCtrls,
ToolWin;
type
TKlient = class(TForm) DBGrid1: TDBGrid; PopupMenu1: TPopupMenu; N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem; ToolBar1: TToolBar; ToolButton1: TToolButton; e1: TEdit;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton; N4: TMenuItem;
N7: TMenuItem;
procedure N1Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure e1Change(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
procedure N2Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N7Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
Klient: TKlient;
implementation
uses datm,fedkl, fvopr, FvidP; {$R *.dfm}
procedure TKlient.N1Click(Sender: TObject); begin
ind:=0;
edkl.ShowModal;
end;
procedure TKlient.N3Click(Sender: TObject); begin
{---------!!!-----------} dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM klient WHERE (id_kl = '+dm.Kl.Fields[0].AsString+') AND (log_kl = TRUE)';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then begin
showmessage('Запись используется другим пользователем');
exit; end
else begin
dm.COM.CommandText:='UPDATE KLIENT SET log_kl =TRUE WHERE id_kl = '+dm.Kl.Fields[0].AsString+'';
{dm.COM.CommandText:='Insert into temp (kl) values ('+id_kl+')';}
dm.COM.Execute;
tmp:=dm.temp.Fields[0].AsString;
30
|
end; |
|
{--------- |
!!!----------- |
} |
ind:=1;
edkl.e1.Text:=dm.Kl.Fields[1].AsString;
edkl.e2.Text:=dm.Kl.Fields[2].AsString;
edkl.e3.Text:=dm.Kl.Fields[3].AsString;
edkl.e4.Text:=dm.Kl.Fields[4].AsString;
edkl.dtp1.Date:=dm.Kl.Fields[5].AsDateTime;
edkl.dtp2.Date:=dm.Kl.Fields[6].AsDateTime;
edkl.ShowModal;
end;
procedure TKlient.e1Change(Sender: TObject); begin
dm.Kl.Active:=false;
dm.Kl.CommandText:='SELECT * FROM KLIENT WHERE fio_kl like "'+e1.Text+'%"';
dm.Kl.Active:=true;
end;
procedure TKlient.ToolButton3Click(Sender: TObject); begin
dm.Kl.Active:=false;
dm.Kl.CommandText:='SELECT * FROM KLIENT WHERE fio_kl like "'+e1.Text+'%" ORDER BY dataR_kl';
dm.Kl.Active:=true;
end;
procedure TKlient.ToolButton5Click(Sender: TObject); begin
dm.Kl.Active:=false;
dm.Kl.CommandText:='SELECT * FROM KLIENT WHERE fio_kl like "'+e1.Text+'%" ORDER BY dataR_kl DESC';
dm.Kl.Active:=true;
end;
procedure TKlient.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin dm.Kl.Active:=false; e1.Text:='';
close;
end;
procedure TKlient.N2Click(Sender: TObject); begin
{---------!!!-----------} dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM klient WHERE (id_kl = '+id_kl+') AND (log_kl = TRUE)';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then begin
showmessage('Информация о Вас в данный момент редактируется');
exit;
end; {---------!!!-----------}
if application.MessageBox('Вы хотите удалить запись?','Удаление', mb_yesno+mb_iconquestion)=idyes then
begin
dm.COM.CommandText:='DELETE * FROM klient WHERE id_kl = '+dm.Kl.Fields[0].AsString+'';
dm.COM.Execute;
dm.Kl.Requery(); end
end;
procedure TKlient.N5Click(Sender: TObject); begin
{---------!!!-----------} dm.temp.Active:=false;
dm.temp.CommandText:='SELECT * FROM temp WHERE (kl = '+dm.Kl.Fields[0].AsString+')';
dm.temp.Active:=true;
if dm.temp.RecordCount>0 then begin
showmessage('Запись занята другим пользователем'); exit;
end else
begin
dm.COM.CommandText:='Insert into temp (kl) values ('+dm.Kl.Fields[0].AsString+')';
dm.COM.Execute;
tmp:=dm.temp.Fields[0].AsString;
end; {---------!!!-----------}
vopr.ToolButton8.Visible:=false;
end;
procedure TKlient.N7Click(Sender: TObject); begin
if dm.Kl.Fields[7].AsBoolean=false then begin
showmessage('Теория не сдана'); exit;
end;
vidP.ShowModal;
end;
end.
unit fedkl;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls;
type
Tedkl = class(TForm) GroupBox1: TGroupBox; e1: TEdit;
Label1: TLabel;
Label2: TLabel; e2: TEdit;
GroupBox2: TGroupBox; e3: TEdit;
e4: TEdit; Label3: TLabel; Label4: TLabel;
dtp1: TDateTimePicker; dtp2: TDateTimePicker; Label5: TLabel; Label6: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
procedure FormCloseQuery(Sender: TObject; var CanClose:
Boolean);
procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
edkl: Tedkl;
implementation uses datm;
{$R *.dfm}
procedure Tedkl.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
dm.COM.CommandText:='UPDATE klient SET log_kl=FALSE WHERE id_kl='+dm.Kl.Fields[0].AsString+'';
dm.COM.Execute;
tmp:='0';
e1.Text:='';
31