Диплом: Автоматизация регистрации и мониторинга Заявок от контрагентов в ООО «СВ Логистика»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
97
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. ГОСТ 34.601-90 Автоматизированные системы. Стадии создания.
2. Агапов В. Профессиональная разработка программного обеспечения. –
Символ-Плюс, 2013. – 240 с.
3. Александров Д. Инструментальные средства информационного
менеджмента. CASE-технологии и распределенные информационные
системы. – М.: Финансы и статистика, 2011. – 224 с.
4. Дубейковский В.И. Практика функционального моделирования с AllFusion
Process Modeler 4.1. Где? Зачем? Как? Москва. «ДИАЛОГ-МИФИ». 2014.
5. Емельянова Н. Проектирование информационных систем. – М.: Форум, 2014.
– 432 с.
6. Калянов Г.Н. Моделирование, анализ, реорганизация и автоматизация
бизнес-процессов / Г. Н. Калянов. – М.: Финансы и статистика, 2016. – 267 c.
7. Мандел Т. Дизайн интерфейсов, ДМК, 2015 – 410 с.
8. Пушников, А.Ю. Введение в системы управления базами данных. Часть 1.
Реляционная модель данных [Текст]: Учеб. пос. / А.Ю. Пушников. – Уфа:
Изд-е Башкирского ун-та, 1999. – 108 с.
9. Советов Б.Я. Архитектура информационных систем: учебник для студ.
учреждений высш. проф. образования. – М.: Издательский центр
«Академия», 2012. – 288 с.
10. Тидвелл Д. Разработка пользовательских интерфейсов. – изд. «Питер», 2008.
– 416 с, ISBN 978-5-91180-073-4
11. Анализ организационной структуры предприятия [Электронный ресурс]. –
Режим доступа: http://www.fox-manager.ru/analiz-organizacionnoj-struktury-
predpriyatiya.html – Загл. с экрана.
12. Информационная система [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/ Информационная_система – Загл. с экрана.
13. Проектирование и разработка автоматизированных, информационных и
аналитических систем [Электронный ресурс]. – Режим доступа:
http://www.info-system.ru/designing/methodology/dfd/dfd_theory_dfd.html
98
14. Проектирование реляционных баз данных с использованием семантических
моделей: ER-диаграммы [Электронный ресурс]. – Режим доступа:
http://datasql.ru/gotorelbd/9.htm. Загл. с экрана.
15. PAYDOX Электронный документооборот и совместная работа
[Электронный ресурс]. – Режим доступа: http://www.paydox.ru/
16. Bitrix24: Что такое CRM-система [Электронный ресурс]. – Режим доступа:
https://www.bitrix24.ru/articles/crm_what_is.php
17. WireCRM отзывы, инструкция и подводные камни [Электронный ресурс].
– Режим доступа: https://crm-systems.info/wirecrm/
18. Delta CRM Комплексное решение по автоматизации бизнес-процесса
[Электронный ресурс]. – Режим доступа: http://deltacrm.ru/special_sept/
19. Система amoCRM [Электронный ресурс]. – Режим доступа:
https://www.amocrm.ru/
99
ПРИЛОЖЕНИЕ А − СКРИПТ ИНИЦИАЛИЗАЦИИ БАЗЫ ДАННЫХ
DROP DATABASE IF EXISTS sv_logistika;
CREATE DATABASE IF NOT EXISTS sv_logistika;
USE sv_logistika;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS contracts;
DROP TABLE IF EXISTS contractors;
DROP TABLE IF EXISTS contract_statuses;
DROP TABLE IF EXISTS contractor_statuses;
DROP TABLE IF EXISTS services;
DROP TABLE IF EXISTS contractor_types;
CREATE TABLE contractor_statuses
(
id_contr_st INTEGER NOT NULL AUTO_INCREMENT,
status VARCHAR(255) NULL,
info VARCHAR(255) NULL,
PRIMARY KEY (id_contr_st)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
CREATE TABLE contractor_types
(
id_contr_ty INTEGER NOT NULL AUTO_INCREMENT,
type VARCHAR(255) NULL,
info VARCHAR(255) NULL,
PRIMARY KEY (id_contr_ty)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
CREATE TABLE contractors
(
id_contr INTEGER NOT NULL AUTO_INCREMENT,
id_contr_ty INTEGER NOT NULL,
id_contr_st INTEGER NOT NULL,
fio VARCHAR(255) NULL,
passport VARCHAR(255) NULL,
tel VARCHAR(255) NULL,
address VARCHAR(255) NULL,
info VARCHAR(255) NULL,
org VARCHAR(255) NULL,
email VARCHAR(255) NULL,
PRIMARY KEY (id_contr)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
CREATE TABLE contract_statuses
100
(
id_contract_st INTEGER NOT NULL AUTO_INCREMENT,
status VARCHAR(255) NULL,
info VARCHAR(255) NULL,
PRIMARY KEY (id_contract_st)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
CREATE TABLE contracts
(
id_contract INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NULL,
id_service INTEGER NOT NULL,
date_time VARCHAR(255) NULL,
date_1 VARCHAR(255) NULL,
date_2 VARCHAR(255) NULL,
id_contract_st INTEGER NOT NULL,
description VARCHAR(255) NULL,
price VARCHAR(255) NULL,
info VARCHAR(255) NULL,
id_contr INTEGER NOT NULL,
PRIMARY KEY (id_contract)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
CREATE TABLE services
(
id_service INTEGER NOT NULL AUTO_INCREMENT,
service VARCHAR(255) NULL,
info VARCHAR(255) NULL,
PRIMARY KEY (id_service)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
CREATE TABLE users
(
id_user INTEGER NOT NULL AUTO_INCREMENT,
fio VARCHAR(255) NULL,
login VARCHAR(255) NULL,
password VARCHAR(255) NULL,
PRIMARY KEY (id_user)
) ENGINE=innodb DEFAULT CHARSET=utf8
;
SET autocommit=1;
101
ПРИЛОЖЕНИЕ Б − ЛИСТИНГИ ПРОГРАММНЫХ МОДУЛЕЙ
Модуль учета заявок/договоров контрагентов
unit Unit4_contracts;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Grids, DBGrids, ExtCtrls,
Generics.Collections;
type
MyDict = TDictionary<Integer, Integer>;
TForm4 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
DBGrid1: TDBGrid;
Button4: TButton;
Label9: TLabel;
Label10: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Label11: TLabel;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure clearData;
102
end;
var
Form4: TForm4;
dic1, dic2, dic3: MyDict;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject); // Сохранить
var
sql: string;
par: array[1..14] of string;
begin
if(Form4.DBGrid1.DataSource.DataSet.Fields.Count > 0) then begin
par[1] := Form4.DBGrid1.DataSource.DataSet.Fields[0].AsString;
par[2] := Form4.Edit1.Text;
par[3] := Form4.Edit2.Text;
par[4] := Form4.Edit3.Text;
par[5] := Form4.Edit4.Text;
par[6] := Form4.Edit5.Text;
par[7] := Form4.Edit6.Text;
par[8] := Form4.Edit7.Text;
par[9] := IntToStr(dic1[Form4.ComboBox1.ItemIndex]);
par[10] := '';
par[11] := IntToStr(dic2[Form4.ComboBox2.ItemIndex]);
par[12] := '';
par[13] := IntToStr(dic3[Form4.ComboBox3.ItemIndex]);
par[14] := '';
sql := 'update contracts set name='''+par[2]+''', price='''+par[3]+''', description='''+par[4]+''',
date_time='''+par[5]+''', date_1='''+par[6]+''', date_2='''+par[7]+''', info='''+par[8]+''',
id_service='''+par[9]+''', id_contract_st='''+par[11]+''', id_contr='''+par[13]+''' where
id_contr='+par[1];
//ShowMessage(sql);
Form1.execSQL(sql);
Form1.loadContracts;
Form4.clearData;
end;
end;
procedure TForm4.Button2Click(Sender: TObject); // Новая
var
sql: string;
par: array[1..14] of string;
begin
if(Form4.DBGrid1.DataSource.DataSet.Fields.Count > 0) then begin
par[1] := Form4.DBGrid1.DataSource.DataSet.Fields[0].AsString;
par[2] := Form4.Edit1.Text;
par[3] := Form4.Edit2.Text;
par[4] := Form4.Edit3.Text;
par[5] := Form4.Edit4.Text;
par[6] := Form4.Edit5.Text;
par[7] := Form4.Edit6.Text;
par[8] := Form4.Edit7.Text;
par[9] := IntToStr(dic1[Form4.ComboBox1.ItemIndex]);
103
par[10] := '';
par[11] := IntToStr(dic2[Form4.ComboBox2.ItemIndex]);
par[12] := '';
par[13] := IntToStr(dic3[Form4.ComboBox3.ItemIndex]);
par[14] := '';
sql := 'insert into
contracts(name,price,description,date_time,date_1,date_2,info,id_service,id_contract_st,id_c
ontr) values('''+par[2]+''',
'''+par[3]+''','''+par[4]+''','''+par[5]+''','''+par[6]+''','''+par[7]+''','''+par[8]+''','''+par[9]+''','''+par[11]+'
'','''+par[13]+''');';
ShowMessage(sql);
Form1.execSQL(sql);
Form1.loadContracts;
Form4.clearData;
end;
end;
procedure TForm4.Button3Click(Sender: TObject); // Удалить
var
sql,id: string;
begin
if MessageDlg('Вы действительно хотите удалить запись?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes then begin
if(Form4.DBGrid1.DataSource.DataSet.Fields.Count > 0) then begin
id := Form4.DBGrid1.DataSource.DataSet.Fields[0].AsString;
sql := 'delete from contracts where id_contr='+id;
Form1.execSQL(sql);
Form1.loadContracts;
Form4.clearData;
end;
end;
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
Form4.clearData;
end;
procedure TForm4.DBGrid1CellClick(Column: TColumn);
begin
Form4.Edit1.Text := Form4.DBGrid1.DataSource.DataSet.Fields[1].AsString;
Form4.Edit2.Text := Form4.DBGrid1.DataSource.DataSet.Fields[2].AsString;
Form4.Edit3.Text := Form4.DBGrid1.DataSource.DataSet.Fields[3].AsString;
Form4.Edit4.Text := Form4.DBGrid1.DataSource.DataSet.Fields[4].AsString;
Form4.Edit5.Text := Form4.DBGrid1.DataSource.DataSet.Fields[5].AsString;
Form4.Edit6.Text := Form4.DBGrid1.DataSource.DataSet.Fields[6].AsString;
Form4.Edit7.Text := Form4.DBGrid1.DataSource.DataSet.Fields[7].AsString;
Form4.ComboBox1.ItemIndex :=
Form1.getIndInComboByValue(Form4.DBGrid1.DataSource.DataSet.Fields[8].AsInteger,
dic1);
Form4.ComboBox2.ItemIndex :=
Form1.getIndInComboByValue(Form4.DBGrid1.DataSource.DataSet.Fields[10].AsInteger,
dic2);
Form4.ComboBox3.ItemIndex :=
Form1.getIndInComboByValue(Form4.DBGrid1.DataSource.DataSet.Fields[12].AsInteger,
dic3);
104
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
dic1 := MyDict.Create;
dic2 := MyDict.Create;
dic3 := MyDict.Create;
// Центровка
Form4.Top:=(Screen.WorkAreaHeight-Form4.Height) div 2;
if Form4.Top<0 then Form4.Top:=0; Form4.Left:=(Screen.WorkAreaWidth-Form4.Width) div
2;
if Form4.Left<0 then Form4.Left:=0;
end;
procedure TForm4.FormShow(Sender: TObject);
begin
Form1.showSQLinComboBox('select id_contract_st, status from contract_statuses', dic1,
Form4.ComboBox1);
Form1.showSQLinComboBox('select id_service, service from services', dic2,
Form4.ComboBox2);
Form1.showSQLinComboBox('select d.id_contr, concat(d.fio, '' ['', d.passport, ''] '', d.org, ''
('', e.type, '')'') as contractor from contractors as d inner join contractor_types as e on
d.id_contr_ty=e.id_contr_ty', dic3, Form4.ComboBox3);
Form4.Edit1.Clear;
Form4.Edit2.Clear;
Form4.Edit3.Clear;
Form4.Edit4.Clear;
Form4.Edit5.Clear;
Form4.Edit6.Clear;
Form4.Edit7.Clear;
end;
Процедура очистки данных формы
procedure TForm4.clearData;
begin
Form4.Edit1.Clear;
Form4.Edit2.Clear;
Form4.Edit3.Clear;
Form4.Edit4.Clear;
Form4.Edit5.Clear;
Form4.Edit6.Clear;
Form4.Edit7.Clear;
Form4.ComboBox1.ItemIndex := -1;
Form4.ComboBox2.ItemIndex := -1;
Form4.ComboBox3.ItemIndex := -1;
end;
end.
Процедура загрузки заявок/договоров
procedure TForm1.loadContracts;
var
ind, i: Integer;
sql: string;
strs, wdths: TStringList;
ADOQuery1: TADOQuery;
105
DataSource1: TDataSource;
begin
name := Trim(name);
if name = '' then Exit;
ADOQuery1 := TADOQuery.Create(nil);
DataSource1 := TDataSource.Create(nil);
Form4.DBGrid1.DataSource := DataSource1;
ADOQuery1.Active := False;
sql := 'select a.id_contr, a.name, a.price, a.description, a.date_time, a.date_1, a.date_2,
a.info, '+
'b.id_contract_st, b.status, c.id_service, c.service, ' +
'd.id_contr, concat(d.fio, '' ['', d.passport, ''] '', d.org, '' ('', e.type, '')'') as contractor ' +
'from contracts as a ' +
'inner join contract_statuses as b on a.id_contract_st=b.id_contract_st ' +
'inner join services as c on a.id_service=c.id_service ' +
'inner join contractors as d on a.id_contr=d.id_contr ' +
'inner join contractor_types as e on d.id_contr_ty=e.id_contr_ty';
ADOQuery1.SQL.Add(sql);
ADOQuery1.Connection := Form1.ADOConnection1;
DataSource1.DataSet := ADOQuery1;
DataSource1.AutoEdit := True;
ADOQuery1.Open();
DataSource1.Enabled := True;
strs := TStringList.Create;
strs.Delimiter := ';';
strs.StrictDelimiter := False;
strs.DelimitedText :=
'ID;№_договора;Стоимость;Комментарий;Дата_заключения;Начало_действия;Окончан
ие_действия;Информация;ID;Статус_договора;ID;Услуга;ID;Клиент';
wdths := TStringList.Create;
wdths.Delimiter := ';';
wdths.StrictDelimiter := False;
wdths.DelimitedText := '35;80;80;70;90;90;90;70;35;80;35;120;35;200';
for i := 0 to Form4.DBGrid1.Columns.Count − 1 do begin
Form4.DBGrid1.Columns[i].Title.caption := strs.Strings[i];
Form4.DBGrid1.Columns[i].Width := StrToInt(wdths.Strings[i]);
end;
Form4.Caption := 'Контракты';
Form4.DBGrid1.Columns[0].Visible := false;
Form4.DBGrid1.Columns[8].Visible := false;
Form4.DBGrid1.Columns[10].Visible := false;
Form4.DBGrid1.Columns[12].Visible := false;
end;
Процедура загрузки контрагентов
procedure TForm1.loadContractors;
var
ind, i: Integer;
sql: String;
106
strs, wdths: TStringList;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
begin
name := Trim(name);
if name = '' then Exit;
ADOQuery1 := TADOQuery.Create(nil);
DataSource1 := TDataSource.Create(nil);
Form1.DBGrid1.DataSource := DataSource1;
ADOQuery1.Active := False;
sql := 'select a.id_contr, b.id_contr_ty, b.type, c.id_contr_st, c.status, a.org, a.fio,
a.passport, a.tel, a.email, a.address, a.info ' +
'from contractors as a ' +
'inner join contractor_types as b on a.id_contr_ty=b.id_contr_ty ' +
'inner join contractor_statuses as c on a.id_contr_st=c.id_contr_st;';
ADOQuery1.SQL.Add(sql);
ADOQuery1.Connection := Form1.ADOConnection1;
DataSource1.DataSet := ADOQuery1;
DataSource1.AutoEdit := True;
ADOQuery1.Open();
DataSource1.Enabled := True;
strs := TStringList.Create;
strs.Delimiter := ';';
strs.StrictDelimiter := False;
strs.DelimitedText :=
'ID;ID;Тип_клиента;ID;Статус;Организация;ФИО;Паспорт;Телефон;Email;Адрес;Информ
ация';
wdths := TStringList.Create;
wdths.Delimiter := ';';
wdths.StrictDelimiter := False;
wdths.DelimitedText := '35;35;100;35;80;80;80;80;80;80;80;80';
if(Form1.DBGrid1.Columns.Count <> wdths.Count) then begin
Form1.DBGrid1.Columns.Clear;
for i := 0 to wdths.Count − 1 do begin
Form1.DBGrid1.Columns.Add;
end;
end;
for i := 0 to wdths.Count − 1 do begin
Form1.DBGrid1.Columns[i].Title.caption := strs.Strings[i];
Form1.DBGrid1.Columns[i].Width := StrToInt(wdths.Strings[i]);
end;
Form1.DBGrid1.Columns[0].Visible := false;
Form1.DBGrid1.Columns[1].Visible := false;
Form1.DBGrid1.Columns[3].Visible := false;
end;
Процедура очистки данных формы
procedure TForm1.clearData;
begin
Form1.Edit1.Clear;
Form1.Edit2.Clear;

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)