Создание сервиса "Процентных расчетов"
Интегрированные и автоматизированные банковские системы. Срочное и досрочное закрытие вклада. Задача о равных платежах. Построение web-сервиса процентных расчетов. Разработка интерфейса программы. Форма для работы с депозитами, договорами и клиентами.
Рубрика | Банковское, биржевое дело и страхование |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 23.10.2016 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Рисунок 2.8. Главная форма сервиса процентных расчетов
Рисунок 2.9. Форма работы с вкладами
Рисунок 2.10. Форма работы с вкладчиками
Рисунок 2.11. Форма для расчета процентов
2.3 Разработка интерфейса программы
2.3.1 Главная форма приложения
Данное приложение разработано на основе веб-форм. Главная страница представлена на рис. 2.12. Она содержит 3 пункта, в которых описаны основные функции приложения. Также вверху справа расположены 4 ссылки для навигации по веб-приложению. При нажатии на каждую из них открывается соответствующая веб-форма. Для открытия данных веб-форм, можно перейти по ссылкам в каждом из 3 пунктов.
Рисунок 2.32. Домашняя страница приложения
2.3.2 Форма для расчёта процента по вкладу
При нажатии на кнопку «Расчёт %» появляется веб-форма «Расчет процента по вкладу» (см. рис. 2.13.).
Рисунок 2.13. Веб-форма для расчета процента по вкладу
В данном окне можно произвести расчёт, вводя информацию о сумме вклада и количестве дней. Также, если пользователь допустил ошибку или опечатку, при нажатии на кнопку «Сброс» поля будут очищены.
2.3.3 Форма для работы с депозитами, договорами и клиентами
При нажатии на ссылку «Инфо» или на «посмотреть/изменить», открывается веб-форма «Информация о вкладчиках, депозитах и договорах» (см. рис. 2.14.), на которой можно посмотреть и соответственно изменить некоторую информацию, хранимую в базе данных. Вся информация была выбрана из базы данных с помощью запросов, а для отображения ее на экране были использованы элементы управления GridView. Также в разделе «Депозиты» предусмотрена функция добавления. При нажатии на кнопку «Новый» появляются элементы управления для добавления (см. рис. 2.15.). При некорректном вводе данных, отображается соответствующее сообщение об ошибке. При нажатии на кнопку «Сброс» все данные будут удалены.
Рисунок 2.14. Веб-форма "Информация о вкладчиках, депозитах и договорах"
Рисунок 2.15. Элементы управления для ввода информации
2.3.4 Форма для работы с запросами информации о клиентах и вкладах
На рис. 2.16. представлена веб-страница для работы с запросами. Результаты запросов также представлены на рис. 2.16. Код, отвечающий за работу с запросами см. в Приложении Б. Листинг программы с описанием.
Рисунок 2.16. Веб-форма для работы с запросами
При работе с запросами, отчеты представляются в табличном виде, для более наглядного отображения данных. Также для удобства работы с датами, был использован специальный элемент управления (см. рис. 2.17), который позволяет выбирать дату и отображать её в TextBox.
Рисунок 2.17. Элемент управления для выбора даты
Заключение
Создание простого и удобного инструмента, которым смогут пользоваться как сотрудники банка, так и клиенты банка играет важную роль, так как востребованность банковских услуг на финансовом рынке высока. Для быстрой работы при разработке сервиса используются рекурсивные функции, которые играют важную роль в теории алгоритмов, так как многие алгоритмы имеют рекурсивную структуру.
В ходе написания работы была описана предметная область и выделена исследуемая задача. Также было проведено моделирование и анализ бизнес-процесса создания прототипа web-сервиса процентных расчетов. На основании проведенного анализа можно сделать следующие выводы:
- во-первых, рекурсивные алгоритмы есть универсальное средство решения разнообразных алгоритмических проблем. Любая разрешимая задача такого рода имеет рекурсивное решение, которое при этом отличается изяществом и простотой для восприятия человеком;
- во-вторых, рекурсивные алгоритмы часто имеют более низкую асимптотическую сложность, чем эквивалентные им итерационные. То есть теоретически они быстрее. Быстрота в работе банковских систем важна не только для банковского сотрудника, но, и для обычного клиента банка.
На основе полученных данных в ходе анализа, была выделена архитектура разрабатываемого приложения и описаны используемые технологии, а также инструментальные средства разработки. С помощью выделенных инструментальных средств с учетом моделирования и анализа был разработан прототип web-сервиса.
По результатам разработки прототипа приложения, проведенного обзора инструментальных средств, используемых технологий, а также на основе модели и анализа бизнес-процесса, был разработан web-сервис банковских процентных расчетов. При разработке web-сервиса была учтена разработанная архитектура приложения. Данный сервис позволит сотрудникам банка работать с вкладами, депозитами, клиентами, а, клиентам - рассчитывать процент по вкладам и наглядно видеть, как они рассчитываются.
Библиографический список
1. Бертран П., Обзор терминологии SOA: Часть 1. Сервис, архитектура, управление и бизнес-термины.
2. Всяких Ю.В., Платежные карты: достоинства и недостатки использования// Научно-информационный журнал «Белгородский экономический вестник». - Белгород, 2006. - № 4 (44), с. 15
3. Геркул В.И., Пырлина И.В., Сервисно-ориентированное моделирование функционирования центров обработки данных. //Журнал «Бизнес-информатика». - Москва, 2010. №1, с. 13-33
4. Джон К. Халл. Опционы, фьючерсы и другие производные финансовые инструменты, Вильямс - М. - 2008, с. 133
5. Душкин Д.Н., Методы и алгоритмы выбора композиции веб-сервисов в системах с сервисно-ориентированной архитектурой. Автореферат. - Москва, 2013, с. 82
6. Дэйт К.Дж. Введение в системы баз данных М: Издательский дом «Вильямс», 2005, 1073 с.
7. Информационный портал «Кредит банки инфо». Банк «Сбербанк России»
8. Нормализация баз данных.
9. Развитие ИТ-инфраструктуры Банка
10. Хейн А.А., Моделирование и разработка сервис-ориентированных приложений. Автореферат. - Москва, 2013, с. 26
11. Web Services Architecture - W3C Working Group Note 11
Приложение А.
Разработка схемы базы данных
Согласно описанию предметной области таблица, содержащая все атрибуты физического лица (клиента), будет содержать следующие названия столбцов:
- ФИО;
- паспорт;
- ИНН*;
- адрес
- телефон;
- номер_счета;
- дата_открытия;
- дата_закрытия;
- договор;
- сумма;
- дата_заключения;
- дата_окончания;
- номер;
- депозит;
- название_вклада;
- срок_начала_действия_депозита;
- срок_окончания_действия_депозита;
- минимальная_сумма_депозита;
- минимальный_срок_размещения;
- процентная_ставка;
- условия_выплаты_депозитов;
- возможно_ли_досрочное_снятие;
- процентная_ставка_при_досрочном_снятии;
- тип_активности_вклада;
- дата;
- приход;
- расход;
- номер_счета.
В данной таблице, ключевым полем является ИНН (поле помечено *).
Чтобы привести таблицу к первой нормальной форме (далее 1НФ), нужно соблюсти два основных правила:
1. Атомарность или неделимость. Каждая колонка должна содержать одно неделимое значение.
2. Таблица не должна содержать повторяющихся колонок или групп данных.
В нашем случае, первому правилу не соответствуют столбцы с именами ФИО, Адрес, Паспорт. Но т.к. в данной базе данных сделан акцент именно на операции по вкладам, то хранить атрибут адрес будем в одной ячейке. ФИО разделим на 3 составляющих, которые будут храниться каждый в своей ячейке:
- фамилия;
- имя;
- отчество.
Поле Паспорт, разделим на два составляющих:
- серия_паспорта;
- номер_паспорта.
Таким образом, получили таблицу Физические_лица, которая содержит следующие поля (см. рис. A.1.).
Для приведения таблиц ко второй нормальной форме (далее 2НФ), приводимые таблицы должны быть уже в 1НФ. Нормализация должна проходить по порядку.
Во второй нормальной форме, должно быть соблюдено условие -- любой столбец, который не является ключом (в том числе внешним), должен зависеть от первичного ключа.
Рисунок A.1. Поля таблицы "Физические_лица"
Если данные, содержащиеся в столбце, не имеют отношения к ключу, который описывает строку, то их следует отделять в свою отдельную таблицу. В старую таблицу надо возвращать первичный ключ.
Данными, которые не имеют отношения к ключу (ИНН - в нашем случае) являются данные о счетах. К ним относятся:
- номер_счета;
- дата_открытия;
- дата_закрытия;
- дата_заключения (договора);
- дата_окончания;
- номер;
- депозит;
- название_вклада;
- срок_начала_действия_вклада;
- срок_окончания_действия_вклада;
- минимальная_сумма_вклада;
- минимальный_срок_размещения(дней);
- процентная ставка;
- возможно_ли_досрочное_снятие;
- условия_выплаты_процентов;
- процентная_ставка_при_досрочном_снятии;
- тип_активности_вклада;
- сумма;
- дата;
- приход;
- расход.
Данная таблица имеет название Счета. Ключевыми полями будет Номер_счета.
База данных будет находиться в третьей нормальной форме (далее 3НФ), если она приведена ко второй нормальной форме и каждый не ключевой столбец независим друг от друга.
Определяем, в каких полях, каких таблиц имеется взаимозависимость. На основе этого можно выделить из таблицы Счета данные, которые относятся непосредственно к договорам. Такими данными будут:
- дата_заключения;
- номер;
- депозит.
Эти же данные будут и полями таблицы Договоры. Добавим в данную таблицу поле Физ_лицо для связи с таблицей Физические_лица. Таким образом, таблица договоры будет иметь следующие поля:
- код;
- дата_заключения;
- номер;
- физ_лицо;
- депозит.
Также взаимосвязь существует между Договором и Депозитом. Поэтому создаем таблицу Условия_депозитов, которая будет иметь следующие поля:
- название_вклада;
- срок_начала_действия_депозита;
- срок_окончания_действия_депозита;
- синимальная_сумма_депозита;
- минимальный_срок_размещения(дней);
- процентная_ставка;
- условия_выплаты_депозитов;
- возможно_ли_досрочное_снятие;
- тип_автивности_вклада;
- процентная_ставка_при_досрочном_снятии.
Следует добавить поле Код, который бы однозначно идентифицировал каждый вклад. Таким образом, таблица Условия_депозитов будет иметь поля, представленные на рис. А.2:
Рисунок A. 2. Поля таблицы "Условия депозитов"
Условия депозитов могут быть разного вида, поэтому необходимо создать справочник Условия_выплаты_депозитов. Добавим поле Код (ключевое поле) для однозначной идентификации и поле Условие_выплаты. Данная таблица будет связана с таблицей Условия_депозитов, по полю Код.
Далее, следует обратить внимание на таблицу Счета, в которой есть не ключевые столбцы, независящие друг от друга. На основе этого, выделим таблицу Договоры, которая будет включать в себя следующие поля (см. рис A.3.)
Рисунок А.3. Поля таблицы "Договоры"
Исходя из оставшихся данных, следует создать таблицу Операции, которая будет содержать следующие поля:
- код(*);
- сумма;
- дата;
- приход;
- расход.
Согласно выполнению процесса нормализации получили итоговую схему данных (см. рис. А.4.):
Рисунок A. 4. Общая схема базы данных
Приложение Б
Листинг программы с описанием
Главная страница приложения (Default.aspx) была построена с помощью некоторых хэш-тегов, которые представлены ниже:
<%@ Page Title="Конструктор вкладов" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="practice._Default" %>
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<h3>Выберете для продолжения работы:</h3>
<ol class="round">
<li class="one">
<h5>Просмотр и изменение информации</h5>
В данном разделе Вы можете
<a runat="server" href="~/Info.aspx">просмотреть/изменить</a>информацию о вкладчиках, депозитах и договорах.
</li>
<li class="two">
<h5>Рассчитать процент по вкладу</h5>
Данный раздел позволит Вам<a runat="server" href="~/Сalculate.aspx">рассчитать</a>процент по вкладу, который вы выберете.
</li>
<li class="three">
<h5>Запросы</h5>
В данном разделе представлены два вида<a runat="server" href="~/Requests.aspx">запросов</a>по выбранному интервалу времени и по номеру лицевого счета.</li>
</ol>
</asp:Content>
Например, для выделения заголовков различного уровня используется хэш-теги <h3></h3>.
Для того, чтобы все данные корректно отображались в полях для ввода-вывода, была предусмотрена следующая проверка:
private void GridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (DropList1.Text == "1")
{
DropList1.Text = "Ежемесячное начисление по концу месяца на отдельный счет";
}
else if (DropList1.Text == "2")
{
DropList1.Text = "Начисление по концу месяца на тот же самый счет";
}
else if (DropList1.Text == "3")
{
DropList1.Text = "Начисление процентов в конце срока на тот же самый счет";
}
else if (DropList1.Text == "4")
{
DropList1.Text = "Начисление процентов в конце срока на отдельный счет";
}
if (comboBox1.Text == "0")
{
DropList1.Text = "Нет";
}
else if (comboBox1.Text == "1")
{
DropList1.Text = "Да";
}
////////////////////
if (DropList2.Text == "0")
{
DropList2.Text = "Активен";
}
else if (DropList2.Text == "1")
{
DropList2.Text = "Не активен";
}
else if (DropList2.Text == "1")
{
DropList2.Text = "Планируемый";
}
}
...
На странице, содержащей информацию была произведена выгрузка информации из БД. Выбор информации был сделан с помощью оператора
SELECT и хэш-тега <asp:SqlDataSource …></asp:SqlDataSource>:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateColumns="False" DataKeyNames="ИНН">
<Columns>
<asp:BoundField DataField="Фамилия" HeaderText="Фамилия" SortExpression="Фамилия" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Имя" HeaderText="Имя" SortExpression="Имя" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Отчество" HeaderText="Отчество" SortExpression="Отчество" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Серия_паспорта" HeaderText="Серия паспорта" SortExpression="Серия_паспорта" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Номер_паспорта" HeaderText="Номер паспорта" SortExpression="Номер_паспорта" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="ИНН" HeaderText="ИНН" ReadOnly="True" SortExpression="ИНН" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Адрес" HeaderText="Адрес" SortExpression="Адрес" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Телефон" HeaderText="Телефон" SortExpression="Телефон" >
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:DataBaseDesignerDepositsConnectionString %>" SelectCommand="SELECT [Фамилия], [Имя], [Отчество], [Серия_паспорта], [Номер_паспорта], [ИНН], [Адрес], [Телефон] FROM [Физические_лица]"></asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DataBaseDesignerDepositsConnectionString %>" SelectCommand="SELECT [Название_вклада], [Начало_действия_депозита], [Окончание_действия_депозита], [Минимальная_сумма_депозита], [Минимальный_срок_размещения], [Процентная_ставка], [Процентная_ставка_при_досрочном_снятии] FROM [Условия_депозитов]"></asp:SqlDataSource>
</p>
Код для формы «Расчет %»:
public partial class Calculate : Page
{
double rate;//Процентная ставка банка
double deposite = 0;//Сумма вклада
int date = 0;//Количество дней вклада
double incum = 0;//Доход с вклада
double summ = 0;//Сумма вклада с процентами
DataRow row;//Переменная в которую мы будем записывать строки для таблицы
DataTable table = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
Chart1.Titles.Add("Проценты по вкладу");
//Отключаем легенду
Chart1.Series["Series1"].IsVisibleInLegend = false;
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
string selectString = "Название_вклада Like '%" + DropDownList1.Text.Trim() + "%'";
if (DropDownList1.Text.Trim() == "До востребования")
{
rate = 0.01;
if (Convert.ToDouble(TextBox1.Text) < 10 || Convert.ToDouble(TextBox2.Text) < 1)
{
Label2.Text = "Сумма вклада не может быть меньше 10 рублей и \nвклад не может быть размещен менее чем на 1 день";
Label1.Text = "";
}
}
else if (DropDownList1.Text == "100 дней")
{
rate = 0.03;
if (Convert.ToDouble(TextBox1.Text) < 1000 || Convert.ToDouble(TextBox2.Text) < 91)
{
Label1.Text = "Сумма вклада не может быть меньше 1000 рублей и \nвклад не может быть размещен менее чем на 91 день";
}
}
else if (DropDownList1.Text == "200 дней")
{
rate = 0.05;
if (Convert.ToDouble(DropDownList1.Text) < 5000 || Convert.ToDouble(TextBox2.Text) < 181)
{
Label1.Text = "Сумма вклада не может быть меньше 5000 рублей и \nвклад не может быть размещен менее чем на 181 день";
}
}
else if (DropDownList1.Text == "Накопительный 365 дней")
{
rate = 0.07;
if (Convert.ToDouble(TextBox1.Text) < 10000 || Convert.ToDouble(TextBox2.Text) < 350)
{
Label1.Text = "Сумма вклада не может быть меньше 10000 рублей и \nвклад не может быть размещен менее чем на 350 дней";
}
}
else if (DropDownList1.Text == "500 дней")
{
rate = 0.09;
if (Convert.ToDouble(TextBox1.Text) < 500 || Convert.ToDouble(TextBox2.Text) < 500)
{
Label1.Text = "Сумма вклада не может быть меньше 500 рублей и \nвклад не может быть размещен менее чем на 500 дней";
}
}
else
{
Label1.Text = "Нет такого вклада!";
table.Clear();
}
}
catch
{
Label1.Text = "Ошибка! Проверьте, заполнены ли все поля.";
}
try//выполнить
{
table.Clear();
deposite = Convert.ToDouble(TextBox1.Text); //считываем данные введенные пользователем из текстового поля 2 (предварительно конвертировав его тип данных в double
date = Convert.ToInt32(TextBox2.Text);
incum = (deposite * date * (rate * 100)) / (365 * 100); //считаем доход за месяц
summ = deposite + incum; //считаем общий доход
Label1.Text =
"Название вклада: " + DropDownList1.Text.Trim().ToString() +
"\nВклад: " + deposite + " рублей" +
"\nДни: " + date +
"\nСтавка: " + rate +
"\nДоход: " + Convert.ToInt32(incum) +
"\nСумма: " + Convert.ToInt32(summ);
table.Columns.Add("Дни");
table.Columns.Add("Проценты");
double AVG = 0;
for (int i = 1; i < date + 1; i++)
{
AVG = ((deposite * rate * 100) / (365 * 100)) * i;
row = table.NewRow();
row["Дни"] = i;
row["Проценты"] = Convert.ToInt32(AVG);
table.Rows.Add(row);
}
///Составленную таблицу указываем в качестве источника данных
Chart1.DataSource = table;
//По горизонтали указываем дни
Chart1.Series["Series1"].XValueMember = "Дни";
//По вертикали указываем Текущую сумму вклада
Chart1.Series["Series1"].YValueMembers = "Проценты";
//привязка графика к источнику данных
Chart1.DataBind();
//Table1.
//Table1.DataSource = table;
}
catch
{//Если что-то пошло не так
Label1.Text = "Поля заполнены не корректно";
}
Button1.Enabled = false;
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
Button1.Enabled = true;
}
}
Размещено на Allbest.ru
Подобные документы
Начисление по схеме сложного процента по сумме вклада инвестора. Расчет простых и сложных, номинальных и реальных процентных ставок. Ситуация непрерывно начисляемых процентов. Зависимость процентных ставок от количества денег, находящихся в обращении.
контрольная работа [37,2 K], добавлен 25.10.2009Экономическая целесообразность и принципы организации безналичных расчетов. Особенности расчетов платежными поручениями, чеками, инкассо. Аккредитивная форма расчетов. Проблемы системы безналичных расчетов в современных условиях и пути их решения.
курсовая работа [110,3 K], добавлен 27.10.2014Пластиковые карты как инструмент организации безналичных расчетов. Сущность безналичных расчетов. Понятие и классификация пластиковых карт. Участники системы карточных расчетов и их взаимодействие. Итоги деятельности банков Украины на рынке.
курсовая работа [217,3 K], добавлен 02.09.2005Основы безналичных расчетов. Платежные системы на основе пластиковый карт. Российские электронные платежные системы. Автоматизация международных расчетов. Защита от несанкционированного доступа. Национальная платежная система Республики Беларусь.
учебное пособие [1,6 M], добавлен 29.09.2012Теоретические аспекты систем электронных расчетов в банковском деле. Анализ работы электронных систем расчетов. Практические решения проблем электронных банковских расчетов, перспективы развития. Правовые аспекты работы платежных систем.
курсовая работа [86,2 K], добавлен 04.06.2003Этические основы торгового сервиса. Анализ деятельности коммерческого банка. Оценка положения его в отрасли. Влияние банковского сервиса на финансовый результат. Совершенствование электронных услуг. Особенности торгового сервиса в кредитных организациях.
курсовая работа [904,3 K], добавлен 03.03.2016Сущность и принципы организации безналичных расчетов, способы и формы их реализации и используемые банковские технологии. Анализ эффективности, а также определение проблем и пути совершенствования организации безналичных расчетов в ПАО Сбербанк.
дипломная работа [144,7 K], добавлен 16.03.2017Понятие и значения безналичных расчетов, их принципы, возникновение и развитие. Классификация и инструменты безналичных расчетов. Создание эффективной электронной платежной системы. Клиринг как один из перспективных методов банковских расчетов.
дипломная работа [411,7 K], добавлен 26.04.2011Понятие, классификация и правовые основы осуществления безналичных расчетов. Виды, форма и этапы работы с аккредитивом. Порядок расчетов и документооборота по аккредитиву. Нормативная база применения аккредитивной формы безналичных расчетов в России.
курсовая работа [53,0 K], добавлен 17.02.2011Основы организации безналичных расчетов в РФ. Формы безналичных расчетов. Расчеты платежными поручениями, требованиями-поручениями. Чековая форма расчетов. Hаправления совершенствования системы безналичных расчетов в Российской Федерации.
дипломная работа [81,2 K], добавлен 20.05.2004