Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Кредитная система.  (Прочитано 48436 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
sd
Постоялец

by
Offline Offline

« : 06-10-2011 23:13 » 

Все доброго времени суток. В общем есть такое задание: сформировать набор предложений клиенту по целевым кредитам различных банков для оптимального выбора. Учитывать возможность досрочного погашения и/или продления кредитной линии. Реализовать выбор и поиск кредита.

В общем, как я понял это задание: я (пользователь программы) - клиент банка, т.е. банк - кредитор а я - заемщик.
Банки могут предоставлять кредиты различных видов. Мне (как клиенту) требуется из множества банков выбрать подходящий кредит с помощью поиска. Т.е. я ввожу параметры поиска (возможность продления, возможность досрочного погашения, процент кредитования, сумма кредита, кредит сроком до..., еще может что-нибудь посоветуете) , а программа выбирает мне по моим запросам подходящие кредиты различных банков.
Задача должна решаться с помощью ООП.
Поделитесь пожалуйста идеями, как можно решить данную задачу.
Я не прошу написать техническое решение данной задачи, с помощью какого либо языка. Просто было бы здорово, если бы подкинули UML диаграмму решения данной проблемы.

P.S. Возможно я не очень подробно изложил то чего хочу, т.к. сам еще не сильно понимаю, но думаю суть ясна.
Спасибо.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-10-2011 08:43 » 

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

В банках не существует единой тарифной системы.
Информация на сайтах обновляется нерегулярно, хотя к этом у стремятся.
Нужно писать под каждый банк свой парсер тарифов

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

Конечно, что-то простенькое можно наваять. Цифры взять с потолка. Напридумывать комиссии.
Напридумывать схемы кредитования, вернее схемы погашения, например - аннуитет, который может считаться по разным формулам и соответственно давать разные результаты.
Или например такой вид кредитования, как лизинг, Его рассматривать с какой стороны? 
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 07-10-2011 09:01 » new

Цитата: sd
еще может что-нибудь посоветуете
Вопросы залога, вопросы порядка погашения (аннуитетные платежи или пропорциональные), штрафные санкции, перечень документов для проверки заёмщика.

Цитата: sd
Задача должна решаться с помощью ООП.
ООП тут ни при чём. Сначала нужно сконструировать модель, затем выбрать средства реализации, и только потом уже речь пойдёт про ООП или что-то ещё.

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

Как видишь, в этом списке пока ещё нет ничего, что бы говорило о языке программирования или среде разработки. Сначала нужно решить общие организационные вопросы, на 80% лежащие вне компьютера и ООП.

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

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

И только потом разработка.

Добавлено через 4 минуты и 41 секунду:
Цитата: Sla
Или например такой вид кредитования, как лизинг, Его рассматривать с какой стороны?
Я понял автора так, что речь идёт о потребительском/ипотечном кредитовании физических лиц, а не предприятий. Поэтому никаких лизингов, аккредитивов и т.п. (Лизинг - это, кстати, чисто технически есть финансовая аренда, а не заём денежных средств.)
« Последнее редактирование: 07-10-2011 09:06 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 07-10-2011 10:04 » 

Если все сведется только к кредитному калькулятору... то, да возможно что и получится...
Но
- напиши правила (протокол, порядок) подключения банка к системе (какие-то параметры могут оказаться взаимно не согласованными, и как это будет обрабатываться системой);
- определи правила (протокол, порядок) поддержания этих сведений в актуальном состоянии;
Как раз и потребует огромного числа человеко-часов.
Хотя, если этим будет заниматься конкретный человек и только этим, то собрать актуальную информацию можно за Количество банков * (20мин или 30мин) на поиск информации. Кроме того, если этот человек четко сформирует параметры поиска, или местонахождения информации, то процесс обновления можно автоматизировать.
Хотя видел инфу, типа: Тарифы.DOC или Тарифы.PDF, т.е информация в неудобном формате для автоматической обработки.


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

Которую нельзя начинать описывать без
- чётко опиши параметры обобщённого кредита, и как параметры конкретного банка накладываются на эту модель обобщённого кредита;
Здесь нужно еще и собрать вот эти "параметры конкретного банка".

Понятно, что без пользовательского интерфейса никуда нельзя.
Экспорт, импорт, калькуляторы, доступы пользователей и т.д.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
sd
Постоялец

by
Offline Offline

« Ответ #4 : 07-10-2011 11:19 » 

Парни, спасибо. Но тут все намного проще должно быть (наверное). Мне не требуется написать реальный проект, с которым потом будут работать клиенты. Не стоит так углубляться в тонкости кредитования.
Что касается параметров обобщенного кредита, то кроме как процентная ставка, сумма, срок действия, ежемесячная выплата и возможность досрочного погашения или продления я не придумал (хотя, наверное, возможность досрочного погашения или продления сделать параметром банка, а не кредита, но за это будет больше процент). А вот как к кредиту привязать банк - я не знаю.
Допустим у меня есть три банка, в каждом из них выдают кредит на квартирку, на образование, на лечение и общепотребительский. В первом банке кроме этих кредитов есть еще, например, кредит на "отдохнуть", во втором - кредит для малого бизнеса, в третьем - кредит на покупку автомобиля.
Итого есть
1)кредит на квартирку
2)на образование
3)на лечение
4)общепотребительский
5)кредит на "отдохнуть"
6)кредит для малого бизнеса
7)кредит на покупку автомобиля

Первые 4 кредита есть в каждом банке, но, естественно, отличаются суммой, процентной ставкой и т.д. А дальше, в каждом банке добавляется по одному кредиту.
Вопрос: что еще добавить в информацию о кредите и как все это связать с банками?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 07-10-2011 11:43 » 

Вот и есть первая ошибка..
Ты уже влазишь в реализацию не спроектировав систему.

Допустим ты все хочешь сделать по упрощенной схеме.
Но и в этом случае путь показанный Dimka не пройти нельзя.

 
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 07-10-2011 11:50 » 

А вот как к кредиту привязать банк - я не знаю.

Можно попробовать другой подход - привязать коллекцию кредитов к банку, который их выдает.

Тогда банк должен уметь по запросу клиента выдавать набор возможных кредитов (либо все, либо отобранные по какому-то условию).

Клиент опрашивает банки, получает набор потенциальных предложений, оценивает по набору критериев и выбирает оптимальный.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
sd
Постоялец

by
Offline Offline

« Ответ #7 : 07-10-2011 21:53 » 

А вот как к кредиту привязать банк - я не знаю.

Можно попробовать другой подход - привязать коллекцию кредитов к банку, который их выдает.


Т.е. ты предлогаешь в класса банка создать массива класса кредит, а потом, когда клиент ввел параметры поиска в каждом банке прогонять массив кредитов и выводить подходящие?
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 07-10-2011 22:48 » 

Т.е. ты предлогаешь в класса банка создать массива класса кредит...

Нет, поскольку:

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

Читайте внимательнее: я предлагаю агрегировать коллекцию кредитов в банке классов. Будет ли это в действительности массив, связанный список, хэш-таблица или еще десяток-другой возможных контейнеров, я пока еще не знаю; это выяснится в процессе реализации, когда будут достаточно уточнены требования. Пока речь идет лишь об архитектуре верхнего уровня, абстрактной. Массив - чересчур низкоуровневая деталь на данном этапе.

...а потом, когда клиент ввел параметры поиска в каждом банке прогонять массив кредитов и выводить подходящие?

Опять же, пока еще рано печься о таких низкоуровневых деталях. Я предлагаю в данный момент заложить в архитектуру, например, паттерн GoF Visitor, а его конкретные реализации уже сами решат, как им обойти структуры данных и по каким критериям выбирать варианты. Кстати, набор критериев можно попробовать реализовать через паттерн Strategy, а способы обхода структур - через паттерн Iterator. Тогда решение получится гибким и легко настраиваемым на конкретные нужды без переписывания массы кода.

Кстати, забыл спросить главное: это вопрос по реальному проекту или для курсовой? Если первое, имеет смысл продолжать разговор. Если второе, то я тут зря разоряюсь: смело используйте массив, перебор в цикле и получайте заветную галочку в зачетку.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
sd
Постоялец

by
Offline Offline

« Ответ #9 : 07-10-2011 23:01 » 

Скорее варианта номер два. Не для курсовой, но проект далеко не реальный и не будет использоваться нигде.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 07-10-2011 23:17 » 

Ну тогда на ваше собственное усмотрение. Если нужно гибкое и легко наращиваемое решение с промышленным качеством, то выше я предложил несколько наметок на эту тему. Если нет, то сойдет и массив.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
zubr
Гость
« Ответ #11 : 08-10-2011 02:16 » 

Если говорить о конкретной реализации привязки кредитов к банкам, то здесь лучше решать через связь таблиц БД. Сама программа должна представлять собой GUI-оболочку, модули для работы с БД и сама БД.
Записан
sd
Постоялец

by
Offline Offline

« Ответ #12 : 08-10-2011 07:10 » 

Не, сама программа должна быть консольной. Только я вот все равно не очень представляю что и как делать.
Записан
Dimka
Деятель
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 08-10-2011 10:07 » 

Цитата: sd
Только я вот все равно не очень представляю что и как делать.
sd, написать сочинение на тему по пунктам, изложенным мною выше. Без этого не только ты, а вообще никто на свете не представляет, что и как тебе делать.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
sd
Постоялец

by
Offline Offline

« Ответ #14 : 08-10-2011 14:15 » 

Вот, написал сочинение. Вот что получилось:
-Параметры обобщенного кредита:
Процентная ставка
Ежемесячные выплаты
Возможность досрочного погашения
Надобность справки о доходах
Залог
Поручители
Срок выплаты
Срок рассмотрения кредита
Банк может предоставлять различные кредиты. В каждом банке есть перечень кредитов, предоставляемых этим банком.
-Существует три банка, в каждом из которых есть определенные кредиты. Данные о банке (номер телефона, адрес) можно получить по имени банка
-Функции пользователя - обычный поиск подходящего кредита по параметрам обобщенного кредита. Если полное соответствие не найдено - программа выводит приблеженные результаты поиска.
-Программа представляет из себя консольное приложение, которое начинает выполнение сразу с поиска кредита по нужным параметрам. Найденные кредиты, по желанию пользователя, сохраняются в текстовый файл.

Что дальше?
Я извиняюсь за столь глупые вопросы, просто никогда не занимался проектированием, только код писал.
Записан
Dimka
Деятель
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 08-10-2011 20:06 » 

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

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

Цитата: sd
Если полное соответствие не найдено - программа выводит приблеженные результаты поиска.
Тоже непонятно. Если результаты ранжируются по релевантности, то нужно описать это при помощи математики.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
sd
Постоялец

by
Offline Offline

« Ответ #16 : 09-10-2011 08:45 » 

Предполагается, что никаких данных о банках меняться не будет, инфа о банках храниться в текстовом файле.
Никаких БД нету.
Записан
Dimka
Деятель
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 09-10-2011 09:38 » 

sd, если ты так будешь невнимательно читать, то программиста из тебя не выйдет.

Я ещё спрашивал, как пользователь будет вводить свой запрос в программу поиска, и каковы правила определения релевантности конкретного ответа на запрос.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #18 : 21-10-2011 08:09 » 

Цитата
консольное приложение

консольное приложение? а почему не cmd-файл? уверяю вас, возможности встроенного в винду ws-скрипта вполне сравнимы с функционалом многих ЯП высокого уровня.

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

извините за оффтоп, не смог удержаться.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines