Файл: Разработка информационной системы управления банковскими операциями.pdf
Добавлен: 28.03.2023
Просмотров: 1701
Скачиваний: 40
СОДЕРЖАНИЕ
Глава 1. Исследование предметной области
1.1 Общее описание предприятия
1.2 Характеристика текущих бизнес-процессов
1.5 Описание входных и выходных данных
1.6 Разработка диаграммы «TO-BE»
Глава 2. Проектирование и разработка ИС
2.1 Проектирование структуры базы данных
2.2 Дерево функций и сценарий диалога
2.4 Описание таблиц базы данных
2.5 Описание программных модулей
Таблица 8. Описание программных модулей
Наименование модуля |
Описание |
Main.pas |
Главное окно программы, содержит процедуры создания всех дочерних окон |
DataM.pas |
Модуль, отвечающий за инициализацию подключения к базе данных |
Login.pas |
Отвечает за авторизацию пользователей в АИС |
Client.pas |
Форма для отображения списка клиентов и работы с ним |
Oneclient.Pas |
Форма для работы с данными клиента и его счетов (добавления/изменение/выполнение операций) |
NewAccount.pas |
Форма для открытия нового счета |
Sprav.pas |
Форма для организации работы со справочниками системы |
Report.Pas |
Форма для ввода параметров отчета, его формирования и выгрузки в Excel |
Исходный код программных модулей приведен в приложении.
2.6 Контрольный пример работы системы
После запуска программы открывается форма авторизации (Рисунок 11). На которой пользователю необходимо выбрать себя из списка и ввести пароль от своей учетной записи.
Рисунок 11 – Форма авторизации
После успешного прохождения авторизации отображается главное форма, у которой имеется основное меню. Путем выбора нужного пункта в основном меню (Рисунок 12) пользователь открывает форму, предназначенную для решения определенной задачи.
Рисунок 12 – Главное меню главного окна
Поле выбора пункта меню «Клиенты» Открывается форма со списком клиентов, на которой расположены элементы для поиска нужного клиента, кнопка для добавления нового (Рисунок 13).
Рисунок 13 – Форма Клиенты
После нажатия на кнопку «Добавить» открывается форма добавления нового клиента (Рисунок 14).
Рисунок 14 – Форма добавления клиента
При двойном щелчке на имени клиента в списке открывается форма работы с данными клиента, на которой отображаются все его данные и данные всех его счетов и операций по ним (Рисунок 15).
Рисунок 15 – Форма работы с данными клиентов
Для ввода новой операции по счету необходимо выделить его в списке и нажать правую кнопку мыши и выбрать соответствующий пункт контекстного меню (Рисунок 16).
Рисунок 16 – Контекстное меню
При необходимости откроется дополнительной диалоговое окно, запрашивающая необходимые данные, например, сумму операции дополнительного взноса в граммах соответствующего металла (Рисунок 17).
Рисунок 17 – Диалоговое окно запроса данных операции
После выполнения операции печатается квитанция.
Для формирования отчета по операциям необходимо перейти в раздел главного меню «Отчет по операциям». Отобразится форма для ввода интервала дат, за который нужно сформировать отчет (Рисунок 18).
Рисунок 18 – Форма для ввода интервала дат формирования отчета
Сформированный отчет выгружается в программу Excel (Рисунок 19).
Рисунок 19 – Сформированный отчет
ЗАКЛЮЧЕНИЕ
В ходе проделанной работы были решены следующие задачи:
- была изучена текущая организация бизнес-процесса ведения операций с драгоценными металлами в банке «ФК Дэвим», в результате изучения была построена структурна-функциональная модель бизнес-процесса в нотации IDEF0;
- по результатам изучения бизнес-процесса были выделены недостатки в текущей его организации, которые связаны с низкой автоматизацией данного процесса;
- было рассмотрено три программных продукта, предназначенных для автоматизации банковской деятельности;
- на основании проведенного исследования был составлен перечень требования к разрабатываемой информационной системе автоматизации ведения операций с драгоценными металлами;
- была спроектирована база данных, составлены дерево функций и сценарий диалога информационной системы;
- в качестве средств разработки ИС были выбраны СУБД Microsoft Access и среда программирования Delphi 7;
- с использованием выбранных средств разработки была создана база данных и программные модули;
- Была проверена работоспособность программы на тестовых данных.
Таким образом, все задачи, поставленные перед данным курсовым проектом, выполнены, а значит и основная цель достигнута.
СПИСОК ИСТОЧНИКОВ
- Автоматизированные информационные технологии в экономике: Учебник/Под ред. проф. Г.А. Титоренко. – М.: Компьютер, ЮИНИТИ, 2016. – 329 c.
- Гофман В., Хомоненко A., «Delphi. Быстрый старт»; С.-Петербург 2013 – 289 с.
- Кандзюба С.П., Громов В.Н. Delphi. Базы данных и приложения. Лекции и упражнения. – СПб.: ООО ДиаСофтЮП, 2015. – 456 c.
- Конналли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика – М.: Издательский дом «Вильямс», 2013. – 592 c.
- Марка Д. А., МакГоуэн К. Методология структурного анализа и проектирования SADT. М.: ДИАЛОГ-МИФИ, 2013. – 443 c.
- Маклаков С. В. Моделирование бизнес-процессов с AllFusion Process Modeler (BPwin 4.1). М.: ДИАЛОГ-МИФИ, 2013. – 340 c.
- Маклаков С.В. Создание информационных систем с AllFusion Modeling Suite. – М.: ДИАЛОГ-МИФИ, 2015. – 512 c.
- Маклаков С.В. BPwin и Erwin. CASE-средства разработки информационных систем. – М.: ДИАЛОГ–МИФИ, 2014. – 369 c.
- Михеева В., Харитонова И. Microsoft SQL Server. – СПб.: БХВ – Санкт-Петербург, 2014, 1072с.
- Проектирование экономических информационных систем: учеб. / под ред. Ю. Ф. Тельнова. М., 2005 – 345 c.
- Рудинский И. Д. Основы формально-структурного моделирования систем обучения и автоматизации педагогического тестирования знаний. – М.: Горячая линия – Телеком, 2014. – 204 с.
- Смирнова Г.Н. и др. Проектирование экономических информационных систем: Учебник / Под ред. Ю.Ф. Тельнова. – М.: Финансы и статистика, 2018 – 512 с.
- Смирнов И.Н. и др. Основные СУБД. – М.: Наука, 2019 – 320 с.
- Хомоненко А.Д. и др. Базы данных: Учебник для вузов / Под ред. проф. А.Д. Хомоненко. – СПб.: КОРОНА принт, 2016 – 736 с.
- Фаронов, В.В. Программирование баз данных в Delphi 7: учебный курс / В.В. Фаронов. – СПб.: Питер, 2014. – 459 с.
Исходный код программных модулей
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, ExtCtrls, Menus, ComObj;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
C1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
procedure CreateSpravForm(const childName, id: string; table: TDataset;
p: integer);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DataM, Sprav, Client, OneClient;
{$R *.dfm}
//создание формы для работы со справочником
procedure TForm1.CreateSpravForm(const childName, id : string; table: TDataset; p: integer);
var
Child: TForm2;
i,k :integer;
f : boolean;
begin
f:=False; //влаг-ложь
k:=0;
for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна
if (Form1.MDIChildren[i] is TForm2) and (Form1.MDIChildren[i].caption=childName) then
begin
f:=True;
k:=i;
end;
if (f) and (Form1.MDIChildren[k].Caption=childName) then begin //если создан, то
Form1.MDIChildren[k].bringToFront; //переносим его вперед
if Form1.MDIChildren[k].WindowState=wsMinimized then
Form1.MDIChildren[k].WindowState:=wsNormal;
end
else
begin //иначе - создаем форму
Child := TForm2.Create(Application);
Child.Caption := childName; //задаем название
Child.DBGrid1.DataSource.DataSet:=table; //задаем таблицу справочник, с которой будем работать
table.active:=true; //делаем таблицу активной
Child.Setgridcolumnwidths; //выравниваем ширину столбцов
//Child.Label1.Caption:=id; //передаем ид
// Case p of
// 1: Child.n1.visible:=true; //отображаем первый пункт контекстного меню
// 2: Child.n2.visible:=true; //отображаем второй пункт контекстного меню
{3: Child.n3.visible:=true; //отображаем третий пункт контекстного меню
4: Child.n4.visible:=true; //отображаем четвертый пункт контекстного меню
5: begin Child.n5.visible:=true; //отображаем четвертый пункт контекстного меню
Child.Panel2.visible:=false; }
// end;
end;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
CreateSpravForm('Пользователи','',Datamodule1.User,0); //Вызов процедуры для работы со Справочником Пользователи
end;
procedure TForm1.N5Click(Sender: TObject);
begin
CreateSpravForm('Драгоценные металлы','',Datamodule1.Metall,0); //Вызов процедуры для работы со Справочником Металлы
end;
procedure TForm1.N3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N1Click(Sender: TObject);
var
Child: TForm3;
i,k :integer;
f : boolean;
begin
f:=False; //влаг-ложь
k:=0;
for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна
if (Form1.MDIChildren[i] is TForm3) then
begin
f:=True;
k:=i;
end;
if (f) then begin //если создан, то
Form1.MDIChildren[k].bringToFront; //переносим его вперед
if Form1.MDIChildren[k].WindowState=wsMinimized then
Form1.MDIChildren[k].WindowState:=wsNormal;
end
else
begin //иначе - создаем форму
Child := TForm3.Create(Application);
Child.DBGrid1.DataSource.DataSet.Open;
Child.Setgridcolumnwidths;
end;
end;
end.
unit Login;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DBCtrls;
type
TForm6 = class(TForm)
DBLookupComboBox1: TDBLookupComboBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label3: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure DBLookupComboBox1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Main, DataM;
{$R *.dfm}
procedure TForm6.BitBtn1Click(Sender: TObject);
begin
if DbLookupCombobox1.KeyValue<>-1 then //проверка выбран ли пользователь
begin
if Edit1.text=DbLookupCombobox1.ListSource.DataSet.FieldByName('password').AsString then //проверка правильности ввода пароля
begin
label3.Caption:='1';
Form1.Menu:=Form1.MainMenu1;
close;
end
else
begin
ShowMEssage('Пароль не верен');
edit1.Text:='';
Edit1.SetFocus;
end;
end;
end;
procedure TForm6.DBLookupComboBox1Click(Sender: TObject);
begin
Edit1.Text:=''; //очищаем пароль
Edit1.SetFocus; //передаем фокус ввода поля для ввода пароля
end;
procedure TForm6.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then BitBtn1.click; //нажатие энтер в поле пароля
end;
procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if label3.caption='0' then
application.Terminate
else
Action:=cafree;
end;
procedure TForm6.BitBtn2Click(Sender: TObject);
begin
close;
end;
end.
unit Client;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, DB, ADODB;
type
TForm3 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
GroupBox1: TGroupBox;
Edit1: TEdit;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOQuery1Id: TAutoIncField;
ADOQuery1FIO: TWideStringField;
ADOQuery1passport: TWideStringField;
ADOQuery1address: TWideStringField;
ADOQuery1phone: TWideStringField;
ADOQuery1birthdate: TDateTimeField;
BitBtn5: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormResize(Sender: TObject);
procedure Setgridcolumnwidths;
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
Uses DataM, OneClient, Main;
{$R *.dfm}
Procedure TForm3.Setgridcolumnwidths;
var
i,x,dx:integer;
begin
x:=Round((DbGrid1.width-80)/(DbGrid1.Columns.Count-1));
DbGrid1.Columns[0].Width:=40;
For i:=1 to DbGrid1.Columns.Count-1 do
begin
DbGrid1.Columns[i].Width:=x;
end;
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TForm3.FormResize(Sender: TObject);
begin
Setgridcolumnwidths;
end;
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
if edit1.text<>'' then
begin
With AdoQUery1 do
begin
close;
SQL.Clear;
SQL.Add('SELECT * FROM client WHERE FIO like %:text%');
Parameters.ParamByName('text').Value:=edit1.Text;
open;
end;
end
else
begin
With AdoQUery1 do
begin
close;
SQL.Clear;
SQL.Add('SELECT * FROM client');
open;
end;
end;
end;
procedure TForm3.BitBtn4Click(Sender: TObject);
begin
edit1.Clear;
end;
procedure TForm3.BitBtn1Click(Sender: TObject);
var
Child: TForm4;
i,k :integer;
f : boolean;
begin
f:=False; //влаг-ложь
k:=0;
for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна
if (Form1.MDIChildren[i] is TForm4) then
begin
f:=True;
k:=i;
end;
if (f) then begin //если создан, то
Form1.MDIChildren[k].bringToFront; //переносим его вперед
if Form1.MDIChildren[k].WindowState=wsMinimized then
Form1.MDIChildren[k].WindowState:=wsNormal;
end
else
begin //иначе - создаем форму
Child := TForm4.Create(Application);
Child.Panel2.Visible:=false;
Child.Caption:='Новый клиент';
Child.Height:= 200;
end;
end;
procedure TForm3.BitBtn5Click(Sender: TObject);
begin
DbGrid1.DataSource.Dataset.close;
DbGrid1.DataSource.Dataset.open;
Setgridcolumnwidths;
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
var
Child: TForm4;
i,k :integer;
f : boolean;
begin
f:=False; //влаг-ложь
k:=0;
for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземпляр такого окна
if (Form1.MDIChildren[i] is TForm4) then
begin
f:=True;
k:=i;
end;
if (f) then begin //если создан, то
Form1.MDIChildren[k].bringToFront; //переносим его вперед
if Form1.MDIChildren[k].WindowState=wsMinimized then
Form1.MDIChildren[k].WindowState:=wsNormal;
end
else
begin //иначе - создаем форму
Child := TForm4.Create(Application);
Child.Caption:='Клиент '+DbGrid1.DataSource.DataSet.FieldByName('fio').AsString;
Child.Edit1.Text:=DbGrid1.DataSource.DataSet.FieldByName('fio').AsString;
Child.Edit2.Text:=DbGrid1.DataSource.DataSet.FieldByName('phone').AsString;
Child.Edit3.Text:=DbGrid1.DataSource.DataSet.FieldByName('passport').AsString;
Child.Edit4.Text:=DbGrid1.DataSource.DataSet.FieldByName('address').AsString;
Child.DateTimePicker1.DateTime:= DbGrid1.DataSource.DataSet.FieldByName('birthdate').AsDatetime;
Child.Label6.Caption:=DbGrid1.DataSource.DataSet.FieldByName('id').AsString;
Child.DBGrid1.DataSource.DataSet.Filtered:=false;
Child.DBGrid1.DataSource.DataSet.Filter:='balance>0 and clientid = '+DbGrid1.DataSource.DataSet.FieldByName('id').AsString;