Диплом: Автоматизация учета кредитных операций ломбарда ООО "Золотой век"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
109
52. Озкарахан Э. Машины баз данных и управление базами данных. - М.:
Мир, 2013. - 551 c.
53. Пирогов, В.Ю. Информационные системы и базы данных: организация и
проектирование: Учебное пособие / В.Ю. Пирогов. - СПб.: БХВ-
Петербург, 2014. - 528 c.
54. Проектирование информационных систем:Учебное пособие
/ Н.З. Емельянова, Т.Л. Партыка, И.И. Попов. - М.: Форум: НИЦ ИНФРА-
М, 2014.-432с.
55. Редько В.Н., Бассараб И.А. Базы данных и информационные системы. -
М.: Знание, 2015. - 602 c.
56. Советов, Б.Я. Базы данных: теория и практика: Учебник для бакалавров /
Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. - М.: Юрайт, 2013. - 463
c.
57. Степанов В. Информационные технологии управления продажами и
маркетингом. - М.: LAP Lambert Academic Publishing, 2013. - 284 с.
58. Тоу Дэн Настройка SQL - СПб: Питер, 2013. - 539 c.
59. Туманов В.Е. Основы проектирования реляционных баз данных - М.:
Бином, 2012. - 420 c.
60. Уорден К. Новые интеллектуальные материалы и конструкции. Свойства
и применение; М.: Техносфера, 2012. - 456 c.
61. Уткин В., Балдин К. Информационные системы в экономике. - М.:
Academia, 2012. - 288с.
62. Федотова Е. Информационные технологии и системы: Учебное пособие /
Е.Л. Федотова. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2014. - 352 с
63. Федотова Е.Л. Информационные технологии в профессиональной
деятельности: Учебное пособие / Е.Л. Федотова. - М.: ИД ФОРУМ: НИЦ
ИНФРА-М, 2015. - 368 с.
64. Фейерштейн С., Прибыл Б. Oracle PL/SQL для профессионалов - СПб:
Питер, 2012. - 540 c.
65. Фуфаев, Э.В. Базы данных: Учебное пособие для студентов учреждений
среднего профессионального образования / Э.В. Фуфаев, Д.Э. Фуфаев. -
М.: ИЦ Академия, 2012. - 320 c.
110
66. Хаббард Дж. Автоматизированное проектирование баз данных - М.: Мир,
2014. - 453 c.
67. Черников Б.В. Информационные технологии управления: Учебник / Б.В.
Черников. - 2-e изд., перераб. и доп. - М.: ИД ФОРУМ: НИЦ ИНФРА-М,
2014. - 368 с.
68. Шаймарданов Р.Б. Моделирование и автоматизация проектирования
структур баз данных - М.: Юнити, 2016. - 469 c.
69. Шишов О.В. Современные технологии и технические средства
информатизации: Учебник / О.В. Шишов. - М.: НИЦ Инфра-М, 2012. - 462
с.
111
Приложение. Листинг программного кода
program Analysis;
uses
Forms,
uMain in 'uMain.pas' {fmMain},
uBalanceStructure in 'uBalanceStructure.pas' {fmBalanceStructure},
uDM in 'uDM.pas' {DM: TDataModule},
uOPUStructure in 'uOPUStructure.pas' {fmOPUStructure},
uOPU in 'uOPU.pas' {fmOPU},
uBalance in 'uBalance.pas' {fmBalance},
uRep in 'uRep.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TfmMain, fmMain);
Application.CreateForm(TfmBalanceStructure, fmBalanceStructure);
Application.CreateForm(TDM, DM);
Application.CreateForm(TfmOPUStructure, fmOPUStructure);
Application.CreateForm(TfmOPU, fmOPU);
Application.CreateForm(TfmBalance, fmBalance);
Application.Run;
end.
unit uBalance;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls, Grids, DBGrids;
type
TfmBalance = class(TForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmBalance: TfmBalance;
implementation
uses uDM;
{$R *.dfm}
112
procedure TfmBalance.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstBalance.Close;
end;
procedure TfmBalance.FormShow(Sender: TObject);
begin
DM.dstBalance.Sort := 'КодСтроки';
end;
end.
unit uBalanceStructure;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Buttons;
type
TfmBalanceStructure = class(TForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmBalanceStructure: TfmBalanceStructure;
implementation
uses uDM;
{$R *.dfm}
procedure TfmBalanceStructure.FormShow(Sender: TObject);
begin
DM.dstBalanceStr.Open;
DM.dstBalanceStr.Sort := 'Код';
end;
end.
unit uDM;
interface
uses
SysUtils, Classes, DB, ADODB;
113
type
TDM = class(TDataModule)
ADOConnection1: TADOConnection;
dstBalanceStr: TADODataSet;
dsBalanceStr: TDataSource;
dstOPUStr: TADODataSet;
dsOPUStr: TDataSource;
dstOPUStrDSDesigner: TSmallintField;
dstOPUStrDSDesigner2: TWideStringField;
dstBalance: TADODataSet;
dsBalance: TDataSource;
dstBalanceDSDesigner: TSmallintField;
dstBalanceDSDesigner2: TWordField;
dstBalanceDSDesigner3: TSmallintField;
dstBalanceDSDesigner1: TBCDField;
dstBalanceDSDesigner22: TBCDField;
dstBalanceField: TStringField;
dstBalanceField2: TIntegerField;
qrNewBalance: TADOQuery;
dstPeriodList: TADODataSet;
dsBalanceList: TDataSource;
qrDelBalance: TADOQuery;
qrNewOPU: TADOQuery;
qrDelOPU: TADOQuery;
dstOPU: TADODataSet;
SmallintField1: TSmallintField;
WordField1: TWordField;
SmallintField2: TSmallintField;
BCDField1: TBCDField;
BCDField2: TBCDField;
StringField1: TStringField;
IntegerField1: TIntegerField;
dsOPU: TDataSource;
qrGetBalValue: TADOQuery;
qrGetOPUValue: TADOQuery;
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetBalValue(Year, Quarter, Row, Period: Integer): Real;
function GetOPUValue(Year, Quarter, Row, Period: Integer): Real;
var
DM: TDM;
implementation
uses Forms, Windows;
{$R *.dfm}
procedure TDM.DataModuleDestroy(Sender: TObject);
begin
ADOConnection1.Close;
end;
//Получение значения из указанной строки баланса за заданный год и квартал:
function GetBalValue(Year, Quarter, Row, Period: Integer): Real;
begin
DM.qrGetBalValue.Parameters.ParamByName('pYear').Value := Year;
DM.qrGetBalValue.Parameters.ParamByName('pQuarter').Value := Quarter;
114
DM.qrGetBalValue.Parameters.ParamByName('pRow').Value := Row;
DM.qrGetBalValue.Open;
if DM.qrGetBalValue.RecordCount <= 0 then
begin
Application.MessageBox (PChar('Данные баланса за ' + IntToStr(Quarter)
+ 'квартал ' +
IntToStr(Year) + ' года не внесены в базу данных, либо в данном
балансе не внесено '+
' значение для ' + IntToStr(Row) + ' строки!'), 'Ошибка',
MB_OK+MB_ICONERROR);
DM.qrGetBalValue.Close;
raise Exception.Create('');
end;
if Period = 1 then
//Берутся данные на начало отчетного года:
Result := DM.qrGetBalValue.FieldByName('Период1').AsFloat
else
//Берутся данные на конец отчетного периода:
Result := DM.qrGetBalValue.FieldByName('Период2').AsFloat;
DM.qrGetBalValue.Close;
end;
//Получение значения из указанной строки баланса за заданный год и квартал:
function GetOPUValue(Year, Quarter, Row, Period: Integer): Real;
begin
DM.qrGetOPUValue.Parameters.ParamByName('pYear').Value := Year;
DM.qrGetOPUValue.Parameters.ParamByName('pQuarter').Value := Quarter;
DM.qrGetOPUValue.Parameters.ParamByName('pRow').Value := Row;
DM.qrGetOPUValue.Open;
if DM.qrGetOPUValue.RecordCount <= 0 then
begin
Application.MessageBox (PChar('Данные ОПиУ за ' + IntToStr(Quarter) +
'-й квартал ' +
IntToStr(Year) + ' года не внесены в базу данных, либо в данном ОПиУ
не внесено '+
' значение для ' + FormatFloat('000', Row) + ' строки!'), 'Ошибка',
MB_OK+MB_ICONERROR);
DM.qrGetOPUValue.Close;
raise Exception.Create('');
end;
if Period = 1 then
//Берутся данные за отчетный период:
Result := DM.qrGetOPUValue.FieldByName('Период1').AsFloat
else
//Берутся данные за аналогичный период предыдущего года:
Result := DM.qrGetOPUValue.FieldByName('Период2').AsFloat;
DM.qrGetOPUValue.Close;
end;
end.
unit uMain;
interface
uses
115
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, ActnList, StdActns, ImgList,
ActnMan, ToolWin, ActnCtrls, ActnMenus, XPStyleActnCtrls, XPMan;
type
TfmMain = class(TForm)
bbtEditBalance: TBitBtn;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
bbtNewBalance: TBitBtn;
DBGrid1: TDBGrid;
bbtNewOPU: TBitBtn;
bbtDelBalance: TBitBtn;
bbtEditOPU: TBitBtn;
bbtDelOPU: TBitBtn;
cbYear: TComboBox;
cbQuarter: TComboBox;
sgPeriods: TStringGrid;
bbtAdd: TBitBtn;
bbtDel: TBitBtn;
ActionManager1: TActionManager;
ImageList1: TImageList;
FileExit1: TFileExit;
acEditBalance: TAction;
acDelBalance: TAction;
acNewBalance: TAction;
acNewOPU: TAction;
acEditOPU: TAction;
acDelOPU: TAction;
acStructBal: TAction;
acStructOPU: TAction;
acTables1: TAction;
BitBtn1: TBitBtn;
acTables2: TAction;
BitBtn2: TBitBtn;
acTables3: TAction;
BitBtn3: TBitBtn;
acTables4: TAction;
BitBtn6: TBitBtn;
acTables5: TAction;
BitBtn7: TBitBtn;
ActionMainMenuBar1: TActionMainMenuBar;
XPManifest1: TXPManifest;
procedure FormShow(Sender: TObject);
procedure bbtAddClick(Sender: TObject);
procedure bbtDelClick(Sender: TObject);
procedure acNewBalanceExecute(Sender: TObject);
procedure acEditBalanceExecute(Sender: TObject);
procedure acDelBalanceExecute(Sender: TObject);
procedure acNewOPUExecute(Sender: TObject);
procedure acEditOPUExecute(Sender: TObject);
procedure acDelOPUExecute(Sender: TObject);
procedure acStructBalExecute(Sender: TObject);
procedure acStructOPUExecute(Sender: TObject);
procedure acTables1Execute(Sender: TObject);
procedure acTables2Execute(Sender: TObject);
procedure acTables3Execute(Sender: TObject);
procedure acTables4Execute(Sender: TObject);
procedure acTables5Execute(Sender: TObject);
private
{ Private declarations }
116
public
{ Public declarations }
end;
var
fmMain: TfmMain;
implementation
uses uBalanceStructure, uOPUStructure, uDM, uBalance, DB, uOPU, uRep;
{$R *.dfm}
procedure TfmMain.FormShow(Sender: TObject);
begin
DM.dstPeriodList.Open;
sgPeriods.Cells[0,0] := 'Период';
sgPeriods.Cells[1,0] := 'Год';
sgPeriods.Cells[2,0] := 'Квартал';
sgPeriods.Cells[0,1] := ' n-2';
sgPeriods.Cells[0,2] := ' n-1';
sgPeriods.Cells[0,3] := ' n';
end;
//Добавление в список анализируемых кварталов нового квартала:
procedure TfmMain.bbtAddClick(Sender: TObject);
var
i, Goal: Integer;
Flag: Boolean;
Year, Quarter: string;
begin
Year := DM.dstPeriodList.FieldByName('Год').AsString;
Quarter := DM.dstPeriodList.FieldByName('Квартал').AsString;
Goal := -1;
Flag := False;
for i:=1 to sgPeriods.RowCount-1 do
begin
//Проверка, включен ли уже выбранный квартал в список анализируемых
кварталов:
if (sgPeriods.Cells[1,i] = Year) and (sgPeriods.Cells[2,i] = Quarter)
then
Flag := True;
//Определение номера первой пустой строки:
if (Goal < 0) and (sgPeriods.Cells[1,i] = '') and (sgPeriods.Cells[2,i]
= '') then
Goal := i;
end;
if not Flag and (Goal > 0) then
begin
sgPeriods.Cells[1, Goal] := Year;
sgPeriods.Cells[2, Goal] := Quarter;
end
end;
//Удаление из списка анализируемых кварталов выбранного квартала:
procedure TfmMain.bbtDelClick(Sender: TObject);
begin
sgPeriods.Cells[1,sgPeriods.Row] := '';
sgPeriods.Cells[2,sgPeriods.Row] := '';
end;
117
//Добавление нового баланса:
procedure TfmMain.acNewBalanceExecute(Sender: TObject);
begin
if (Trim(cbYear.Text)='') or (Trim(cbQuarter.Text)='') then
Application.MessageBox('Укажите период!', 'Ошибка', MB_ICONERROR+MB_OK)
else
begin
DM.qrNewBalance.Parameters.ParamByName('pYear').Value :=
StrToInt(cbYear.Text);
DM.qrNewBalance.Parameters.ParamByName('pQuarter').Value :=
StrToInt(cbQuarter.Text);
try
DM.qrNewBalance.ExecSQL;
DM.dstBalance.Filter := '(Год = ' + cbYear.Text + ') and (Квартал = '
+ cbQuarter.Text + ')';
DM.dstBalance.Open;
fmBalance.Caption := 'Баланс (форма №1) за ' + cbQuarter.Text + '
квартал ' + cbYear.Text + ' г.';
fmBalance.ShowModal;
DM.dstPeriodList.Requery;
except
Application.MessageBox('Баланс за данный период уже создан. Выберите
этот период из таблицы' +
' и нажмите кнопку "Редактировать".', 'Информация',
MB_ICONINFORMATION+MB_OK);
end;
end;
end;
//Редактирование баланса за выбранный период:
procedure TfmMain.acEditBalanceExecute(Sender: TObject);
var
Year, Quarter: string;
begin
Year := DM.dstPeriodList.FieldByName('Год').AsString;
Quarter := DM.dstPeriodList.FieldByName('Квартал').AsString;
DM.dstBalance.Filter := '(Год = ' + Year + ') and (Квартал = ' + Quarter
+ ')';
DM.dstBalance.Open;
if DM.dstBalance.RecordCount > 0 then
begin
fmBalance.Caption := 'Баланс (форма №1) за ' + Quarter + ' квартал ' +
Year + ' г.';
fmBalance.ShowModal;
end
else
if Application.MessageBox('Баланс за данный период еще не создан.
Создать баланс?',
'Вопрос', MB_ICONQUESTION+MB_YESNO) = IDYES then
begin
//Добавление баланса, если его за выбранный квартал еще нет:
DM.dstBalance.Close;
DM.qrNewBalance.Parameters.ParamByName('pYear').Value := Year;
DM.qrNewBalance.Parameters.ParamByName('pQuarter').Value := Quarter;
DM.qrNewBalance.ExecSQL;
DM.dstBalance.Open;
fmBalance.Caption := 'Баланс за ' + Quarter + ' квартал ' + Year + '
г.';
fmBalance.ShowModal;
end;
end;
118
//Удаление баланса за выбранный период:
procedure TfmMain.acDelBalanceExecute(Sender: TObject);
begin
if Application.MessageBox('Удалить баланс за выбранный период?',
'Вопрос',
MB_ICONQUESTION+MB_YESNO) = IDYES then
begin
DM.qrDelBalance.Parameters.ParamByName('pYear').Value :=
DM.dstPeriodList.FieldByName('Год').AsString;
DM.qrDelBalance.Parameters.ParamByName('pQuarter').Value :=
DM.dstPeriodList.FieldByName('Квартал').AsString;
DM.qrDelBalance.ExecSQL;
Application.MessageBox('Баланс за выбранный период удален.',
'Информация',
MB_ICONINFORMATION+MB_OK);
DM.dstPeriodList.Requery;
end;
end;
//Добавление нового ОПиУ:
procedure TfmMain.acNewOPUExecute(Sender: TObject);
begin
if (Trim(cbYear.Text)='') or (Trim(cbQuarter.Text)='') then
Application.MessageBox('Укажите период!', 'Ошибка', MB_ICONERROR+MB_OK)
else
begin
DM.qrNewOPU.Parameters.ParamByName('pYear').Value :=
StrToInt(cbYear.Text);
DM.qrNewOPU.Parameters.ParamByName('pQuarter').Value :=
StrToInt(cbQuarter.Text);
try
DM.qrNewOPU.ExecSQL;
DM.dstOPU.Filter := '(Год = ' + cbYear.Text + ') and (Квартал = ' +
cbQuarter.Text + ')';
DM.dstOPU.Open;
fmOPU.Caption := 'Отчет о прибылях и убытках (форма №2) за ' +
cbQuarter.Text + ' квартал ' + cbYear.Text + ' г.';
fmOPU.ShowModal;
DM.dstPeriodList.Requery;
except
Application.MessageBox('ОПиУ за данный период уже создан. Выберите
этот период из таблицы' +
' и нажмите кнопку "Редактировать".', 'Информация',
MB_ICONINFORMATION+MB_OK);
end;
end;
end;
//Редактирование ОПиУ за выбранный период:
procedure TfmMain.acEditOPUExecute(Sender: TObject);
var
Year, Quarter: string;
begin
Year := DM.dstPeriodList.FieldByName('Год').AsString;
Quarter := DM.dstPeriodList.FieldByName('Квартал').AsString;
DM.dstOPU.Filter := '(Год = ' + Year + ') and (Квартал = ' + Quarter +
')';
DM.dstOPU.Open;
if DM.dstOPU.RecordCount > 0 then
begin

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

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