Автоматизированная информационная система учета кредитов физических лиц в коммерческом банке

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,98 Мб
  • Опубликовано:
    2014-01-05
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Автоматизированная информационная система учета кредитов физических лиц в коммерческом банке

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)







Автоматизированная информационная система

учета кредитов физических лиц в коммерческом банке

Пояснительная записка к выпускной квалификационной работе

 












РЕФЕРАТ

Пояснительная записка: с. 132, рис. 9, табл. 18, прил. 3.

КРЕДИТЫ, БАНК, АВТОМАТИЗИРОВАННАЯ ИНФОРМАЦИОННАЯ СИСТЕМА, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, БАЗА ДАННЫХ, MICROSOFT ACCESS, BORLAND DELPHI.

Объектом разработки является автоматизированная информационная система учета кредитов физических лиц в коммерческом банке.

Цели автоматизации деятельности:

- сокращение времени обработки и получения данных;

- повышение достоверности данных;

- повышение производительности труда;

- снижение рисков потери информации;

- автоматизированная подготовка необходимых документов;

- повышение уровня работы с клиентами и, как следствие, - конкурентоспособности банка.

Средства реализации - СУБД Microsoft Access, Delphi 7.

В процессе проектирования разработаны контекстная диаграмма, диаграммы декомпозиции (BpWin), полная атрибутивная диаграмма логической модели (ErWin), полная атрибутивная диаграмма физической модели (ErWin), дерево диалога (граф перехода экранных форм), программное обеспечение средствами Delphi 7, описание применения.

Введение

Для современного российского финансового рынка характерно укрупнение кредитно-финансовых институтов и активное развитие розничного банковского бизнеса. Рост новых банковских сообществ, увеличение клиентской базы и расширение спектра предлагаемых услуг невозможно обеспечить без программного обеспечения, отвечающего самым жестким требованиям, которые предъявляет современный банковский бизнес. Если раньше усилия крупных банков были сосредоточены в основном в столичных регионах и крупных городах, то в последние годы из-за усиления конкуренции на этих рынках и роста благосостояния людей в целом финансовые структуры стали гораздо более активно развивать свои филиальные сети и вытеснять небольшие региональные банки. Последние, пытаясь выстоять в конкурентной борьбе, теперь вынуждены гораздо больше внимания, чем раньше, уделять ИТ-структуре.

На российском рынке банковской автоматизации крупные игроки из года в год укрепляют свои позиции, вытесняя более мелкие компании и не слишком подпуская иностранцев. Установки зарубежных систем по-прежнему единичны и сконцентрированы в сегменте крупных банков. Вместе с тем не сокращается - а даже, напротив, растет - доля собственных разработок. Банки, которым не удается выбрать систему, соответствующую всем требованиям их бизнеса, на рынке, готовы инвестировать в собственный продукт как в дополнительное конкурентное преимущество. Некоторые подсистемы, например, кредитные модули в малых банках являются собственными разработками, поскольку нередко это является экономически более целесообразным решением, чем использование подсистем сторонних разработчиков. Между тем, степень владения менеджерами актуальной информацией о состоянии и тенденциях функционирования всех подразделений банка напрямую влияет на успех в реализации стратегических и тактических планов развития. А в условиях повсеместного снижения доходности кредитных учреждений проблема доступа управленцев к информации становится особенно актуальной. На практике в этой области зачастую царит MS Excel, со всеми его достоинствами и недостатками. В итоге огромные объемы ценнейшей информации хранятся в локальных таблицах персональных компьютеров и на разрозненных серверах баз данных.

Вот уже 21 год в условиях жесткой конкуренции с филиалами крупнейших банков страны небольшой региональный банк «Новация» оказывает практически весь спектр банковских услуг корпоративным клиентам и гражданам Республики Адыгея. Несмотря на финансовые потрясения ОАО Акционерный коммерческий банк «Новация» сохранил свою самостоятельность, чего не смогли сделать многие коммерческие банки.

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

В рамках настоящей работы планируется разработка подсистемы учета кредитов физических лиц - одного из ведущих направлений банковской деятельности не только в ОАО АКБ «Новация», но и любом банке. Автоматизированная информационная система (АИС) учета кредитов физических лиц в коммерческом банке, должна выполнять следующие основные функции:

- учет клиентов банка - физических лиц;

- ведение справочника видов кредитов (потребительский кредит, ипотека, автокредит, кредитная карта и т.д.)

- учет кредитов, выданных физическим лицам;

- учет поручителей и залогодателей по кредиту;

- построение графика погашения кредита (равными платежами, аннуитет, в конце срока);

- выполнение операций с кредитами: открытие, плановое гашение, досрочное гашение, вынос на просрочку, закрытие;

- формирование выходных документов:

- кредитный портфель на заданную дату;

- график гашения кредита;

- список клиентов Банка;

- список страховых компаний;

- выборка кредитных договоров по заданным критериям;

- журнал операций по кредитам;

- статистика выдач кредитов.

программа автоматизация кредитование интерфейс

1. Предпроектный анализ вопросов создания АИС

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

1.1.1 Общие сведения

В истории становления и развития Акционерного коммерческого банка «Новация» отражается история всего банковского сектора новой России. В начале 90-х годов в России действовало около 3 тысяч коммерческих банков, а выжили лишь сильнейшие, то есть те, чья стратегия развития была направлена на развитие банковских услуг, расширение сети структурных подразделений, привлечение клиентуры.

Начиная с капитала в 11 тыс. руб. в 1990 году, за 21 год банк увеличил собственные средства до 212 млн. руб., активы возросли с 135 тыс. руб. до 2,2 млрд. руб., а кредитный портфель с 111 тыс. руб. до 1,2 млрд. руб. В начале своей деятельности, банк не имел вкладов граждан, а сейчас его клиентами являются более 30 тысяч человек, а сумма вкладов составляет около 1 млрд. руб.

Развивая ипотечное кредитование, банк за последние 2 года помог приобрести собственное жилье более 200 молодым семьям.

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

Согласно рэнкинга Центра Экономического Анализа Информационного Агенства Интерфакс по состоянию на 1 октября 2011 года из 46 банков Южного Федерального округа ОАО АКБ «Новация» занимал 20 место по объему активов, 34 место по величине собственных средств (капитала) банка, а по величине полученной прибыли 16 место

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

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

1.1.2 Сведения об объекте автоматизации

Объект автоматизации - Отдел кредитования физических лиц ОАО АКБ «Новация». Банк предлагает своим клиентам - физическим лицам - следующие кредитные продукты:

) Кредитная карта:

- срок кредита - до 12 мес.;

- максимальная сумма - 100 000 руб.;

- погашение кредита - ежемесячно, равными долями, в соответствии с графиком;

- проценты за пользование кредитом - 20%

- комиссия за выдачу в наличной форме - 2,2%

- неустойка за нарушение сроков погашения - из расчета ставки рефинансирования Центрального Банка;

- без обеспечение кредита.

Необходимые документы:

- паспорт или другой документ, удостоверяющий личность;

- свидетельство ИНН;

- копия трудовой книжки;

- справка о доходах заемщика за последние 6 месяцев - 2-НДФЛ;

) Потребительский кредит:

- Процентная ставка составляет 25% годовых;

- Возраст - от 18 до 70 лет;

- Максимальная сумма кредита - 50 000 руб.;

- Первоначальный взнос - 10% от стоимости товара;

- Срок кредита - до 1 года;

- Сумма первоначального взноса - по желанию заемщика;

- без обеспечение кредита.

- Выдача кредита - не позднее следующего дня после обращения заемщика.

Необходимые документы:

- копия паспорта;

- копия свидетельства ИНН;

- копия медицинского страхового полиса;

- справка о доходах заемщика за последние 6 месяцев - 2-НДФЛ;

) Автокредит

- Максимальная сумма кредита - 3 000 000 руб.;

- Срок кредита - до 5 лет;

- Процентная ставка - 16% годовых (новый автомобиль) или 18% (подержанный автомобиль);

- Страхование автомобиля по риску «АвтоКАСКО», в т.ч. от ущерба и хищения, и обязательной гражданской ответственности;

- Обеспечение кредита - залог приобретаемого автомобиля;

- Поручительство супруга (при наличии зарегистрированного брака);

) Ипотечное жилищное кредитование

- Максимальная сумма кредита - 4 000 000 руб.;

- Срок кредита - до 10 лет;

- Процентная ставка - 14,5% годовых;

- Первоначальный взнос - не менее 10% от стоимости приобретаемого жилого помещения;

- Возможность привлечения созаемщиков при недостаточности доходов у заемщика;

- Сумма предоставляемого кредита зависит от среднемесячного чистого дохода заемщика или совокупного дохода созаемщиков за последние 6 месяцев;

- Допускается досрочное погашение кредита без уплаты штрафных санкций;

- Обеспечение кредита - залог приобретаемого жилого помещения.

Требования к заемщикам:

- ипотечный кредит предоставляется лицам в возрасте от 22 лет, на момент исполнения обязательств возраст заемщика (созаемщиков) не должен превышать 60 лет;

- наличие постоянной регистрации на территории Республики Адыгея;

- отсутствие у заемщика отрицательной кредитной истории;

- стаж работы не менее 6 календарных месяцев;

- наличие доходов, достаточных для погашения кредита и уплаты процентов.

1.1.3 Анализ деятельности кредитного специалиста

Можно выделить следующие этапы выдачи кредитного продукта (рисунки 1.1 и 1.2):

- определение необходимого заемщику вида кредитного продукта (цель кредита, сумма, срок, ставка и т.д.);

- сбор всех необходимых данных о заемщике, поручителях и залогодателях;

- анализ кредитной заявки и вынесение решения (положительного или отрицательного);

- если решение положительное, то подготовка всех необходимых документов и справок, а также кредитных и обеспечительных договоров;

- подписание с клиентами документов и справок, а также кредитных и обеспечительных договоров;

- выдача кредитного продукта на счет физического лица;

- безналичный перевод денежных средств продавцу или их снятие наличными.

Рисунок 1.1 - Контекстная диаграмма процесса выдачи кредитного продукта

Рисунок 1.2 - Диаграмма декомпозиции выдачи кредитного продукта

Учет клиентов-заемщиков и выданных кредитов ведется в АБС «ФОРС», не предоставляющей в необходимом объеме аналитики. Кредитный портфель для руководства готовится в таблице MS Excel.

В своей деятельности кредитный специалист руководствуется Кредитной политикой Банка, Учетной политикой Банка, а также различными положениями и рекомендациями Центрального Банка РФ, в частности Положением №254-П от 26.03.2005 г.

1.1.4Анализ рынка автоматизации кредитования физических лиц

По данным CNews Analytics автоматизацией кредитования физических лиц занимаются 75% банков [1]. Максимальная доля на рынке автоматизации кредитования физических лиц приходится на «Диасофт» - 26%. На втором месте - собственные разработки банков (17%). R-Style Softlab, ранее занимавшая вторую позицию, потеряла 7% и сместилась на третье место, с 13% рынка. ЦФТ - на четвертой позиции (11%). Пятая строчка - за компанией ПСиТ (6%). Далее идут компании «Кворум», «ЮниСАБ», «Инверсия», CSBI (по 3%) и БИС (2% рынка).

На рисунке 1.3 представлено распределение разработчиков по количеству внедрений системы автоматизации кредитования физических лиц 14% банков планируют заменить используемое решение. В качестве основных причин замены системы, используемой для автоматизации кредитования населения, отмечается замена автоматизированной банковской системы (АБС) и моральное устаревание системы, а также недостаточную функциональность решения (рисунок 1.4).

По данным опроса 61% банков, решивших сменить систему, уже выбрали поставщика решения. 29% предполагают перейти на продукты «Диасофт». Второе место по популярности сохраняет R-Style Softlab, показатели которой выросли с 20 до 26%. На третьем и четвертом местах -ЦФТ и «Инверсия», потерявшие 1 и 4% соответственно и имеющие сегодня 11 и 7% предпочтений. Далее следует ПрограмБанк (5%). По 3% занимают Misys, TemeНетs Group AG и собственные разработки (рисунок 1.5).

Рисунок 1.3 - Распределение разработчиков по количеству внедрений

Рисунок 1.4 - Причины отказа от используемой системы автоматизации кредитования физических лиц

Рисунок 1.5 - Распределение разработчиков в соответствии с предпочтениями банков

1.2 Обоснование необходимости внедрения АИС

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

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

Обычно заказчик сам определяет для себя вариант внедрения. Существуют два варианта: комплексное внедрение и внедрение собственными силами. Комплексные системы достаточно дороги, внедрять их довольно сложно и долго. Многие системы невозможно адаптировать без разработчика, а банк зачастую сильно удален от них. В дополнении к сказанному: для таких систем высока стоимость работы консультантов, стоимость обучения. Зачастую системы российских разработчиков часто используют «закрытые» для изменений системы, часто такие системы не могут «пережить» смены очередной платформы.

Автоматизированные информационные системы обычно приобретаются на достаточно долгий срок (среднее время «жизни» АИС - 8-10 лет, но это не предел - во многих банках используются системы с гораздо большим «стажем» работы, правда, и обрастающими за это время новыми возможностями). Чтобы система автоматизации приносила ожидаемый эффект, она должна соответствовать данному банку - его возможностям, уровню развития и т.д. Стоимость АИС для небольшого банка не так уж и мала [2].

Критериев выбора систем автоматизации, как и многих других достаточно сложных и дорогих товаров (например, автомобилей), существует, конечно же, много. Какие-то из них крайне важны, какие-то могут отражать очень индивидуальные потребности. В подобных ситуациях следует во многом ориентироваться на «здравый смысл», а также иметь в виду некоторые ключевые моменты, носящие специальный характер. Выбирая систему автоматизации, стоит обратить внимание на следующее [3]:

- что система автоматизации может делать, или какова ее функциональность;

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

- есть ли гарантии успешного завершения проекта внедрения и полноценного ввода системы в эксплуатацию;

- что у системы «внутри» и, следовательно, насколько она надежна, долговечна, производительна, в конце концов, современна;

- какова эффективность и возможные сроки окупаемости системы;

- уровень и качество сервиса в послепродажный период;

- возможность сопровождать и развивать систему силами специалистов самого банка;

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

Очень важно сначала выявить реальные потребности банка. Определить реальные потребности в автоматизации - дело не простое. Очень хорошо, если на предприятии, в компании или в банке разработан план развития на несколько лет вперед, в котором определена роль информационных технологий и описана последовательность создания корпоративной автоматизированной системы управления. Такой продуманный подход дает наибольшую отдачу, существенно снижает риск выбрать «не ту» АИС и избежать проблем так называемой «лоскутной» автоматизации. При этом в качестве первоочередных задач может рассматриваться автоматизация наиболее критичных на данном этапе видов деятельности («узких» мест, от которых существенно зависит работа сотрудников) или наиболее трудоемких при обработке традиционным способом [2].

Поскольку разработка или даже внедрение уже готовой единой автоматизированной системы управления банковской деятельностью не реальна в рамках настоящей работы, то на первом этапе планируется внедрение подсистемы учета кредитов физических лиц в ОАО АКБ «Новация». Таким образом, для автоматизации учета кредитов физических лиц выбран вариант реализации посредством разработки АИС учета кредитов физических лиц, который учитывает специфику процесса обработки информации в Отделе кредитования физических лиц ОАО АКБ «Новация».

1.3 Обзор существующих программных продуктов

Рассмотрим несколько примеров ведущих автоматизированных банковских информационных систем.

Розничное решение Diasoft FA# Retail от компании Диасофт [4] состоит из интегрированных компонентов (набора слоев) фронт-, миддл- и бэк-офисов. Разделение компонентов решения сделано с целью повышения эффективности выполнения разнородных операций (продажи услуг и обслуживания клиентов, оперативного управления, обработки сделок и др.).

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

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

Бэк-офис - это учетная система банка, рабочее место сотрудников, отвечающих за обработку заключенных договоров и совершенных сделок.

Фронт-офис в рамках кредитной заявки обеспечивает выполнение следующих основных операций:

- поддержка всего спектра розничных кредитных продуктов: потребительское кредитование, автокредитование, ипотечное кредитование, целевые потребительские кредиты, кредитные карты;

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

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

- ввод кредитной заявки, контроль правильности заполнения документов (первичная верификация);

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

- прикрепление графической информации к кредитной заявке (графические образы документов, представленных заемщиком и поручителями, документы, удостоверяющие личность клиента, документы, подтверждающие его доход, справка 2-НДФЛ или по форме банка, выписка с банковского счета, ИНН и др.);

- передача заявки на рассмотрение в банк (при этом может быть настроена доставка уведомления для ответственного персонала банка в соответствии с регламентом банка);

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

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

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

Фронт-офис в рамках сопровождения и погашения кредитов обеспечивает выполнение следующих основных операций:

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

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

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

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

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

- закрытие договоров при полном погашении кредита;

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

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

Интегрированная банковская система (ИБС) БИСКВИТ от компании БИС [5] обеспечивает высокий уровень информационной поддержки банковских операций в условиях динамичного развития рынка финансовых услуг. Функциональная полнота позволяет автоматизировать множество операций коммерческого банка. Модульная структура дает возможность банку нести только обоснованные в данный момент сферой его деятельности и объемом документооборота затраты на программное обеспечение, легко наращивая функциональные возможности системы по мере расширения круга выполняемых операций. Единая технология позволяет автоматически отражать операцию, выполняемую в любом модуле, в единой БД и использовать ее результаты во всех остальных модулях.

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

Возможности модуля:

) ведение информации о существенных условиях соглашений:

- графики платежей по основному долгу, процентам и комиссиям;

- дифференцированная и аннуитетная схемы погашения;

- размеры ставок процентов, комиссий, пени и штрафов;

- хранение изменения условий договора в хронологической последовательности;

) в части активных операций - поддержка различных форм кредитования:

- простой кредитный договор (единовременная выдача, единовременное или поэтапное погашение);

- ипотечный кредит (единовременная выдача, аннуитетная схема погашения);

- овердрафт (лимит овердрафта по банковскому счету, контроль лимита при выполнении операций по счету клиента, контроль общего и внутреннего сроков кредитования);

- поддержка грейс-кредитования с использовнием пластиковых карт, расчет грейс- и негрейс-задолженности на основе данных модуля «Кредитные карты» ИБС БИСКВИТ, использование записей по карточным транзакциям, настройка банковских операций для работы с грейс-кредитами по предоставлению и погашению;

) ведение информации о полученном обеспечении:

- вид обеспечения (гарантия, поручительство, залог имущества, ценных бумаг, драгоценных металлов);

- данные о договоре обеспечения и контрагенте по нему;

- количество однородных предметов обеспечения;

- способ оценки обеспечения (по остатку счета, по рыночной котировке, по индивидуальной стоимости);

- категория качества обеспечения;

- дополнительная информация (например, описание, местонахождение);

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

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

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

- при добавлении договора;

- после добавления договора путем выполнения банковской операции;

- при выполнении учетных операций, если соответствующий счет еще не был связан с договором;

) настраиваемый перечень счетов, закрываемых при закрытии договора;

) ведение данных о классификации риска по кредитам в хронологической последовательности;

) выполнение всех видов учетных операций по выдаче и сопровождению выданного кредита;

) взаимодействие с внешними автоматизированными системами:

- автоматизированные системы скоринга;

- удаленные клиентские системы ипотечных брокеров и агентов;

- ПО страховых компаний.

Модуль поддерживает полный перечень операций, оформляющих движение основного долга по договору, а также операции по учету процентов:

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

- перенос ссуды на просрочку;

- погашение просроченной задолженности;

- списание безнадежной задолженности с баланса;

- уплата процентов;

- перенос процентов на просрочку;

- внебалансовый учет процентов.

В массовом режиме могут выполняться такие операции, как, например, начисление процентов в конце отчетного периода на балансовых и внебалансовых счетах, урегулирование резерва на возможные потери по ссудам, урегулирование резерва на возможные потери по прочим операциям.Bank v.5.5 от компании R-Style Softlab, создана для автоматизации бизнеса средних и небольших банков с учетом требований этой категории. RS-Bank v.5.5 - это новая версия популярной АБС RS-Bank - 5.0, предназначенная для автоматизации всех направлений банковской деятельности: расчетно-кассовых операций, внутренней бухгалтерии, розничных услуг, услуг по кредитованию юридических и физических лиц, хозяйственной деятельности кредитной организации [6].Bank v.5.5 имеет модульную структуру, что позволяет производить поэтапное внедрение ее приложений, наращивая их функциональность параллельно с развитием бизнеса банка. В состав АБС RS-Bank v.5.5 входят следующие функциональные контуры:

- RS-Retail v.5.5 - автоматизация розничных услуг и работы с физическими лицами;

- RS-Loans v.5.5 - автоматизация кредитной деятельности банка;

- RS-Incounting v.5.5 - автоматизация хозяйственной деятельности банка.Loans - программный комплекс для автоматизации банковского кредитования, охватывающий все многообразие задач, с которыми приходится сталкиваться работникам кредитных подразделений. В системе изначально настроены следующие банковские кредитные продукты:

- кредитование юридических лиц;

- потребительское кредитование;

- автокредитование;

- ипотечное кредитование;

- цессии;

- кредитные и офердрафтные карты (на основе взаимодействия с программным комплексом RS-Retail);

- кредитные линии юридическим и физическим лицам;

- овердрафтное кредитование по расчетным счетам юридических лиц;

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

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

При оформлении и учете договоров обеспечения автоматически формируются договоры-поручительства в различных валютах и различные виды договоров залога. Система позволяет вводить описание объектов обеспечения и вести учет обеспечения на внебалансе, учитывать категории качества обеспечения - в том числе при расчете резерва.Loans предоставляет специалистам банка широкие сведения, необходимые для принятия решений по вопросам кредитования, в том числе информацию о кредитном портфеле и сводные данные по отдельным видам кредитов. В отчетах представлена информация по видам кредита, а также подробные сведения о заемщике, состоянии кредитного договора, сумме кредита в рублях и валюте, остатке задолженности, процентных ставках, сумме в рамках договоров поручительства и обеспечения по видам, просроченных суммах по основному долгу и процентам, группах риска и сумме резерва по ним, а также ряд других необходимых для анализа сведений. Программный комплекс позволяет осуществлять обмен данными с Национальным бюро кредитных историй и Центральным каталогом кредитных историй и реализовать обмен с любым другим бюро.

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

1.4 Цели и задачи автоматизации

В рамках работы кредитного специалиста ОАО АКБ «Новация» необходимо, чтобы АИС выполняла следующие основные операции:

- учет клиентов банка - физических лиц;

- ведение справочника видов кредитов (потребительский кредит, ипотека, автокредит, кредитная карта и т.д.)

- учет кредитов, выданных физическим лицам;

- учет поручителей и залогодателей по кредиту;

- построение графика погашения кредита (равными платежами, аннуитет, в конце срока);

- выполнение операций с кредитами: открытие, плановое гашение, досрочное гашение, вынос на просрочку, закрытие;

- формирование выходных документов:

- кредитный портфель на заданную дату;

- график гашения кредита;

- список клиентов Банка;

- список страховых компаний;

- выборка кредитных договоров по заданным критериям;

- журнал операций по кредитам;

- формирование статистических диаграмм:

- структура кредитного портфеля по состоянию на дату;

- суммы выдач кредитов по месяцам за период;

- суммы выдач по видам кредитных продуктов за период.

1.5 Анализ целесообразности использования заданных средств разработки

1.5.1 Обоснование выбора СУБД

На сегодняшний день известно более двух десятков форматов данных настольных СУБД, однако наиболее популярными следует признать Access, Paradox, FoxPro и dBase.

Рассмотрим каждую из этих СУБД в отдельности.и Visual dBase

Первая промышленная версия СУБД dBase - dBase II (принадлежащая тогда компании Ashton-Tate, приобретенной позже компанией Borland) появилась в начале 80-х годов. Благодаря простоте в использовании, нетребовательности к ресурсам компьютера и, что не менее важно, грамотной маркетинговой политике компании-производителя этот продукт приобрел немалую популярность [7].

Хранение данных в dBase основано на принципе «одна таблица - один файл» (эти файлы обычно имеют расширение *.dbf). MEMO-поля и BLOB-поля (доступные в поздних версиях dBase) хранятся в отдельных файлах (обычно с расширением *.dbt). Индексы для таблиц также хранятся в отдельных файлах. При этом в ранних версиях этой СУБД требовалась специальная операция реиндексирования для приведения индексов в соответствие с текущим состоянием таблицы [7].

Формат данных dBase является открытым, что позволило ряду других производителей заимствовать его для создания dBase-подобных СУБД, частично совместимых с dBase по форматам данных. Например, весьма популярная некогда СУБД FoxBase (разработанная Fox Software, Inc. и ныне принадлежащая Microsoft) использовала формат данных dBase для таблиц, однако форматы для хранения MEMO-полей и индексов были своими собственными, несовместимыми с dBase.

После покупки dBase компанией Borland этот продукт, получивший впоследствии название Visual dBase, приобрел набор дополнительных возможностей, характерных для средств разработки этой компании и для имевшейся у нее другой настольной СУБД - Paradox. Среди этих возможностей были специальные типы полей для графических данных, поддерживаемые индексы, хранение правил ссылочной целостности внутри самой базы данных, а также возможность манипулировать данными других форматов, в частности серверных СУБД, за счет использования BDE API и SQL Links [7].

В настоящее время Visual dBase принадлежит компании dBase, Inc. Его последняя версия - Visual dBase 7.5 имеет следующие возможности:

- cредства манипуляции данными dBase и FoxPro всех версий;

- ядро доступа к данным Advantage Database Server фирмы Extended Systems и ODBC-драйвер для доступа к данным этой СУБД;

- средства визуального построения запросов.

В конце 80-х - начале 90-х годов Paradox, принадлежавший тогда компании Borland International, был весьма популярной СУБД, в том числе и в нашей стране, где он одно время занимал устойчивые позиции на рынке средств разработки настольных приложений с базами данных.

Принцип хранения данных в Paradox сходен с принципами хранения данных в dBase - каждая таблица хранится в своем файле (расширение *.db), MEMO- и BLOB-поля хранятся в отдельном файле (расширение *.md), как и индексы (расширение *.px).

Однако, в отличие от dBase, формат данных Paradox не является открытым, поэтому для доступа к данным этого формата требуются специальные библиотеки. Например, в приложениях, написанных на C или Pascal, использовалась некогда популярная библиотека Paradox Engine, ставшая основой Borland Database Engine (BDE). Эта библиотека используется ныне в приложениях, созданных с помощью средств разработки Borland (Delphi, C++Builder), в некоторых генераторах отчетов (например, Crystal Reports) и в самом Paradox. Существуют и ODBC-драйверы к базам данных, созданным различными версиями этой СУБД [7].FoxPro и Visual FoxProведет свое происхождение от настольной СУБД FoxBase фирмы Fox Software. Разрабатывая FoxBase в конце 80-х годов, эта компания преследовала цель создать СУБД, функционально совместимую с dBase с точки зрения организации файлов и языка программирования, но существенно превышающую ее по производительности. Одним из способов повышения производительности являлась более эффективная организация индексных файлов, нежели в dBase, - по формату индексных файлов эти две СУБД несовместимы между собой [8].

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

Впоследствии этот продукт был приобретен компанией Microsoft. Его последние версии (начиная с версии 3.0, выпущенной в 1995 году) получили название Visual FoxPro. С каждой новой версией этот продукт оказывался все более и более интегрирован с другими продуктами Microsoft, в частности с Microsoft SQL Server, - в состав Visual FoxPro в течение нескольких последних лет входят средства переноса данных FoxPro в SQL Server и средства доступа к данным этого сервера из Visual FoxPro и созданных с его помощью приложений [8].

Последняя версия этого продукта - Visual FoxPro 6.0, доступна и отдельно, и как составная часть Microsoft Visual Studio 6.0. Отличительной особенностью этой настольной СУБД от двух рассмотренных выше является интеграция этого продукта с технологиями Microsoft, в частности поддержка COM (Component Object Model - компонентная объектная модель, являющаяся основой функционирования 32-разрядных версий Windows и организации распределенных вычислений в этой операционной системе), интеграция с Microsoft SQL Server, возможности создания распределенных приложений, основанных на концепции Windows DNA (Distributed interNet Applications) [8]. Fox Pro 6.0 предоставляет следующие возможности [8]:

- средства создания COM-объектов и объектов для Microsoft Transaction Server, позволяющих создавать масштабируемые многозвенные приложения для обработки данных;

- средства доступа к данным серверных СУБД, базирующиеся на использовании OLE DB (набор COM-интерфейсов, позволяющий осуществить унифицированный доступ к данным из разнообразных источников, в том числе из нереляционных баз данных и иных источников, например Microsoft Exchange);

- средства доступа к данным Microsoft SQL Server и Oracle, включая возможность создания и редактирования таблиц, триггеров, хранимых процедур;

- средства отладки хранимых процедур Microsoft SQL Server;

- средство визуального моделирования компонентов и объектов, являющиеся составными частями приложения - Visual Modeller;

- средство для управления компонентами приложений, позволяющее осуществлять их повторное использование.

Итак, тенденции развития этого продукта очевидны: из настольной СУБД Visual FoxPro постепенно превращается в средство разработки приложений в архитектуре «клиент/сервер» и распределенных приложений в архитектуре Windows DNA. Впрочем, эти тенденции в определенной степени характерны для всех наиболее популярных настольных СУБД: и dBase, и Paradox также позволяют осуществлять доступ к наиболее популярным серверным СУБД.Access

В отличие от Visual FoxPro, фактически превратившегося в средство разработки приложений, Access ориентирован в первую очередь на пользователей Microsoft Office, в том числе и не знакомых с программированием. Это, в частности, проявилось в том, что вся информация, относящаяся к конкретной базе данных, а именно таблицы, индексы (естественно, поддерживаемые), правила ссылочной целостности, бизнес-правила, список пользователей, а также формы и отчеты хранятся в одном файле, что в целом удобно для начинающих пользователей.Access - это функционально полная реляционная СУБД. В ней предусмотрены все необходимые вам средства для определения и обработки данных, а также для управления ими при работе с большими объемами информации [9].

В состав Access входят [9]:

- средства манипуляции данными Access и данными, доступными через ODBC (последние могут быть «присоединены» к базе данных Access);

- средства создания форм, отчетов и приложений; при этом отчеты могут быть экспортированы в формат Microsoft Word или Microsoft Excel, а для создания приложений используется Visual Basic for Applications, общий для всех составных частей Microsoft Office;

- средства доступа к данным серверных СУБД через OLE DB;

- средства создания клиентских приложений для Microsoft SQL Server;

- средства администрирования Microsoft SQL Server.

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

Основываясь на изложенных выше данных в качестве СУБД разрабатываемой системы был выбран Microsoft Access.

1.5.2 Обоснование выбора языка программирования

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую «быструю разработку», среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development - среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий [10].- это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. - мощная система визуального объектно-ориентированного проектирования, позволяющая решать множество задач, в частности [10]:

- создавать законченные приложения для Windows самой различной направленности, от чисто вычислительных и логических, до графических и мультимедиа;

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

- создавать мощные системы работы с локальными и удаленными базами данных;

- создавать справочные системы (файлы .hlp) для своих приложений.

- и многое другое.

Мечта программистов о среде программирования, в которой бы простота и удобство сочетались с мощью и гибкостью, стала реальностью с появлением среды Delphi. Она обеспечивала визуальное проектирование пользовательского интерфейса, имела развитый объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и уникальные по своей простоте и мощи средства доступа к базам данных. Язык Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык C++, но при этом он оказался весьма надежным и легким в изучении (особенно в сравнении с языком C++). В результате, среда Delphi позволила программистам легко создавать собственные компоненты и строить из них профессиональные программы. Среда оказалась настолько удачной, что по запросам любителей C++ была позже создана среда C++Builder - клон среды Delphi на основе языка C++ (с расширенным синтаксисом). Среда Delphi стала, по сути, одним из лучших средств программирования для операционной системы Windows [10].

Общая продуктивность любых инструментов создания программного обеспечения определяется следующими пятью важнейшими аспектами [10]:

- качеством визуальной среды разработки;

- скоростью работы компилятора и быстродействием откомпилированных программ;

- мощностью языка программирования и его сложностью;

- гибкостью и масштабируемостью используемой архитектуры баз данных;

- наличием поддерживаемых средой разработки шаблонов проектирования и использования.

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

2. Проектная часть

2.1 Инфологические проектирование АИС

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

Проектирование БД начинается с предварительной структуризации предметной области. Объекты реального мира классифицируются, фиксируется их совокупность, подлежащая отображению в БД; для объекта каждого типа определяется совокупность свойств, посредством которых они будут описываться в БД; фиксируются виды отношений (взаимосвязей) между объектами. Затем решается вопрос о том, какая информация об этих объектах должна быть представлена в базе, и как это сделать с помощью данных [3, 14].

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

Сущность - любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Для идентификации конкретных экземпляров сущностей в некотором типе сущности при ее описании используются специальные атрибуты, играющие роль идентификатора. Это может быть один или несколько атрибутов, значения которых позволяют однозначно отличать один экземпляр сущности от другого [3, 8].

Атрибут - поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей. Атрибуты используются для определения того, какая информация должна быть собрана о сущности. Здесь также существует различие между типом и экземпляром. Однако каждому экземпляру сущности присваивается только одно значение атрибута [7, 8].

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

Модель «сущность-связь» является неформальной моделью предметной области и используется на этапе инфологического проектирования БД. Существует несколько подходов к построению этой модели, однако общим для всех является использование трех основных конструктивных элементов для представления составляющих предметной области - сущности, атрибута, и связи. Информация о проекте суммируется с использованием графических диаграмм [2].

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

Наиболее трудоемкими этапами разработки информационных систем являются этапы анализа и проектирования, в процессе которых CASE-средства обеспечивают качество принимаемых технических решений и подготовку проектной документации. При этом большую роль играют методы визуального представления информации. Это предполагает построение структурных или иных диаграмм в реальном масштабе времени, использование многообразной цветовой палитры, сквозную проверку синтаксических правил. Графические средства моделирования предметной области позволяют разработчикам в наглядном виде изучать существующую информационную систему, перестраивать ее в соответствии с поставленными целями и имеющимися ограничениями [11, 15].

Среди таких пакетов - Rational Rose, Together Control Center, BPWin, ERWin, Model Mart, Silverrun Business Process Modeller, Process Analyst.

Для инфологического проектирования базы данных было выбрано CASE-средство Computer Associates ERwin 4.1.

Создание модели данных, как правило, начинается с создания логической модели. После описания логической модели, проектировщик может выбрать необходимую СУБД (систему управления базами данных) и ERwin автоматически создаст соответствующую физическую модель. На основе физической модели ERwin может сгенерировать системный каталог СУБД или соответствующий SQL-скрипт. Этот процесс называется прямым проектированием (Forward Engineering). Тем самым достигается масштабируемость - создав одну логическую модель данных, можно сгенерировать физические модели под любую поддерживаемую ERwin СУБД. С другой стороны, ERwin способен по содержимому системного каталога или SQL-скрипту воссоздать и физическую, и логическую модель данных (Reverse Engineering). На основе полученной логической модели данных можно сгенерировать физическую модель для другой СУБД и затем сгенерировать ее системный каталог [11, 16].

В проектируемой модели использовалась логико-физическая модель, описанная далее.

2.1.1 Логическое проектирование

В разрабатываемой системе можно выделить следующие сущности: График, Журнал, Залог, Клиент, Кредит, Образование, Поручительство, ПредметГашения, ПредметЗалога, СемПоложение, СтатусКредита, СтрахКомпания, ТипГрафика, ТипКредита, ТипОперации.диаграмма системы на логическом уровне представлена на рисунке 2.1.

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

Рисунок 2.1 - ER-диаграмма системы на логическом уровне

Выделяют три группы правил целостности [7, 12]:

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

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

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

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

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

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

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

Для приведения сущности к первой НФ следует [13]:

- разделить сложные атрибуты на атомарные;

- создать новую сущность;

- перенести в нее все «повторяющиеся» атрибуты;

- выбрать возможный ключ для нового № (или создать новый номер);

- установить идентифицирующую связь от прежней сущности к новой, № прежней сущности станет внешним ключом для новой сущности.

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

Для приведения сущности ко второй НФ следует [13]:

- выделить атрибуты, которые зависят только от части первичного ключа, создать новую сущность;

- поместить атрибуты, зависящие от части ключа, в их собственную (новую) сущность;

- установить идентифицирующую связь от прежней сущности к новой.

Сущность находится в 3-й нормальной форме, если она находится во 2НФ и никакой не ключевой атрибут не зависит от другого не ключевого атрибута (не должно быть взаимозависимости между не ключевыми атрибута).

Для приведения сущности к третьей НФ следует [12]:

- создать новую сущность и перенести в нее атрибуты с одной и той же зависимостью от не ключевого атрибута;

- использовать атрибуты, определяющие эту зависимость в качестве первичного ключа новой сущности;

- установить не идентифицирующую связь от новой сущности к старой.

Разработанная модель находится в 3-й нормальной форме.

2.1.2 Физическое проектирование

Физическая модель данных зависит от конкретной СУБД. В физической модели содержится информация обо всех объектах БД. Поскольку стандартов на объекты БД не существует, физическая модель зависит от конкретной реализации СУБД. Следовательно, одной и той же логической модели могут соответствовать несколько разных физических моделей. Если в логической модели не имеет значения, какой конкретно тип данных имеет атрибут, то в физической модели важно описать всю информацию о конкретных физических объектах.

В качестве СУБД выбрана Microsoft Access.диаграмма системы на физическом уровне представлена на рисунке 2.2.

Рисунок 2.2 - ER-диаграмма системы на физическом уровне

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

Таблица 2.1 - Описание таблиц базы данных

Наименование таблицы

Наименование поля

Тип поля

Первичный ключ

График

КредитID

Long Integer

Да

Да


Дата

Date/Time

Да

Нет


ПредметГашID

Long Integer

Да

Да


ДатаИсп

Date/Time

Нет

Нет


СуммаНач

Currency

Нет

Нет


СуммаИсп

Currency

Нет

Нет

Журнал

ID

AutoNumber

Да

Нет


КредитID

Long Integer

Нет

Да


Дата

Date/Time

Нет

Нет


ТипОперацииID

Long Integer

Нет

Да


Сумма

Currency

Нет

Нет

Залог

КредитID

Long Integer

Да

Да


Залогодатель1ID

Long Integer

Да

Да


Залогодатель2ID

Long Integer

Нет

Да


ПредметЗалогаID

Long Integer

Нет

Да


NДоговора

Text(15)

Нет

Нет


ДатаДог

Date/Time

Нет

Нет


Сумма

Currency

Нет

Нет


СвидОБраке

Text(255)

Нет

Нет


Застрахован

Да/Нет

Нет

Нет


СтрахКомпанияID

Long Integer

Нет

Да

Клиент

ID

AutoNumber

Да

Нет


ФИО

Text(70)

Нет

Нет


Пол

Да/Нет

Нет

Нет


ДатаРождения

Date/Time

Нет

Нет


МестоРожд

Text(100)

Нет

Нет


Паспорт

Text(255)

Нет

Нет


2документ

Text(100)

Нет

Нет


СемПоложениеID

Long Integer

Нет

Да


ОбразованиеID

Long Integer

Нет

Да


МестоРаботы

Text(100)

Нет

Нет


Должность

Text(100)

Нет

Нет


ЗарПлата

Currency

Нет

Нет


ИНН

Text(15)

Нет

Нет


СНИЛС

Text(15)

Нет

Нет


АдресРегистр

Text(250)

Нет

Нет


АдресФакт

Text(250)

Нет

Нет


Телефон

Text(20)

Нет

Нет


Фото

OLE Object

Нет

Нет

СтрахКомпания

ID

AutoNumber

Да

Нет


СтрахКомпания

Text(255)

Нет

Нет

ТипГрафика

ID

AutoNumber

Да

Нет


ТипГрафика

Text(20)

Нет

Нет

Кредит

ID

AutoNumber

Да

Нет


ТипКредитаID

Long Integer

Нет

Да


Заемщик1ID

Long Integer

Нет

Да


Заемщик2ID

Long Integer

Нет

Нет


СтатусID

Long Integer

Нет

Да


NДоговора

Text(15)

Нет

Нет


ДатаДог

Date/Time

Нет

Нет


ДатаВыдачи

Date/Time

Нет

Нет


ДатаЗакрыт

Date/Time

Нет

Нет


Сумма

Currency

Нет

Нет


Ставка

Single

Нет

Нет


ТипГрафикаID

Long Integer

Нет

Да


СвидОБраке

Text(255)

Нет

Нет

Образование

ID

AutoNumber

Да

Нет


Образование

Text(50)

Нет

Нет

Поручительство

Поручитель1ID

Long Integer

Да

Да


КредитID

Long Integer

Да

Да


Поручитель2ID

Long Integer

Нет

Да


NДоговора

Text(15)

Нет

Нет


ДатаДог

Date/Time

Нет

Нет


СвидОБраке

Text(255)

Нет

Нет

ПредметГашения

ID

AutoNumber

Да

Нет


ПредметГаш

Text(2)

Нет

Нет

ПредметЗалога

ID

AutoNumber

Да

Нет


ПредметЗал

Text(30)

Нет

Нет

СемПоложение

ID

AutoNumber

Да

Нет


СемейноеПоложение

Text(50)

Нет

Нет

СтатусКредита

ID

AutoNumber

Да

Нет


СтатусКредита

Text(12)

Нет

Нет

СтрахКомпания

ID

AutoNumber

Да

Нет


СтрахКомпания

Text(255)

Нет

Нет

ТипГрафика

ID

AutoNumber

Да

Нет


ТипГрафика

Text(20)

Нет

Нет


2.2 Характеристика нормативно-справочной и входной оперативной информации

К нормативно-справочной входной информации относятся данные о страховых компаниях, клиентах, видах кредитов и видах залога.

Сбор информации осуществляется следующим образом: справочная информация вносится сразу после внедрения проекта и в будущем заносится по мере поступления сведений. Оперативная информация вносится в базу данных по мере поступления соответствующих документов и сведений.

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

Экранные формы для ввода входной информации приведены в приложении Б.

2.3 Характеристика выходной информации

Выходными данными для системы являются:

- кредитный портфель на заданную дату;

- график гашения кредита;

- список клиентов Банка;

- список страховых компаний;

- выборка кредитных договоров по заданным критериям;

- журнал операций по кредитам;

- диаграмма «Структура кредитного портфеля» по состоянию на дату;

- диаграмма «Суммы выдач кредитов по месяцам» за период;

- диаграмма «Суммы выдач по видам кредитных продуктов» за период.

2.4 Организация технологии сбора, передачи, обработки и выдачи информации

Сбор информации осуществляется следующим образом: справочная информация вносится сразу после внедрения проекта и в будущем заносится по мере поступления новых сведений. Оперативная информация вносится в базу данных по мере поступления соответствующих документов и сведений.

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

Алгоритмы работы программы являются стандартными алгоритмами работы с базой данных. В основном все алгоритмы работы связаны с вводом данных от пользователя, проверке введенной информации на предмет нарушения целостности данных и занесение введенной информации в саму базу, если введенные сведения не нарушают целостности.

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

Рисунок 2.3 - Приблизительный алгоритм ввода данных в базу

2.5 Разработка интерфейса АИС

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

Взаимодействие с пользователем осуществляется посредством экранных форм. Граф переходов экранных форм (дерево диалога) представлен на рисунке 2.4.

Экранные формы приложения приведены в Приложении Б.

Рисунок 2.4 - Граф перехода экранных форм

3. Описание применения

3.1 Назначение программы


3.2 Условия применения

Минимальные необходимые требования для нормального функционирования системы: персональный компьютер на базе процессора Intel Celeron с тактовой частотой 1800 MHz, 512 МБ оперативной памяти, свободное пространство на жестком диске 40 Гб, SVGA-совместимый дисплей.

3.3 Описание задачи

Экранные формы приложения приведены в Приложении Б. Формы выходных документов приложения приведены в Приложении В.

Для загрузки программы следует запустить на выполнение исполняемый файл Loan.exe и далее работать с ним в соответствии с данным описанием.

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

Для редактирования данных о страховых компаниях, клиентах, видах кредитов и видах залога (рисунки Б.6, Б.8 - Б.10) следует выбрать соответствующий пункт меню «Справочники» главного меню программы. Далее принципы работы с любой из этих форм одинаковы и соответствуют описанному ниже.

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

Для того чтобы распечатать данные на форме, следует нажать кнопку с изображением принтера (при ее наличии), после чего на экране появится сформированный отчет в формате MS Excel (рисунки В.1 - В.6), который можно либо просто просмотреть, либо отправить на печать.

Данные на формах можно отсортировать по большинству отображаемых столбцов в таблицах щелчком мыши по заголовку выбранного столбца.

Данные на формах «Журнал операций», «Кредиты» можно отфильтровать по различным критериям (диапазон дат, клиент, статус и т.д.), выбирать которые можно, выделяя их галкой.

Для просмотра, редактирования или добавления нового кредита следует нажать кнопку «Кредиты» или выбрать соответствующий пункт меню, после чего на экране появится одноименная форма (рисунок Б.3). Выбранный действующий или только что заведенный договор можно открыть в отдельной форме двойным щелчком мыши по выбранному договору или нажатием кнопки «Открыть карточку договора».

Кредит может иметь произвольное количество договоров залога и поручительства. Варианты графика гашения основного долга: аннуитет, равными долями, гашение в конце срока или произвольный график. Для первых трех видов графика гашения основного долга его можно построить нажатием кнопки «Построить график», предварительно задав сроки кредита и ставку. График гашения процентов строится автоматически, ежемесячный для всех видов графика гашения основного долга.

Исполненные суммы в графике подсвечиваются голубым цветом, а неисполненные просроченные - розовым цветом. Сформированный график можно распечатать нажатием кнопки «Печать графика».

С кредитом можно произвести следующие операции соответствующими кнопками на форме «Кредитный договор»:

- выдача кредита;

- закрытие кредита;

- гашение основного долга или процентов;

- досрочное гашения основного долга;

- вынесение кредита на просрочку.

Все операции, проводимые с кредитным договоров, сохраняются в журнале операций. Форма «Журнал операций» открывается при нажатии одноименной кнопки на главной форме или выборе соответствующего пункта главного меню (рисунок Б.). Отобранные операции можно выгрузить в MS Excel и распечатать.

Для получения статистической информации в графическом виде предназначена форма «Статистика» (рисунки Б.12 - Б.14), вызываемая из одноименного пункта меню «Анализ» главной формы. Для произвольного диапазона дат или одной заданной даты на форме отображаются диаграммы по данным, хранимым в базе данных.

3.4 Входные и выходные данные

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

Выходными данными для системы являются:

- кредитный портфель на заданную дату;

- график гашения кредита;

- список клиентов Банка;

- список страховых компаний;

- выборка кредитных договоров по заданным критериям;

- журнал операций по кредитам;

- диаграмма «Структура кредитного портфеля» по состоянию на дату;

- диаграмма «Суммы выдач кредитов по месяцам» за период;

- диаграмма «Суммы выдач по видам кредитных продуктов» за период.

4. Обоснование экономической эффективности проекта

.1 Оценка уровня качества разрабатываемого программного продукта

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

В качестве программы для сравнения при разработке ВКР выбран программный продукт Diasoft FA# Retail от компании Диасофт.

Эта разработка принята в качестве базового варианта исходя из трех факторов:

- смежный профиль;

- соответствие требованиям технического задания ВКР;

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

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

,  (4.1)

где JЭТУ - комплексный показатель качества нового программного продукта по группе показателей;- число рассматриваемых показателей;

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

Для целей оценки JЭТУ будем использовать 5-ти бальную шкалу.

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

Таблица 4.1 - Оценка эксплуатационно-технического уровня проекта и аналога

Показатели качества программного продукта

Коэффициент весомости Bi

Проект

Аналог



Xj

Вj´Xj

Xj

Вj´Xj

Интерфейс (удобство обращения с системой)

0,09

5

0,45

3

0,27

Новизна (соответствие современным требованиям)

0,06

5

0,3

3

0,18

Соответствие профилю деятельности заказчика

0,15

5

0,75

2

0,3

Операционная система (многозадачность, графика)

0,05

4

0,2

4

0,2

Надежность

0,15

4

0,6

3

0,45

Скорость доступа к данным

0,05

4

0,2

4

0,2

Гибкость

0,05

4

0,2

2

0,1

Функции обработки данных

0,15

5

0,75

2

0,3

Соотношение стоимость/ возможности

0,1

4

0,4

2

0,2

Время на обучение персонала

0,15

5

0,75

2

0,3

ИТОГО:

1


4,6


2,34


Отношение двух найденных индексов называют коэффициентом технического уровня Аk первого программного продукта по отношению ко второму:

  (4.2)

Если полученный коэффициент больше 1, то разработка проекта с технической точки зрения оправдана. В нашем случае условие выполняется.

4.2 Организация и планирование работ по разработке проекта

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

Руководитель выполняет постановку задачи, курирует ход работ и дает необходимые консультации при разработке системы. Исполнитель отвечает за проектирование информационного обеспечения, разработку структур баз данных, реализацию вычислительных алгоритмов в виде завершенного продукта, разработку интерфейсных блоков и отладку программы. Выбор комплекса работ по разработке проекта производится в соответствии со стандартом «ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла программных средств». Стадии разработки, этапы и содержание работ приведены в таблице 4.2.

Таблица 4.2 - Стадии разработки, этапы и содержание работ

Этапы работ

Содержание работ

1 Исследование и обоснование стадии создания

1.1 Постановка задачи  1.2 Обоснование необходимости разработки 1.3 Подбор и изучение литературы

2 Научно-исследовательская работа

2.1 Анализ существующих методов решения задачи 2.2 Обоснование принципиальной важности разработки

3 Разработка и утверждение технического задания

3.1 Определение требований к проекту  3.2 Выбор программных средств разработки  3.3 Согласование и утверждение ТЗ

4 Технический проект

4.1 Разработка алгоритма решения задачи  4.2 Определение структуры входных и выходных данных

5 Проектирование

5.1 Программирование и отладка алгоритма  5.2 Тестирование  5.3 Анализ полученных результатов и исправление облар\желли\ ошибок

6 Оформление рабочей документации

6.1 Выбор методики ТЭО, изучение ГОСТов и правил оформления пояснительной записки 6.2 Оформление раздела ТЭО 6.3 Оформление пояснительной записки


Для определения ожидаемой продолжительности работы Тож применяется формула (4.3).

,       (4.3)

где tmin - кратчайшая продолжительность заданной работы (оптимистическая оценка);

tmax - самая большая продолжительность работы (пессимистическая оценка);

tн.в. - наиболее вероятная продолжительность работы, определяемая по формуле (4.4):

,      (4.4)

Оценка трудоемкости отдельных видов работ приведена в таблице 4.3.

Таблица 4.3 - Оценка трудоемкости отдельных видов работ

Виды работ

Оптимистическая оценка tmin

Реалистическая оценка tн.в

Пессимистическая оценка tmax

Ожидаемая продолжительность работы

1.1

3

2

5

2

1.2

1

2

3

2

1.3

8

5

10

5

2.1

3

4

5

4

2.2

2

4

6

4

3.1

2

2

4

2

3.2

1

2

3

2

3.3

2

2

4

2

4.1

11

7

15

7

4.2

2

3

4

3

5.1

30

20

50

20

5.2

3

4

5

4

5.3

10

7

16

7

6.1

3

4

5

4

6.2

2

4

6

4

6.3

10

6

14

6

Суммарное ожидаемое время на выполнение всех этапов

78


На основе данных таблице 4.3 разработан календарный график выполнения работ (таблица 4.4), показывающий последовательность и взаимосвязь выполнения комплекса работ.

Таблица 4.4 - Календарный график выполнения работ

Вид работы

Исполнители

Длительность в днях

Загрузка, дней

Загрузка, %

1.1

Программист

2

2

100


Руководитель


1

50

1.2

Программист

2

2

100


Руководитель


1

50

1.3

Программист

5

5

100


Руководитель




2.1

Программист

4

4

100


Руководитель


2

50

2.2

Программист

4

4

100


Руководитель


1

25

3.1

Программист

2

2

100


Руководитель


2

100

3.2

Программист

2

2

100


Руководитель




3.3

Программист

2

2

100


Руководитель


2

100

4.1

Программист

7

7

100


Руководитель




4.2

Программист

3

3

100


Руководитель




5.1

Программист

20

20

100


Руководитель




5.2

Программист

4

4

100


Руководитель


4

100

5.3

Программист

7

7

100


Руководитель


3

43

6.1

Программист

4

4

100


Руководитель




6.2

Программист

4

4

100


Руководитель

Программист

6

6

100


Руководитель





Итого: 78 дней Итого по исполнителям: Руководитель - 16 дней, Программист - 78 дней


Построим на основе данных таблице 4.4 столбиковую диаграмму, представляющую этапы работ (рисунок 4.1)

Рисунок 4.1 - Этапы выполнения работ

4.3 Расчет затрат на разработку проекта

Капитальные вложения в системы, связанные с автоматизированной информационной системой, будут состоять из:

К=Кпр,                                                                                  (4.5)

где Кп - капитальные вложения на проектирование;

Кр - капитальные вложения на реализацию.

Суммарные затраты на проектирование системы и разработку программы:

,      (4.6)

где m - количество работников, участвующих в разработке проекта;

Зoi - затраты на основную заработную плату работника i-й категории, руб.;

Wd - коэффициент, учитывающий дополнительную заработную плату, затраченную на разработку, в долях к основной заработной плате (= 0,5);

Wс - коэффициент, учитывающий отчисления на социальные нужды, в долях к сумме основной и дополнительной заработной платы разработчиков: с 2012 годадействуют следующие тарифы страховых взносов: страховые взносы в Пенсионный фонд - 22%, страховые взносы в ФСС - 2,9%, страховые взносы в ФФОМС - 5,1, страховые взносы на производственный травматизм - 0,2%) (= 0,302);

Wн - коэффициент, учитывающий накладные расходы организации, в долях к основной заработной плате разработчиков, равный 0,6;

СM - затраты на материалы;

Мв - затраты на использование машинного времени.

Материалы, приобретенные в процессе работы, и их стоимость приведены в таблице 4.5.

Таблица 4.5 - Затраты на материалы

Материалы

Ед. изм.

Приобретённое количество

Цена за единицу, руб.

Сумма, руб.

Картридж для принтера

шт.

1

250

250

Бумага офисная

пачка

1

120

120

Флеш-память

шт.

1

178

178

Итого:

548


Денежные расходы на основную заработную плату определяются по формуле:

363,67´16 + 318,19´78 = 30 637,54 руб.,       (4.7)

где ЗПсрni - среднедневная заработная плата работника i-ой категории, руб.;

Ti - трудоемкость работ, выполняемых проектировщиком i-ой категории, чел/дн.

Затраты времени на разработку системы по каждому исполнителю принимаются, исходя из его загрузки по календарному графику выполнения работ (см. таблицу 4.2).

Данные по расчету основной заработной платы проектировщиков занесены в таблицу 4.6, исходя из того, что в месяце в среднем - 22 рабочих дня. Основная заработная плата разработчиков системы приведена в таблице 4.6.

Таблица 4.6 - Расчет основной заработной платы проектировщиков

Должность

Должностной оклад, руб.

Средняя дневная ставка, руб.

Затраты времени на разработку чел./дней

ФОТ, руб.

Руководитель Программист

8000 7000

363,67 318,19

16 124

5 818,72

Программист

7000

318,19

78

24 818,82

Итого


30 637,54

Дополнительная заработная плата (40%)

12 255,02

Отчисления в социальные фонды (30,2%)

12 953,55


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

,    (4.8)

где tмв - машинное время компьютера, необходимое для разработки программного продукта;

Sмч - стоимость 1 часа машинного времени;

Км - коэффициент мультипрограммности (показывает долю машинного времени, отводимого непосредственно на работу над проектом); Км=1.

Учитывая время на разработку программы на компьютере, представленное в таблице 4.3, коэффициент мультипрограммности, равный 1, и условной стоимости 1 часа работы на компьютере в платном компьютерном зале, равной 15 руб., рассчитаем расходы на разработку программы:

Зm = (16 + 78) ´15´1 = 1 410,00 руб.    

Накладные расходы Зн определим по формуле:

 = 30 637,54 ´ 0,6 = 18 382,52 руб.

Таким образом, капитальные вложения на проектирование равны:

КП = 30 637,54 ´ ((1+0,4) ´ (1+0,302)+0,6) + 1410,00 + 548,00 = 76 186,63 руб.

Смета затрат на разработку программного продукта по статьям расходов представлена в таблице 4.7.

Таблица 4.7 - Смета затрат на разработку программного продукта

Статьи затрат

Сумма (руб.)

Основная заработная плата

30 637,54

Дополнительная зарплата

12 255,02

Отчисления во внебюджетные фонды

12 953,55

Затраты на материалы

548,00

Затраты на машинное время

1 410,00

Накладные расходы организации

18 382,52

ИТОГО:

76 186,63


Капитальные вложения на реализацию проекта:

       (4.9)

где Ко - затраты на основное и вспомогательное оборудование, руб.;

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

Кпп - затраты на приобретение типовых разработок, пакетов, руб.;

Кпп - затраты на прокладку линий связи, руб.;

Киб - затраты на создание информационной базы, руб.;

Кпк - затраты на подготовку и переподготовку кадров, руб.

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

Таким образом, при внедрении системы, рассматриваемой в данной работе, затраты на его реализацию определяются затратами на оборудование и материалы. В оборудование и материалы входит компьютер на базе процессора Pentium-4. Стоимость компьютера 20000 руб.

Затраты на основное и вспомогательное оборудование определяются по формуле:

,    (4.10)

где Cbj - балансовая стоимость j-го вида оборудования, руб. (20000 руб.);

Qj - количество единиц j-гo оборудования, руб. (1 шт.);

Yj - коэффициент загрузки j-го вида оборудования при обработке информации по решению задач предметной области.

Коэффициент загрузки оборудования:

,  (4.11)

где Фэфj - эффективный годовой фонд времени работы технического средства j-го вида, час./год.

,   (4.12)

где tкj - трудоемкость однократной обработки информации по к-й задаче на j-м виде технических средств, часов машинного времени (tкj=6);

Uk - частота (периодичность) решения к-й задачи, дней /год (Uk = 16 + 78 = 94).

Подставляя имеющиеся цифры в формулу, получаем затраты на приобретение оборудования:

Ko = 20000,00 ´ 1 ´ (6´94)/(94´8) = 15 000,00 руб.

Суммарные затраты на разработку проекта составят:

K = 15 000,00 + 76 186,63 = 91 186,63 руб.

Суммарные затраты, связанные с внедрением аналога складываются из следующих затрат:

- затрат на приобретение программного продукта (106000 руб.);

- затрат по оплате услуг на установку и сопровождение продукта (33500 руб.);

- затрат на основное и вспомогательное оборудование (15000 руб.);

- затрат по подготовке пользователя (25350 руб.).

Итого суммарные затраты, связанные с внедрением аналога составят:

K = 106000 + 33500 + 15000 + 25350 = 179 850 руб.

4.4 Расчет эксплуатационных затрат

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

Зтек = Ззп + Са + Зэ + Срем + Зм + Зн ,                              (4.13)

где Ззп - затраты на зарплату основную и дополнительную с отчислениями во внебюджетные фонды, руб.;

Са - амортизационные отчисления от стоимости оборудования и устройств системы, руб.;

Зэ - затраты на силовую энергию, руб.;

Срем - затраты на текущий ремонт оборудования и устройств системы, руб.;

Зм - затраты на материалы и машинные носители, руб.;

Зн - накладные расходы информационного отдела, руб.

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

,       (4.14)

где ti - время эксплуатации системы i-м работником, дни;

i - среднедневная заработная плата i-го работника, руб./день.

Данные для расчета основной заработной платы специалистов занесены в таблицу 4.8.

Таблица 4.8 - Расчет основной заработной платы специалистов (для эксплуатации нового программного продукта)

Должность

Должностной оклад, руб.

Средняя дневная ставка, руб.

Затраты времени на эксплуатацию программного продукта, чел./дней

Фонд заработной платы, руб.

Кредитный специалист

10000

454,55

30

13 636,50


Сзп1 = 13 636,50 ´ 1,5 ´ 1,302 = 26 632,08 руб.

Аналогичные расчеты произведем по использованию продукта аналога, используя данные, приведенные в таблице 4.9.

Таблица 4.9 - Данные по заработной плате специалистов (для продукта-аналога)

Должность

Должностной оклад, руб.

Средняя дневная ставка, руб.

Затраты времени на эксплуатацию, чел./дней

Фонд заработной платы, руб.

Кредитный специалист

10000

454,55

50

22 727,50


Сзп2 = 22 727,50 ´ 1,5 ´ 1,302 = 44 386,81 руб.

Сумма амортизационных отчислений рассчитывается следующим образом:

,   (4.15)

где Cbj - балансовая стоимость j-гo вида оборудования, руб.;

tj - время работы j-гo вида оборудования, час;

Fэфj - эффективный фонд времени работы оборудования в год, час;

aj - норма годовых амортизационных отчислений для j-гo вида оборудования, %;

gj - количество единиц оборудования j-гo вида.

Эффективный фонд времени работы оборудования можно вычислить по формуле

Fэф =Dр´ Нэ ,                                                                    (4.16)

где Dp - количество рабочих дней в году, Dp = 249;

Нэ - норматив среднесуточной загрузки, час./день, Нз = 8.

Таким образом, эффективный фонд времени работы оборудования составит:

Fэф = 249´8 = 1992 час.

Известны следующие данные для расчета амортизационных отчислений:

аj = 20%;j = 1;j (для проекта) = 30´8 = 240 час.;j (для аналога) = 50´8 = 400 час.;bj (для проекта) = 20 000,00 руб.bj (для аналога) = 20 000,00 руб.

Сумма амортизационных отчислений для проекта составит:

Сa = 20000´0,2´1´240/1992 = 481,93 руб.  

Сумма амортизационных отчислений для аналога составит:

Сa = 20000´0,2´1´400/1992 = 803,21 руб.  

Затраты на силовую энергию рассчитываются по формуле

,     (4.17)

где Nj - установленная мощность j-го вида технических средств, кВт;

tj - время работы j-го вида технических средств, час;

gj - коэффициент использования установленной мощности оборудования;

Тэ - тариф на электроэнергию, руб./кВт ч.

Для расчета затрат на силовую энергию используем тариф на электроэнергию для промышленных предприятий, установленный на данной территории, и составляющий 1,76 руб./кВт-ч. Установленная мощность для компьютера равна 0,3 кВт. Таким образом затраты на силовую энергию составят:

а) для проекта: Зэ = 0,3´240´1,76 = 126,72 руб.;

б) для аналога: Зэ = 0,3´400´1,76 = 211,20 руб.

Затраты на текущий ремонт оборудования рассчитываются по формуле

,;         (4.18)

где Cpi - норматив затрат на ремонт (Cpi = 0,05).

Затраты на текущий ремонт оборудования составят:

а) для проекта: Зрем = 0,05´20000´240/1992 = 120,48 руб. 

б) для аналога: Зрем = 0,05´20000´400/1992 = 200,80 руб. 

Затраты на материалы, потребляемые в течение года, составляют 1% от балансовой стоимости основного оборудования и равны 200 руб.

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

Таблица 4.10 - Расчет годовых эксплуатационных затрат

Статьи затрат

Затраты на проект, руб.

Затраты на аналог, руб.

Основная и дополнительная зарплата с отчислениями в социальные фонды

26 632,08

22 727,50

Амортизационные отчисления

481,93

803,21

Затраты на электроэнергию

126,72

211,20

Затраты на текущий ремонт

120,48

200,80

Затраты на материалы

200,00

200,00

Накладные расходы

5 512,24

4 828,54

Итого

33 073,45

28 971,25


Накладные расходы для проекта составят:

Сн = (26 632,08 + 481,93 + 126,72 + 120,48 + 200,00) ´ 0,2 = 5 512,24 руб.

Накладные расходы для аналога составят:

Сн = (22 727,50 + 803,21 + 211,20 + 200,80 + 200,00) ´ 0,2 = 4 828,54 руб.

4.5 Расчет экономического эффекта и показателей экономической эффективности

Оценка экономической эффективности вариантов проектных решений элементов АИС основывается на расчете показателей сравнительной экономической эффективности капитальных вложений. Экономический эффект от использования разрабатываемой системы определяется по формуле:

,         (4.19)

где Зприв аналог, Зприв проект - приведенные затраты на единицу работ, выполняемых с помощью базового и проектируемого вариантов процесса обработки информации, руб.;

Ak - коэффициент эксплуатационно-технической эквивалентности (Ak = 1,97);

N - объем работ, выполняемых с помощью разрабатываемого продукта (N = 1).

Приведенные затраты (Зприв) на единицу работ, выполняемых по базовому и разрабатываемому вариантам, рассчитываются по формуле:

3привiэi + Eн  Ki,       (4.20)

где Зэi - себестоимость (текущие эксплуатационные затраты единицы работ), руб.;

Ен - нормативный коэффициент экономической эффективности (Ен = 0,15);

Ki - суммарные затраты, связанные с созданием программного продукта.

Данные для расчета экономического эффекта представлены в таблице 4.11.

Таблица 4.11 - Расчет экономического эффекта

Данные

Разрабатываемый продукт

Продукт-аналог

Себестоимость (текущие эксплуатационные затраты), руб.

33 073,45

28 971,25

Суммарные затраты, связанные с внедрением проекта, руб.

91 186,63

179 850,00

Приведенные затраты на единицу работ, руб.

46 751,44

55 948,75

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

63 467,60


Приведенные затраты на единицу работ по проекту составят:

Зприв проект = 33 073,45 + 0,15 ´ 91 186,63 = 43 889,71 руб.

Приведенные затраты на единицу работ по аналогу составят:

Зприв аналог= 28 971,25 + 0,15 ´ 179 850,00 = 55 948,75 руб.

Экономический эффект от использования разрабатываемой системы (Э) составит:

Э = 55 948,75 ´1,97 - 46 751,44 = 63 467,60 руб.

После определения годового экономического эффекта рассчитаем срок окупаемости затрат (Ток) на разработку продукта:

     (4.21)

Срок окупаемости составит:

Ток = 91 186,63 / 63 467,60 = 1,4 года.    

Расчет фактического коэффициента экономической эффективности (Еф) произведем по формуле:

= 63 467,60 / 91 186,63 = 0,7,         (4.22)

Сопоставим фактический коэффициент экономической эффективности с нормативным значением коэффициента эффективности капитальных вложений (Ен = 0,33) и сделаем вывод: чем выше фактический коэффициент экономической эффективности, тем быстрее окупаются капитальные вложения, осуществленные в разработку программного продукта. Таким образом, разработка и внедрение разрабатываемого продукта является эффективной.

В ходе проделанной работы найдены все необходимые данные, доказывающие целесообразность и эффективность данной разработки. Приведем эти данные в сводной таблице 4.12.

Таблица 4.12 - Сводная таблица экономического обоснования разработки и внедрения проекта

Затраты на разработку и реализацию проекта

91 186,63

Общие эксплуатационные затраты

33 073,45

Экономический эффект

63 467,60

Коэффициент экономической эффективности

0,7

Срок окупаемости

1,4

5. Безопасность жизнедеятельности

Настоящая глава разработана на основе Cанитарных правил [17].

5.1 Анализ опасных и вредных производственных факторов на рабочем месте пользователя ПЭВМ

Опасным называется производственный фактор, воздействие которого на работающего в определенных условиях человека приводит к травме или другому внезапному резкому ухудшению здоровья. Если же производственный фактор приводит к заболеванию или снижению работоспособности, то его считают вредным (ГОСТ 12.0.002-80).

В ГОСТ 12.0.003-74* «ССБТ. Опасные и вредные производственные факторы Классификация» приводится классификация элементов условий труда, выступающих в роли опасных и вредных производственных факторов. Они подразделяются на четыре группы: физические, химические, биологические и психофизиологические.

На рабочем месте пользователя ЭВМ присутствуют два вида факторов - физические и психофизиологические.

Физические факторы:

а) Освещение (отсутствие или недостаток естественного света, недостаточная освещенность рабочей зоны, повышенная яркость света, пониженная контрастность, прямая и отраженная блесткость, повышенная пульсация светового потока). Информация, которую человек получает из внешнего мира, поступает в основном через зрительный канал. Поэтому качество информации, получаемой посредством зрения, во многом зависит от освещения. Причиной плохого освещения может быть неправильное расположение как естественных, так и искусственных источников освещения. Требования к освещению на рабочих местах, оборудованных ПЭВМ, перечислены в СанПиН 2.2.2/2.4.1340-03.

б) Шум и вибрация. Источником этих факторов является шумящее оборудование (печатающие устройства, серверы и т.п.). Предельно допустимые значения уровня шума и вибрации на рабочих местах, оборудованных ПЭВМ, регламентируются в СанПиН.

г) Температура воздуха;

д) Относительная влажность воздуха;

е) Скорость движения воздуха;

ж) Интенсивность теплового излучения

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

Психофизиологические факторы.

а) Физические перегрузки (статические и динамические)

б) Нервно-психические перегрузки (умственное перенапряжение, перенапряжение анализаторов, монотонность труда, эмоциональные перегрузки)

5.2 Требования безопасности при работе с ПЭВМ

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

Требования к ПЭВМ.

. ПЭВМ должны соответствовать требованиям Санитарных правил [24] и каждый их тип подлежит санитарно-эпидемиологической экспертизе с оценкой в испытательных лабораториях, аккредитованных в установленном порядке.

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

. Дизайн ПЭВМ должен предусматривать окраску корпуса в спокойные мягкие тона с диффузным рассеиванием света. Корпус ПЭВМ, клавиатура и другие блоки и устройства ПЭВМ должны иметь матовую поверхность с коэффициентом отражения 0,4 - 0,6 и не иметь блестящих деталей, способных создавать блики.

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

Требования к помещениям для работы с ПЭВМ

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

Естественное и искусственное освещение должно соответствовать требованиям действующей нормативной документации. Окна в помещениях, где эксплуатируется вычислительная техника, преимущественно должны быть ориентированы на север и северо-восток.

Оконные проемы должны быть оборудованы регулируемыми устройствами типа: жалюзи, занавесей, внешних козырьков и др.

. Для внутренней отделки интерьера помещений, где расположены ПЭВМ, должны использоваться диффузно отражающие материалы с коэффициентом отражения для потолка - 0,7 - 0,8; для стен - 0,5 - 0,6; для пола - 0,3 - 0,5.

. Полимерные материалы используются для внутренней отделки интерьера помещений с ПЭВМ при наличии санитарно-эпидемиологического заключения.

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

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

Требования к микроклимату, содержанию аэроионов и вредных химических веществ в воздухе на рабочих местах, оборудованных ПЭВМ.

В помещении должны обеспечиваться оптимальные параметры микроклимата для категории работ 1 а и 1б в соответствии с действующими санитарно- эпидемиологическими нормативами микроклимата производственных помещений

В помещении необходимо проводить ежедневную влажную уборку и систематическое проветривание после каждого часа работы на ПЭВМ.

Уровни положительных и отрицательных аэроионов в воздухе помещения должны соответствовать действующим санитарно-эпидемиологическим нормативам.

Требования к освещению на рабочих местах, оборудованных ПЭВМ

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

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

Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 -500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк.

Следует ограничивать прямую блесткость от источников освещения, при этом яркость светящихся поверхностей (окна, светильники и др.), находящихся в поле зрения, должна быть не более 200 кд/м .

Следует ограничивать отраженную блесткость на рабочих поверхностях (экран, стол, клавиатура и др.) за счет правильного выбора типов светильников и расположения рабочих мест по отношению к источникам естественного и искусственного освещения, при этом яркость бликов на экране ПЭВМ не должна превышать 40 кд/м2 и яркость потолка не должна превышать 200 кд/м2.

Показатель ослепленности для источников общего искусственного освещения в помещении должен быть не более 20. Показатель дискомфорта - не более 40.

Яркость светильников общего освещения в зоне углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/м2, защитный угол светильников должен быть не менее 40 градусов.

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

Следует ограничивать неравномерность распределения яркости в поле зрения пользователя ПЭВМ, при этом соотношение яркости между рабочими поверхностями не должно превышать 3:1 - 5:1, а между рабочими поверхностями и поверхностями стен и оборудования - 10:1.

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

Требования к визуальным параметрам ВДТ, контролируемым на рабочих местах

. Предельно допустимые значения визуальных параметров ВДТ, контролируемые на рабочих местах, представлены в таблице 5.1.

Таблица 5.1 - Предельно допустимые значения визуальных параметров ВДТ

N п/п

Параметры

Допустимые значения

1

Яркость белого поля

Не менее 35 кд/кв. м

2

Неравномерность яркости рабочего поля

3

Контрастность (для монохромного режима)

Не менее 3:1

4

Временная нестабильность изображения (мелькания)

Не должна фиксироваться

 5

Пространственная нестабильность изображения (дрожание)

Не более 2-х 1E(-4L),где L- проектное расстояние наблюдения, мм


. При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора) должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м.

. Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600 - 700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов.

Электробезопасность.

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

Согласно ПУЭ в административном помещении при напряжении 380 В и выше переменного и 440 В и выше постоянного тока электроустановки подлежат заземлению во всех случаях.

. Защитным занулением называется преднамеренное электрическое соединение с нулевым защитным проводником металлических нетоковедуших частей, которые могут оказаться под напряжением. Нулевой защитный проводник - это проводник, соединяющий зануляемые части с глухозаземленной нейтральной точкой обмотки источника тока или ее эквивалентом (ГОСТ 12.1.009-76).

Зануление применяется в четырехпроводных сетях напряжением до 1000 В с заземленной нейтралью (рисунок 5.1).

Рисунок 5.1 - Принципиальная схема зануления

. Рабочая изоляция электроустановок - это электрическая изоляция токоведущих частей электроустановки, обеспечивающая ее нормальную работу и защиту от поражения электрическим током (ГОСТ 12.1.009--76). В процессе эксплуатации электроустановок изоляция подвержена различным повреждениям (механическим, химическим, тепловым и др.), а также старению, в результате чего         ухудшаются ее свойства (в основном активное сопротивление).

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

Рисунок 5.2 - Схема измерения сопротивления изоляции сети мегаомметром

Контроль изоляции подразделяется на приемосдаточный, периодический и постоянный. Приемо-сдаточный контроль изоляции производится при вводе в эксплуатацию вновь смонтированных или вышедших из ремонта электроустановок.

Требования к уровням шума и вибрации на рабочих местах, оборудованных ПЭВМ

. В административных помещениях при выполнении основных или вспомогательных работ с использованием ПЭВМ уровни шума на рабочих местах не должны превышать предельно допустимых значений, установленных для данных видов работ в соответствии с действующими санитарно-эпидемиологическими нормативами. Для инженерных работников это 60 дБА.

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

Требования к уровням электромагнитных полей на рабочих местах, оборудованных ПЭВМ

Временные допустимые уровни ЭМП, создаваемых ПЭВМ на рабочих местах пользователей, представлены в таблице 6.2.

Таблица 5.2 - Временные допустимые уровни ЭМП, создаваемых ПЭВМ

Наименование параметров

ВДУ ЭМП

Напряженность электрического поля

в диапазоне частот 5 Гц - 2 кГц

25 В/м


в диапазоне частот 2 кГц - 400 кГц

2,5 В/м

Плотность магнитного потока

в диапазоне частот 5Гц - 2 кГц

250 н'Гл


в диапазоне частот 2 кГц - 400 кГц

25 нТл

Напряженность электростатического поля

15 кВ/м


Требования к средствам измерений

Инструментальный контроль уровней ЭМП должен осуществляться приборами с допускаемой основной относительной погрешностью измерений +/- 20%, включенными в Государственный реестр средств измерения и имеющими действующие свидетельства о прохождении Государственной поверки.

Следует отдавать предпочтение измерителям с изотропными антеннами-преобразователями.

Требования к организации и оборудованию рабочих мест с ПЭВМ для пользователей

. Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680 - 800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.

. Модульными размерами рабочей поверхности стола для ПЭВМ, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 мм, глубину 80U и 1000 мм при нерегулируемой его высоте, равной 725 мм.

. Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.

. Конструкция рабочего стула должна обеспечивать:

ширину и глубину поверхности сиденья не менее 400 мм;

поверхность сиденья с закругленным передним краем;

регулировку высоты поверхности сиденья в пределах 400 - 550 мм и углам наклона вперед до 15 град, и назад до 5 град.;

высоту опорной поверхности синяки 300 +/- 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости -400 мм;

угол наклона спинки в вертикальной плоскости в пределах +/- 30 градусов;

регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;

стационарные или съемные подлокотники длиной не менее 250 Мм и шириной - 50 - 70 мм;

регулировку подлокотников по высоте над сиденьем в пределах 230 +/-30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм.

. Рабочее место пользователя ПЭВМ следует оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 град. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.

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

Требования к организации медицинского обслуживания пользователей ПЭВМ

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

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

Требования к проведению государственного санитарно-эпидемиологического надзора и производственного контроля

Государственный санитарно-эпидемиологический надзор за производством и эксплуатацией ПЭВМ осуществляется в соответствии с настоящими Санитарными правилами.

Не допускается реализация и эксплуатация на территории Российской Федерации типов ПЭВМ, не имеющих санитарно-эпидемиологического заключения.

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

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

.3 Инструкция по охране труда для сотрудника одела телекоммуникационных технологий

1. Общие требования безопасности

.1. К работам с ПЭВМ и ВДТ допускаются лица:

не моложе 18 лет, прошедшие обязательный предварительные при приеме на работу и ежегодные медицинские осмотры в порядке и сроки, установленные Минздравмедпромом России и Госкомсанэпиднадзором России, и не имеющие медицинских противопоказаний для работы с ПЭВМ и ВДТ;

прошедшие курс обучения принципам работы с вычислительной техникой и специальное обучение работе на ПЭВМ с использованием конкретного программного обеспечения;

прошедшие вводный инструктаж по электробезопасности с присвоением 1-й квалификационной группы;

ознакомленные с инструкциями по эксплуатации на используемые на рабочем месте средства оргтехники (собственно ПЭВМ и ВДТ, принтеры, сканеры, источники бесперебойного питания и т.п.).

.2. К работе с ПЭВМ и ВДТ не допускаются женщины со времени установления беременности и в период кормления ребенка грудью.

. Требования безопасности перед началом работы

.1. До включения используемого на рабочем месте оборудования сотрудник обязан:

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

.1.2. Проверить правильность установки стола, стула, подставки под ноги, пюпитра, угол наклона экрана монитора, положение клавиатуры и..

.1.3. Проверить правильность и надежность заземления оборудования:

.1.4. Проверить правильность расположения оборудования:

.1.5. Проверить надежность подключения к системному блоку разъемов периферийного оборудования.

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

.1.7. Убедиться в отсутствии пыли на экране монитора и клавиатуре, при необходимости, протереть их специальной салфеткой.

.2. Включить оборудование рабочего места в последовательности, установленной инструкциями по эксплуатации на оборудование с учетом характера выполняемых на рабочем месте работ.

.3. После включения оборудования и запуска используемой программы сотрудник обязан:

убедиться в отсутствии дрожания и мерцания изображения на экране монитора;

установить яркость, контрастность, цвет и размер символов, фон экрана, обеспечивающие наиболее комфортное и четкое восприятие изображения.

. Требования безопасности при выполнении работ

.1. Сотруднику во время работы запрещается:

прикасаться к задней панели системного блока при включенном питании;

переключать разъемы интерфейсных кабелей периферийных устройств при включенном питании;

закрывать оборудование бумагами и посторонними предметами;

допускать скапливание бумаг на рабочем месте;

производить отключение питания во время выполнения активной задачи;

снимать защитный фильтр с экрана монитора;

допускать попадание влаги на поверхности устройств;

производить самостоятельно вскрытие и ремонт оборудования;

производить вскрытие или заправку на рабочем месте картриджей лазерных принтеров и копировальной техники;

прикасаться к нагретым элементам принтеров и копировальной техники;

работать со снятыми кожухами оборудования, являющегося источниками лазерного и ультрафиолетового излучения;

располагаться при работе на расстоянии менее 50 см. от экрана монитора.

.2. Режимы труда и отдыха при работе с ПЭВМ и ВДТ должны организовываться в соответствии с требованиями СанПиН в зависимости от вида и категории трудовой деятельности. Виды трудовой деятельности разделяются на 3 группы : группа А - работа по считыванию информации с экрана ВДТ или ПЭВМ с предварительным запросом, группа Б - работа по вводу информации группа, В - творческая информация в режиме диалога с ЭВМ.

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

. Требования безопасности в аварийных ситуациях

.1. Обо всех неисправностях в работе оборудования и аварийных ситуациях сообщать непосредственному руководителю.

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

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

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

. Требования безопасности по окончании работы

.1. По окончании работы сотрудник обязан соблюдать следующую последовательность отключения оборудования:

произвести закрытие всех выполняемых на ПЭВМ задач;

отключить питание в последовательности, установленной инструкциями по эксплуатации на оборудование с учетом характера выполняемых работ.

.2. Убрать со стола рабочие материалы и привести в порядок рабочее место.

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

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

Заключение

В ходе выполнения ВКР был проведен анализ деятельности кредитного специалиста ОАО АКБ «Новация», рассмотрены основные этапы выдачи кредитного продукта.

В ходе работы были разработаны, созданы и отлажены все компоненты системы и проведена следующая работа:

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

- выявлены недостатки в текущей системе учета кредитов;

- обоснована необходимость создания АИС учета кредитов физических лиц;

- определены цели, задачи учета кредитов физических лиц, а также функциональные возможности разрабатываемой АИС;

- представлены обоснование выбора обеспечивающих технологий и проектных решений по программному и информационному обеспечению;

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

- разработана информационная модель и представлено ее описание.

В результате была разработана и отлажена АИС учета кредитов физических лиц.

АИС учета кредитов физических лиц обеспечивает выполнение следующих основных функций:

- учет клиентов банка - физических лиц;

- ведение справочника видов кредитов (потребительский кредит, ипотека, автокредит, кредитная карта и т.д.)

- учет кредитов, выданных физическим лицам;

- учет поручителей и залогодателей по кредиту;

- построение графика погашения кредита (равными платежами, аннуитет, в конце срока);

- выполнение операций с кредитами: открытие, плановое гашение, досрочное гашение, вынос на просрочку, закрытие;

- формирование выходных документов:

- кредитный портфель на заданную дату;

- график гашения кредита;

- список клиентов Банка;

- список страховых компаний;

- выборка кредитных договоров по заданным критериям;

- журнал операций по кредитам;

- формирование статистических диаграмм:

- структура кредитного портфеля по состоянию на дату;

- суммы выдач кредитов по месяцам за период;

- суммы выдач по видам кредитных продуктов за период.

Также произведена оценка экономической эффективности разработки АИС учета кредитов физических лиц.

В рамках дальнейшего развития проекта можно определить автоматизацию других подразделений в рамках единой информационной системы Банка.

АИС учета кредитов физических лиц находится на стадии тестирования с последующим внедрением в ОАО АКБ «Новация».

Список использованных источников

1.    Исследование СNews Analytics: Системы автоматизации банковской деятельности

2.       Смирнова Г.Н. Проектирование экономических информационных систем: Учеб. для вузов / Г.Н. Смирнова, А.А. Сорокин, Ю.Ф. Тельнов; Под ред. Ю.Ф. Тельнова. -М. : Финансы и статистика, 2002. - 512 с. : ил.

.        Грекул В.И., Денищенко Г.Н., Коровкина Н.Л. Проектирование информационных систем. - М.: Интернет-университет информационных технологий - ИНТУИТ.ру, 2005.

.        Состав решения

.        Интегрированная банковская система БИСКВИТ

.        RS-Bank v. 5.5

.        Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. - М.: Вильямс, 2003. - 1088 с.

.        Кузнецов С.Д. Основы баз данных. - 2-е изд. - М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. - 484 с.

.        Лори Ульрих Фуллер, Кен Кук, Джон Кауфельд. Microsoft Office Access 2007 для «чайников»: Пер. с англ. - М.: «Диалектика», 2007. - 384 стр. с ил.

.        Вальвачев А.Н., Сурков К.А., Сурков Д.А., Четырько Ю.М. Программирование на языке Delphi. Учебное пособие. - 2005.

.        Вендров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. - М.: Финансы и статистика, 2000.

.        Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management. - 3-е изд. - М.: Вильямс, 2003. - 1436 с.

13.     Григорьев Ю.А., Ревунков Г.И. Банки данных. М.: Издательство МГТУ имени Н.Э. Баумана, 2002.

.        Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. - М.: ИД «ФОРУМ»; ИНФРА-М, 2008. - С. 400.

.        Соммервилл Иан. Инженерия программного обеспечения / Пер. с англ. - 6-е издание. - М.: Вильямс, 2002. - 624 с.

.        Хотяшов Э.Н. Проектирование машинной обработки экономической информации. М.:Финансы и статистика, 2001.-246 с.

17.  СанПиН 2.2.2/2.4.1340-03. Санитарно-эпидемиологические правила и нормативы. Гигиенические требования к персональным электронно-вычислительным машинам и организации работы. - М: Издательство стандартов, 2003.

Приложение А

Исходный текст программы

Программный модуль Loan.dpr

program Loan;

uses

Forms,in 'uMain.pas' {fmMain},in 'uDM.pas' {DM: TDataModule},in 'uCreditType.pas' {fmCreditType},in 'uInsurance.pas' {fmInsurance},in 'uGarantObject.pas' {fmGarantObject},in 'uLoans.pas' {fmLoans},in 'uLoanCard.pas' {fmLoanCard},in 'uRep.pas',in 'uClients.pas' {fmClients},in 'uClientCard.pas' {fmClientCard},in 'uPay.pas' {fmPay},in 'uJournal.pas' {fmJournal},in 'uStat.pas' {fmStat},in 'uGetDate.pas' {fmGetDate};

{$R *.res}.Initialize;.CreateForm(TfmMain, fmMain);.CreateForm(TDM, DM);.CreateForm(TfmCreditType, fmCreditType);.CreateForm(TfmInsurance, fmInsurance);.CreateForm(TfmGarantObject, fmGarantObject);.CreateForm(TfmLoans, fmLoans);.CreateForm(TfmLoanCard, fmLoanCard);.CreateForm(TfmClients, fmClients);.CreateForm(TfmClientCard, fmClientCard);.CreateForm(TfmPay, fmPay);.CreateForm(TfmJournal, fmJournal);.CreateForm(TfmStat, fmStat);.CreateForm(TfmGetDate, fmGetDate);.Run;.

Программный модуль uClientCard.pas

unit uClientCard;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls, StdCtrls, Mask, ExtDlgs, Buttons;= class(TForm): TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBImage;: TDBLookupComboBox;: TLabel;: TDBLookupComboBox;: TDBComboBox;: TOpenPictureDialog;: TLabel;: TBitBtn;: TBitBtn;: TBitBtn;bbtOKClick(Sender: TObject);bbtCancelClick(Sender: TObject);bbtPhotoClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmClientCard;uDM, DB;

{$R *.dfm}TfmClientCard.bbtOKClick(Sender: TObject);DM.dstClient.State in [dsInsert, dsEdit] then.dstClient.Post;;TfmClientCard.bbtCancelClick(Sender: TObject);DM.dstClient.State in [dsInsert, dsEdit] then.dstClient.Cancel;;TfmClientCard.bbtPhotoClick(Sender: TObject);OpenPictureDialog1.Execute then.Picture.LoadFromFile(OpenPictureDialog1.FileName);;.

Программный модуль uClients.pas

unit uClients;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, DBCtrls, ExtCtrls, Grids, DBGrids;= class(TForm): TDBGrid;: TPanel;: TDBNavigator;: TBitBtn;: TBitBtn;: TBitBtn;: TGroupBox;: TLabel;: TEdit;: TLabel;: TEdit;FormShow(Sender: TObject);DBGrid1TitleClick(Column: TColumn);bbtCardClick(Sender: TObject);bbtPrintClick(Sender: TObject);edFIOChange(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmClients;uDM, uClientCard, uRep, ADODB, DB;

{$R *.dfm}TfmClients.FormShow(Sender: TObject);.dstClient.Open;.dstClient.Sort := 'ФИО';

end;

//Сортировка данных в таблице по выбранному столбцу:

procedure TfmClients.DBGrid1TitleClick(Column: TColumn);

(DBGrid1.DataSource.DataSet as TADODataSet).Sort := Column.FieldName;.MessageBox('Сортировка по данному полю невозможна', 'Информация', MB_ICONINFORMATION);;;TfmClients.bbtCardClick(Sender: TObject);.ShowModal;;TfmClients.bbtPrintClick(Sender: TObject);_Universal(DBGrid1, 16, 'Клиенты');

end;

//Поиск клиента по ФИО и паспорту:

procedure TfmClients.edFIOChange(Sender: TObject);(edFIO.Text <> '') and (edPassport.Text <> '') then.dstClient.Locate('ФИО;Паспорт', VarArrayOf(['%' + Trim(edFIO.Text), '%' + Trim(edPassport.Text)]),

[loCaseInsensitive, loPartialKey])if edFIO.Text <> '' then.dstClient.Locate('ФИО', '%' + Trim(edFIO.Text), [loCaseInsensitive, loPartialKey])if edPassport.Text <> '' then.dstClient.Locate('Паспорт', '%' + Trim(edPassport.Text), [loCaseInsensitive, loPartialKey]);;.

Программный модуль uCreditType.pas

unit uCreditType;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;= class(TForm): TDBGrid;: TPanel;: TDBNavigator;: TBitBtn;FormShow(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);

{ Private declarations }

{ Public declarations };: TfmCreditType;uDM;

{$R *.dfm}TfmCreditType.FormShow(Sender: TObject);.dstCreditType.Open;;TfmCreditType.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//Набор данных закрывается, если он не используется в других формах:

// if not fmDepAndStaff.Showing then.dstCreditType.Close;;.

Программный модуль uDiapason.pas

unit uDiapason;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Buttons, ExtCtrls;= class(TForm): TLabel;: TLabel;: TDateTimePicker;: TDateTimePicker;: TBitBtn;: TBitBtn;: TBevel;

{ Private declarations }

{ Public declarations };GetDiapason(var DateFrom, DateTo: TDate): Boolean;: TfmDiapason;

{$R *.dfm}

//Функция возвращает диапазон дат, заданный пользователем:

function GetDiapason(var DateFrom, DateTo: TDate): Boolean;.dtpDateFrom.Date := DateFrom;.dtpDateTo.Date := DateTo;fmDiapason.ShowModal = mrOK then begin:= fmDiapason.dtpDateFrom.Date;:= fmDiapason.dtpDateTo.Date;:= True;:= False;

end;.

Программный модуль uDM.pas

unit uDM;

interface, Classes, DB, ADODB;= class(TDataModule): TADOConnection;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TADODataSet;: TDataSource;: TAutoIncField;: TWideStringField;: TBooleanField;: TDateTimeField;: TWideStringField;: TWideStringField;: TWideStringField;: TIntegerField;: TIntegerField;: TWideStringField;: TWideStringField;: TBCDField;: TWideStringField;: TWideStringField;: TWideStringField;: TWideStringField;: TWideStringField;: TBlobField;: TStringField;: TStringField;: TADODataSet;: TDataSource;: TAutoIncField;: TIntegerField;: TIntegerField;: TIntegerField;: TWideStringField;: TDateTimeField;: TDateTimeField;: TDateTimeField;: TBCDField;: TFloatField;: TIntegerField;: TStringField;: TStringField;: TStringField;: TStringField;: TADODataSet;: TDataSource;: TIntegerField;ID: TIntegerField;ID: TIntegerField;: TWideStringField;: TDateTimeField;: TWideStringField;: TStringField;: TStringField;ID: TIntegerField;: TStringField;: TWideStringField;: TADODataSet;: TDataSource;: TIntegerField;ID: TIntegerField;ID: TIntegerField;: TIntegerField;: TWideStringField;: TDateTimeField;: TBCDField;: TWideStringField;: TBooleanField;: TIntegerField;: TStringField;: TStringField;: TStringField;: TStringField;: TADODataSet;: TDataSource;: TIntegerField;: TDateTimeField;: TIntegerField;: TBCDField;: TBCDField;: TStringField;: TADODataSet;: TDataSource;: TAutoIncField;: TIntegerField;: TDateTimeField;: TIntegerField;: TBCDField;: TStringField;: TADOQuery;: TStringField;: TADODataSet;: TADODataSet;: TBCDField;: TStringField;: TADODataSet;: TBCDField;: TStringField;: TADODataSet;: TBCDField;: TStringField;: TADODataSet;: TWideStringField;: TDateTimeField;: TWideStringField;: TDateTimeField;: TDateTimeField;: TBCDField;: TFloatField;: TBCDField;: TBCDField;: TWideStringField;: TDateTimeField;DataModuleDestroy(Sender: TObject);dstSuretyBeforeInsert(DataSet: TDataSet);dstLoanNewRecord(DataSet: TDataSet);

{ Private declarations }

{ Public declarations };: TDM;

{$R *.dfm}TDM.DataModuleDestroy(Sender: TObject);

begin.Close;;

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

//кредитный договор сохраняется:TDM.dstSuretyBeforeInsert(DataSet: TDataSet);

beginDM.dstLoan.State = dsInsert then.dstLoan.Post;;TDM.dstLoanNewRecord(DataSet: TDataSet);.FieldByName('СтатусID').AsInteger := 1;;.

Программный модуль uGarantObject.pas

unit uGarantObject;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;= class(TForm): TDBGrid;: TPanel;: TDBNavigator;: TBitBtn;FormShow(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);

{ Private declarations }

{ Public declarations };: TfmGarantObject;uDM;

{$R *.dfm}TfmGarantObject.FormShow(Sender: TObject);.dstGarantObject.Open;.dstGarantObject.Sort := 'ПредметЗал';;TfmGarantObject.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//Набор данных закрывается, если он не используется в других формах:

// if not fmDepAndStaff.Showing then.dstGarantObject.Close;;.

Программный модуль uGetDate.pas

unit uGetDate;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Buttons, ExtCtrls;= class(TForm): TLabel;: TDateTimePicker;: TBitBtn;: TBitBtn;: TBevel;

{ Private declarations }

{ Public declarations };GetDate(var PDate: TDate): Boolean;: TfmGetDate;

{$R *.dfm}

//Функция возвращает дату, заданную пользователем:

function GetDate(var PDate: TDate): Boolean;.dtpDate.Date := PDate;fmGetDate.ShowModal = mrOK then:= fmGetDate.dtpDate.Date;:= True;:= False;;.

Программный модуль uInsurance.pas

unit uInsurance;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;= class(TForm): TDBGrid;: TPanel;: TDBNavigator;: TBitBtn;: TBitBtn;FormShow(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);bbtPrintClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmInsurance;uDM, uRep;

{$R *.dfm}TfmInsurance.FormShow(Sender: TObject);.dstInsurance.Open;.dstInsurance.Sort := 'СтрахКомпания';;TfmInsurance.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//Набор данных закрывается, если он не используется в других формах:

// if not fmDepAndStaff.Showing then.dstInsurance.Close;;TfmInsurance.bbtPrintClick(Sender: TObject);_Universal(DBGrid1, 1, 'Страховые компании');;.

Программный модуль uJournal.pas

unit uJournal;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, DBCtrls, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids;= class(TForm): TDBGrid;: TPanel;: TBitBtn;: TBitBtn;: TGroupBox;: TLabel;: TCheckBox;: TDBLookupComboBox;: TCheckBox;: TDBLookupComboBox;: TCheckBox;: TDateTimePicker;: TDateTimePicker;: TCheckBox;: TDBNavigator;chbLoanClick(Sender: TObject);FormShow(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);bbtPrintClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmJournal;uDM, uRep;

{$R *.dfm}

//Отбор операций по заданным критериям:

procedure TfmJournal.chbLoanClick(Sender: TObject);: string;:= '';chbLoan.Checked and (dblcbLoan.KeyValue <> Null) thenFilter <> '' then:= Filter + ' and ';:= Filter + 'КредитID = ' + IntToStr(dblcbLoan.KeyValue);;chbOperType.Checked and (dblcbOperType.KeyValue <> Null) thenFilter <> '' then:= Filter + ' and ';:= Filter + 'ТипОперацииID = ' + IntToStr(dblcbOperType.KeyValue);;chbDate1.Checked thenFilter <> '' then:= Filter + ' and ';:= Filter + 'Дата >= ' + QuotedStr(DateToStr(dtpDate1.Date));;chbDate2.Checked thenFilter <> '' then:= Filter + ' and ';:= Filter + 'Дата <= ' + QuotedStr(DateToStr(dtpDate2.Date));;Filter <> '' then.dstJournal.Filter := Filter;.dstJournal.Filtered := True;.dstJournal.Filtered := False;;TfmJournal.FormShow(Sender: TObject);.dstJournal.Open;;TfmJournal.FormClose(Sender: TObject; var Action: TCloseAction);.dstJournal.Close;;

//Печать набора данных, видимого на форме в таблице:

procedure TfmJournal.bbtPrintClick(Sender: TObject);: string;:= 'Журнал операций';chbOperType.Checked and (dblcbOperType.KeyValue <> Null) then:= Caption + ' "' + dblcbOperType.Text + '"';chbLoan.Checked and (dblcbLoan.KeyValue <> Null) then:= Caption + ' по Кредитному договору №' + dblcbLoan.Text;chbDate1.Checked then:= Caption + ' за период с ' + DateToStr(dtpDate1.Date);chbDate2.Checked then:= Caption + ' по ' + DateToStr(dtpDate2.Date);chbDate2.Checked then:= Caption + ' за период по ' + DateToStr(dtpDate2.Date);_Universal(DBGrid1, 4, Caption);;.

Программный модуль uLoanCard.pas

unit uLoanCard;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls, StdCtrls, Mask, ExtDlgs, Buttons, ExtCtrls, Grids,;= class(TForm): TDBGrid;: TPanel;: TDBNavigator;: TBitBtn;: TDBGrid;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBEdit;: TLabel;: TDBLookupComboBox;: TLabel;: TDBLookupComboBox;: TLabel;: TDBLookupComboBox;: TLabel;: TDBLookupComboBox;: TLabel;: TDBLookupComboBox;: TLabel;: TDBEdit;: TLabel;: TLabel;: TPanel;: TLabel;: TDBGrid;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;DBGrid1Enter(Sender: TObject);FormShow(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);bbtSetGraphicClick(Sender: TObject);bbtOpenClick(Sender: TObject);bbtPlanPayClick(Sender: TObject);bbtDelayClick(Sender: TObject);DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;: Integer; Column: TColumn; State: TGridDrawState);bbtCloseClick(Sender: TObject);bbtNonPlanPayClick(Sender: TObject);bbtPrintClick(Sender: TObject);bbtPrintPayClick(Sender: TObject);

{ Private declarations }

{ Public declarations }GetSumOfPay(var Date1: TDate): Currency;GetPercentValue(Sum: Currency; Percent: Double; Date1, Date2: TDate): Currency;;: TfmLoanCard;uDM, ADODB, DateUtils, Math, uPay, DB, uRep;

{$R *.dfm}

//Навигатор привязывается к сетке данных, выбранной пользователем:

procedure TfmLoanCard.DBGrid1Enter(Sender: TObject);.DataSource := (Sender as TDBGrid).DataSource;;TfmLoanCard.FormShow(Sender: TObject);.dstSurety.Open;.dstBail.Open;.dstGraphic.Open;;TfmLoanCard.FormClose(Sender: TObject; var Action: TCloseAction);DM.dstLoan.State in [dsInsert, dsEdit] then.dstLoan.Post;DM.dstSurety.State in [dsInsert, dsEdit] then.dstSurety.Post;DM.dstBail.State in [dsInsert, dsEdit] then.dstBail.Post;DM.dstGraphic.State in [dsInsert, dsEdit] then.dstGraphic.Post;.dstSurety.Close;.dstBail.Close;.dstGraphic.Close;

end;

//Функция возвращает сумму %% на ОД Sum по ставке Percent за период Date1 - Date2:

function TfmLoanCard.GetPercentValue(Sum: Currency; Percent: Double; Date1, Date2: TDate): Currency;

begin

//Разный алгоритм расчета %% связан с различным кол-вом дней в году (обычном, високосном):

if YearOf(Date1) = YearOf(Date2) then

//Если заданный период находится в одном календарном году, т.е. не включает 31 декабря:

Result := RoundTo(Sum * Percent / DaysInYear(Date1) * DaysBetween(Date1, Date2), -2)

else

//Если заданный период находится в двух разных годах, т.е. включает 31 декабря:

Result := RoundTo(Sum * Percent / DaysInYear(Date1) * DaysBetween(Date1, StrToDate('31.12.' + IntToStr(YearOf(Date1)))) +* Percent / DaysInYear(Date2) * DaysBetween(StrToDate('31.12.' + IntToStr(YearOf(Date1))), Date2), -2);;

//Функция возвращает сумму уплаченного ОД и дату последней уплаты %%:

function TfmLoanCard.GetSumOfPay(var Date1: TDate): Currency;DM do:= dstLoan.FieldByName('Сумма').AsCurrency;

//Определяется последняя дата гашения %%::= dstLoan.FieldByName('ДатаВыдачи').AsDateTime;.Last;not dstGraphic.Bof do

begin

//Если есть исполненные суммы %% (график удален не полностью), то в качестве

//даты начала расчета берется дата последнего гашения %%:

if (Date1 = dstLoan.FieldByName('ДатаВыдачи').AsDateTime) and

(dstGraphic.FieldByName('ПредметГашID').AsInteger = 2) and

(dstGraphic.FieldByName('СуммаИсп').AsCurrency > 0) then:= dstGraphic.FieldByName('Дата').AsDateTime;

//Уменьшение суммы кредита на сумму выплаты:

if dstGraphic.FieldByName('ПредметГашID').AsInteger = 1 then:= Result - dstGraphic.FieldByName('СуммаИсп').AsCurrency;.Prior;;;;TfmLoanCard.bbtSetGraphicClick(Sender: TObject);, Sum: Currency;, Date2, PrevDate: TDate;

Percent: Double;: string;

//Процедура добавляет в график выбранного кредита очередной платеж по ОД или %%:

procedure AddPay(PDate: TDate; Subject: Integer; Sum: Currency);DM do.Insert;.FieldByName('Дата').AsDateTime := PDate;.FieldByName('ПредметГашID').AsInteger := Subject;.FieldByName('СуммаНач').AsCurrency := Sum;.FieldByName('СуммаИсп').AsCurrency := 0;.Post;

end;;

//В зависимости от типа графика выводятся разные сообщения:

if DM.dstLoan.FieldByName('ТипГрафикаID').AsInteger = 3 then

Message := 'Старый график гашения процентов будет удален!' + Chr(13) +

'Сформировать график заново?':= 'Старый график будет удален! Сформировать график заново?';

if Application.MessageBox(PChar(Message), 'Предупреждение', MB_ICONEXCLAMATION + MB_YESNO) = IDYES then

with DM do

//Удаление старых данных по непогашенным суммам %% индивидуального графика:

if dstLoan.FieldByName('ТипГрафикаID').AsInteger = 3 then.Parameters.ParamByName('pLoanID').Value := dstLoan.FieldByName('ID').AsInteger;.Parameters.ParamByName('pPayObjectID').Value := 2;

qrClearGraph.ExecSQL;

//Удаление старых данных по непогашенным суммам ОД и %% любого другого графика:

qrClearGraph.Parameters.ParamByName('pLoanID').Value := dstLoan.FieldByName('ID').AsInteger;.Parameters.ParamByName('pPayObjectID').Value := 1;.ExecSQL;.Parameters.ParamByName('pPayObjectID').Value := 2;.ExecSQL;;.Close;

dstGraphic.Open;

//Данные для расчета ОД и %%:

Percent := dstLoan.FieldByName('Ставка').AsFloat / 100;:= GetSumOfPay(Date1);:= dstLoan.FieldByName('ДатаЗакрыт').AsDateTime;

//В зависимости от выбранного типа строится соответствующий график:

case dstLoan.FieldByName('ТипГрафикаID').AsInteger of

1: //Аннуитет

//Расчет суммы ежемесячного равного платежа (ОД + %%):

PayValue := RoundTo(Sum / (12/Percent - 1/(Percent/12 * Power(1 + Percent/12,

Round(MonthSpan(Date1, Date2))))), -2);

//В цикле формируются строки: дата гашения - сумма ОД, дата гашения - сумма %%:

while Date1 < Date2 do:= IncMonth(Date1);

//Если до даты закрытия кредита осталось меньше 0,5 мес., то последний

//платеж устанавливается в дату закрытия кредита:

if (MonthSpan(Date1, Date2) < 0.5) then

//Последний платеж ОД + %% не совпадает с остальными равными платежами:

AddPay(Date2, 1, Sum);

//Платеж по %%:(Date2, 2, GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date2));:= Date2;

//Платеж по ОД:(Date1, 1, PayValue - GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date1));

//Платеж по %%:(Date1, 2, GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date1));;

//Остаток ОД::= Sum - (PayValue - GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date1));; //while Date1 < Date2}; //case 1

2: //Гашение ОД равными долями

//Ежемесячный платеж по ОД, округляется до сотых (т.е. до 1 копейки):

PayValue := RoundTo(Sum / (Round(MonthSpan(Date1, Date2))), -2);

//В цикле формируются строки: дата гашения - сумма ОД, дата гашения - сумма %%:

while Date1 < Date2 do:= IncMonth(Date1);

//Если до даты закрытия кредита осталось меньше 0,4 мес., то последний

//платеж устанавливается в дату закрытия кредита:

if (MonthSpan(Date1, Date2) < 0.4) then

//Последний платеж по ОД может не совпадать с остальными из-за округления:

AddPay(Date2, 1, dstLoan.FieldByName('Сумма').AsCurrency - PayValue *

(Round(MonthSpan(dstLoan.FieldByName('ДатаВыдачи').AsDateTime, Date2))-1));

//Платеж по %%:(Date2, 2, GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date2));:= Date2;

//Платеж по ОД:(Date1, 1, PayValue);

//Платеж по %%:(Date1, 2, GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date1));;:= Sum - PayValue; //Остаток ОД; //while Date1 < Date2; //case 2

: //Индивидуальный график.First;

//Цикл по графику гашения ОД:

while not dstGraphic.Eof do

//Цикл по графику гашения %%: формируются строки: дата гашения - сумма %%:

while IncMonth(Date1) < dstGraphic.FieldByName('Дата').AsDateTime do

begin

//Платеж по %% выполняется ежемесячно в одну дату, пока не достигает

//очередного планового гашения ОД:(IncMonth(Date1), 2, GetPercentValue(Sum, Percent, Date1, IncMonth(Date1)));:= IncMonth(Date1);.Next;; //while IncMonth(Date1) < dstGraphic.FieldByName('Дата').AsDateTime:= Date1;:= dstGraphic.FieldByName('Дата').AsDateTime;:= dstGraphic.FieldByName('СуммаНач').AsCurrency;

//При достижении очередной даты планового гашения ОД в эту же дату гасятся %%:

AddPay(Date1, 2, GetPercentValue(Sum, Percent, PrevDate, Date1));

Sum := Sum - PayValue; //Остаток ОД

//Переход к следующей записи о гашении ОД:

dstGraphic.Next;; //while not dstGraphic.Eof

end; //case 3

: //Гашение в конце срока

//В цикле формируется строка: дата гашения - сумма %%:

while Date1 < Date2 do:= IncMonth(Date1);

//Если до даты закрытия кредита осталось меньше 0,5 мес., то последний

//платеж устанавливается в дату закрытия кредита:

if (MonthSpan(Date1, Date2) < 0.5) then:= Date2;(Date1, 2, GetPercentValue(Sum, Percent, IncMonth(Date1,-1), Date1));; //while Date1 < Date2(dstLoan.FieldByName('ДатаЗакрыт').AsDateTime, 1, dstLoan.FieldByName('Сумма').AsCurrency);; //case 4; //case;

end;

procedure TfmLoanCard.DBGrid3DrawColumnCell(Sender: TObject;Rect: TRect; DataCol: Integer; Column: TColumn;: TGridDrawState);DM.dstGraphic.FieldByName('Дата').AsDateTime < Date thenDM.dstGraphic.FieldByName('СуммаНач').Value <= DM.dstGraphic.FieldByName('СуммаИсп').Value then

//Исполненные платежи выделяются голубым:.Canvas.Brush.Color := clSkyBlue

else

//Просроченные платежи выделяются розовым:

DBGrid3.Canvas.Brush.Color := clFuchsia;.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;

//Запись операции в журнал операций:

procedure AddOperToJournal(LoanID, OperTypeID: Integer; OperDate: TDate; Sum: Currency);.dstJournal.Open;.dstJournal.Insert;.dstJournal.FieldByName('КредитID').AsInteger := LoanID;.dstJournal.FieldByName('Дата').AsDateTime := OperDate;.dstJournal.FieldByName('ТипОперацииID').AsInteger := OperTypeID;.dstJournal.FieldByName('Сумма').AsCurrency := Sum;.dstJournal.Post;.dstJournal.Close;

end;

//Открытие договора (выдача кредита):

procedure TfmLoanCard.bbtOpenClick(Sender: TObject);DM.dstLoan.FieldByName('СтатусID').AsInteger <> 1 then

Application.MessageBox('Операция выдачи уже была проведена!', 'Информация', MB_ICONINFORMATION)Application.MessageBox('Провести операцию выдачи?', 'Вопрос',

MB_ICONQUESTION + MB_YESNO) = IDYES then

begin

//В рамках одной транзакции изменяется статус кредита и производится

//запись в журнал операций:.ADOConnection1.BeginTrans;

try

//Изменение статуса кредита:not (DM.dstLoan.State in [dsInsert, dsEdit]) then.dstLoan.Edit;.dstLoan.FieldByName('СтатусID').AsInteger := 2; //Статус "Открыт".dstLoan.Post;(DM.dstLoan.FieldByName('ID').AsInteger, 1, Date,.dstLoan.FieldByName('Сумма').AsCurrency);.ADOConnection1.CommitTrans;.MessageBox('Операция выдачи успешно проведена!', 'Информация', MB_ICONINFORMATION);.ADOConnection1.RollbackTrans;.MessageBox('Произошла ошибка при выполнении операции!', 'Ошибка', MB_ICONERROR);

end;;;

//Плановое гашения ОД или %%:

procedure TfmLoanCard.bbtPlanPayClick(Sender: TObject);: Integer;not (DM.dstLoan.FieldByName('СтатусID').AsInteger in [2, 3]) then.MessageBox('Кредит не выдан или закрыт!', 'Информация', MB_ICONINFORMATION)DM.dstGraphic.FieldByName('СуммаНач').Value = DM.dstGraphic.FieldByName('СуммаИсп').Value then

Application.MessageBox('Выбранное в графике плановое гашение уже исполнено!', 'Информация', MB_ICONINFORMATION)

else.pnPlan.Visible := True;.lbPercent.Visible := False;.edPercent.Visible := False;DM.dstGraphic.FieldByName('ПредметГашID').AsInteger = 1 then

fmPay.lbOper.Caption := 'Плановое гашение основного долга'.lbOper.Caption := 'Плановое гашение процентов';

if fmPay.ShowModal = mrOk then

//В рамках одной транзакции производятся гашение и запись в журнал операций:

DM.ADOConnection1.BeginTrans;not (DM.dstGraphic.State in [dsInsert, dsEdit]) then.dstGraphic.Edit;.dstGraphic.FieldByName('СуммаИсп').AsCurrency := StrToCurr(fmPay.edSum.Text);.dstGraphic.FieldByName('ДатаИсп').AsDateTime := fmPay.dtpDate.Date;.dstGraphic.Post;DM.dstGraphic.FieldByName('ПредметГашID').AsInteger = 1 thenDM.dstGraphic.FieldByName('Дата').AsDateTime = fmPay.dtpDate.Date then

Oper := 2 //Плановое гашение ОД:= 5 //Плановое гашение %%

//Запись о гашении %%:DM.dstGraphic.FieldByName('Дата').AsDateTime = fmPay.dtpDate.Date then:= 3 //Гашение просроченного ОД:= 6;//Гашение просроченных %%

AddOperToJournal(DM.dstLoan.FieldByName('ID').AsInteger, Oper, fmPay.dtpDate.Date,(fmPay.edSum.Text));.ADOConnection1.CommitTrans;

Application.MessageBox('Операция планового гашения успешно проведена!', 'Информация', MB_ICONINFORMATION);.ADOConnection1.RollbackTrans;.MessageBox('Произошла ошибка при выполнении операции!', 'Ошибка', MB_ICONERROR);

end;; //if fmPay.ShowModal = mrOk; //else if DM.dstGraphic.FieldByName('СуммаНач').Value = ...;

//Досрочное гашения ОД:TfmLoanCard.bbtNonPlanPayClick(Sender: TObject);not (DM.dstLoan.FieldByName('СтатусID').AsInteger in [2, 3]) then.MessageBox('Кредит не выдан или закрыт!', 'Информация', MB_ICONINFORMATION).pnPlan.Visible := False;

fmPay.lbOper.Caption := 'Досрочное гашение основного долга';

fmPay.lbPercent.Visible := True;.edPercent.Visible := True;fmPay.ShowModal = mrOk then

//В рамках одной транзакции производятся гашение и запись в журнал операций:.ADOConnection1.BeginTrans;

//Если в дату досрочного гашения уже есть плановая дата гашения ОД, то

//в эту дату записывается факт:DM.dstGraphic.Locate('КредитID;Дата;ПредметГашID',

VarArrayOf([DM.dstLoan.FieldByName('ID').AsInteger, TDateTime(fmPay.dtpDate.Date), 1]), []) then.dstGraphic.Edit;.dstGraphic.FieldByName('СуммаИсп').AsCurrency := StrToCurr(fmPay.edSum.Text);

DM.dstGraphic.Post;

//Если в дату досрочного гашения плановое гашения ОД незапланировано, то

//в эту дату добавляется фактическое гашение:

else.dstGraphic.Insert;.dstGraphic.FieldByName('Дата').AsDateTime := fmPay.dtpDate.Date;.dstGraphic.FieldByName('ПредметГашID').AsInteger := 1;.dstGraphic.FieldByName('СуммаНач').AsCurrency := 0;.dstGraphic.FieldByName('СуммаИсп').AsCurrency := StrToCurr(fmPay.edSum.Text);

DM.dstGraphic.Post;;

//Если в дату досрочного гашения уже есть плановая дата гашения %%, то

//в эту дату записывается новый план и факт:DM.dstGraphic.Locate('КредитID;Дата;ПредметГашID',

VarArrayOf([DM.dstLoan.FieldByName('ID').AsInteger, TDateTime(fmPay.dtpDate.Date), 2

]), []) then.dstGraphic.Edit;.dstGraphic.FieldByName('СуммаНач').AsCurrency := StrToCurr(fmPay.edPercent.Text);.dstGraphic.FieldByName('СуммаИсп').AsCurrency := StrToCurr(fmPay.edPercent.Text);

DM.dstGraphic.Post;

//Если в дату досрочного гашения плановое гашения ОД незапланировано, то

//в эту дату добавляется фактическое гашение:

else.dstGraphic.Insert;.dstGraphic.FieldByName('Дата').AsDateTime := fmPay.dtpDate.Date;.dstGraphic.FieldByName('ПредметГашID').AsInteger := 2;.dstGraphic.FieldByName('СуммаНач').AsCurrency := StrToCurr(fmPay.edPercent.Text);.dstGraphic.FieldByName('СуммаИсп').AsCurrency := StrToCurr(fmPay.edPercent.Text);.dstGraphic.Post;;(DM.dstLoan.FieldByName('ID').AsInteger, 8, fmPay.dtpDate.Date,(fmPay.edSum.Text));.ADOConnection1.CommitTrans;

Application.MessageBox(PChar('Операция досрочного гашения успешно проведена!' + Chr(13) +

'Не забудьте заново построить график гашения!'), 'Информация', MB_ICONINFORMATION);.ADOConnection1.RollbackTrans;.MessageBox('Произошла ошибка при выполнении операции!', 'Ошибка', MB_ICONERROR);

end;; //if fmPay.ShowModal = mrOk; //else if if not (DM.dstLoan.FieldByName('СтатусID').AsInteger in ...

end;

//Вынесение кредита на просрочку:

procedure TfmLoanCard.bbtDelayClick(Sender: TObject);DM.dstLoan.FieldByName('СтатусID').AsInteger <> 2 then

Application.MessageBox('Кредит не находится в статусе "Открыт"!', 'Информация', MB_ICONINFORMATION)Application.MessageBox('Вынести кредит на просрочку?', 'Вопрос',

MB_ICONQUESTION + MB_YESNO) = IDYES then

begin

//В рамках одной транзакции изменяется статус кредита и производится

//запись в журнал операций:.ADOConnection1.BeginTrans;

try

//Изменение статуса кредита:not (DM.dstLoan.State in [dsInsert, dsEdit]) then.dstLoan.Edit;.dstLoan.FieldByName('СтатусID').AsInteger := 3; //Статус "На просрочке".dstLoan.Post;(DM.dstLoan.FieldByName('ID').AsInteger, 4, Date, 0);.ADOConnection1.CommitTrans;.MessageBox('Операция вынесение на просрочку проведена!', 'Информация', MB_ICONINFORMATION);.ADOConnection1.RollbackTrans;.MessageBox('Произошла ошибка при выполнении операции!', 'Ошибка', MB_ICONERROR);

end;;;

//Закрытие договора:

procedure TfmLoanCard.bbtCloseClick(Sender: TObject);DM.dstLoan.FieldByName('СтатусID').AsInteger <> 2 then

Application.MessageBox('Закрыть договор можно, только когда кредит находится в статусе "Открыт"!',

'Информация', MB_ICONINFORMATION).dstSum.Parameters.ParamByName('pLoanID').Value := DM.dstLoan.FieldByName('ID').AsInteger;.dstSum.Open;DM.dstSum.FieldByName('Исполнено').AsCurrency > 0 then

Application.MessageBox('Нельзя закрыть договор, пока по нему имеется задолженность!',

'Информация', MB_ICONINFORMATION)Application.MessageBox('Закрыть кредит?', 'Вопрос',_ICONQUESTION + MB_YESNO) = IDYES then

begin

//В рамках одной транзакции изменяется статус кредита и производится

//запись в журнал операций:.ADOConnection1.BeginTrans;

try

//Изменение статуса кредита:not (DM.dstLoan.State in [dsInsert, dsEdit]) then.dstLoan.Edit;.dstLoan.FieldByName('СтатусID').AsInteger := 4; //Статус "Закрыт".dstLoan.Post;(DM.dstLoan.FieldByName('ID').AsInteger, 4, Date, 0);.ADOConnection1.CommitTrans;.MessageBox('Операция закрытия договора проведена!', 'Информация', MB_ICONINFORMATION);.ADOConnection1.RollbackTrans;.MessageBox('Произошла ошибка при выполнении операции!', 'Ошибка', MB_ICONERROR);;;.dstSum.Close;;;TfmLoanCard.bbtPrintClick(Sender: TObject);_BuildGraphic;;TfmLoanCard.bbtPrintPayClick(Sender: TObject);_BuildEarlyPays;;.

Программный модуль uLoans.pas

unit uLoans;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;= class(TForm): TDBGrid;: TPanel;: TDBNavigator;: TBitBtn;: TBitBtn;: TBitBtn;: TGroupBox;: TLabel;: TEdit;: TGroupBox;: TCheckBox;: TDBLookupComboBox;: TCheckBox;: TDBLookupComboBox;: TCheckBox;: TDBLookupComboBox;: TCheckBox;: TDBLookupComboBox;: TLabel;: TCheckBox;: TDateTimePicker;: TDateTimePicker;: TCheckBox;FormShow(Sender: TObject);DBGrid1TitleClick(Column: TColumn);bbtCardClick(Sender: TObject);bbtPrintClick(Sender: TObject);edContractChange(Sender: TObject);chbDebtorClick(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);

{ Private declarations }

{ Public declarations };: TfmLoans;uDM, uRep, ADODB, DB, uLoanCard;

{$R *.dfm}TfmLoans.FormShow(Sender: TObject);.dstLoan.Open;.dstLoan.Sort := 'ДатаДог';.dstClient.Sort := 'ФИО';(Self);

end;

//Сортировка данных в таблице по выбранному столбцу:

procedure TfmLoans.DBGrid1TitleClick(Column: TColumn);

(DBGrid1.DataSource.DataSet as TADODataSet).Sort := Column.FieldName;.MessageBox('Сортировка по данному полю невозможна', 'Информация', MB_ICONINFORMATION);;;TfmLoans.bbtCardClick(Sender: TObject);

begin.ShowModal;;

//Печать набора данных, видимого на форме в таблице:

procedure TfmLoans.bbtPrintClick(Sender: TObject);

var: string;

//Формирование заголовка отчета

if not chbStatus.Checked then:= 'Все кредитные договора'dblcbStatus.KeyValue = 1 then:= 'Не выданные кредиты'if dblcbStatus.KeyValue = 2 then:= 'Кредитные договора'if dblcbStatus.KeyValue = 3 then:= 'Кредитные договора на просрочке'if dblcbStatus.KeyValue = 4 then:= 'Закрытые кредитные договора';chbDebtor.Checked and (dblcbDebtor.KeyValue <> Null) then:= Caption + ' заемщика ' + dblcbDebtor.Text;chbCreditType.Checked and (dblcbCreditType.KeyValue <> Null) then:= Caption + ', тип кредита: ' + dblcbCreditType.Text;chbStatus.Checked and (dblcbStatus.KeyValue <> 1) thenchbDate1.Checked then:= Caption + ', выданные за период с ' + DateToStr(dtpDate1.Date);chbDate2.Checked then:= Caption + ' по ' + DateToStr(dtpDate2.Date);chbDate2.Checked then:= Caption + ', выданные за период по ' + DateToStr(dtpDate2.Date);chbDate1.Checked then

Caption := Caption + ', подготовленные за период с ' + DateToStr(dtpDate1.Date);

if chbDate2.Checked then:= Caption + ' по ' + DateToStr(dtpDate2.Date);chbDate2.Checked then

Caption := Caption + ', подготовленные за период по ' + DateToStr(dtpDate2.Date);

Text_Universal(DBGrid1, 12, Caption);;

//Поиск договора по номеру:TfmLoans.edContractChange(Sender: TObject);edContract.Text <> '' then.dstLoan.Locate('NДоговора', '%' + Trim(edContract.Text), [loCaseInsensitive, loPartialKey]);

end;

//Отбор кредитов по заданным критериям:

procedure TfmLoans.chbDebtorClick(Sender: TObject);: string;:= '';chbDebtor.Checked and (dblcbDebtor.KeyValue <> Null) thenFilter <> '' then:= Filter + ' and ';:= Filter + 'Заемщик1ID = ' + IntToStr(dblcbDebtor.KeyValue);;chbCreditType.Checked and (dblcbCreditType.KeyValue <> Null) thenFilter <> '' then:= Filter + ' and ';:= Filter + 'ТипКредитаID = ' + IntToStr(dblcbCreditType.KeyValue);;chbGraphType.Checked and (dblcbGraphType.KeyValue <> Null) thenFilter <> '' then:= Filter + ' and ';:= Filter + 'ТипГрафикаID = ' + IntToStr(dblcbGraphType.KeyValue);;chbStatus.Checked and (dblcbStatus.KeyValue <> Null) thenFilter <> '' then:= Filter + ' and ';:= Filter + 'СтатусID = ' + IntToStr(dblcbStatus.KeyValue);;chbDate1.Checked thenFilter <> '' then:= Filter + ' and ';:= Filter + 'ДатаДог >= ' + QuotedStr(DateToStr(dtpDate1.Date));;chbDate2.Checked thenFilter <> '' then:= Filter + ' and ';:= Filter + 'ДатаДог <= ' + QuotedStr(DateToStr(dtpDate2.Date));;Filter <> '' then.dstLoan.Filter := Filter;.dstLoan.Filtered := True;.dstLoan.Filtered := False;;TfmLoans.FormClose(Sender: TObject; var Action: TCloseAction);.dstLoan.Filtered := False;.dstLoan.Close;;.

Программный модуль uMain.pas

unit uMain;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ActnList, StdActns, ImgList, XPStyleActnCtrls, ActnMan, ToolWin,, ActnMenus, StdCtrls, jpeg, ExtCtrls, Buttons, XPMan;= class(TForm): TActionManager;: TImageList;: TFileExit;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TImage;: TAction;: TAction;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TXPManifest;: TActionMainMenuBar;acClientsExecute(Sender: TObject);acInsuranceExecute(Sender: TObject);acCreditTypeExecute(Sender: TObject);acGarantObjectExecute(Sender: TObject);acLoansExecute(Sender: TObject);acJournalExecute(Sender: TObject);acStatExecute(Sender: TObject);acLoansListExecute(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmMain;uClients, uCreditType, uGarantObject, uInsurance, uLoans, uJournal,, uGetDate, uRep;

{$R *.dfm}TfmMain.acClientsExecute(Sender: TObject);.Show;;TfmMain.acInsuranceExecute(Sender: TObject);.Show;;TfmMain.acCreditTypeExecute(Sender: TObject);.Show;;TfmMain.acGarantObjectExecute(Sender: TObject);.Show;;TfmMain.acLoansExecute(Sender: TObject);.Show;;TfmMain.acJournalExecute(Sender: TObject);.ShowModal;;TfmMain.acStatExecute(Sender: TObject);

begin.Show;;

//Формирование кредитного портфеля на заданную дату:

procedure TfmMain.acLoansListExecute(Sender: TObject);: TDate;:= Date;GetDate(PDate) then_KP(PDate);

end;.

Программный модуль uPay.pas

unit uPay;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Mask, DBCtrls, ExtCtrls, ComCtrls, Buttons;= class(TForm): TLabel;: TLabel;: TLabel;: TLabel;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TBevel;: TLabel;: TLabel;: TLabel;: TDateTimePicker;: TLabel;: TEdit;: TBitBtn;: TBitBtn;: TBevel;: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TBevel;: TDBEdit;: TDBEdit;: TDBEdit;: TDBLookupComboBox;: TLabel;: TEdit;FormShow(Sender: TObject);dtpDateChange(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmPay;uDM, Math, uLoanCard;

{$R *.dfm}TfmPay.FormShow(Sender: TObject);.Date := Date;.SetFocus;

//Сумма оплаты рассчитывается, только если выполняется плановое гашение (а не досрочное):

if pnPlan.Visible then.Text := CurrToStr(RoundTo(DM.dstGraphic.FieldByName('СуммаНач').Value -.dstGraphic.FieldByName('СуммаИсп').Value, -2)).Text := '';

dtpDateChange(Self);;;

//Для досрочного гашения рассчитывается сумма процентов, подлежащих гашению

//в дату досрочного гашения ОД:

procedure TfmPay.dtpDateChange(Sender: TObject);: TDate;: Currency;not pnPlan.Visible then:= fmLoanCard.GetSumOfPay(Date1);.edPercent.Text := CurrToStr(fmLoanCard.GetPercentValue(Sum,.dstLoan.FieldByName('Ставка').AsFloat / 100, Date1, dtpDate.Date)); ;.

Программный модуль uRep.pas

unit uRep;

//Модуль для формирования выходных документов

interface, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math, DBGrids;Text_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);Text_BuildGraphic;Text_BuildEarlyPays;Text_KP(PDate: TDate);, DateUtils, Dialogs;

//Формирование отчета по выбранному набору данных (вывод заголовков видимых

//полей и их значений):Text_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);: Variant;, j, Width: Integer;:= CreateOleObject('Excel.Application');.Cursor := crHourGlass;.Application.EnableEvents := False;.Workbooks.Add;i:=0 to NumCol-1 do

begin

//Вывод в шапку таблицы названий полей из DBGrid'а:

Excel.Cells[5,i+1] := ADBGrid.Columns[i].Title.Caption;

//Форматирование заголовка::= Min(30, Trunc(ADBGrid.Columns[i].Width * 0.2));.Cells[5,i+1].ColumnWidth := Width;.Cells[5,i+1].Font.Bold := True;.Cells[5,i+1].Borders[7].LineStyle := 1;.Cells[5,i+1].Borders[8].LineStyle := 1;.Cells[5,i+1].Borders[9].LineStyle := 1;.Cells[5,i+1].Borders[10].LineStyle := 1;;.Cells[1,1] := Date;.Cells[3,1] := ACaption;.Cells[3,1].Font.Bold := True;.Cells[3,1].Font.Size := 12;:= 5;

//Экспорт данных из таблиц БД:

with ADBGrid.DataSource.DataSet do

DisableControls; //Отключаем сетку на время формирования отчета

First;not Eof do

Inc(i);

//Выводятся NumCol первых полей таблицы, отображенных в DBGrid'е:

for j:=0 to NumCol-1 do.Cells[i,j+1].NumberFormat := '@'; //Формат "текст"

//Текст выводится так, как он отображен в DBGrid'e:

Excel.Cells[i,j+1] := FieldByName(ADBGrid.Columns[j].FieldName).DisplayText;.Cells[i,j+1].Borders[7].LineStyle := 1;.Cells[i,j+1].Borders[8].LineStyle := 1;.Cells[i,j+1].Borders[9].LineStyle := 1;.Cells[i,j+1].Borders[10].LineStyle := 1;ADBGrid.Columns[j].Alignment = taLeftJustify then.Cells[i,j+1].HorizontalAlignment := 2 //Выравнивание влево.Cells[i,j+1].HorizontalAlignment := 4;//Выравнивание вправо;;;; //with.Application.EnableEvents := True;.Visible := True;.Quit;;.DataSource.DataSet.EnableControls;.Cursor := crDefault;.Enabled := True;

end;;

//Формирование графика гашения:

procedure Text_BuildGraphic;: string;: Variant;, PosInc: Integer;, SumOD: Currency;: TDate;

//Процедура вносит сумму гашения в соответствующий столбец в графике:

procedure SetPay;: Currency;

beginDM do

//В зависимости от того, что больше в график ставится фактическая сумма гашения или плановая::= Max(dstGraphic.FieldByName('СуммаНач').AsCurrency, dstGraphic.FieldByName('СуммаИсп').AsCurrency);

if dstGraphic.FieldByName('ПредметГашID').AsInteger = 1 then

begin

//Текущее гашение в графике - гашение ОД:

Excel.Cells[i+PosInc,3] := Value;:= SumOD + Value

//Текущее гашение в графике - гашение %%:

Excel.Cells[i+PosInc,4] := Value;:= SumPercent + Value;;;;

//Шаблон хранится в папке Templates::= GetCurrentDir + '\Формы\' + 'График гашения.xlt';:= CreateOleObject('Excel.Application');.Cursor := crHourGlass;.Workbooks.Open(WorkbookName);

i := 0;:= 0; //Сумма процентов:= 0; //Сумма основного долга:= 6;

//Экспорт данных из таблицы БД:DM do

//Вывод реквизитов договора в шапку:.Cells[3,1] := 'Кредитный договор № ' + DM.dstLoan.FieldByName('NДоговора').AsString +

' от ' + DM.dstLoan.FieldByName('ДатаДог').AsString;

//Цикл по строкам графика гашения:

dstGraphic.First;not dstGraphic.Eof do

begin

//Добавление новой строки:i <> 0 then

begin.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode := False;;:= dstGraphic.FieldByName('Дата').AsDateTime;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] := PrevDate;;.Next;(not dstGraphic.Eof) and (PrevDate = dstGraphic.FieldByName('Дата').AsDateTime) then;.Next;;(i);; //while not dstGraphic.Eof.Cells[i+PosInc,3] := SumOD;.Cells[i+PosInc,4] := SumPercent;.Cells[i+PosInc,5] := SumOD + SumPercent;; //with.Visible := True;.Quit;;.Cursor := crDefault;

end;;

//Формирование отчета по досрочным гашениям:

procedure Text_BuildEarlyPays;: string;: Variant;, PosInc: Integer;

begin

//Шаблон хранится в папке Templates::= GetCurrentDir + '\Формы\' + 'Досрочные гашения.xlt';

Excel := CreateOleObject('Excel.Application');.Cursor := crHourGlass;.Workbooks.Open(WorkbookName);

i := 0;:= 6;

//Экспорт данных из таблицы БД:DM do

//Вывод реквизитов договора в шапку:.Cells[3,1] := 'Кредитный договор № ' + DM.dstLoan.FieldByName('NДоговора').AsString +

' от ' + DM.dstLoan.FieldByName('ДатаДог').AsString;.Filter := 'КредитID = ' + DM.dstLoan.FieldByName('ID').AsString +

' and ТипОперацииID = 8';.Filtered := True;

dstJournal.Open;

//Цикл по строкам графика гашения:

dstJournal.First;not dstJournal.Eof do

begin

//Добавление новой строки:i <> 0 then

begin.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode := False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] := dstJournal.FieldByName('Дата').AsDateTime;.Cells[i+PosInc,3] := dstJournal.FieldByName('Сумма').AsFloat;.Next;(i);; //while not dstJournal.Eof.Filtered := False;.Close;; //with.Visible := True;.Quit;;.Cursor := crDefault;

end;;

//Формирование кредитного портфеля на заданную дату:

procedure Text_KP(PDate: TDate);: string;: Variant;, PosInc: Integer;: Currency;

begin

//Шаблон хранится в папке Templates::= GetCurrentDir + '\Формы\' + 'Кредитный портфель.xlt';

Excel := CreateOleObject('Excel.Application');.Cursor := crHourGlass;.Workbooks.Open(WorkbookName);

i := 0;:= 0; //Размер кредитного портфеля (сумма остатков ОД по кредитам):= 6;

//Экспорт данных из таблицы БД:

with DM do.Cells[3,7] := PDate;.Parameters.ParamByName('pDate1').Value := PDate;.Parameters.ParamByName('pDate2').Value := PDate;.Parameters.ParamByName('pDate3').Value := PDate;

dstKP.Open;

//Цикл по строкам портфеля:

dstKP.First;not dstKP.Eof do

begin

//Добавление новой строки:i <> 0 then

begin.Rows.Item[PosInc+i].Select;.Selection.Insert;.Rows.Item[PosInc].Select;.Selection.Copy;.Rows.Item[PosInc+i].Select;.ActiveSheet.Paste;.Application.CutCopyMode := False;;.Cells[i+PosInc,1] := i+1;.Cells[i+PosInc,2] := DM.dstKP.FieldByName('NДоговора').AsString;.Cells[i+PosInc,3] := DM.dstKP.FieldByName('ДатаДог').AsDateTime;.Cells[i+PosInc,4] := DM.dstKP.FieldByName('ТипКредита').AsString;.Cells[i+PosInc,5] := DM.dstKP.FieldByName('ДатаВыдачи').AsDateTime;.Cells[i+PosInc,6] := DM.dstKP.FieldByName('ДатаЗакрыт').AsDateTime;.Cells[i+PosInc,7] := DM.dstKP.FieldByName('Сумма').AsCurrency;.Cells[i+PosInc,8] := DM.dstKP.FieldByName('Ставка').AsString;.Cells[i+PosInc,9] := DM.dstKP.FieldByName('Остаток').AsCurrency;.Cells[i+PosInc,10] := DM.dstKP.FieldByName('СтатусКредита').AsString;:= Sum + DM.dstKP.FieldByName('Остаток').AsCurrency;.Next;(i);; //while not dstKP.Eof.Close;.Cells[i+PosInc,9] := Sum;; //with.Visible := True;.Quit;;.Cursor := crDefault;;;.

Программный модуль uStat.pas

unit uStat;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, Buttons, DBCtrls, ExtCtrls, TeEngine,, TeeProcs, Chart, DbChart, TeePrevi;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TPanel;: TBitBtn;: TBitBtn;: TPanel;: TDBChart;: TPieSeries;: TDateTimePicker;: TDateTimePicker;: TLabel;: TLabel;: TDBChart;: THorizBarSeries;: TTabSheet;: TDBChart;: TBarSeries;: TLabel;: TDateTimePicker;: TLabel;dtpDate1Change(Sender: TObject);FormCreate(Sender: TObject);FormShow(Sender: TObject);bbtPrintClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfmStat;uDM, uRep;

{$R *.dfm}TfmStat.dtpDate1Change(Sender: TObject);.Visible := PageControl1.ActivePageIndex <> 0;.Visible := PageControl1.ActivePageIndex <> 0;.Visible := PageControl1.ActivePageIndex = 0;.Visible := PageControl1.ActivePageIndex <> 0;.Visible := PageControl1.ActivePageIndex <> 0;

dtpDate.Visible := PageControl1.ActivePageIndex = 0;

//В зависимости от активной закладки открывается тот или иной набор данных:PageControl1.ActivePageIndex = 0 then

//Структура кредитного портфеля на дату:

DM.dstStatKP.Close;.dstStatKP.Parameters.ParamByName('pDate1').Value := dtpDate.Date;.dstStatKP.Parameters.ParamByName('pDate2').Value := dtpDate.Date;.dstStatKP.Parameters.ParamByName('pDate3').Value := dtpDate.Date;

DM.dstStatKP.Open;.Title.Text.Strings[0] := 'Структура кредитного портфеля по состоянию на ' +

DateToStr(dtpDate.Date);if PageControl1.ActivePageIndex = 1 then

begin

//Суммы выдач по видам кредитных продуктов:

DM.dstStatSumByCat.Close;.dstStatSumByCat.Parameters.ParamByName('pDate1').Value := dtpDate1.Date;.dstStatSumByCat.Parameters.ParamByName('pDate2').Value := dtpDate2.Date;.dstStatSumByCat.Open;.Title.Text.Strings[0] := 'Суммы выдач по видам кредитных продуктов c ' +(dtpDate1.Date) + ' по ' + DateToStr(dtpDate2.Date);if PageControl1.ActivePageIndex = 2 then

begin

//Суммы заказов по месяцам:

DM.dstStatSumByMonths.Close;.dstStatSumByMonths.Parameters.ParamByName('pDate1').Value := dtpDate1.Date;.dstStatSumByMonths.Parameters.ParamByName('pDate2').Value := dtpDate2.Date;.dstStatSumByMonths.Open;.Title.Text.Strings[0] := 'Суммы выдач по месяцам с ' +(dtpDate1.Date) + ' по ' + DateToStr(dtpDate2.Date);;;TfmStat.FormCreate(Sender: TObject);.Date := Date;.Date := Date;.Date := Date;;TfmStat.FormShow(Sender: TObject);Change(Self);;TfmStat.bbtPrintClick(Sender: TObject);

begin

//В зависимости от активной закладки выводится в режим просмотра перед печатью

//выбранная диаграмма:PageControl1.ActivePageIndex = 0 then(Self, DBChart1)if PageControl1.ActivePageIndex = 1 then(Self, DBChart2)if PageControl1.ActivePageIndex = 2 then(Self, DBChart3);;.

Приложение Б.

Экранные формы

Рисунок Б.1

Рисунок Б.2

Рисунок Б.3

Рисунок Б.4

Рисунок Б.5

Рисунок Б.6

Рисунок Б.7

Рисунок Б.8

Рисунок Б.9

Рисунок Б.10

Рисунок Б.11

Рисунок Б.12

Рисунок Б.13

Рисунок Б.14

Приложение В.

Формы выходных документов

Рисунок В.1

Рисунок В.2

Рисунок В.3

Рисунок В.4

Рисунок В.5

Рисунок В.6

Похожие работы на - Автоматизированная информационная система учета кредитов физических лиц в коммерческом банке

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!