Курсовые работы / ПРИС П _28
.pdfРисунок 1.25 – Результаты проверки в исключительных условиях
Рассмотрим проверку в экстремальных условиях на отчете «Стоимость техосмотра». Попытаемся ввести конечную дату меньше начальной. Результаты проверки представлены на рисунке 1.26-1.27.
Рисунок 1.26 – Результаты проверки в экстремальных условиях
Рисунок 1.27
22
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы была проанализирована предметная область – станция технического осмотра автомобилей. Была построена функциональная модель по стандарту IDEF0 и методологии SADT, которая дополнена диаграммой описания логики взаимодействия информационных потоков
IDEF3, а затем и модели данных «сущность-связь» по стандарту IDEF1X. На основе полученных результатов был осуществлен выбор структур таблиц базы данных с учетом вопросов, связанных с нормализацией баз, а затем и непосредственное создание их структуры.
Результатом курсового проекта стала информационная система для автоматизации работы станции ТО, разработанная на основе применения структурно-функционального подхода [20].
Все пункты технического задания реализованы, что свидетельствует о том,
что все поставленные задачи решены, цель достигнута.
23
СПИСОК ИСПОЛЬЗОВАННЫ ИСТОЧНИКОВ
1 Абрамов Г. В., Медведкова И. Е., Коробова Л. А. Проектирование информационных систем [электронный ресурс]. Воронеж, Воронежский Государственный университет инженерных технологий, 2012. 172 с. Режим доступа:
http://biblioclub.ru/index.php?page=book_red&id=141626&sr=1
2 Вендров А. М. Проектирование программного обеспечения экономических информационных систем: Учебник для студентов вузов М. : Финансы и статистика,
2013. 352 с.
3 Ревунков Г. И. Проектирование баз данных [электронный ресурс]: учебное пособие. М. : МГТУ им. Н.Э. Баумана (Московский государственный технический
университет имени Н.Э. Баумана), 2011. 20 с. Режим доступа:
http://e.lanbook.com/books/element.php?pl1_id=52390
4 Карпова Т. С. Базы данных: Модели, разработка, реализация. СПб: Питер,
2011. 253 с.
5 Вендров А. М. CASE технологии. Современные методы и средства
проектирования информационных систем. М. : Финансы и статистика, 2012. 254 с.
6 Вендров А. М. Современные технологии анализа и проектирования информационных систем [Электронный ресурс] // Центр Информационных
Технологий: Режим доступа: URL http://www.citmgu.ru/
7 Арутюнов, В. В. Теория экономических информационных систем. М. :
Синтег, 2011. 360 с.
8 Проектирование информационных систем [Электронный ресурс]: Режим
доступа: URL http://www.kgau.ru/istiki/umk/pis/pis.htm
9 Хоменко А. Д. Базы данных. Учебник для вузов. М. : Синтег, 2012. 262 с.
10 Елманова Н. Корпоративные СУБД – 2011 [Электронный ресурс]//
КомпьютерПресс: |
Режим |
доступа: |
URL |
http://www.compress.ru/article.aspx?id=20548&iid=939 |
|
|
24
11 Богданова С. В., Ермакова А. Н. Информационные технологии: учебное пособие для студентов вузов [электронный ресурс]: Ставрополь: Сервисшкола, 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.bscconsulting.ru/services/business_consulting/business_processes_definition/
14 Уроки по работе с Microsoft Visio 2003 [Электронный ресурс]: Режим доступа: URL http://blog.engexp.ru/training/uroki-po-ms-visio/
15 Блог программиста [электронный ресурс]: Построение блок схем. Режим доступа: URL: http://pro-prof.com/archives/1462
16 Дарахвелидзе П. Г. Программирование в Delphi 7. Спб. : БХВ-Петербург, 2013. 784 с.
17 Осипов Д.Л. Базы данных и Delphi. Спб. : БХВ-Петербург, 2011. 854 с.
18 Проектная деятельность на уроке с использованием информационных технологий [электронный ресурс]: Проектная деятельность – Режим доступа: URL http://window.edu.ru/window/library/pdf2txt?p_id=26689
19 Нечаев Д. Ю., Чекмарев Ю. В. Надежность информационных систем
[электронный ресурс]: учебное пособие. М. : Изд. «ДМК Пресс» 2012. 64 с. Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=3030
20 Кузнецов И.Н. Рефераты, курсовые работы и дипломное проектирование.
Методика подготовки и оформления. М. : Изд-во Дашков и Ко, 2012. 340 с.
25
ПРИЛОЖЕНИЕ А Функциональная модель по стандарту IDEF0
Рисунок А.1 – Контекстная диаграмма
Рисунок А.2 – Диаграмма IDEF0 первого уровня
26
Рисунок А.3 – Диаграмма IDEF3 третьего уровня «Смена пароля»
27
ПРИЛОЖЕНИЕ Б
Свойства полей
Рисунок Б.1 – Свойства полей таблицы «Avto»
Рисунок Б.2 – Свойства полей таблицы «Marka»
Рисунок Б.3 – Свойства полей таблицы «Osmotr»
Рисунок Б.4 – Свойства полей таблицы «POtkaz»
Рисунок Б.5 – Свойства полей таблицы «StOsmotra»
Рисунок Б.6 – Свойства полей таблицы «Vlad»
Рисунок Б.7 – Свойства полей таблицы «Pass»
28
ПРИЛОЖЕНИЕ В
Листинг программы
program TexOsm;
uses Forms,
Pass in 'Pass.pas' {FPass}, main in 'main.pas' {Fmain},
datm in 'datm.pas' {dm: TDataModule}, MArka in 'MArka.pas' {FMArka}, aMarka in 'aMarka.pas' {FaMarka}, Vlad in 'Vlad.pas' {FVlad},
aVlad in 'aVlad.pas' {FaVlad}, Potkaz in 'Potkaz.pas' {FPotkaz}, apOtkaz in 'apOtkaz.pas' {FapOtkaz},
StOsmotra in 'StOsmotra.pas' {FStOsmotra}, aStOsmotra in 'aStOsmotra.pas' {FaStOsmotra}, avto in 'avto.pas' {Favto},
aAvto in 'aAvto.pas' {FaAvto}, aOsmotr in 'aOsmotr.pas' {FaOsmotr}, Osmotr1 in 'Osmotr1.pas' {FOsmotr1}, Osmotr2 in 'Osmotr2.pas' {FOsmotr2}, chPass in 'chPass.pas' {FchPass},
ot1 in 'ot1.pas' {Fot1}, ot2 in 'ot2.pas' {Fot2};
{$R *.res}
begin Application.Initialize;
Application.Title := 'Технический осмотр'; Application.CreateForm(TFPass, FPass); Application.CreateForm(TFmain, Fmain); Application.CreateForm(Tdm, dm); Application.CreateForm(TFMArka, FMArka); Application.CreateForm(TFaMarka, FaMarka); Application.CreateForm(TFVlad, FVlad); Application.CreateForm(TFaVlad, FaVlad); Application.CreateForm(TFPotkaz, FPotkaz); Application.CreateForm(TFapOtkaz, FapOtkaz); Application.CreateForm(TFStOsmotra, FStOsmotra); Application.CreateForm(TFaStOsmotra,
FaStOsmotra);
Application.CreateForm(TFavto, Favto); Application.CreateForm(TFaAvto, FaAvto); Application.CreateForm(TFaOsmotr, FaOsmotr); Application.CreateForm(TFOsmotr1, FOsmotr1); Application.CreateForm(TFOsmotr2, FOsmotr2); Application.CreateForm(TFchPass, FchPass); Application.CreateForm(TFot1, Fot1); Application.CreateForm(TFot2, Fot2); Application.Run;
unit Pass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,inifiles;
type
TFPass = class(TForm) Panel1: TPanel;
cb: TComboBox; Label1: TLabel; e1: TEdit; Label2: TLabel; Button1: TButton; Button2: TButton;
procedure cbKeyPress(Sender: TObject; var Key:
Char);
procedure FormShow(Sender: TObject);
29
procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
FPass: TFPass;
implementation
uses datm, main, Potkaz, StOsmotra;
{$R *.dfm}
procedure TFPass.cbKeyPress(Sender: TObject; var Key: Char);
begin key:=#0; end;
procedure TFPass.FormShow(Sender: TObject); var iniFile:Tinifile;
DBP:string; begin
fpass.Caption:=application.Title;
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.in i'); // загрузка из фала настроек пути к базе
DBP := IniFile.ReadString('Options', 'DBPath', ''); IniFile.Free;
if fileexists(DBP)=false then begin
if application.MessageBox('Хотите указать путь к БД самостоятельно?','БД не найдена',mb_yesno+mb_iconquestion)=idyes then
begin
dm.od.InitialDir:=ExtractFilePath(Application.ExeName); if dm.od.Execute then
begin
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'options.in i');
IniFile.WriteString('Options', 'DBPath', dm.od.FileName);
IniFile.Free;
dbp:=dm.od.FileName;
end;
end;
end;
dm.Ado.Connected:=false;
dm.Ado.ConnectionString:='Provider=Microsoft.Jet.OL EDB.4.0;Data Source='+DBP+';Persist Security Info=False';
dm.Ado.Connected:=true;
if dm.Temp.Active=true then dm.Temp.Active:=false; dm.Temp.CommandText:='SELECT login FROM
Pass';
dm.Temp.Active:=true;
While not dm.Temp.Eof do begin
cb.Items.Add(dm.Temp.Fields[0].AsString);
dm.Temp.Next;
end;
end;
procedure TFPass.Button2Click(Sender: TObject); begin
halt;
end;
procedure TFPass.Button1Click(Sender: TObject); begin
if cb.Text='' then begin
showmessage('Не выбран пользователь'); exit;
end;
if (e1.Text='') and (cb.Text <> 'Гость') then begin
showmessage('Вы не ввели пароль'); exit;
end;
if cb.Text<>'Гость' then begin dm.Temp.Active:=false;
dm.Temp.CommandText:='Select r from pass WHERE (login="'+cb.Text+'") and (pass="'+e1.Text+'")';
dm.Temp.Active:=true;
if dm.Temp.RecordCount>0 then begin
if dm.Temp.Fields[0].AsInteger=0 then begin
fpass.Hide;
fmain.ShowModal; end
else if dm.Temp.Fields[0].AsInteger=1 then begin
fmain.N1.Visible:=false;
fmain.N4.Visible:=false;
fpass.Hide;
fmain.ShowModal;
end; end
else begin
showmessage('Ошибка в имени пользователя и/или пароле');
end; end
else begin
fmain.N15.Visible:=false;
fmain.N4.Visible:=false;
fmain.N12.Visible:=false;
fmain.N2.Visible:=false;
fmain.N9.Visible:=false;
fmain.N7.Visible:=false;
fmain.N8.Visible:=false;
fpotkaz.Button1.Enabled:=false;
fpotkaz.Button2.Enabled:=false;
fpotkaz.Button3.Enabled:=false;
fstosmotra.Button1.Enabled:=false;
fstosmotra.Button2.Enabled:=false;
fstosmotra.Button3.Enabled:=false;
fpass.Hide;
fmain.ShowModal;
end;
end;
unit aAvto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Spin, StdCtrls, ExtCtrls,dateutils;
type
TFaAvto = class(TForm) Panel1: TPanel; Button1: TButton; Button2: TButton; Label1: TLabel;
cb1: TComboBox;
Label2: TLabel; cb2: TComboBox; Label3: TLabel; e1: TEdit;
Label4: TLabel; se1: TSpinEdit; Label5: TLabel;
dtp1: TDateTimePicker; Label6: TLabel;
dtp2: TDateTimePicker; ch1: TCheckBox;
procedure cb1KeyPress(Sender: TObject; var Key:
Char);
procedure e1KeyPress(Sender: TObject; var Key:
Char);
procedure Button2Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure cb1Change(Sender: TObject); procedure cb2Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ch1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{Private declarations } public
{Public declarations } end;
var
FaAvto: TFaAvto;
implementation
uses datm, main;
{$R *.dfm}
procedure TFaAvto.cb1KeyPress(Sender: TObject; var Key: Char);
begin key:=#0; end;
procedure TFaAvto.e1KeyPress(Sender: TObject; var Key: Char);
begin
if length(e1.Text)=0 then begin
if not (Key in [#8,'а'..'я']) then key:=#0; end
else if (length(e1.Text)>=1) and (length(e1.Text)<=3)
then
begin
if not (Key in [#8,'0'..'9']) then key:=#0; end
else if (length(e1.Text)>=4) and (length(e1.Text)<=5)
then
begin
if not (Key in [#8,'а'..'я']) then key:=#0; end
else if (length(e1.Text)>=6) and (length(e1.Text)<=8)
then
begin
if not (Key in [#8,'0'..'9']) then key:=#0; end;
end;
procedure TFaAvto.Button2Click(Sender: TObject); begin
closequery;
end;
procedure TFaAvto.FormShow(Sender: TObject); begin
if tm=0 then begin dtp1.Date:=date;
30
dtp2.Date:=date;
end;
end;
procedure TFaAvto.cb1Change(Sender: TObject); begin
dm.temp.Active:=false; dm.temp.CommandText:='Select id_vl from vlad where
(([fio_vl]&", "&[sp_vl]&"-"&[np_vl]) = "'+cb1.text+'")'; dm.temp.Active:=true; id_vl:=dm.temp.fields[0].asstring;
end;
procedure TFaAvto.cb2Change(Sender: TObject); begin
dm.temp.Active:=false; dm.temp.CommandText:='Select id_mr from marka
where (nazv_mr = "'+cb2.text+'")'; dm.temp.Active:=true; id_mr:=dm.temp.fields[0].asstring; end;
procedure TFaAvto.Button1Click(Sender: TObject); var tmp1,tmp2:string;
tmp3,tmp4:string;
yb:integer; begin
if (e1.Text='') or (cb1.Text='') or (cb2.Text='') then showmessage('Вы не заполнили одно или несколько полей')
else begin
if length(e1.Text)<8 then begin
showmessage('Гос. номер состоит минимум из 8ми
символов');
exit;
end;
if se1.Value>yearof(date) then begin
showmessage('Год выпуска автомобиля не может быть больше текущего');
exit;
end;
if yearof(dtp1.Date)<se1.Value then begin
showmessage('Год выпуска не может быть больше года постановки автомобиля на учет');
exit;
end;
if ch1.Checked=true then begin
tmp1:=',dataplan_av';tmp2:=',"'+datetostr(incday(dtp1.Date,30))+'" ';
tmp3:=',dataplan_av="'+datetostr(incday(dtp1.Date,30))+'"' end
else begin
if dtp1.Date>dtp2.Date then begin
showmessage('Ошибка в последовательности
дат');
exit;
end;
yb:=yearsbetween(dtp1.Date,strtodate('31.12.'+se1.text)); tmp3:=',datapto_av="'+datetostr(dtp2.Date)+'"' ; if yb<3 then
begin tmp2:=',"'+datetostr(incyear(dtp2.Date,3))+'"';
tmp3:=tmp3+',dataplan_av="'+datetostr(incyear(dtp2.Date,3))+'"'; end
else if (yb>=3) and (yb<5) then begin
tmp2:=',"'+datetostr(incyear(dtp2.Date,2))+'"';
tmp3:=tmp3+',dataplan_av="'+datetostr(incyear(dtp2.Date,2))+'"'; end
else begin
tmp2:=',"'+datetostr(incyear(dtp2.Date,1))+'"';
tmp3:=tmp3+',dataplan_av="'+datetostr(incyear(dtp2.Date,1))+'"'; end;
tmp1:=',dataplan_av,datapto_av'; tmp2:=tmp2+',"'+datetostr(dtp2.Date)+'"'; end;
if tm=0 then begin
dm.temp.Active:=false; dm.temp.CommandText:='Select id_av from avto
where (gosN_av="'+e1.Text+'")'; dm.temp.Active:=true;
if dm.temp.RecordCount>0 then showmessage('Подобная запись уже существует')
else begin
dm.com.CommandText:='Insert into avto (id_vl_av,id_mr_av,gosN_av,god_av,datapu_av'+tmp1+') values ('+id_vl+','+id_mr+',"'+e1.Text+'",'+se1.Text+',"'+datetostr(dtp1.D ate)+'"'+tmp2+')';
dm.com.Execute;
showmessage('Запись успешно добавлена'); dm.av.Requery();
closequery;
end; end
else begin
dm.temp.Active:=false; dm.temp.CommandText:='Select id_av from avto
where (gosN_av="'+e1.Text+'")'; dm.temp.Active:=true;
if (dm.temp.RecordCount>0) and (tmp<>dm.temp.Fields[0].asstring) then showmessage('Подобная запись уже существует')
else begin
dm.com.CommandText:='Update avto SET id_vl_av="'+id_vl+'",id_mr_av="'+id_mr+'",gosN_av="'+e1.Text+ '",god_av="'+se1.Text+'",datapu_av="'+datetostr(dtp1.Date)+'"'+t mp3+' WHERE (id_av='+tmp+')';
dm.com.Execute;
showmessage('Запись успешно изменена'); dm.av.Requery();
dm.av.recno:=ind;
closequery;
end;
end;
end;
end;
procedure TFaAvto.ch1Click(Sender: TObject); begin
if ch1.Checked=true then dtp2.Enabled:=false else dtp2.Enabled:=true;
end;
procedure TFaAvto.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin e1.Clear;cb1.Clear;cb2.Clear;se1.Value:=2011; if tm=1 then
begin
dm.com.CommandText:='Update avto set log_av=FALSE WHERE (id_av='+tmp+')';
dm.com.Execute;
end;
close;
31