Разработка программного обеспечения

Разработка программного обеспечения

Для автоматизации банковских услуг

Выполнила:

Студентка 4 курса

группы БИ-1301

Балова М. А.

Проверил:

доцент кафедры

Головкин Ю. Б.

к.т.н., доцент

Санкт-Петербург

Содержание

1. Постановка задачи. 3

2. Описание предметной области. 3

3. Разработка программного обеспечения. 10

3.1. Проектирование интерфейса программы.. 10

3.1.1. Выбор и назначение визуальных компонентов. 10

3.1.2. Экранные формы программного приложения. 12

3.2. Структура программного обеспечения. 20

3.2.1. Модули, процедуры, функции проекта и их назначение. 20

3.2.2. Листинг программного кода. 22

4. Результаты работы программного приложения. 45

5. Список использованной литературы.. 49

Постановка задачи

Разработка программного обеспечения в объектно-ориентированной системе визуального программирования Delphi для автоматизация банковской услуги учета кредитов физических лиц. Программа позволит заводить новых клиентов, открывать им кредитные договоры и договоры залога, делать расчет графика платежей, проводить оплаты по кредитам и проводить аналитику по своей работе.

Описание предметной области

Банковские операции (также банковские услуги) — транзакционные и бизнес-операции, обычно совершаемые банками; в некоторых странах на исключительной основе.

По законодательству Российской Федерации банковские операции входят в закрытый перечень операций, право совершения которых принадлежит кредитным организациям на основании банковской лицензии.

В соответствии с Федеральным законом «О банках и банковской деятельности» от 02.12.1990 N 395-1-ФЗ к банковским операциям относят:

· привлечение денежных средств физических и юридических лиц во вклады (до востребования и на определенный срок);

· размещение указанных привлеченных средств от своего имени и за свой счет;

· открытие и ведение банковских счетов физических и юридических лиц;

· осуществление расчетов по поручению физических и юридических лиц, в том числе банков-корреспондентов, по их банковским счетам;

· инкассация денежных средств, векселей, платежных и расчетных документов и кассовое обслуживание физических и юридических лиц;

· купля-продажа иностранной валюты в наличной и безналичной формах;

· привлечение во вклады и размещение драгоценных металлов;

· выдача банковских гарантий;

· осуществление переводов денежных средств по поручению физических лиц без открытия банковских счетов (за исключением почтовых переводов).

Все банковские операции и другие сделки осуществляются в рублях, а при наличии соответствующей лицензии Банка России — и в иностранной валюте. Правила осуществления банковских операций, в том числе правила их материально-технического обеспечения, устанавливаются Банком России.

Согласно терминологии Всемирной торговой организации (ВТО) указанные банковские операции относятся к банковским услугам.

К банковским услугам корпоративного бизнеса относятся:

· Расчетно-кассовое обслуживание, в том числе через систему "Клиент-Банк";

· Кредитование: целевой кредит, овердрафт, открытие кредитной линии;

· Размещение денежных средств в депозиты и векселя Банка;

· Операции с ценными бумагами: брокерское обслуживание, операции с собственными векселями и векселями третьих лиц;

· Документарные операции;

· Конверсионные операции;

· Предоставление информации об остатках на счете с использованием кодового слова;

· Аренда индивидуальной ячейки банковского сейфа.

Функции кредитов

· Перераспределительная. В случае, если имеется излишек на уровне предприятия, он может быть использован для поддержания дружественного предприятия, на уровне государства – помощь под невысокие проценты союзной стране.

· Аккумуляция. Сбор активов, капитала для серьезного вклада или большой покупки.

· Стимулирование обращения. Развитие некоторых банковских инструментов – виртуальных счетов, карт. Часто человек, не держа физически в руках денег, может получить средства в кредит, и даже вернуть их. Т.е. нет необходимости печатать все деньги, находящиеся в обращении, что значительно экономит ресурсы.

· Воспроизводственная. Она позволяет использовать дополнительные средства для цикла производства (закупить сырье, обработать, продать товары или продукты, а с выручки рассчитаться), а также его изменения (по качеству, себестоимости…)

· Стимулирующая. Позволяет организовать процесс производства с нуля, не имея собственных активов.

Формы кредитов

В зависимости от вещественной формы ссуженной стоимости выделяют товарную, денежную и смешанную формы кредита.

Товарная форма кредита предполагает передачу во временное пользование отдельные товары (меха, скот, зерно и пр.). Возвращать надлежит аналогичное имущество с оговоренным или естественным (для скота, зерна, птицы) приращением. В современных условиях товарной формой кредита является поставка товаров с отсрочкой оплаты, продажа в рассрочку, аренда (прокат) имущества, лизинг оборудования.

Денежная форма кредита преобладает в современном хозяйстве. Она предполагает передачу во временное пользование оговоренного количества денег. В ней нет эквивалентного товарно-денежного обмена, а есть передача стоимости во временное пользование с условием возврата через определённое время и, как правило, с уплатой процентов за пользование ей. Данная форма кредита активно используется всеми субъектами экономических отношений как внутри страны, так и во внешнем экономическом обороте.

Смешанная форма кредита возникает в том случае, когда кредит был предоставлен в форме товара, а возвращён деньгами или наоборот — предоставлен деньгами, а возвращён в виде товара. Например, когда за полученные денежные ссуды расчёт производится поставками товаров.

Принципы кредитования

1. Принцип взаимовыгодности кредитной сделки означает, что условия сделки должны адекватно учитывать коммерческие интересы и возможности обеих сторон.

2. Принцип платности подразумевает, что за право пользования кредитом заёмщик должен заплатить оговоренную сумму процентов.

3. Принцип срочности означает, что кредит должен быть не просто возвращен, а возвращен в строго оговоренный в кредитном соглашении срок. Для этого в нем подробно разрабатывается график погашения кредита и уплаты процентов.

4. Принцип возвратности предполагает, что в определённый договором срок вся сумма кредита должна быть возвращена полностью путем перечисления соответствующих денежных средств на счет кредитора.

5. Принцип неизменности условий кредитования. То есть изменение условий кредитного договора (соглашения) должно производиться в соответствии с правилами, сформулированными в самом кредитном договоре, либо в специальном приложении к нему.

6. Принцип подчинения кредитной сделки нормам законодательства и банковским правилам (в частности, обязательно составление кредитного договора или соглашения в письменной форме, не противоречащего закону и нормативным актам ЦБ РФ).


Виды коммерческих кредитов

Современная кредитная система — это совокупность различных кредитно-финансовых институтов, действующих на кредитном рынке и осуществляющих аккумуляцию и мобилизацию денежного капитала. Классификацию кредита традиционно принято осуществлять по нескольким базовым признакам. К важнейшим из них относятся категория кредитора и заемщика, а также форма, в которой предоставляется конкретная ссуда.

Ипотечный кредитпредоставляется для приобретения недвижимости, которая или сама и служит гарантом заема, или кредит выдается под залог другого имущества. Данный вид кредита обычно бывает долгосрочным и выдается на срок от десяти до тридцати лет.

Потребительский кредит, как правило, выдается для приобретения каких-либо товаров общего потребления (мебель, техника и т.п.). В денежной форме предоставляется как банковская ссуда физическому лицу, в товарной, при розничной продаже, как отсрочка платежа. Этот вид кредита обычно имеет фиксированную процентную ставку, которая не может быть изменена ни одной из сторон. В роли кредитора могут выступать банки, специализированные кредитные организации, а также любые юридические лица, осуществляющие реализацию товаров или услуг. Потребительский кредит регулируется со стороны государства более тщательно, чем другие его виды, так как он связан с потребностями населения, регулированием его уровня жизни.

Автокредит выдается банком для покупки автомобиля. Не имеет значения, какой именно автомобиль собрался приобрести заемщик: новый или старый. Этот вид кредита подразумевает большие сроки, чем потребительский, получаемая сумма также может быть намного больше, а процентная ставка зависит от стоимости авто. Минусы состоят в том, что, если владелец автомобиля захочет его продать, он будет обязан ставить в известность банк. Процедура оформления купли-продажи будет гораздо сложнее.

Кредитная карта – сравнительно новый банковский продукт. Это именной документ, владелец которого может совершать покупки, используя деньги, выданные банком. При этом в случае возврата потраченной суммы до обозначенного периода проценты не взимаются. Но если дата внесения платежа просрочена, то начисляются штраф и проценты, которые существенно выше, чем по традиционным видам кредита. На данную карточку не нужно перечислять денежные средства, они автоматически пополняются банком до определенного лимита.

Отношения между банком и заемщиком возникают на основе кредитного договора или соглашения. Кредитное соглашение – это договор кредитора и заемщика при предоставлении-получении кредита, подробно оговаривающий условия возвратности, срочности и платности. Он должен быть заключен в письменной форме. Несоблюдение письменной формы влечет недействительность кредитного договора.

График погашения кредита

После оформления кредита банк выдает вам график. График платежей банка — это специальная таблица, где указан интервал, в который вы должны заплатить и очередную выплату по кредиту. Платежи в графие могут быть двух видов:

1. Аннуитетными, т.е. равновеликими платежами называют платежи, которые производятся на протяжении всего срока кредита равными друг другу. При таком виде платежа заемщик регулярно совершает платеж одного и того же размера. Эта сумма может меняться только по соглашению сторон или в некоторых случаях частичного досрочного погашения. Структура аннуитетного платежа состоит из двух частей: процентов за пользование кредитом и суммы идущей на погашение кредита. С течением времени соотношение этих величин меняется и проценты постепенно начинают составлять меньшую величину, соответственно сумма на погашение основного долга внутри аннуитетного платежа увеличивается. Поскольку, при аннуитетных платежах в начале сумма, идущая на погашение основного долга, убывает медленно, а проценты всегда начисляются на остаток от этой суммы, то и общий размер уплаченных процентов по такому кредиту больше. Это особенно заметно при досрочных погашениях.

2. Дифференцированные платежив начале срока кредитования больше, а затем постепенно уменьшаются, т.е. регулярные платежи по ипотечному кредиту не равны между собой. Структура дифференцированного платежа тоже состоит из двух частей: фиксированной на весь период суммы, идущей на погашение суммы задолженности, и убывающей части — процентов по кредиту, которая рассчитывается от суммы остатка заложенности по кредиту.

В том числе платежи бывают плановыми и досрочными. К плановым платежам по кредиту, относят те выплаты, которые заемщик платит, если идет нормальная выплата займа, т.е. не возникает просрочки.

Периодические платежи — это транши, которые платятся ежемесячно по ссуде. К ним относятся — аннуитетный и дифференцированный платежи.

Разовые платежи — платятся один раз за все время выплат по займу. К ним относятся комиссия за выдачу займа, комиссия за рассмотрение заявки. Сейчас эти платежи сведены к минимуму. Но во многих банках они все равно есть. В случае потребительских займов страховка может являться разовой выплатой.

Штрафы и досрочные погашения. Проценты на просроченную выплату и досрочные погашения относят к внеплановым платежам по займу. Досрочные погашения пользователь делает в любое время. Штрафы и пени пользователь получает, когда не платит по займу.

Досрочный платеж — платеж который делается для погашения кредита помимо ежемесячного платежа. При этом уменьшается либо сумма кредита, либо срок. Само досрочное погашение бывает либо полным, либо частичным. В первом случае кредита погашается полностью. Во втором случае погашается часть кредита и происходит уменьшение суммы или срока в зависимости от выбранного способа досрочного погашения.

Листинг программного кода

unit Unit1; //заставка

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.jpeg, Vcl.ExtCtrls,

Vcl.StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Image1: TImage;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

Uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); // открытие формы 2

begin

Form2.ShowModal;

end;

end.

unit Unit2; // форма 2 с основным меню программы

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.Imaging.jpeg,

Vcl.ExtCtrls, Vcl.StdCtrls;

type

TForm2 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N9: TMenuItem;

Button1: TButton;

Button2: TButton;

N13: TMenuItem;

Image1: TImage;

N14: TMenuItem;

Lju1: TMenuItem;

N8: TMenuItem;

procedure N1Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure Lju1Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

Uses unit3, unit4, unit5, unit6, unit7, unit9, unit10, unit12, unit13, unit14, unit11;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject); // Карточка клиента

begin

form3.Show;

end;

procedure TForm2.Button2Click(Sender: TObject); // Открытие кредита

begin

form4.Show;

end;

procedure TForm2.Lju1Click(Sender: TObject); // Договоры залога

begin

form7.Show;

end;

procedure TForm2.N13Click(Sender: TObject); // Анализ

begin

form12.Show;

end;

procedure TForm2.N14Click(Sender: TObject); //Виды залогов

begin

form9.Show;

end;

procedure TForm2.N1Click(Sender: TObject); // Карточка клиента

begin

form3.Show;

end;

procedure TForm2.N3Click(Sender: TObject); // Погашение

begin

form14.show;

end;

procedure TForm2.N5Click(Sender: TObject); // Выход

begin

close;

end;

procedure TForm2.N6Click(Sender: TObject); // Клиентская база

begin

form6.Show;

end;

procedure TForm2.N7Click(Sender: TObject); //Кредитная база

begin

form5.Show;

end;

procedure TForm2.N8Click(Sender: TObject); //График

begin

form11.show;

end;

procedure TForm2.N9Click(Sender: TObject); //Журнал операций

begin

form13.Show;

end;

end.

unit Unit3; // карточка клиента

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask;

type

TForm3 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

MaskEdit1: TMaskEdit;

Label3: TLabel;

Edit2: TEdit;

Button1: TButton;

Button2: TButton;

Label4: TLabel;

Edit3: TEdit;

Label5: TLabel;

Edit4: TEdit;

Label6: TLabel;

Edit5: TEdit;

Label7: TLabel;

ComboBox1: TComboBox;

Label8: TLabel;

MaskEdit2: TMaskEdit;

Label9: TLabel;

Edit6: TEdit;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

Uses unit6;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject); // создание клиента

begin

if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='')or

(MaskEdit2.Text='') then

begin

Application.MessageBox('Не заполнены поля!','Ошибка',MB_OK+MB_IconWarning);

Exit;

end;

Form6.tabClients.Append;

Form6.tabClients['ФИО']:= edit1.Text;

Form6.tabClients['Пол']:= combobox1.Text;

Form6.tabClients['Дата рождения']:= MaskEdit1.Text;

Form6.tabClients['Место рождения']:= Edit2.Text;

Form6.tabClients['Паспорт']:= Edit3.Text;

Form6.tabClients['Адрес регистрации']:= Edit4.Text;

Form6.tabClients['Адрес места жительства']:= Edit5.Text;

Form6.tabClients['Мобильный телефон']:= MaskEdit2.Text;

Form6.tabClients['Электронная почта']:= Edit6.Text;

Form6.tabClients.Post;

Application.MessageBox('Клиент успешно добавлен', 'Успешно', MB_OK + MB_IconInformation);

edit1.Text:='';

combobox1.Text:='';

MaskEdit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Edit5.Text:='';

Edit6.Text:='';

MaskEdit2.Text:='';

Close;

end;

procedure TForm3.Button2Click(Sender: TObject); //отмена записи

begin

close;

end;

end.

unit Unit4; // Открытие кредита

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Data.DB,

Vcl.Grids, Vcl.DBGrids, Data.Win.ADODB, Vcl.DBCtrls;

type

TForm4 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

MaskEdit1: TMaskEdit;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit;

Label6: TLabel;

Edit3: TEdit;

Label7: TLabel;

ComboBox2: TComboBox;

Button1: TButton;

Button2: TButton;

DBLookupComboBox1: TDBLookupComboBox;

Label8: TLabel;

Label9: TLabel;

MaskEdit3: TMaskEdit;

Label10: TLabel;

Edit4: TEdit;

DBLookupComboBox2: TDBLookupComboBox;

Label11: TLabel;

tabCredit: TADOTable;

tabpledge: TADOTable;

Edit5: TEdit;

Button3: TButton;

DataSource1: TDataSource;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

s,platej:real;

i,vsegoplatejey: Byte;

date:TDateTime;

implementation

Uses unit5, unit6, unit9, unit7, Unit11;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject); // создание кредита и залога

begin

Form4.tabCredit.Open;

Form4.tabCredit.Append;

Form4.tabCredit['№ кредитного договора']:= edit1.Text;

Form4.tabCredit['Дата открытия']:= MaskEdit1.Text;

Form4.tabCredit['Срок кредита']:= Edit5.Text;

Form4.tabCredit['ID клиента']:= DBLookUpComboBox1.KeyValue;

Form4.tabCredit['Сумма кредита']:= Edit2.Text;

Form4.tabCredit['Ставка по кредиту, %']:= Edit3.Text;

Form4.tabCredit['Тип кредита']:= ComboBox2.Text;

Form4.tabCredit.Post;

Form4.tabpledge.Open;

Form4.tabpledge.Append;

Form4.tabpledge['№ договора залога']:=Edit4.Text;

Form4.tabpledge['№ кредитного договора']:=edit1.Text;

Form4.tabpledge['Код предмета залога']:=DBLookUpComboBox2.KeyValue;

Form4.tabpledge['id клиента']:=DBLookUpComboBox1.KeyValue;

Form4.tabpledge['Дата договора']:=MaskEdit3.Text;

Form4.tabpledge.Post;

end;

procedure TForm4.Button2Click(Sender: TObject); // отмена ввода записи

begin

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

MaskEdit1.Text:='';

Edit5.Text:='';

DBLookUpComboBox1.KeyValue:='';

ComboBox2.Text:='';

close;

end;

procedure TForm4.Button3Click(Sender: TObject); // расчёт графика платежей

begin

date:=StrToDate(MaskEdit1.Text);

date:=incMonth(date);

i:=1;

s:=StrToFloat(edit3.text)/100;

platej:=((StrToFloat(edit2.text)/StrToFloat(edit5.text))+(StrToFloat(edit2.text)*(s/12)));

vsegoplatejey:=StrToInt(edit5.text);

while i<vsegoplatejey do

begin

Form11.TabGrafic.Append;

Form11.TabGrafic['Дата']:= date;

Form11.TabGrafic['Сумма обязательств']:= platej;

Form11.TabGrafic['№ кредитного договора']:= Edit1.Text;

Form11.TabGrafic.Post;

i:=i+1;

date:=incMonth(date);

end;

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

MaskEdit1.Text:='';

Edit5.Text:='';

DBLookUpComboBox1.KeyValue:='';

ComboBox2.Text:='';

MaskEdit3.Text:='';

Edit4.Text:='';

Form11.Show;

end;

end.

unit Unit5; // кредитная база

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.Grids,

Vcl.DBGrids, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.StdCtrls, Vcl.Mask, Vcl.ComCtrls;

type

TForm5 = class(TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

ADOQuery1: TADOQuery;

Label1: TLabel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Поиск: TButton;

Button5: TButton;

Button6: TButton;

Edit1: TEdit;

Edit3: TEdit;

ADOQuery1кредитногодоговора: TWideStringField;

ADOQuery1ФИО: TWideStringField;

ADOQuery1Датаоткрытия: TDateTimeField;

ADOQuery1Сроккредита: TWideStringField;

ADOQuery1Суммакредита: TIntegerField;

ADOQuery1Ставкапокредиту: TIntegerField;

ADOQuery1Типкредита: TWideStringField;

DateTimePicker1: TDateTimePicker;

ADOQuery2: TADOQuery;

Button4: TButton;

ADOQuery3: TADOQuery;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure ПоискClick(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

Uses unit6;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject); // сортировка по ФИО

begin

Form5.ADOQuery1.sort:='ФИО';

end;

procedure TForm5.Button2Click(Sender: TObject); // сортировка по сроку кредита

begin

Form5.ADOQuery1.sort:='[Срок кредита]';

end;

procedure TForm5.Button3Click(Sender: TObject); // сортировка по сумме кредита

begin

Form5.ADOQuery1.sort:='[Сумма кредита]';

end;

procedure TForm5.Button4Click(Sender: TObject); // Сброс

begin

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('SELECT Кредиты.[№ кредитного договора], Клиенты.ФИО, Кредиты.[Дата открытия], Кредиты.[Срок кредита], Кредиты.[Сумма кредита], Кредиты.[Ставка по кредиту, %], Кредиты.[Тип кредита]');

ADOQuery1.SQL.Add('FROM Клиенты INNER JOIN Кредиты ON Клиенты.[ID клиента] = Кредиты.[ID клиента]');

ADOQuery1.Active:=True;

end;

procedure TForm5.Button5Click(Sender: TObject); // поиск по дате открытия

begin

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('SELECT Кредиты.[№ кредитного договора], Клиенты.ФИО, Кредиты.[Дата открытия], Кредиты.[Срок кредита], Кредиты.[Сумма кредита], Кредиты.[Ставка по кредиту, %], Кредиты.[Тип кредита]');

ADOQuery1.SQL.Add('FROM Клиенты INNER JOIN Кредиты ON Клиенты.[ID клиента] = Кредиты.[ID клиента]');

ADOQuery1.SQL.Add('WHERE [Дата открытия] Like :E2');

AdoQuery1.Parameters.ParamByName('E2').Value := '%'+FormatDatetime('dd.mm.yyyy',DateTimePicker1.DateTime)+'%';

ADOQuery1.Active:=True;

end;

procedure TForm5.Button6Click(Sender: TObject); // поиск по № договора

begin

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('SELECT Кредиты.[№ кредитного договора], Клиенты.ФИО, Кредиты.[Дата открытия], Кредиты.[Срок кредита], Кредиты.[Сумма кредита], Кредиты.[Ставка по кредиту, %], Кредиты.[Тип кредита]');

ADOQuery1.SQL.Add('FROM Клиенты INNER JOIN Кредиты ON Клиенты.[ID клиента] = Кредиты.[ID клиента]');

ADOQuery1.SQL.Add('WHERE [№ кредитного договора] Like :E3');

AdoQuery1.Parameters.ParamByName('E3').Value := '%'+Trim(Edit3.Text)+'%';

ADOQuery1.Active:=True;

end;

procedure TForm5.ПоискClick(Sender: TObject); // поиск по ФИО

begin

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('SELECT Кредиты.[№ кредитного договора], Клиенты.ФИО, Кредиты.[Дата открытия], Кредиты.[Срок кредита], Кредиты.[Сумма кредита], Кредиты.[Ставка по кредиту, %], Кредиты.[Тип кредита]');

ADOQuery1.SQL.Add('FROM Клиенты INNER JOIN Кредиты ON Клиенты.[ID клиента] = Кредиты.[ID клиента]');

ADOQuery1.SQL.Add('WHERE ФИО Like :E1');

AdoQuery1.Parameters.ParamByName('E1').Value := '%'+Trim(Edit1.Text)+'%';

ADOQuery1.Active:=True;

end;

end.

unit Unit6; // клиентская база

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.ExtCtrls,

Vcl.DBCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls;

type

TForm6 = class(TForm)

Bank: TADOConnection;

tabclients: TADOTable;

DataSource1: TDataSource;

tabclientsIDклиента: TAutoIncField;

tabclientsФИО: TWideStringField;

tabclientsПол: TWideStringField;

tabclientsДатарождения: TDateTimeField;

tabclientsМесторождения: TWideStringField;

tabclientsПаспорт: TWideStringField;

tabclientsАдресрегистрации: TWideStringField;

tabclientsАдресместажительства: TWideStringField;

tabclientsМобильныйтелефон: TWideStringField;

tabclientsЭлектроннаяпочта: TWideStringField;

DBNavigator1: TDBNavigator;

Button1: TButton;

DBGrid1: TDBGrid;

ADOQuery1: TADOQuery;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses unit3;

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject); // открыть создание клиента

begin

form3.Show;

end;

end.

unit Unit12; // анализ

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, VclTee.TeeGDIPlus,

VCLTee.Series, VCLTee.TeEngine, Vcl.ExtCtrls, VCLTee.TeeProcs, VCLTee.Chart,

Vcl.StdCtrls;

type

TForm12 = class(TForm)

RadioGroup1: TRadioGroup;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

Chart1: TChart;

Series1: TBarSeries;

Series2: THorizBarSeries;

Series3: TPieSeries;

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form12: TForm12;

implementation

uses unit5, Unit6;

{$R *.dfm}

procedure TForm12.RadioButton1Click(Sender: TObject); // диаграмма по количеству договоров по типу кредита

var

x: string;

y: integer;

begin

Chart1.Title.text.Clear;

Chart1.Title.text.add('Количество договоров по типу кредита');

Series1.Active:=true;

Series2.Active:=false;

Series3.Active:=false;

form5.ADOQuery2.SQL.Clear;

form5.ADOQuery2.SQL.Add('SELECT Кредиты.[Тип кредита], Count(Кредиты.[№ кредитного договора]) AS Количество FROM Кредиты GROUP BY Кредиты.[Тип кредита]');

form5.ADOQuery2.Active:=true;

form5.ADOQuery2.First;

while not form5.ADOQuery2.Eof do

begin

x:=form5.ADOQuery2.Fields[0].Asstring;

y:=form5.ADOQuery2.Fields[1].AsInteger;

chart1.Series[0].Add(y,x);

form5.ADOQuery2.Next;

end;

end;

procedure TForm12.RadioButton2Click(Sender: TObject); // Диаграмма по полу клиентов

var

x: string;

y: integer;

begin

Chart1.Title.text.Clear;

Chart1.Title.text.add('По полу заемщика');

Series2.Active:=true;

Series1.Active:=false;

Series3.Active:=false;

form6.ADOQuery1.SQL.Clear;

form6.ADOQuery1.SQL.Add('SELECT Клиенты.Пол, Count(Клиенты.[ID клиента]) AS Количество FROM Клиенты GROUP BY Клиенты.Пол');

form6.ADOQuery1.Active:=true;

form6.ADOQuery1.First;

while not form6.ADOQuery1.Eof do

begin

x:=form6.ADOQuery1.Fields[0].Asstring;

y:=form6.ADOQuery1.Fields[1].AsInteger;

chart1.Series[1].Add(y,x);

form6.ADOQuery1.Next;

end;

end;

procedure TForm12.RadioButton3Click(Sender: TObject); // Диаграмма стоимости по видам кредита

var

x: string;

y: integer;

begin

Chart1.Title.text.Clear;

Chart1.Title.text.add('Сумма договоров по типу кредита');

Series3.Active:=true;

Series1.Active:=false;

Series2.Active:=false;

form5.ADOQuery3.SQL.Clear;

form5.ADOQuery3.SQL.Add('SELECT Кредиты.[Тип кредита], Sum(Кредиты.[Сумма кредита]) AS [Sum-Сумма кредита] FROM Кредиты GROUP BY Кредиты.[Тип кредита]');

form5.ADOQuery3.Active:=true;

form5.ADOQuery3.First;

while not form5.ADOQuery3.Eof do

begin

x:=form5.ADOQuery3.Fields[0].Asstring;

y:=form5.ADOQuery3.Fields[1].AsInteger;

chart1.Series[2].Add(y,x);

form5.ADOQuery3.Next;

end;

end;

End.

unit Unit14; // погашение

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls;

type

TForm14 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Button1: TButton;

Button2: TButton;

DBLookupComboBox1: TDBLookupComboBox;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

Edit2: TEdit;

MaskEdit1: TMaskEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form14: TForm14;

implementation

uses unit4, unit6, unit13;

{$R *.dfm}

procedure TForm14.Button1Click(Sender: TObject); //проведение

begin

Form13.tabjournal.Open;

Form13.tabjournal.Append;

Form13.tabjournal['№ кредитного договора']:= DBLookUpComboBox1.KeyValue;

Form13.tabjournal['Дата']:= MaskEdit1.Text;

Form13.tabjournal['Сумма']:= Edit2.Text;

Form13.tabjournal.Post;

end;

procedure TForm14.Button2Click(Sender: TObject); //отмена

begin

close;

end;

end.

Список использованной литературы

1. ГОСТ 34.602-89 Информационная технология. Техническое задание на создание автоматизированной системы. 01.01.1990 г. – 26 с.

2. ГОСТ Р ИСО/МЭК 12207-2010. Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств. 01.03.2012 – 160 с.

3. ФЗ №395-1-ФЗ от 02.12.1990 «О банках и банковской деятельности».

4. Культин Н.Б. Основы программирования в Embarcadero Delphi – 2015 г. – 232 с.

5. Пестриков В., Маслобоев А. Delphi на примерах. – СПб.: «БХВ – Петербург», 2005. – 496 с.

6. http://www.ynikom.ru/publications/base/p364

7. http://mobile-testing.ru/platezhi_kredit/

8. http://beluch.ru/progr/100comp/3_4_3.htm

9. http://www.grandars.ru/student/bankovskoe-delo/formy-kredita.html

Разработка программного обеспечения

Наши рекомендации