Файл: Проектирование реализации операций бизнес-процесса «Продажи» (Выбор комплекса задач автоматизации)..pdf
Добавлен: 05.04.2023
Просмотров: 222
Скачиваний: 2
СОДЕРЖАНИЕ
1.1. Выбор комплекса задач автоматизации
1.2. Характеристика существующих бизнес-процессов
1.3. Характеристика документооборота, возникающего при решении задачи
1.4. Обоснование проектных решений по информационному обеспечению
1.5. Обоснование проектных решений по программному обеспечению
2.1. Информационная модель и её описание
2.2. Характеристика нормативно-справочной, входной и оперативной информации
2.3. Характеристика результатной информации
2.4. Общие положения (дерево функций и сценарий диалога).
2.5. Характеристика базы данных
2.6. Структурная схема пакета (дерево вызова программных модулей)
2.7 Описание программных модулей
2.8. Контрольный пример реализации проекта и его описание
Данная технология связи с хранилищами данных завоевала особую популярность у разработчиков, благодаря своей универсальности – базовый набор интерфейсов OLE DB имеется в каждой современной операционной системе Windows. Поэтому для обеспечения доступа приложения к данным достаточно лишь правильно указать провайдер соединения ADO, после этого можно переносить созданный программные продукт на любой компьютер, где имеется требуемая база данных и, конечно, установленная ADO.
В палитре компонентов Delphi есть отдельная вкладка ADO, которая содержит набор компонентов, позволяющих создавать полноценные приложения БД, обращающиеся к данным через данную технологию.
Форма работы со справочниками системы работают напрямую с таблицами базы данных, поэтому для их работы используется компонент Adotable. Данный компонент представляет собой виртуальную копию таблицы базы данных, изменения в которой сразу передаются в связанную таблицу БД.
Для работы с заказами, а также их изменения используется компонент AdoQuery. Данный компонент предназначен для отправки запросов к базе данных и обработки ответов на них. В приложении используются 3 вида запросов:
- Запросы на выборку;
- Запросы на добавление данных;
- Запросы на обновление данных.
Для получения практически любых данных любого количества таблиц базы данных используется оператор запроса SELECT.
Этот оператор выбирает записи из базы данных и имеет самую сложную структуру, по сравнению с другими операторами языка SQL. Данный оператор позволяет не только выбирать записи из базы данных, удовлетворяющие заданному условию, но также и настраивать параметры отображения этих записей, таких как сортировка и группировка. А использование агрегатных функций позволяет подсчитывать необходимые данные.
Для обновления данных, хранящихся в базе данных используется оператор UPDATE, для добавления новых – оператор INSERT.
Следует отметить, что технология ADO позволяет писать запрос в объекте AdoQuery на классическом языке SQL, без учета особенностей СУБД, используемой в качестве хранилища данных. Это является значимым преимуществом, т.к. позволяет легко переводить программные средства с одной СУБД на другую, в зависимости от условий эксплуатации и требований к ней.
Программные модули состоят из процедур, которые обрабатывают различные действия пользователя (нажатия на кнопки, ввод текста в поля и т.д.) нужным образом.
Исходный код всех процедур с комментариями представлен в приложении.
2.8. Контрольный пример реализации проекта и его описание
После запуска программы открывается форма авторизации, с помощью которой пользователю необходимо ввести свои логин и пароль (Рисунок 15).
Рисунок 15. Форма авторизации
После успешного прохождения авторизации пользователю отображается главное окно программы, в котором в виде таблицы представлены все добавленные заказы клиентов (Рисунок 16).
Рисунок 16. Главная форма со списком заказов
Для переключения между функциями программы необходимо использовать главное меню (Рисунок 17).
Рисунок 17. Главное меню
Чтобы добавить новый заказ нужно выбрать пункт меню «Новый заказ», откроется форма добавления заказа (Рисунок 18).
Рисунок 18. Форма добавления заказа
Для открытия формы работы с заказом необходимо дважды щелкнуть по нему в списке заказов на главной форме. Откроется форма работы с заказом, на данной форме работы с заказом можно изменить его данные, а также сформировать выходные документы (Рисунок 19).
Рисунок 19. Форма работы с заказом
Форма работы со всеми справочниками имеет общий вид: большую часть формы занимает таблица с записями справочника, а над ней расположены кнопки для открытия формы добавления или изменения записи, либо удаления записи их справочника (Рисунок 20).
Рисунок 20. Форма работы со справочником
ЗАКЛЮЧЕНИЕ
В ходе проделанной работы были решены следующие задачи:
- Была проанализирована текущая организация бизнес-процесса продажи товаров в компании «ЭлектроМастер», были выделены основные этапы выполнения бизнес-процесса, изучен возникающий документооборот;
- Были выбран проектные решения по информационному обеспечению и программному, в качестве среды разработки была выбрана Delphi7, а в качестве СУБД – Microsoft SQL Server;
- Была составлена информационная модель информационной системы, которая отражает пути преобразования входной информации в выходную;
- Была разработана база данных и программные модули, реализующие работу ИС.
- Был описан контрольный пример реализации проекта.
Таким образом, все задачи, поставленные перед данным курсовым проектом выполнены, а значит и основная цель достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
- ГОСТ 2.105 – 95. Общие требования к текстовым документам.
- ГОСТ 7.32 – 2001. Отчет по научно-исследовательской работе. Структура и правила оформления.
- ГОСТ 7.82-2001. Библиографическое описание электронных ресурсов.
- ГОСТ 24.702-85 Эффективность автоматизированных систем управления.
- ГОСТ Р 7.0.5-2008. Библиографическая запись. Библиографическое описание.
- Агальцов В.П. Базы данных. В 2-х т. Т. 2. Распределенные и удаленные базы данных: Учебник. М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. 272 с.
- Гагарина Л.Г. Разработка и эксплуатация автоматизированных информационных систем: учебное пособие. М.: ИД «ФОРУМ»: ИНФРА-М, 2013. 384 с.
- Горбаченко В.И., Убиенных Г.Ф. Бобрышева Г.В. Проектирование информационных систем с СА Erwin Modeling Suite 7.3. Пенза: Изд-во ПГУ, 2012, 154 c.
- Зуев Е.А. Программирование на языке Delphi 6.0,7.0. – М.: Радио и связь, Веста, 2016. - 186 с.
- Калмыков Ю.В. Учебно-методичское пособие по обучению программированию на языке Delphi для школ, 2014. – 100 с.
- Карпова И.П. Базы данных: Учебное пособие. – Спб.: Питер, 2013. – 240 с.
- Кузин А.В., Левонисова С.В. Базы данных: Учебное пособие для студ. высш. учеб. заведений. – М.: ИЦ Академия, 2012. – 320с.
- Культин Никита – Основы программирования в Delphi, 2015 – 232 с.
- Маклаков С. В. Моделирование бизнес-процессов с AllFusion Process Modeler (BPwin 4.1) / С.В. Маклаков. – М. : ДИАЛОГ-МИФИ, 2013. – 340 c.
- Маклаков С.В. Создание информационных систем с AllFusion Modeling Suite / С.В. Маклаков. – М. : ДИАЛОГ-МИФИ, 2015. – 512 c.
- Тельнова, Ю.Ф. Проектирование экономических информационных систем: учеб. / под ред. Ю. Ф. Тельнова. М. : Горячая линия, 2015 — 345 c.
- Фуфаев Д.Э. Фуфаев Э.В. Разработка и эксплуатация автоматизированных информационных систем: учебник дя студ. М.: Издательский центр «Академия», 2013. 304 с.
- Шаньгин В.Ф. Информационная безопасность компьютерных системы и сетей: Учебное пособие. М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. 416 с.
ПРИЛОЖЕНИЯ
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Frms,
Dialogs, Menus, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, comobj,
ExtCtrls;
type
TFrm1 = class(TFrm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
ADOConnection1: TADOConnection;
DBGrid1: TDBGrid;
Label1: TLabel;
Edt1: TEdt;
BitBtn1: TBitBtn;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DBGrid2: TDBGrid;
Label2: TLabel;
Edt2: TEdt;
BitBtn2: TBitBtn;
Adotbl1: TAdotbl;
Adotbl1Id: TAutoIncField;
Adotbl1FIO: TWideStringField;
Adotbl1Phone: TWideStringField;
Adotbl1Address: TWideStringField;
Adotbl1Passport: TWideStringField;
DataSource1: TDataSource;
DataSource2: TDataSource;
Adotbl2: TAdotbl;
Adotbl2id: TAutoIncField;
Adotbl2caption: TWideStringField;
Adotbl2path: TWideStringField;
PopupMenu1: TPopupMenu;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
PopupMenu2: TPopupMenu;
N8: TMenuItem;
ADOQuery1: TADOQuery;
N9: TMenuItem;
N10: TMenuItem;
BitBtn3: TBitBtn;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
produre N3Click(Send: TObject);
produre BitBtn1Click(Send: TObject);
produre BitBtn2Click(Send: TObject);
produre FrmShow(Send: TObject);
produre Edt1Change(Send: TObject);
produre N7Click(Send: TObject);
produre N8Click(Send: TObject);
produre N5Click(Send: TObject);
produre N6Click(Send: TObject);
produre N4Click(Send: TObject);
produre N2Click(Send: TObject);
produre FrmResize(Send: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frm1: TFrm1;
implementation
uses shabl;
{$R *.dfm}
produre TFrm1.N3Click(Send: TObject);
begin
frm1.Close;
end;
produre TFrm1.BitBtn1Click(Send: TObject);
begin
Edt1.Clear;
Edt1.SetFocus;
end;
produre TFrm1.BitBtn2Click(Send: TObject);
begin
Edt2.Clear;
Edt2.SetFocus;
end;
produre TFrm1.FrmShow(Send: TObject);
begin
Adotbl1.open;
Adotbl1.Sort:='FIO ASC';
DbGrid1.Collums[0].Width:=ROUND(DbGrid1.Width*0.65);
DbGrid1.Collums[1].Width:=ROUND(DbGrid1.Width*0.25);
Adotbl2.open;
Adotbl2.Sort:='caption ASC';
DbGrid2.Collums[0].Width:=ROUND(DbGrid2.Width*0.65);
DbGrid2.Collums[1].Width:=ROUND(DbGrid2.Width*0.28);
end;
produre TFrm1.Edt1Change(Send: TObject);
begin
if Edt1.text<>'' then
begin
DbGrid1.DataSource.DataSet.Filtered:=false;
DbGrid1.DataSource.DataSet.Filter:='FIO like %'+Edt1.Text+'%';
DbGrid1.DataSource.DataSet.Filtered:=true;
end
else
begin
DbGrid1.DataSource.DataSet.Filtered:=false;
DbGrid1.DataSource.DataSet.Filter:='';
end;
end;
produre TFrm1.N7Click(Send: TObject);
begin
Dbgrid2.DataSource.DataSet.Close;
DbGrid2.DataSource.DataSet.open;
Adotbl2.Sort:='caption ASC';
DbGrid2.Collums[0].Width:=ROUND(DbGrid2.Width*0.65);
DbGrid2.Collums[1].Width:=ROUND(DbGrid2.Width*0.28);
end;
produre TFrm1.N8Click(Send: TObject);
begin
Dbgrid1.DataSource.DataSet.Close;
DbGrid1.DataSource.DataSet.open;
Adotbl1.Sort:='FIO ASC';
DbGrid1.Collums[0].Width:=ROUND(DbGrid1.Width*0.65);
DbGrid1.Collums[1].Width:=ROUND(DbGrid1.Width*0.25);
end;
produre TFrm1.N5Click(Send: TObject);
begin
if not DbGrid1.DataSource.DataSet.FieldByName('id').IsNull then
begin
Frm2.Edt1.Text:=DbGrid2.DataSource.DataSet.FieldByName('caption').AsString;
Frm2.Edt2.Text:=DbGrid2.DataSource.DataSet.FieldByName('path').AsString;
Frm2.Caption:='Редактирование шаблона';
Frm2.Label3.Caption:= DbGrid2.DataSource.DataSet.FieldByName('id').AsString;
Frm2.show;
end;
end;
produre TFrm1.N6Click(Send: TObject);
var
s: string;
begin
s := InputBox('Ввод данных','Необходимо указать название нового шаблона','');
if s<>'' then
begin
With AdoQuery1 do
begin
close;
SQL.Clear;
SQl.add('INSERT INTO shablon (caption) VALUES ( :caption )');
Parameters.ParamByName('caption').Value:=s;
EXECSQL;
end;
n7.Click;
end;
end;
produre TFrm1.N4Click(Send: TObject);
var
Word:Variant;
begin
if not DBGrid1.DataSource.DataSet.FieldByName('id').IsNull then
begin
if fileExists(ExtractFilePath(ParamStr(0))+'shablon\'+DbGrid2.DataSource.DataSet.FieldByName('path').AsString) then
begin
Word := CreateOleObject('Word.Application');
Word.Documents.Add(ExtractFilePath(ParamStr(0))+'shablon\'+DbGrid2.DataSource.DataSet.FieldByName('path').AsString);
Word.visible:=true;
end
else
begin
Showmessage(' Файл '+DbGrid2.DataSource.DataSet.FieldByName('path').AsString+' не найден в папке shablon.'+#10+#13+'Проверьте правильность названия файла и его наличие в указанной папке.');
end;
end;
end;
produre TFrm1.N2Click(Send: TObject);
begin
n7.Click;
n8.Click;
end;
produre TFrm1.FrmResize(Send: TObject);
begin
panel1.Width:=Round((frm1.Width-50)*0.5);
panel2.Width:=Round((frm1.Width-50)*0.5);
panel1.Width:=Round(frm1.Width*0.5);
BitBtn3.Left:=Round(panel5.Width*0.5)-Round(Bitbtn3.Width*0.5);
DbGrid2.Collums[0].Width:=ROUND(DbGrid2.Width*0.65);
DbGrid2.Collums[1].Width:=ROUND(DbGrid2.Width*0.26);
DbGrid1.Collums[0].Width:=ROUND(DbGrid1.Width*0.65);
DbGrid1.Collums[1].Width:=ROUND(DbGrid1.Width*0.26);
end;
end.
unit shabl;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Frms,
Dialogs, StdCtrls, Buttons, DB, ADODB, comobj;
type
TFrm2 = class(TFrm)
Label1: TLabel;
Label2: TLabel;
Edt1: TEdt;
BitBtn1: TBitBtn;
Edt2: TEdt;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
OpenDialog1: TOpenDialog;
Label3: TLabel;
ADOQuery1: TADOQuery;
produre BitBtn3Click(Send: TObject);
produre Edt1Change(Send: TObject);
produre Edt2Change(Send: TObject);
produre BitBtn1Click(Send: TObject);
produre BitBtn2Click(Send: TObject);
produre FrmClose(Send: TObject; var Action: TCloseAction);
produre BitBtn4Click(Send: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frm2: TFrm2;
implementation
Uses main;
{$R *.dfm}
produre TFrm2.BitBtn3Click(Send: TObject);
begin
Frm2.Close;
end;
produre TFrm2.Edt1Change(Send: TObject);
begin
if not (copy(caption,length(caption)-1,1) = '*') then caption:=caption+'*';
end;
produre TFrm2.Edt2Change(Send: TObject);
begin
if not (copy(caption,length(caption)-1,1) = '*') then caption:=caption+'*';
end;
produre TFrm2.BitBtn1Click(Send: TObject);
begin
openDialog1.InitialDir := GetCurrentDir;
if opendialog1.Execute then
begin
if FileExists(opendialog1.FileName) then
begin
Edt2.Text:=Opendialog1.FileName;
end;
end;
end;
produre TFrm2.BitBtn2Click(Send: TObject);
begin
if Edt1.text='' then begin showmessage('Имя шаблона не может быть пустым'); Edt1.SetFocus; exit; end;
if Edt2.text='' then begin showmessage('Необходимо выбрать файл'); BitBtn1.SetFocus; exit; end;
if not (FileExists(ExtractFilePath(ParamStr(0))+'shablon\'+Edt2.Text)) or (FileExists(Edt2.Text)) then begin showmessage('Указанный файл шаблона не найден'); BitBtn1.SetFocus; exit; end;
if OpenDialog1.filename='' then OpenDialog1.filename:=ExtractFilePath(ParamStr(0))+'shablon\'+Edt2.Text;
With AdoQuery1 do
begin
close;
SQl.clear;
SQL.add('UPDATE shablon SET caption = :caption, path = :path WHERE id = :id');
Parameters.ParamByName('caption').value:=Edt1.text;
Parameters.ParamByName('path').value:=ExtractFileName(OpenDialog1.Filename);
Parameters.ParamByName('id').value:=label3.caption;
execSQL;
end;
CopyFile(Pchar(Edt2.text), Pchar(ExtractFilePath(ParamStr(0))+'shablon\'+ExtractFileName(OpenDialog1.Filename)), true) ;
caption:=copy(caption,0,length(caption)-2);