UF

Аннотация

Дипломдық жоба тақырыбы «Банктің «Депозит» ішкі жүйесін  құрастыру». Бұл дипломдық жоба «Халық банк» АҚ  негізделген «Депозит» АЖО-ны құрастыру орындалған. Ішкі жүйелердің арнайы компоненттері құрастырылып, жүйе мен соңғы қолданушы арасындағы ақпараттық ағынды жобалау орындалған. Сонымен қатар жүйенің бөлімдері арасы мен ішкі есептерді іске қосу алгоритмі құрастырылған. Программаны құрастыру бойынша материалдар берілген. Оның құрамына есептің қойылымы, есепті шешу әдісі негіздемесі мен таңдауы, программа мен алгорит құру, сонымен қатар программалық өнімнің қолдану тиімділігі мен программист пен қолданушыға нұсқаулар кіреді.

Жобаны орындаған: 

Жобаның жетекшісі: 

 

Аннотация                                                    

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

            Разработчик проекта: 

         Руководитель проекта: 

 

The summary                                                   

Theme of the degree project «Development of a subsystem «the Deposit of "bank". In the degree project development АРМ "Deposit" for "Halyk Bank" bank is executed. Separate components of a subsystem are developed, designing information streams between system and end users, and also between parts of system is executed, the algorithm of realization of each subtask is developed. The material on development of the program is submitted. His(its) structure includes statement of a problem(task), a choice and a substantiation of a method of the decision of a problem(task), development of algorithm and the program, and also efficiency of use of the developed software, and also the instruction of the user and the programmer.

          Author of graduation thesis:    

          Instructor of graduation thesis:

 

МАЗМҰНЫ

КІРІСПЕ..............................................................................................................

1 ЕСЕПТІҢ ҚОЙЫЛЫМЫ.............................................................................

1.1 «Халық Банкінің» ақпараттық жүйелеріне талдау және шолу жасау.......

1.2 Банктің ішкі жүйелері....................................................................................

1.2.1 Банк салымдары..........................................................................................

1.2.2 Серіктестіктер..............................................................................................

1.3 Бағдарламалық қамтаманы құруға негіздеме..............................................

1.4 Ақпараттық жүйенің құрылымы мен техникалық базасы.........................

 

2 БАҒДАРЛАМАЛЫҚ ҚАМТАМАНЫ ЖОБАЛАУ..................................

2.1 Жүйенің бағдарламалық қамтаманы (БҚ) ұйымдастыру...........................

2.2 Стандарттық белгілеудің бағдарламалық құралдары.................................

2.3 Типтік бағдарламалық құралдар...................................................................

2.4   Арнайы мамандандырылған бағдарламалық қамтама.............................

2.5 Техникалық және аппараттық құралдар......................................................

 

3 БАҒДАРЛАМАЛЫҚ ҚАМТАМАНЫ ЖҮЗЕГЕ АСЫРУ......................

3.1 Шешім алгоритімін жасау.............................................................................

3.2   Тұтынушылық интерфейсін ұйымдастыру................................................

3.3 Бағдарламаның құжаттары............................................................................

3.3.1 Тұтынушының нұсқаулы ережелері..........................................................

3.3.2  Программистің нұсқаулары......................................................................

 

4 ӨМІР СҮРУ ҚАУІПСІЗДІГІ........................................................................

4.1 Өндірістік санитария мен еңбек гигиенасы................................................

4.2 Өндірістік ғимараттардағы метеориялогиялық ережелер........................

4.3 Өнеркәсіптік жылу мен (вибрация) дірілдеу...............................................

4.4 Өндірістік жарықтандыру.............................................................................

4.5 Электір қауіпсіздігі........................................................................................

4.6 Өрт қауіпсіздігі..............................................................................................

4.7 Төтенше жағдайлардың туындауын анықтау және классификациясы.....

4.8 Ауаны желдету...............................................................................................

4.9 Желдеткіштің таңдалуы................................................................................

4.10 Қорытынды...................................................................................................

 

5 ТЕХНИКАЛЫҚ ЭКОНОМИКАЛЫҚ НЕГІЗДЕМЕ...............................

 

5.1 Кіріспе.............................................................................................................

5.2 Бағдарламаны енгізудің экономикалық нәтежиелілігі...............................

5.2.1 Бағдарламаны енгізуге және жасауға кететін шығындар.......................

5.2.1.1 Бағдарламаның алгоритімін жасауға кететін шығын...........................

5.2.1.2 Расчет затрат на комплекс технических средств, необходимых для внедрения программы........................................................................................

5.2.1.3 Бағдарламаны ендірумен байланысты шығындардың есептелуі.......

5.2.1.4 Бағдарламаны жазуға және негіздеуге кететін шығын.......................

5.2.2 Бағдарламаны тұтыну мен байланысты эксплуатациялық шығындар..

5.2.3 Жылдық эксплуатациондық шығындардың үнемделуі..........................

5.2.4 Бағдарламаның бағасы...............................................................................

5.2.5 Орын толтыру мерзімі................................................................................

 

6 БИЗНЕСТІ ЖОСПАРЛАУ............................................................................

 

ҚОРЫТЫНДЫ...................................................................................................

ПАЙДАЛАНҒАН ӘДЕБИЕТТЕР...................................................................

ҚОСЫМШАЛАР...............................................................................................

Қосымша А: Бағдарламалық өнімді қабылдап өткізу акті

Қосымша Б: Бағдарламаның листингісі

 

КІРІСПЕ

 

         Есептеуші техника құралдарының дамытылуы мен адам іс- әрекетінің барлық салаларына компьютерлердің енгізілуі қарқындап келе жатқан және кері қайтпайтын процесс. Компьютердің қолданылуының әсерлілігі, компьютермен шешілетін функциялар шеңберінің кеңейуі адам еңбек ететін кез – келген аймақта ауыстырылмас көмекші болып отыр.

Қазіргі күнде қаржылық ұйымдар, ал ерекше атап өтер болсақ банктер өз іс әрекеттерін белсенді түрде автоматтандырып отыр, қазіргі бағдарламаларды дамыту аймағында күш сала жұмыс жасай отырып, оны ұсынылатын қызметтер аясында кеңінен қолдануда қамтамасыз етуге күш салып жатыр. Банктер ұсынатын қызметтердің бірі болып комуналды төлем арқылы бюджеттік төлемдерді қабылдау, несиелердің әр түрлерін беру.

Коммерциялық банктердің тартылған қаржы көлемінің негізгі бөлігін депозиттер құрайды, яғни тұтынушылар банкке салған қаржы көздері немесе банк операциясын жүргізу барысында бурқатар уақытта банк шоттарында табылатын қаржылар. Депозиттік шоттарды банк практикасында қолдану мен депозит сұрақтарына деген әр түрлі және тіпті қарама-қайшы көзқарастар бар. Әлемдік банк практикасында депозит деп банк немесе қаржылық – несиелік мекемелерге сақтауға берілген ақшалар немесе құнды қағаздар айтылады. Банктердегі салымдармен қоса «Депозит» кедендік салық төлеу жарнамаларын, салықты және т.б. білдіреді.

Банктің арнайыландырылған жүйесі БАЖ - ? болуының қажеттігі туындайды, ол банк клиенттері үшін берілетін сыйақы көлемін есептеумен, депозит бойынша банк клиенттері туралы ақпарат жинаумен, әр түрлі есеп берудің сұрыпталып берілуімен айналысады.

Дипломдық жобаның тақырыбы «Отырар аудандық Халық Банкі «Депозит» ішкі жүйесін құрастыру ».

Мысалы үшін  «Халык банк» АҚ филиалы  алынды.

Дипломдық жобада «Халық банк» АҚ үшін депозит беретін банк қызметкерінің АЖО -  жасалуы орындалады. Жобада қосымша жүйенің бөлек компоненттері жасалады, жүйе мен тұтынушы арасындағы ақпаратты ағымның жобалануы орындалады, және де жүйенің бөліктері арасында, әр тапсырманың жүзеге асуының алгоритмі жасалады.

Дипломдық жоба келесі бөлімдерден тұрады:

  1. тапсырманың қойылуы
  2. бағдарламалық қамтудың жобалануы
  3. бағдарламалық қамтудың жүзеге асуы
  4. өмір сүру қауіпсіздігі бөлімі
  5. техникалық – экономикалық негіздеу бөлімі
  6. бизнестік жоба
  7. қорытынды
  8. пайдаланған әдебиеттер тізімі
  9. қосымша

Бірінші тарауда бүкіл банкті басқарудағы ақпараттық жүйенің негізгі орны жазып көрсетіледі, «Депозит» БҚ тапсырмалары мен функциялары қарастырылады, алгоритмдер мен тапсырмалардың ақпараттық бір-бірімен байланысын және олармен жұмыс жасау жолдары.

Екінші тарауда автоматтандырылған жұмыс орнына орнатылатын бағдарламалық қамтуды таңдауға негіздеу жүргізіледі, қолданылған бағдарламалық құралдарға толық сипаттама беріледі, оның құрамына стандарттық, типтік және мамандандырылған бағдарламалық құралдар кіреді, және де қосымша жүйенің қалыпты жұмыс жасауына қажетті аппараттық – техникалық құралдарды таңдау кіреді.

Үшінші тарауда жасалған өнімнің жасалу және эксплуатация ортасы қарасатырылады, пакеттің құрамы мен структурасы, негізгі және қосымша файлдардың сипаттамасы беріледі. Бағдарламаны жасау туралы материал ұсынылған. Оның құрамына тапсырманың қойылуы, тапсырманы шешу тәсілін таңдау және негіздеу, алгоритм мен бағдарламаның жасалуы, және де жасалған бағдарламалық өнімнің қолданылуының әсерлілігі және де тұтынушы мен программистке арналған нұсқаулар кіреді.

«Өмір сүру қауіпсіздігі» бөлімінде еңбекті қорғау нормалары мен ережелеріне сипаттама беріледі, өндірістік ғимараттардағы метеорологиялық жағдайлар, жарықтандыру, өндірістік шуыл мен дірілдің әсері, электр қауіпсіздігі, өртқауіпсіздігі.

Дипломдық жобаның экономикалық бөлігінде негізгі техника – экономикалық көрсеткіштер ұсынылған, экономикалық әсерліліктің толық сипаттамасы, берілген жоба туралы толық негіздемелер мен қортындылар.

Жоба «Қортындымен» аяқталады, негізгі нәтижелермен қорытындылар келтіріледі, және жасалған бағдарламалық өнімнің ерекшеліктері.

Пайдаланған әдебиеттер тізімі дипломдық жобада жасау кезінде қолданылған барлық әдебиеттерді қамтиды.

Қосымшада бағдарламаның листінгісі келтірілген.

           

1 ЕСЕПТІҢ ҚОЙЫЛЫМЫ

 

1.1 «Халық Банкінің» ақпараттық жүйелеріне талдау және шолу жасау

 

2003 жылы Қазақстан Халық банкіне 80 жыл толды. Халық Банкінің тарихы — бұл Қазақстан аумағындағы жинақ жүйесінің құрылу және даму тарихы. «Қазақстан Халық Банкі» акционерлік қоғамының негізі қайта құрылған Қазақстан Республикасы Жинақ банкінің базасында қаланған.

  Еліміздегі алғашқы жинақ кассасы сонау 1923 жылы, төңкеріс жылдарынан кейінгі жаңа экономикалық қарым-қатынастар қалыптаса бастаған кезеңде, Ақтөбе қаласында ашылған болатын, кейіннен ұжымдандыру (коллективтендіру) және индустрияландыру науқандары жүргізілген тұста, 1936 жылы, Алматы қаласында КСРО Жинақ банкінің филиалы ашылды. Ақтөбедегі жинақ кассасы ашылғаннан кейін небәрі 4 жылдың ішінде республикадағы мұндай кассалар саны 335-ке жетті. 1929 жылы Республикалық жинақ кассасы құрылып, ол Қазақстандағы барлық кассалар қызметіне жалпы басшылықты іске асырды. Касса салымшыларының қатарына жұмысшыларды, қызметкерлер мен колхозшыларды неғұрлым көбірек тарту мақсатында жинақ кассаларын тікелей зауыт-фабрикалардың өзінен, колхоз-совхоздарда, байланыс мекемелері мен кәсіпорындардан ашу қолға алынды.

 Социалистік қоғамда қалыптасқан әлеуметтік-экономикалық және қаржылық қатынастардың өзі әрбір кеңестік азаматтың Жинақ банкі салымшыларының қатарына қосылуына ықпал етті. Халыққа қызмет көрсетудің орасан зор ауқымдағы жүйесі қаражат жинақтау мен банк ісінің қалыптасқан тарихи дәстүрлерін Қазақстан аумағында да бекітуге қолайлы жағдай туғызды.

  Жинақ кассалары сонымен қатар мемлекеттік қарыз облигацияларының, басқа да бағалы қағаздардың кепілдігімен мерзімдік несиелер берумен айналысты. Сондай-ақ оларға қор операцияларын, басқа да бірқатар қаржылық және банктік операциялар жүргізуге рұқсат етілді.

    Бұл кезеңдегі жинақ ісінде мемлекеттік кредит беру қалыптасып, біртіндеп дами бастады. Ол жылдары сегіз рет мемлекеттік қарыз шығарылды, оның үшеуі — натуралдық түрде (астықпен, қантпен) болса, екеуі алтынмен есептелген болатын (ақша реформасына дейін).

   1960 жылдың аяғына қарай жинақ кассаларындағы салымшылар саны   1 770 мың адамға жетті, ал салым ақшаның көлемі 322,7 млн сомды құрады, салымның бір адамға шаққандағы орташа мөлшері 182 сом болды. Жинақ кассаларының саны 1950 — 1960 жылдар арасында 1,8 есеге өсіп, 1960 жылдың аяғында 2805-ке жетті.

Қазақстандағы жинақ ісі мен жинақ кассалары желісінің кеңінен қанат жаюы ең алдымен еліміздегі тың және тыңайған жерлердің игерілуі нәтижесінде халық шаруашылығының қарқынды дамуымен, еңбекшілердің материалдық тұрмыс жағдайының айтарлықтай жақсаруымен байланысты болды. Тек 1955 жылдың өзінде еліміз бойынша салымшылар шоттарының 44,1 пайызы, ал салымдар қалдығының 44 пайызы тың жерлерді игеру жаппай жүргізілген солтүстік өңірдегі Көкшетау, Қостанай, Солтүстік Қазақстан, Ақмола, Павлодар облыстарының үлесіне тиді.

   60-жылдардың басында жинақ кассаларында тұрғындардан пәтерге, коммуналдық қызметттерге төлейтін төлемақыларын қабылдау операцияларын жүргізу қолға алынды. Сонымен бірге жинақ кассаларының құзырына зауыт-фабрикалардың, жергілікті кәсіподақ комитеттерінің, өзара көмек кассаларының және шаруашылықпен айналыспайтын қоғамдық ұйымдардың ағымдағы шоттарын жүргізу берілді. Жинақ жүйесінің одан әрі дамуы үшін ақша бірлігін күшейтудің маңызы зор болды.

  Алайда 1961 жылы жүргізілген реформа айналымдағы ақша массасын бақылау және ақша шығаруды шектеу шарасы ретінде ойластырылғанымен, көздеген мақсатқа қол жеткізілмеді, ол үшін бүкіл шаруашылық құрылымы қайта өзгертілуге тиіс еді, сондықтан аталған реформа ақша белгілерін ауыстырумен және сомның жаңа бағамын белгілеумен ғана шектелді.

  1963 жылдан бастап жинақ кассалары Қаржы министрлігінің құрамынан шығарылып, Мемлекеттік банк қарамағына берілді, халық салымдарының қаржысы бұдан былай банктің кредит ресурсын толықтыруға жұмсалатын болды. 60-жылдардың аяғында жинақ ісінің нағыз даму шегіне жетіп, көркейген кезеңі болды: дәл сол жылдары халық шаруашылығына кредит беруге күрделі капитал қаражаты жіберілді, ал оның негізгі көзін тұрғындардың кассалардағы жинақ салымдары құрады.

  1988 жылғы банктік реформа бойынша банк жүйесін екі деңгейге көшіру көзделді: орталық банк және арнаулы банктер. Мемлекеттік еңбек жинақ кассалары КСРО Жинақ банкіне айналдырылып, халыққа және заңды тұлғаларға қызмет көрсететін мемлекеттік арнаулы банк болып құрылды.
Қазақстан Республикасының мемлекеттік тәуелсіздік пен егемендіккке қол жеткізуімен жинақ ісінің дамуында үшінші қайта құру кезеңі басталды — дәл осы кезден бастап Қазақстан Халық Банкінің құрылымдық банкингке және функционалдық қайта бағдарлауға негізделген ісі қолға алынды.

  1990 жылдың желтоқсанынан бастап Қазақстан өзінің нарықтық экономика талаптарына жауап бере алатын банк жүйесін құруға кірісті. 1991 жылдың қаңтарында-ақ «Қазақ ССР-індегі банктер және банк қызметі туралы» деген заң қабылданды, мұның өзі тәуелсіз Қазақстанның банк ісіндегі реформа жұмысының алғашқы қадамы болған еді.

  Мемлекеттік тәуелсіздігіміз ресми түрде жария етілген соң бір жылдан кейін, 1992 жылы Қазақстан Республикасының Жинақ банкі құрылды, оның заңды түрдегі ресми құқық иеленушісі бүгінгі Қазақстан Халық Банкі болды.
        1993 жылы Жинақ банкі Қазақстан Республикасының үкіметіне қарайтын дербес заңды құрылым — «Қазақстан Халық Банкі» болып ұйымдастырылды. Ал 1995 жылы Банк жабық тұрпаттағы акционерлік қоғам болып қайта құрылды. Қайта құру рәсімі банк басшылығын ауыстырумен, жұмыс стилін түпкілікті өзгертумен ұштастырылды.

Жаңа басшылық банк жұмысына әмбебап қызмет көрсету қағидатын негіз етіп алды және бүгінгі күнге дейін банк қызметі түрлерін барынша кеңейтуді, банкингтегі ақпараттық-коммуникативтік технологиялардың соңғы жетістіктерін пайдалануды барынша қолдап әрі дәйектілікпен іске асырып келеді.

  1995 жылдың аяғында-ақ Қазақстан Халық Банкі республикадағы ірі операциялық банк болып танылды. Қазіргі уақытта Банк қаржы рыногындағы өзінің сол айқындамасынан ауытқымай, қол жеткізген жетістіктерін сақтап қалуға ұмтылып келеді.

   1998 жылдың шілдесінде акционерлердің жалпы жиналысының шешімімен Банк жабық тұрпаттағы акционерлік қоғамнан Үкіметтің қатысуы 100 пайызды құрайтын «Қазақстан Халық жинақ банкі» ашық акционерлік қоғамына айналдырылды. Сол жылы Қазақстан Республикасы Үкіметінің 1998 жылдың 6 шілдесінде шыққан №644 «Қазақстан Акционерлік Халық жинақ банкін 1998-2001 жылдары кезең-кезеңмен жекешелендірудің негізгі бағыттары туралы» деген қаулысына сәйкес акционерлік қоғам капиталын ұлғайту бағытында жұмыс жүргізілді.

  2001 жылдың қараша айында өткен сауда-саттық аукционында Қазақстан Үкіметі өзіне тиесілі 33 пайыз + бір акцияның бақылау пакетін сатты. Осы уақыттан бастап Қазақстан Халық Банкі еліміздегі ірі әмбебап әрі жетекші коммерциялық банктердің бірі болып келеді. 80 жылдан астам өз клиенттеріне қалтқысыз қызмет етіп, сенімді қаржылық мекемеге айналып отыр.

«Қазақстан Халық Банкі» АҚ — өз клиенттерінің игілігі үшін 80 жылдан астам уақыт табысты қызмет етіп келе жатқан Қазақстан Республикасындағы аса ірі әмбебап коммерциялық банк, еліміздегі ең сенімді әрі қызметі барынша сараланған қаржылық құрылымдардың бірі.

«Қазақстан Халық Банкі» акционерлік қоғамы бұрынғы Қазақстан Республикасы Жинақ банкінің негізінде қайта құрылды және біраз жылдар бойы ҚР Үкіметінің зейнетақы мен жәрдемақы төлеу жөніндегі агенті болып келді.
          Активтері мен меншікті капиталының көлемі жағынан Халық банкі Қазақстан Республикасындағы екінші деңгейлі ірі банктердің үштігіне кіреді. 2006 жылғы 1 cәуірдегі жағдай бойынша Банктің активтері 651,7 млрд теңге, жарғылық капиталы 29,9 млрд теңге, меншікті капитал мөлшері (есеп айырысу) 64,5 млрд теңге, тапқан таза пайда көлемі — 3,4 млрд теңге шамасында болды.

2001 жылы жүргізілген Халық банкін жекешелендіру рәсімі нәтижесінде Банк өз клиенттеріне кең ауқымды және барынша сапалы қызметтер спектрін ұсыну мүмкіндігін беретін бизнес құрылымын жасауға қол жеткізді.

 Банк VISA International және MasterCard International төлем жүйесінің карточкаларын шығарады және қазақстандық пластикалық карточкалар рыногының тұрақты көшбасшысы болып келеді. Банктің айналымдағы карточкаларының жалпы саны 2 млн бірліктен асып түсті, ал екінші деңгейдегі банктер арасындағы Банктің бұл көрсеткіш бойынша үлесі 70 пайызды құрайды.

 

  1.  Банктің ішкі жүйелері

 

1.2.1 Банк салымдары

Салымдардың жалпы талаптары

1.Жинақ шотын ашу үшін қажетті құжаттар: жеке басын куәландыратын құжат, СТН.

2.Салымшылардың ақшасын Банк ұлттық валюта - теңгемен және шетел валютасымен (АҚШ доллары, евро), қолма-қол ақшамен әрі қолма-қол ақшасыз нысанда қабылдайды.

3.Салым мерзімі аяқталғаннан кейін салымшы (немесе оның өкілі) үш банктік күннің ішінде салым мен сыйақыны талап етпеген жағдайда Банк салым туралы тиісті шартты сол мерзімге әрі сол талаптар бойынша, банк салымының шарты ұзартылатын күні аталған салым түрі бойынша қолданыстағы сыйақы ставкасымен автоматты түрде ұзартады.

4.Салым мерзімі ұзартылған жағдайда, жаңа мерзім барысында сыйақы есептеу салымның алдыңғы мерзімі ішінде капиталдандырылған жалпы сомасы мен сыйақысына есептеледі.

 5.Салым шарты салымшының өз бастамасымен мерзімінен бұрын бұзылған жағдайда, оның ішінде Банк салым шартын ұзартқаннан кейін бұзылатын болса, егер салымды сақтаудың нақты мерзімі:

- 30 күннен аз болса - салым сомасына сыйақы есептелмейді;

- 30 күннен көп болса - сыйақы «талап ету» салымының ставкасымен әрі салым нақты сақталған мерзім барысындағы оның өзгеру ретін ескере отырып, есептеледі.

6. Салым сомасы салымшының өз бастамасымен мерзімінен бұрын талап етілген жағдайда, егер салымның нақты сақталған мерзімі 30 күннен аз болса, салым сомасын бергенде Банк сол күні қолданыста болатын тарифтерге сәйкес қолма-қол ақша бергені үшін тиісті комиссиялық сыйақы ұстап қалады.

Интернет – жинақтаушы

- теңгемен,

- АҚШ долларымен,

- евромен қабылданады.


Салымның ең төменгі мөлшері:

ұлттық валютамен:

- 2 000 теңге (Қазақстан Республикасының барлық өңірінде).

- шетел валютасымен:

- 10 АҚШ доллары немесе 10 евро (Қазақстан Республикасының барлық өңірінде).

Бастапқы жарнаның ең төменгі мөлшері:

- ұлттық валютамен:

- 300 теңге

- шетел валютасымен:

- 2 АҚШ доллары немесе 2 евро

Салым мерзімі: 6, 9, 12, 18, 24, 36 ай.

Сыйақы ставкасы:

- салымның сақталу мерзімі барысында өзгертілмейді.

 Басқа талаптар:

- «Жинақтаушы-плюс» депозитін «Интернет-банкинг» жүйесі арқылы дербес режимде ашуға да болады. Бұл жағдайда сіз депозитіңізді Интернет арқылы тексеріп отыруға, қосымша ақшамен толықтыруға мүмкіндік аласыз;

- салым бойынша жинақ шоттан ішінара төлем жүргізілмейді;

- банк салымының шартын автоматты түрде сол мерзімге, ұзарту жасалатын күні Банкте қолданыста болатын сыйақы ставкасымен қайта ұзарту қарастырылған;

- салым бойынша есептелген сыйақы Банк салымы шартының мерзімі аяқталған күні жүргізіледі;

- бастапқы жарна сомасы кемінде 500 АҚШ долларына немесе сол соманың баламасындағы теңгелік не болмаса евродағы сомаға тең болса әрі сақтау мерзімі 6 және 12 ай болса, белгіленген пайыздық ставкаға 0,5 % мөлшерінде бонус қосылады.

 

айлары

KZT

USD

EUR

RR

7

7,0

4,5

4,5

 

13

10,0

5,5

5,5

 

 

 

 

"Халықтық - стандарт" салымы

1. Салым мерзімі 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 24 және 36 ай

2.Салым бойынша сыйақы салым мерзімі аяқталғаннан кейін төленеді.

3. Банк салымы туралы шарт әрекет ететін мерзімі барысында жинақ шотқа қосымша жарна қабылданбайды және шоттан ішінара ақша берілмейді.

4. Егер шартта көрсетілген салым мерзімі 12 ай болса, сыйақы ставкасы салым сақталатын мерзім барысында өзгеріссіз қалады.

5. Егер шартта көрсетілген салым мерзімі 12 айдан асатын болса, Банк салымның сыйақы ставкасын бір жақты тәртіппен шарт бекітілген күннен бастап әрбір 12 айдан кейін өзгертіп отыруға құқылы.

 

 

айлары

KZT

USD

EUR

RR

3

5,5

3,5

3,5

3,5

6

6,0

4,0

4,0

4,0

9

8,5

4,5

4,5

4,5

12

9,0

5,0

5,0

5,0

18

9,5

5,5

5,5

-

24

10,0

6,0

6,0

-

36

10,0

6,5

6,5

-

 

«Халықтық-жинақтаушы» салымы

1.Салым мерзімі 6, 9, 12, 18, 24 және 36 ай.

2. Салым бойынша есептелген сыйақы салым мерзімі аяқталғаннан кейін төленеді.

3. Банк салымының шарты әрекет ететін кезең барысында жинақ шотына салым валютасымен қосымша жарна қабылданады. Салым шарты әрекет ететін мерзім барысында шоттан ішінара ақша берілмейді.

4. Салым мерзімі барысында оның шотта сақталған нақты мерзімі үшін сыйақы нақты қалдық сомасына есептеледі.

5. Егер шартта көрсетілген салым мерзімі 12 ай болса, сыйақы ставкасы салым сақталатын мерзім барысында өзгеріссіз қалады.

6. Егер шартта көрсетілген салым мерзімі 12 айдан асатын болса, Банк салымның сыйақы ставкасын бір жақты тәртіппен шарт бекітілген күннен бастап әрбір 12 айдан кейін өзгертіп отыруға құқылы.

 

 

 

 

айлары

KZT

USD

EUR

RR

6

5,5

3,5

3,5

3,5

9

8,0

4,0

4,0

4,0

12

8,5

4,5

4,5

4,5

18

9,0

5,5

5,5

-

24

9,5

6,0

6,0

-

36

10,0

6,5

6,5

-

48

10,25

7,0

7,0

-

«Халықтық-зейнетақылық» салымы

1.Жасы 50-ден асқан жеке тұлғалар немесе жасы 50-ге толмағанымен, зейнетақылық куәлігі бар жеке тұлғалар салымшы бола алады.

2. Салым мерзімі - 7 және 13 ай.

3. Салым бойынша сыйақы ай сайын, салым шарты күшіне енген күннен бастап әрбір 30 күнде бір рет, есептелген сыйақыны салымшының ағымдағы карточкалық шотына аудару арқылы төленеді, шот нөмірі банк салымының шартында көрсетіледі.

4. Банк салымының шарты әрекет ететін кезең барысында жинақ шотына салым валютасымен қосымша жарна қабылданады. Салым шарты әрекет ететін мерзім барысында шоттан ішінара ақша берілмейді.

5. Салымның сыйақы ставкасы салым мерзімі барысында өзгеріссіз қалады.

6. Салым мерзімі барысында оның шотта сақталған нақты мерзімі үшін сыйақы нақты қалдық сомасына есептеледі.

7. Егер салымшының ағымдағы карточкалық шоты болмаса, «Халықтық-зейнетақылық» салымы шотын ашумен қатар, салымшының қалауымен ағымдағы немесе карточкалық шот ашылады.

 

айлары

KZT

USD

EUR

RR

7

7,0

4,5

4,5

 

13

10,0

5,5

5,5

 

 

«Халықтық - төлемдерімен» салымы

1.Салым мерзімі 6, 9, 12, 18, 24 және 36 ай.

2. Салым бойынша сыйақы ай сайын, салым шарты күшіне енген күннен бастап әрбір 30 күнде бір рет, есептелген сыйақыны салымшының ағымдағы карточкалық шотына аудару арқылы төленеді, шот нөмірі банк салымының шартында көрсетіледі.

3. Банк салымы туралы шарт әрекет ететін мерзімі барысында жинақ шотқа қосымша жарна қабылданбайды, сондай-ақ шоттан ішінара ақша берілмейді.
         4. Егер шартта көрсетілген салым мерзімі 12 ай болса, сыйақы ставкасы салым сақталатын мерзім барысында өзгеріссіз қалады.

5. Егер шартта көрсетілген салым мерзімі 12 айдан асатын болса, Банк салымның сыйақы ставкасын бір жақты тәртіппен шарт бекітілген күннен бастап әрбір 12 айдан кейін өзгертіп отыруға құқылы.

6. Ай сайын, есептелген сыйақы капиталдандырылатын күні Банк сыйақы сомасын салымшының қолда бар ағымдағы карточкалық шотына аударады, шоттың нөмірі банк салымы шартында көрсетіледі.

7. Егер салымшының ағымдағы карточкалық шоты болмаса, «Халықтық-төлемдерімен» салымы шотын ашумен қатар, салымшының қалауымен ағымдағы немесе карточкалық шот ашылады.

 

айлары

KZT

USD

EUR

RR

6

5,5

3,5

3,5

-

9

8,0

4,0

4,0

-

12

8,5

4,5

4,5

-

18

9,0

5,5

5,5

-

24

9,5

6,0

6,0

-

36

10,0

6,5

6,5

-

48

10,25

7,0

7,0

-

 

«Халықтық - балалар үшін» салымы

1. Салым жасы 14-ке толмаған салымшының атына қабылданады.

2. Салым мерзімі - 12, 24 және 36 ай. Салым бойынша сыйақы салым мерзімі аяқталғаннан кейін төленеді.

3. Салымшының атына кез келген тұлға, туыстық қатысының бар жоғына қарамастан, тиісті құжаттарын көрсете отырып, ақша сала алады.

  4. Үшінші біреуден шетел валютасын қабылдау егер ақша салушы жасы 18-ге толмаған салымшының сенім білдірілген адамы немесе заңды өкілі болса ғана жүргізіледі.

5. Банк салымының шарты әрекет ететін мерзім барысында ақша салушылардан, жасы 14-ке толған салымшылардан немесе үшінші біреулерден жинақ шотына қосымша жарна қабылданады. Салым шарты әрекет ететін мерзім барысында салымшының шотынан ішінара ақша берілмейді.

6. Егер шартта көрсетілген салым мерзімі 12 ай болса, сыйақы ставкасы салым сақталатын мерзім барысында өзгеріссіз қалады.

7. Егер шартта көрсетілген салым мерзімі 12 айдан асатын болса, Банк салымның сыйақы ставкасын бір жақты тәртіппен шарт бекітілген күннен бастап әрбір 12 айдан кейін өзгертіп отыруға құқылы.

8. Салым мерзімі барысында оның шотта сақталған нақты мерзімі үшін сыйақы нақты қалдық сомасына есептеледі.

  9. Жасы 14-ке толмаған салымшының атына салынған салымға салымшының заңды өкілдері (ата-анасы, асырап алушысы, қамқорлық жасаушысы) иелік етеді, ал жасы 14-ке толғаннан кейін салымшы өзі иелік етеді.
         10. Жасы 16-ға толмаған (кәмелетке жетпеген) салымшыға салымды төлеу егер ол Қазақстан Республикасы азаматының туу туралы куәлігін көрсеткен болса және оның заңды өкілдерінің (ата-анасы, асырап алушысы, қамқорлық жасаушысы) көзінше жүргізіледі.

11. Егер салымшының жасы 14-ке толмаса, салым мен оның сыйақысы ақша салушыға тек салымшының (ата-анасының, қамқоршысының келісімі бар болса) немесе оның заңды өкілдерінің жазбаша бас тартуы негізінде жүргізіледі.

 

айлары

KZT

USD

EUR

RR

12

9,0

5,0

5,0

-

24

9,5

5,5

5,5

-

36

10,0

6,5

6,5

-

48

10,25

7,0

7,0

-

60

10,5

7,5

7,5

-

13

9,5

5,2

5,2

-

 

«Halyk-әмбебап» салымы

1. Салым мерзімі - 12, 24, 36 ай.

2. Банк салымының шарты әрекет ететін мерзім барысында жинақ шотына қосымша жарна қабылданады және шоттан ішінара ақша беріліп отырады.

 3. Салым мерзімі барысында шоттан ішінара ақша берілгенде, жинақ шоттағы салымның кемімейтін қалдық сомасы сақталуға тиіс.

  4. Егер шартта көрсетілген салым мерзімі 12 ай болса, сыйақы ставкасы салым сақталатын мерзім барысында өзгеріссіз қалады.

5. Егер шартта көрсетілген салым мерзімі 12 айдан асатын болса, Банк салымның сыйақы ставкасын бір жақты тәртіппен шарт бекітілген күннен бастап әрбір 12 айдан кейін өзгертіп отыруға құқылы.

6. Салым мерзімі барысында оның шотта сақталған нақты мерзімі үшін сыйақы нақты қалдық сомасына есептеледі.

 

айлары

KZT

USD

EUR

RR

12

9,0

5,0

5,0

-

24

9,5

5,5

5,5

-

36

10,0

6,5

6,5

-

 

«Halyk - үш валюталы» салымы

1. «Наlyk - үш валюталы» мультивалюталық салым болып табылады. Салым талаптарына сәйкес банк салымының шартына қол қойылған күні салымшыға үш түрлі валютамен - ҚР-ның ұлттық валютасы - теңгемен, АҚШ долларымен және евромен үш шот ашылады.

2. Салымшының қалауы бойынша салымдағы ақша бір уақытта бір валютамен немесе екі, үш валютамен сақталуы мүмкін.

3. Салым мерзімі - 12, 24, 36 ай.

4. Банк салымының шарты әрекет ететін мерзім барысында жинақ шотына қосымша жарна қабылданады, ал шоттан ішінара ақша берілмейді.

5. Салым мерзімі барысында салымшының қалауы бойынша салымды түгелдей немесе салым сомасының бір бөлігін бір валютадан екіншісіне айырбастауға болады.

6. Валюта айырбастау белгіленген нысанмен жазылған салымшы өтініші негізінде жүргізіледі.

  7. Айырбастау Банкте белгіленген сол күнгі шетел валютасын айырбастау бағамына сәйкес іске асырылады.

8. Салым мерзімі барысында сыйақы есептеу әрбір валюта түрі бойынша бөлек, аталған валютадағы жинақ шоты ашылған салым мерзімі ұзартылған күні белгіленген сыйақы ставкасымен, салымның нақты сақталған мерзімі үшін әрі әрбір валютадағы нақты салым қалдығына жүргізіледі.

9. Егер шартта көрсетілген салым мерзімі 12 ай болса, сыйақы ставкасы салым сақталатын мерзім барысында өзгеріссіз қалады.

10. Егер шартта көрсетілген салым мерзімі 12 айдан асатын болса, Банк салымның сыйақы ставкасын бір жақты тәртіппен шарт бекітілген күннен бастап әрбір 12 айдан кейін өзгертіп отыруға құқылы.

 

айлары

KZT

USD

EUR

RR

12

8,5

4,5

4,5

-

24

9,5

5,5

5,5

-

36

10,0

6,5

6,5

-

 

 

 

Интернет – салым

Интернет-Банкинг жүйесінде ашылатын салым:

- теңгемен,

-АҚШ долларымен,

- евромен қабылданады.

 Интернет-салым ашу:

- Интернет-шоттан ақша аудару арқылы мүмкін болады.

 Салым мерзімі: 3, 6, 9, 12 ай.

Салымның ең төменгі мөлшері:

ұлттық валютамен:

- 10 000 теңге.

шетел валютасымен:

- 100 АҚШ доллары;

- 100 евро.

 Салымның ең жоғары мөлшері:

- шектелмейді.

Басқа талаптар:

Интернет депозиттері бойынша операцияларды клиент тәулік бойы өзіне өзі қызмет көрсету режимінде«Шоттарға қол жеткізу» менюі арқылы іске асыра алады. Клиенттің сағ.16:00-ден кейін немесе банк күнінен басқа күні келіп түскен нұсқаулары келесі банк күнінде алынған болып есептеледі.           Клиенттің операциясы «Операциялар» деген беттегі менюде көрсетілген әрі рұқсат етілген операциялар тізіміне сәйкес жүргізіледі. Депозиттер бойынша жасалған операция туралы ақпаратты, оның ішінде есептелген және капиталдандырылған сыйақы сомасын салымшы «Тарих» деген беттен қарап шыға алады немесе шоттан үзінді алуына болады. Егер Интернет-салымның мерзімі аяқталғаннан кейін салымшы оны талап етпесе, салым тағы бір мерзімге (салымшы шотты ашқанда таңдаған мерзімге) ұзартылған болып есептеледі.

Жинақтаушы депозитті толықтыру «Операциялар» бетінде жүргізіледі. Сыйақы есептеу ақша депозитке аударылған күннен кейінгі келесі күннен бастап жүргізіледі. Сыйақы есептелгенде бір жыл - 360 күнге, бір ай 30 күнге тең деп алынады. Сақталу мерзімі 12 айдан аспайтын депозиттер бойынша сыйақы ставкасы депозит мерзімі аяқталғанша өзгеріссіз қалады. Егер сақталу мерзімі 12 айдан асатын болса, Банк сыйақы ставкасын депозит ашылған күннен бастап әрбір 12 ай өткен сайын бір жақты тәртіппен өзгертіп отыру құқығын сақтап қалады.

Депозит бойынша капиталдандырылған сыйақы сомасы тиісті валютамен (KZT, USD, EUR) салымшының ағымдағы шотына капиталдандыру жүргізілгеннен кейін келесі күні аударылады. Мерзімі ұзартылған депозит бойынша сыйақы есептегенде алдыңғы мерзім үшін есептелген сыйақы есепке алынбайды, ал сыйақы салым мерзімі ұзартылған күнгі қолданыстағы ставкамен есептеледі.

Сақталу мерзімі (рұқсат етілген ұзартуларды қоса алғанда) аяқталған соң Интернет-салым шоты капиталдандыру жасалғаннан кейін келесі күні жабылады, ал салым сомасы сыйақысымен бірге салымшының қатысуынсыз оның ағымдағы шотына салым валютасымен аударылады.

 Депозит мерзімінен бұрын талап етілгенде оның талаптары бұзылған болып саналады және сыйақы есептелмейді. Клиенттің Интернет-шотына депозиттен ішінара ақша аударуға болмайды. Ақша сомасы тек тұтастай аударылады. Бұл жағдайда депозит талаптары бұзылған болып саналады, сыйақы есептелмейді, шот жабылады, ал депозит сомасының қалдығы салым валютасымен клиенттің Интернет-шотына аударылады.

 Интернет-депозиттердің барлығы да « Қазақстандық жеке тұлға салымдарына кепілдеме беру (сақтандыру) қоры» ЖАҚ-да сақтандырылған ( 16.02.2000 ж. № 3 куәлік).

 

айлары

KZT

USD

EUR

RR

3

5,5

3,5

3,5

-

6

6,0

4,0

4,0

-

9

8,5

4,5

4,5

-

12

9,0

5,0

5,0

-

 

 

Депозиттердің таңқаларлық жтістігі

  Қазақстан Халық банкі жеке тұлғалармен жұмыс істейтін ең ірі Қазақстандық банк атағын дәлелді. Халық банкі екінші деңгейдегі банктер арасында бірінші болып халық депозиттерінің көлемі бойынша бір миллиард АҚШ долларлық рекордтық көрсеткішке қол жеткізді.

2001 жылғы жаздың аяғында халық салымдарының көлемі бір миллиард доллардан асып, 1116,2 млн. АҚШ долларын құрады. Бүгінгі күні Халық банкінің 2006 жылғы 1 ақпандағы жағдай бойынша депозиттік қор көлемі 132,9 млрд теңгені (ҚР Ұлттық банкінің бағамы бойынша KZT/USD - 132,17) немесе 1,01 млрд АҚШ долларын құрады. 2006 жылғы 1 наурыздағы жағдай бойынша бұл көрсеткіш 138,3 млрд теңгеге немесе 1,06 млрд АҚШ долларына дейін ұлғайды.

2006 жылдың 1 наурызындағы жағдай бойынша мерзімді депозиттер 98,7 млрд теңгені (71,4%), ал талап ету депозиттері 39,6 млрд теңгені (28,6%) құрайды. Теңгелік депозиттер – 90,4 млрд сомаға (65,3%), шетел валютасындағы депозиттер – 47,9 млрд теңгеге (34,7%) ашылған.

 2006 жылғы 1 қаңтардағы жағдай бойынша мерзімді салымдардың жалпы сомасы 94,5 млрд теңге (707 млн АҚШ доллары) болды. 1 наурызда бұл көрсеткіш 98,7 млрд теңгеге (758 млн АҚШ долларына) дейін ұлғайып, осы жылдың 2 айының ішінде 4,4% өсімді көрсетті. Бүгінгі күнге дейін жұртшылыққа кеңінен танымал салымдар болып 42,4 млрд теңгені шоғырландырып отырған «Халықтық - стандарт» және 36,5 млрд теңгені шоғырландырған «Халықтық - жинақтаушы» депозиті болып отыр.

Мұндай өсімге қол жеткізудің себебі: талғампаз клиенттер қажеттіліктерін қанағаттандыратын банк өнімдері мен қызметтерін енгізу бойынша дұрыс жүргізіліп жатқан банк саясаты болып табылады. Сонымен қатар Банктің маңызды жұмыс бағыты - бар депозиттік өнімдерді модификациялау мен жаңа өнімдерді әзірлеу болып белгіленген. 2005 жылдың маусымында Банк «Халық депозиттері» деген ортақ атаумен жаңа депозиттік желіні іске қосты. Бұл желіде клиенттерге кеңінен таныс (зейнетақылық, жинақтаушы, ай сайынғы төлемдермен) депозиттермен қатар жаңадан «Халықтық әмбебап», «Халықтық - үш валюталы» депозит түрлері енгізілді.

         Жаңа жинақтаушы депозит

Халық банкі халыққа арнап барынша пайдалы инновациялық өнімдерді енгізу бағытына сәйкес сәуір айында жаңа мерзімді жинақтаушы депозит ашпақ. Бұл депозитті халық банкі төлем карточкасын ұстаушылар банкке жолықпай-ақ банкомат арқылы ашуына болады. Қаражатты депозитке карточка шотынан банкомат арқылы ақша аударымы қызметімен салуға болады. Біздің ойымызша бұл депозит Халық банкіндегі жалақы жобасына қатысушылар мен зейнетақыны карточкадан алатын зейнеткерлерге пайдалы болмақ. Бұндай клиенттер саны банкте 1,5 миллионнан асады.

2006 жылдың 1 наурызындағы жағдай бойынша талап ету депозиттер көлемі өткен жылмен салыстырғанда 30,8 млрд теңгеден 39,6 млрд теңгеге дейін өсті. Бұл көрсеткіш халықтың Банкке деген сенімділігі мен оның тұрақтылығына деген дәлелі бола алады.


Кішкентай карточканың үлкен мүмкіншіліктері

2004 жылдың 1 қарашасынан бастап Халық банкінің төлем карточкаларының иелері бір біріне банк банкоматтары арқылы ақша аударымдарын жүргізе алатын болды. Бұл қызмет түрі Card to card сауда белгісімен шықты. Ақша аударымдарын банкомат арқылы жүргізу жүйесі Қазақстан мен Орталық Азия территориясында бірінші рет қолданылып отыр.

 Біздің клиенттеріміз бұл жеңіл, ыңғайлы әрі қымбат емес қызметті жоғары бағалап, 2006 жылдың 1 наурызындағы жағдай бойынша 3 млрд теңгеден асатын сомаға ақша аударымдарын жүргізді. Халық банкі тағы бір рет еліміздің ең танымал әрі инновациялық банкі екенін дәлелдеді.

Қызмет идеясы жеңіл әрі түсінікті. Тәуліктің кез-келген уақытында карточка ұстаушылары банктің саны бес жүзден асатын банкоматтарынан ақша аударымдарын жүргізе алады. Ақша аударымын алатын адам Қазақстан қалаларында да және шетелде де болуы мүмкін.

 

 

 

Төлем карточкаларын қолдану саласындағы революция

Халық банкі қолданыстағы төлем карточкаларының саны бойынша көш басшы болып отыр. Банктің карточкалар саны бүгін 2,4 миллион дананы құрайды. Карточкалық шоттардағы қалдық жыл басымен салыстырғанда 11,8 млрд теңгеден 17 млрд теңгеге дейін ұлғайып, 44,1% өсімді көрсетті. Бұл карточкалардың әмбебап банк құралына айналуына байланысты. Қазір карточка арқылы қолма қол ақша алу мен сауда орындарында қызмет көрсетуден басқа ақша аударымдарын жүргізу, коммуналдық төлемдер жүргізу және мобильдік банкинг қызметін қолдануға болады.

 Қазақстан территориясында бірегей мобильдік телефон арқылы банк шотын басқару «Мобильдік банкинг» жүйесі VISA CEMEA - «Мобильдік банк - Verified by Visa» пилоттық жобасы шегінде әзірленген болатын. Бұл жүйе бес мемлекеттің коммерциялық банктерінде жұмыс істейді: Ресей, Қазақстан, Украина, Әзірбайжан және Беларусь.

 Халық банкі бұл салада да рекордшы: Банк Қазақстанда бірінші болып, сонымен қатар «Мобильдік банкинг» жүйесіне қосылған бес мемлекет банктерінің ішінде екінші болып (Ресейлік Жнақтаушы банкінен кейін) телефонды төлем құралына айналдырды. «Мобильдік телефонға төлем» атты жаңа қызметі арқылы мобильдік телефонға төлемді тікелей мобильдік телефон арқылы жүргізуге болады. Бұнда төлем сомасы карточкадан мобильдік оператордың шотына аударылады.

 Бүгін бұл жүйеде әр түрлі төлем карточкалары арқылы жүргізілетін қызметтерді қолданатын 43 мыңнан астам клиент тіркелген. VISA дайындаған бұл жобаға қатысатын ТМД-ның бес банкі ішінде Халық банкі клиент санының өсу қарқыны бойынша көш басшы болып отыр.

 

1.2.2 Серіктестіктер

 

Қазақстан Халық Банкі әр түрлі қаржылық және қоғамдық ұйымдармен іскерлік қарым-қатынастар орнатқан. Банк серіктестерінің қатарында шетелдік және қазақстандық ірі банктер, инвестициялық қорлар, заңдық компаниялар, рейтингтік агенттіктер, бизнес құрылымдары мен компаниялар бар.

Қазіргі уақытта 35 банкпен «НОСТРО» шоты бойынша корреспонденттік байланыс жасалынады, оның 23-і — алыс шет ел банктері, 6-ы — ТМД елдерінің банктері, банктерде барлығы 59 корршот ашылған, оның 49-ы — қатты валютамен, қалғаны жұмсақ валютамен жүргізіледі.
Корреспондент-банктердің «ЛОРО» шоттары — 89, оның 54-і қазақстандық теңгемен ашылған, қалған шоттар шетелдік валюталармен, оның ішінде рубльмен жүргізіледі.

 Халық банкінің серіктес корреспондент-банктерінің қатарында рейтингтері жоғары American Express Bank Ltd., CITIBANK N. A., Commerzbank AG, Credit Suisse First Boston, Deutsche Bank AG, Midland Bank plc, The Chase Manhattan Bank N.A., ООО "Дойче Банк Москва", т.б. бар.

Қазақстан Халық Банкінің Moody's, Standard Poor's, Thomson Bankwatch Bree сияқты халықаралық рейтинг агенттіктерімен қарым-қатынасы әріден келе жатыр және бұл ұзақ жылдар бойғы сеіктестіктік байланысқа негізделген. Жыл сайын аталған агенттіктер Банктің қаржылық жағдайын тексеріп, бұрын берілген рейтингтік көрсеткіштерін жаңартып отырады.

 Халықаралық қаржы рыногындағы банктің ертеден келе жатқан серіктестерінің бірі — Lehman Brothers компаниясы Халық банкінің евробондтарын шығаруға ат салысқа нәрі Банктің рейтингтік кеңесшісі функциясын атқарады;

 American Express Bank LTD — 1998 жылы Халық банкі үшін синдикаттық қарыз ұйымдастыруға қолқабыс жасады;

Credit Suisse First Boston банкі — Банкпен бірлесіп «Маңғыстаумұнайгаз» АҚ және «Қазақмыс» АҚ акцияларының мемлекеттік пакетінің бір бөлігін сатуға қатысты.

 Банк серіктестерінің қатарына сондай-ақ White Case, Bracewell Patterson, Baker McKenzie, Cameron McKenna, Stibbe Simont Monahan Duhot сияқты шетелдік компаниялар кіреді, Халық банкі олардың қызметін бірнеше мәрте пайдаланды.

 Банктің Қазақстандағы ірі серіктес компанияларының ішінде «Қазпочта» акционерлік қоғамы да бар. Қазақстан Республикасы Үкіметінің 1999 жылғы 20 желтоқсандағы қаулысына сәйкес аталған қоғам акцияларының пакеті 100 пайыз көлемінде түгелдей «Қазақстан Халық Банкі» АҚ-на берілген.

 

2 БАҒДАРЛАМАЛЫҚ ҚАМТАМАНЫ ЖОБАЛАУ

 

Ақпараттық жүйені функциялаудың ерекшелендіретін қасиеті болып үлкен көлемдегі мәліметтерді қысқартылған мерзімде өңдеу керектігі табылады. Сонымен қатар, бұл жағдайда негізгі ауырлық мәліметті ендіру, оқу, жазу операцияларына түседі. Бұл операциялық жүйе, БҚБЖ өндірісі мен басқа да мәліметті беру құралдарына өте қатаң талап қояды. Одан бөлек ақпараттың басым бөлігі бақылау, сараптама және болжам жасаудағы оперативті тәртіпте қол жететіндей жағдайда болу қажет. Сондықтан бағдарламалық құралдар мәліметтердің үлкен көлеміне (және әрдайым өсіп отыратын) өндірушілікті жоғалтпай, үнемі қол жететін жағдайда ұстап тұрулары қажет.

 

2.1   Жүйенің бағдарламалық қамтаманы (БҚ) ұйымдастыру

 

Бірінші тарауда келтірілген жүйе тапсырмаларына  қойылатын талаптар негізінде, «Депозит» жүйесін бағдарламалау құралдарының бірегей пакеті түрінде жобалау қажеттігі туындайды. Берілген пакет жүйенің тапсырмаларын шешу үшін  өте керек.

Пакет дегеніміз бұл – бірегей ақырғы мақсатты қамтамасыз етуде, біріккен жұмыс жасау үшін арналған, әр түрлі файлдардың сәйкестігі. «Депозит» жүйесінің жұмысшылары үшін арнайы жұмыс ортасын құру осындай мақсат болып табылады.

Пакеттің жасалуы бұл – пакет құрамына кіретін құралдардағы микрооперациялық функция жүйесі  бар ұйымдастырушы бағдарламаны құру.

Көрсетілген құралдар үш топқа бөлінеді.

  • стандарттық бағдарламалар;
  • типтік бағдарламалық құралдар;
  • арнайыландырылған бағдарламамен қамту.

Бұдан бөлек, пакет құрамына қосымша көмекші файлдары кіргізілген, көбінесе бағдарламалар кітапханаларына.

Стандарттық бағдарламалар деп қандай – да бір өзгерусіз және толық көлемде кез-келген бағдарламамен қамту құрамында жүзеге аса беретін бағдарламаларды айтамыз. Осындай бағдарламалар мысалы болып бағдарламалық қабаттар мен орталар: MS DOS, Windows табылады.

Типтік бағдарламалар – бұл стандарттық бағдарламалар, оларда жөнге салу элементтері жоқ. Мысалы, жұмысшы құралдарының санына үйренуді талап ететін жүйелік пакеттер.

Арнайы бағдарламалар – бұл берілген жүйенің талаптарынан құрылған және тек қана осы жүйеде жұмыс істеуге арналған  бағдарламалар. Бұндай бағдарламалардың рөлінде берілген жүйенің эксплуатациясы үшін құрылған мәліметтер базасы мен әр түрлі ұйымдастырушы бағдарламалар қызмет істей алады. «Депозит » жүйесінің құрылымдық жүйесі 2.1 суретте берілген.

 

2.2 Стандарттық белгілеудің бағдарламалық құралдары

 

Жүйенің операциялық желісі болып Windows 2000  Workstation таңдалынып алынды, берілген модель бөлектелген серверді білдіреді, ол рұқсат береді:

Windows 2000 – көптұтынушыларға арналған жүйе, сондықтан онда әр тұтынушының басқалардың бөгет болуынан қорғайтын құралдар қарастырылған. Одан басқа Windows 9х – тағы сияқты желіні емес Windows 2000 пароль жүйені қорғайды, ол жерде парольді ендіру орнына Esc – ті басса жетіп жатыр – жүйеге кіру ашық болады. Windows 2000  - та бір тұтынушының не істеп жатқаны басқаларынан жасырын болуы тиіс. Windows 2000 – да көп тұтынушылық тәртіп кез – келген обьектке қол жеткізу мүмкіндігіне негізделген жүзеге асырылған – шынайыларға да (файлдар, құрылымдар, каталогтар), сонымен қатар виртуальділерге де (процесстер, ағымдар). Әр тұтынушыда «рұқсат қағазы» бар, ал әр обьектте – «турникет», бар, ол арқылы тек нақты рұқсат қағаздары бар тұтынушылар ғана өте алады. Қосымшаның орнатылуы орындалатын файлы бар буманы құруды, кітапхананың жазылуын жүйелік бумаға реестрге тіркелуін қажет етеді деп алып көрейік. Қосымшаны құру үшін тұтынушы каталогқа кіретін рұқсат қағазына ие болу керек, жүйелік бумаға және реестрге, ал қосымшаны жіберу үшін – каталогпен жүйелік бумаға рұқсаты болуы керек. Бұл Windows 2000 жүйесінің қорғанысының негізгі принципі: әр түрлі іс - әрекеттегі обьект үшін әртүрлі құқық керек.

 Қортындысында элегантты схема туындайды: тұтынушы тек өзінің рұқсаты бар обьекттерді ғана көреді (тұтынушыға анықталған каталогты беріп, оның шектеулерінде ғана жұмыс істеуге болатын UNIX және NetWare – мен салыстырып көріңіз). Осы себепті әр түрлі тұтынушыларда әр түрлі жүйелер бір компьютерде болады.

Обьектке кірудің кез – келген операциясы аударушы қауіпсіздігінің монитормен бақыланады SRM (Securiti Reference Monitor) ол «рұқсат қағазының» «турникетке» сәйкестігін тексереді. Тұтынушы – есептік жазу мәліметтеріне негізделген жүйеге кірген соң – «рұқсат», маркер SAT (Securiy Access Token) алады. Обьект «турникет» - дескрипторын (SD Security Descriptor) – құру кезінде (NTFS SD қолдайды,  FAT/FAT32 – қолдамайды, сондықтан  NTFS файлдар мен каталогтар деңгейінде қорғауды қамтамасыз етеді, ал FAT/FAT32 жоқ). SAT та SD – да жүйе администраторлары – арнай құқығы бар тұтынушылармен өзгертіле алады.

Операциялық жүйені құру кезінде файлдармен  каталогтар деңгейінде қорғалуын қамтамасыз ету үшін FAT/FAT32 файлдық жүйесінің өзгерісі жүреді.Windows 2000  операциялық жүйесін Microsoft корпорациясы жасап шығарған, ол ақырғы тұтынушылар үшін жасалған және өзінің функцияларымен жұмыс жасау үшін ыңғайлы интуитивті интерфейс ұсынады, олар мыналар болуы мүмкін файлдарға рұхсат, процесстерді жіберу және басқару, ашық технологиялар мен желілік құралдарға рұқсат.             

Интерфейс тышқан түріндегі басқарушыға негізделген, ол тіпті тәжірибесі жоқ тұтынушының өзіне жүйемен жұмыс істетудің негізгі ұстанымдарын тез ұғып біліп алуға мүмкіндік береді. Бұл манипуляторларды басқарудың қарапайымдылығы мен операциялық жүйенің қандай да бір қызметіне рұқсат алу кезіндегі орындалатын іс әрекеттің интуитивті түсініктілігінен туындайды.

Берілген операциялық ортаның интерфейсі бағдарламалық кешеннің Windows нұсқасынан тәуелді болмауына мүмкіндік береді, өйткені бағдарламамен жұмыс істеу ережелері мен тәсілдері бір нұсқадан екіншісіне еш өзгеріссіз өтеді, тек аздаған қосымшалар және жаңалықтармен  тышқан түріндегі басқарушының қолданылуы, кешеннің қандай да бір қызметін оңай таңдап және шақыруға мүмкіндік береді, олардың үлкен көлемінде оны басқа ендіру құрылымдарының көмегімен жасау өте қиын болады.

Интерфейс графикалық терезелер негізінде құрылады. Терезені күйге келтірудің иілгіштігі программиске стандарттық бағыттар негізінде өзінің жеке терезелерін құруға мүмкіндік береді. Немесе толығымен терезенің түрі мен мінез құлқын  қайта анықтауға. Бұл кері шақыру қызметін қолдану құралымен және хабарландыру бойынша жұмыс механизмімен қамтамасыз етіледі. Бұл бірнеше тәуелсіз терезенің әр түрлі ақпаратты құрылымына мүмкіндік береді, және терезенің қозғалу кезінде немесе мөлшерінің өзгеруі кезінде терезенің мазмұнын қайта суреттеу қажет деп ойлау қажет емес. Әр терезеге хабарландырудың өңдеу процедурасы  тіркеледі. Жүйе ақпаратты өзгерту керек екенін кері шақыру процедурасы  арқылы өзі бағдарламаға хабарлайды, және қайта суреттеу керек етілетін аймақты береді.

Бағдарламалық қамту кешенінің толық функционалдығы үшін стандарттық құралдардан бөлек, оны жеке компьютерге орнату кезінде операциялық жүйе орнатқан, қосымша    Microsoft және NetWare желілерінің қолдануын орнату керек.

Windows 2000  Workstation жүйесіндегі функциялармен жұмыс істеудің қарапайымдылығы бағдарлама кешенінің өнімді және толық функционалды жұмыс істеуін қамтамасыз ететін типтік бағдарламаны оңай орнатуға мүмкіндік береді. Оны орнату «Бағдарламаны орнату және жою» бағдарламасын қолдану арқылы қамтамасыз етіледі, ол тіркелген бағдарламалардың тізімін береді және жаңа бағдарламалар орнатуға мүмкіндік береді, Windows жаңа компоненттерін, ертеректе орнатылған бағдарламаларды жояды.

 

2.3 Типтік бағдарламалық құралдар

 

Дипломдық жобада жасалынып жатқан жүйенің қалыпты қызмет жасау үшін Borland Database Engine (BDE) бағдарламалық өнімі қолданылады, ол мәліметтер базасына жеңіл әрі қарапайым түрде қол жеткізуді қамтамасыз етеді. BDE механизімін қолдану кезінде оның жасаушы бағдарламасы физикалық деңгейде мәліметтер базасымен қалай жұмыс істейді деп ойланбаса да болады: локальды; серверлік файлда; немесе серверлік архитектурада.

Мәліметтер базасын қолданатын қосымшаларды әдетте бағдарламалық архитектураға жатқызу қабылданған.

Локальдық архитектура, бағдарлама және мәліметтер базасы бір компьютерде орналасқан. Мұндай архитектурада көбіне үстелдік қосымшалар жұмыс істейді.

Файл серверлік анықтама – мәліметтер базасы қуатты оқшауландырылған компьютерде орналасқан (серверде), ал жеке компьтерлер оған локальды желі бойынша қосылған. Бұл компьютерлерде базаға желі бойынша жүгінетін клиенттік бағдарламалар орнатылған. Бұл архитектураның ерекше қасиеті онда бір уақытта бірнеше тұтынушы бір мәлімет базасымен жұмыс жасай алады. Бұл жолдың кемшілігі – желі бойынша берілетін ақпараттардың үлкен көлемі. Барлық өңдеулер мәліметтер базасының көшірмесі қалыптасатын клиенттік орындарда өтеді. Бұл базамен жұмыс істеу кезінде үлкен үзілістер мен тұтынушылардың көлемін азайтуға әкеледі. Бұл үзілістер нақты таблица деңгейінде бір уақытта ену мүмкін еместігінен туындайды. Бағдарлама бір клиенттік орында таблицамен жұмыс істеуді бітірмейінше (мысалы жазбалардың модификациясын орындамайынша) басқа бағдарламалар бұл кестені қолдана алмайды. Бұл кесте деңгейіндегі блоктау  деп аталады, және оның құрамында шатасудың болмауын қамтамасыз етеді.

Клиент серверлік архитектурасы – серверде тек қана мәліметтер базасы сақталмайды және де БҚБЖ бағдарламасы жұмыс істейді, ол тұтынушылардың сұраулары мен оларға қайтарылатын жазбалар топтамаларын өңдейді. Және де бұл жерде тұтынушылар бағдарламалары тікелей мәліметтер базаларымен жұмыс істемейді, ал операцияларды орындайтын  БҚБЖ – ға жүгінеді. Бұл жерде жұмыстың басым бөлігі серверде жүргізілетіндіктен клиенттік орындағы ауырлық жойылады. БҚБЖ автоматты түрде мәліметтер базасының толықтығы мен сақталуын қадағалайды, және де пароль қызметінің көмегімен ақпараттарға енуді бақылайды. Клиент серверлік БҚБЖ жазу деңгейіндегі немесе бөлек алаңның блокталуына рұқсат береді. Бұл таблицамен кез – келген уақытта тұтынушылардың барлығы қолдана алатынын білдіреді, бірақ нақты бір жазбаның өзгертілу функциясына немесе оның алаңының беруіне рұқсат тек оның біреуі үшін ғана беріледі. Бұл архитектураның негізгі кемшілігі – онша жоғары сенімділік жоқ.

Әртүрлі өндірушілердің БҚБЖ қолдануға өтер кезде программистке өзінің бағдарламасының бастапқы кодын өзгерту қажет емес. Тек BDE – нің күйін келтіруде өзгеріс енгізу керек.

BDE мәліметтер базасы мен клиенттік бағдарлама арасында бағдарламалық қабаттаманы білдіргендіктен осындай ыңғайлылыққа қол жеткіземіз. Қосымшадан сұрау BDE механизімінің ішіне беріледі, ол БҚБЖ – мен тікелей жұмыс істеу үшін бағдарламаның арнайыландырылған жүйелерін  қолданады (драйверлер).

Және де БҚБЖ клиент серверлік жұмыстары үшін драйверлер бар (MS SQL Server,InterBase, Oracle). Бұл драйверлер қарапайым құрылған. Олар тек қана BDE командасына сұрауларды БҚБЖ – ға жіберіп және кері қарай олардың  орындалу қортындыларын алады. Мәліметтерді өңдеу жұмыстарының барлығын БҚБЖ орындайды.       

BDE құрамына драйвердің екі тобы кіреді.

Драйвердің бірінші тобы файл серверлік БҚБЖ  dBASE, Paradox, FoxPro, Access және тақырыптық түрдегі мәліметтерге арналған.

Екінші топтама клиент серверлік БҚБЖ InterBase, IBM DB2, Informix, ORACLE, Sybase  және  Microsoft SQL Server бағытталған. Бұл топтама SQL Links деп аталады.

   BDE қабаттамасының жүзеге асуы бағдарламаны нақты БҚБЖ байлап қоюға мүмкіндік бермейді. Егер бағдарламаны қолданушылардың санын көбейту талап етілсе және мысалы үшін файл серверлік БҚБЖ  dBase – ден  анағұрлым қуатты  InterBase – ге өту керек болса, бастапқы тақырыпты өзгертпей ақ бірнеше күйге келтіруді өзгерту жетіп жатыр.

   BDE қосымшаның әртүрлі деңгейлерін басқа қалған деңгейлеріне әсер етпей  өзгертуге мүмкіндік береді. Яғни, физикалық деңгейді өзгерту кезінде (мысалы Paradox for Windows таблица форматын  InterBase немесе Informix, форматына жүйенің кеңейтілуімен игіліктігін жоғарылату үшін өткізген кезде) қазіргі жұмыс істеп жатқан қосымшаларды қайта жабдықтау қажет емес (қосымша деңгейін). Мұндай тәуелсіздік универсалды, кеңейтуге болатын және тәуелсіз бағдарламалар кешенін құруға мүмкіндік береді. Және де жалпы мәліметтер базасының басқа тұтынушылары туралы ештеңе білмейді.

Бүркеншік ат түсінігінің қолданылуы мәліметтер базасына  рұқсатты мөлдір қылуға мүмкіндік береді және жүйе ішіндегі мәліметтер файлының жағдайын өзгерту мүмкіндігін  немесе олардың қолданатын қосымшалардың қандай да бір рұқсатынсыз есептеуіш жүйесі. Бүркеніш ат структурасы бұл күйге келтіру туралы мәліметтерді сақтауға арналған ақпаратты алаңдарды пайдалану. Оларға мәліметтер базасының  файлдарының жағдайлары туралы ақпараттар, оларға енудің қолданыстағы тәсілдері және мәліметтерді көрсетуге арналған мәліметтер кіреді.

 

2.4 Арнайы мамандандырылған бағдарламалық қамтама

 

Дипломдық жобада мамандандырылған бағдарламалық қамту ретінде қолданбалы бағдарламалар пакеті қаралады, оның құрамында мәліметтер базасына қажетті бастаушы файлдар, көмек беруші файлдар, қолдау көрсетудің бағдарламалық файлдары, индекстік файлдар бар.

Құрылып жатқан мәліметтер базасы анықталған ережелер бойынша ұйымдастырылған мәліметтерге сай болу керек, олар жазбаның жалпы ұстанымын, сақталуын, мәліметтерді басқару мен олардың өңделуін қарастыруы керек. Олар кеңейтілетін мәліметтер базасының файлдары мен индекстік файлдар кешенін білдіруі тиіс. Мәліметтер базасының  файлдарына жүгіну үшін мәліметтер базасының басқару жүйесінің құралдары қолданылу керек.

Жасалып жатқан мамандандырылған бағдарламалық қамту келесі сапаларға сай келуі қажет:

  • бағдарламаны сіңіру мен онымен жұмыс істеудің қарапайымдығы:
  • ЭЕМ мен тұтынушының ыңғайлы диалогын ұйымдастыру;
  • Экрандық дизайнның сапасы;
  • Келесі нұсқалармен өңдеулермен толықтырылу және модификациялауға ашық болу;
  • Қорғау жүйесін парольдік қорғаумен қамтамасыз ету;

 

2.5 Техникалық және аппараттық құралдар

 

          Заманауи автоматтандырылған жүйелер мынадай аппаратты құралдарға ие болуы тиіс:

  • есептегіш техника құралдары;
  • ЖЕЖ қондырғылары;
  • Перифериндік қондырғылар;
  • Телекомуникация және байланыс құралдары.

ЭЕМ ең алдымен мәліметтерді өңдеуге және есептеу тапсырмаларын шешу үшін қолданылады. Қазіргі заман жағдайында ЭЕМ машиналары ақпараттарды өңдеуде кеңінен қолданылады.

Қолданбалы өнім шығаруды қамтамасыз ету үшін жұмыс станциясының келесі мінездемелері ұсынылады:

  • 128 МВ кем емес оперативті есте сақтау;
  • 10Гб кем емес винчестер көлемі;
  • SVGA видеодисплейінің адаптері және одан жақсы;
  • 300МГц кем емес тактілік жиілік;
  • Ethernet желілік адаптері;

 

Телекомуникация жүйелерінің дамуы әсіресе жергілікті есептеуіш желі технологияларының дамуы, ақпараттарды өңдейтін барлық техникалық құралдарды біріккен ішкі фирмалық ақпараттық желіге біріктіруге мүмкіндік береді. Ең әсерлі ақпаратты жүйе болып желілік технологияларды қолдануға негізделген жүйе саналады, ол шынайы уақыт тәртібінде мәліметтерді бірнеше тұтынушылардың бірдей қолдануын қамтамасыз етеді.

 Өнеркәсіптің локальды жүйе ұйымдастыру үшін сай келетін желілік құрал – жабдықтарды таңдап, желінің архитектурасын жобалап, жұмысшы топтарын ұйымдастырып және желіні басқару құралдарын анықтау қажет.

  Берілетін ақпараттың көлемі сарапталды, желіде жұмыс істейтін тұтынушылардың саны және желіні ұйымдастырудың  Ethernet 100 Mbit/s техналогиясын қолдану туралы шешім қабылдады.

Банктің АЖ локальды есептеуші желілері жұлдыз тәрізді топология негізінде құрастырылған. Бұл топологияда берілетін ақпараттың сенімділігі жоғарылайды.

Жұмысшы станциялар Hubom мен (кондиционермен) (UTP түріндегі) кабелмен жалғасады, ол RJ – 45 түріндегі разьемдері бар қосуға арналған. Екі бөлік арасындағы кабельдің ұзындығы 100м аспауы керек.

Hubom олардың саны мен салынуы шектеусіз бола алады. Желіде ақпараттарды беру құралы ретінде экрандалмаған 100Мбит/с жылдамдығы мен жұмыс істеу стандарттарын қанағаттандыратын жұпталған кабельді пайдалануға болады.

Желіде жұмысшы станцияларының сұрауларына қызмет көрсететін бір сервердің жұмыс істеуі жоспарланған. Жобаланып отырған желідегі сервер келесі қызметтерді орындау керек:

  1. Резервті сервер

2. Бөлектелген рұқсат сервері

3. Файлдық сервер

4. Клиент - сервер

5. SQL – сервер

 

Перифериіндік қондырғыларға мыналар жатады

  • А3 форматындағы матрицалық принтер, құжаттарды жеделдетіп басу мүмкіндігімен (Epson – LQ 1170);
  • үзіліссіз азықтандыру блогы (UPS - 1000);
  • сканер (Acer - 100);

Ақпараттарды бос офиске жіберу үшін мәліметтерді қабылдау / жіберу – модем қондырғысы қажет. Мына хаттамалардан V.32,V.42bis, V90, Flex56 тұратын Curier – 33600 болғаны жақсы.

 

 

 

 

 

 

 

3 БАҒДАРЛАМАЛЫҚ ҚАМТАМАНЫ ЖҮЗЕГЕ АСЫРУ

 

3.1 Шешім алгоритмін жасау

 

С++ Builder ортасында құрастырылған БҚБЖ барлық қосымшалары бірқатар мәліметтер базасының тұтынушылық интерфейсінің  компоненттеріне негізделген, олар арнайы қосымшалардың жасалуына қажетті қолданылуы таң қаларлықтай оңай құралдарды ұсынады. Жасау барысындағы орасан зор уақыт көлемі таңдап алынған компоненттердің өзіндік визуалын орнатуға жұмсалады. Банктің «Депозит» қосымша жүйесінің тапсырмаларына жүгіну алгоритміне арқа сүйейтін сәтті жобаланған қосымша, әрқашан тұтынушыларға мәліметтерді редактілеуге және көрудің қарапайымдылығын қамтамасыз етеді, мәліметтер моделі қолданылатын структураның күрделілігіне қарамайды. Берілген тарау БҚБЖ қосымшаларының қалыбы өзара қарым – қатынас архитектурасы сияқты типтік күрделі жүйеде клиент сервер қарым – қатынасының С++ Builder интегралданған ортасында тез және аз күш жұмсау арқылы құруға болатынын анық көрсетеді.

Компоненттерге көпсалалы әсер етуі: олардың редакциялық жағдайы стандартық тәсілмен қамтамасыз етіледі, ал өзіндік белгілердің орнатылуы қосымшаның жұмысы кезінде жүзеге аса алады. Осы себепті алғашындағы қарапайым қосымша жұмыс жасау барысында біртіндеп күрделенеді, ең соңында өте кәсіби бағдарламалық бұйым болады.

         С++ Builder қосымшалардың мәліметке рұқсат алуын жасаушыны толығымен нақты мәліметтер базасында қызмет көрсетуін алып тастау арқылы жүзеге асырады.

         Мәліметтер базасының визуальді компоненттерінің жұмысын қамтамасыз ететін негізгі механизм BDE (Borland Database Engine) қосымша мен мәліметтер базасының арасындағы интерфейс ретінде іс әрекет жасайды. BDE жүйелік DLL файлдары топтамасы түрінде жүзеге асырылған. Компоненттік обьекттердің  BDE мен өзара қарым-қатынасы нақты мәліметтер базасын мамандандырмайды және иерархияның төменгі деңгейіндегі ақпарат алмасуының жүзеге асуына тәуелді емес. BDE өз кезегінде  драйверлерге жүгінеді, берілген тиіптегі мәліметтер базасына маманданған, сіздің қосымшаңызға сұралған дәлдік мәліметтерді қайтара отырып. BDE Microsoft фирмасы шығарған драйверлердің бақылаушысының ODBC (Open Database Connectivity) рөлін ойнайды, қосымшаны мәліметтер базасымен қарым – қатынам жасаудың төменгі деңгейінен қорғай отырып және кэш есте сақтаудың есебінен байланыстың жалпы өнімділігін ұлғайту. Сіз BDE – ні қолдана отырып өзіңіздің компьютеріңіздің барлық локальды стандарттық мәліметтер базаларына рұқсат ала аласыз, ODBC мәліметтерінің  басталуына және мәліметтер базасының желілік байланыс клиент/сервер архитектура серверіне де.

 

3.1.1 Мәліметтердің структуралары мен модульдерінің жұмысының сипаттамасы

 

BDE унифицирленген технологиясы Borland корпорациясы шығарған барлық өнімдерде қолданылады: C++ Builder, Borland C++, Delphi, IntraBuilder және Jbuilder. Мәліметтер базасының мазмұнына енуге рұқсат алу үшін қосымшаға тек қана оның бүркеншік атының идентификаторын (alias) білуі қажет.

3.2 сурет сіздің қосымшаңыздың мәліметтер базасымен өзара қарым-қатынасының иерархиялық структурасын көрсетеді.

Мәліметтер базасының компоненттері мен қосымша.

Сіздің қосымшаңыздың формасына мәліметтер базасының компаненттерін қосу кезінде BDE мен қосылу автоматты түрде жүзеге асады – ешқандай бағдарламалау қажет етілмейді. Қосылудың визуальді процессі толығымен сіздің бақылауыңызда болады. Бағдарламаның орындалуы кезінде BDE қажетті сұрауларды жасап және әр қолданылатын компоненттер өздігімен  берілген тапсырмалардың мәліметтерін алады.

 

 

 

 

 

 

 

 

 

 

 

 

 

Сурет 3.2 – мәліметтер қорымен қосымшалардың өзара қарым – қатынасының структурасы

 

 

 

 

BDE конфигурациясы.

BDECFG32.EXE конфигурациясының утилитін жіберу кезінде парақтар қатарында блокнот түрінде безендірілген терезе ашылады, терезенің төменгі бөлігіндегі сай келетін қаптарлар таңдап алған (3.3 сурет). Әр парақ үшін Help нүктесін басу арқылы анықтама қызметінен мәліметтер алуға болады. Утилиттің алғашқы жіберілуінде үндемеу туралы конфигурацияның параметрінің белгілірі орнатылады, ал өзгерістер мәліметтер базасының келесі жіберілімінде әсер береді.

 

3.1.2 Aliases парағы

 

STANDART, SQL немесе ODCE түріндегі мәліметтер базаларының бүркеншік аттарын модификациялау және өшіру операцияларын орындау үшін қолданылады. Alias Names барлық бүркеншік атардысанап шығады. Кейінірек сіз бүркеншек атты Database Names өзіндігіндегі керекті мәліметтер базасының атын көрсету. TTable таблицасының компанентіне немесе TQuery сұрауына қолданасыз. Parameters графасы негізінде сервердің типінен және керекті таблицалардан тұратын каталогқа апаратын толық жолдан тұрады. Description графасында алынған параметрдің орны қысқаша сипатталады.

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

Сурет 3.3 – BDE конфигурациясының Drivers утилитінің негізгі беті

 

 

New Alias нүктесі қолда бар тізімге таңдалған типтік жаңа бүркеншік атының қосылу диалогын ашады (3.4 сурет). Delete Alias нүктесі таңдалынып алынған бүркеншік атты сызуды шешеді.

 

 

 

Сурет 3.4 – Бүркеншік атты қосу диалогы

 

С++ Builder визуальді ортасында жұмыс жағдайындағы іс басқаша қойылған, олардың компоненттері «тірі мәліметтердің» түсуін қолдайды. Сіз формаға рұқсат пен басқарудың компаненттерін орналастырып, олардың мәліметтер базасы мен байланысқа жауап беретін қасиеттерін анықтаған кезде, сізге оларды қалай көрсе дәл сондай түрде мәліметтер ұсынылады. С++ Builder жасаудың үш кезеңін біріккен өндіруші процесске айналдырады. Қортындысында тапсырыс берушінің ағымдағы талаптарын базалық БҚБЖ құруға мүмкіндік туады, және де олар соншалықты иілгіш, оларды тұтынушылардың жаңа сұрауларына  тез үйрету үшін.

Қосымшаның формасы жобалау кезеңі мен  бағдарламаның жұмыс істеу уақытында бірдей болады. Қосымша мен мәліметтер базасының өзара ақпараттық қарым – қатынасы 3.5 суретте көрсетілген, ол құжаттарының тығыз қарым қатынасын көрсетеді. Сіз мәліметтер базаларының экрандық ұсынылуының қажетті коррекциясымен оларға сұрауды тіпті бағдарламаны компиляциясыз ақ жасай аласыз. Сұрауларды интерактивті сынай алу қасиеті БҚБЖ жасау процессін ең жоғарғы сапалы деңгейге қояды.

 

 

 

3.1.3 Визуальді компоненттің қолданылуы

 

Интегралданған С++ Builder ортасының ең маңызды жетістігі болып БҚБЖ – арнайыландырылған мәліметтер базасының компонент қосымшаларын тез визуальді жасауға арналған ыңғайлы құралдарының болуы табылады. Басқарудың бөлінетін элементтерінен VBX айырмашылығы, С++ Builder компоненттерді біріккен орындалатын бағдарламаға топтастырады, ол оның сенімділігі мен тез әсер етуін жоғарылатады. Тек өте тәжірибелі программистер ғана осындай сапа және иілгіш деңгейдегі бағдарламаны жасай алады, Windowd API функцияларына сәйкес келетін тікелей жолдауларды ғана қолдана отырып. Бұндай көзқарасты тіпті қарапайым қосымша да көлемі бойынша өлшеусіз кодты жазуды талап етеді.

С++ Builder жасаушыларға Визуальді Компонент Кітапханасынан мәліметтер базасының интерфейстік элементтерін келесі компонент палитрасының екі қабатында ұсынады:

Мәліметтерді басқару компоненттері Data Control   (TDBEdit редактілеу аймағы немесе TDBGrid торы сияқтылар) қосымша формасында жазулардың көрінуі мен редактрленуін қамтамасыз етеді.

Data Access  мәліметтеріне рұқсат компоненттері (TTable таблицасы немесе TQuery сұраулары сияқты) мәліметтер базасының файлнда сақталатын фактілік мәліметтерді адрестейді, ал TData Source бастауының компоненті аралық байланыстың интерфейсі ретінде қызмет етеді.

Мәліметтер базасымен жұмыс істеу үшін басқару мен рұқсаттың өзіндік негізгі белгілерін дұрыс орналастырып және сараптама жасау қажет.

С++ Builder мәліметтер базасының қосымшасын жасауда «үш сатылы» модельді ұсынады. Бұл модельді басқару компоненті мен байланысқан, ал ол өз кезегінде таблицаның немесе сұраудың фактілік мәліметтерін BDE механизмі арқылы алады. 3.6 сурет компоненттердің өзара қарым – қатынасынан мысал көрсетеді.

 

 

 

 

 

 

 

 

Сурет 3.6 – Басқару және рұқсат компоненттерінің мәліметтер қорының құрамына байланысы

 

TDataSource компонентінің  орта буыны форманың жобалануы кезінде фактілік таблицаны өзгертуге рұқсат береді – қосымшаның қайта бағдарламалануы болмаса да барлық көрсетілген элементтер бастамаларымен жалғасқан. Одан бөлек бастаулардың компоненттері өздеріне жұп таблицалар арасындағы мәліметтер алмасуын masterdetail ұстанымы бойынша синхронизациялау тапсырмаларын алған.

Жоғарыда айтылып өткендей TDataSource көрінбейтін компонентасы бірқатар мәліметтер топтамасы (таблица,сұрау) арасындағы интерфейс ретінде іс әрекет жасайды. Бір жағынан мәліметтердің барлық топтамалары бір қатар бастаулармен ассоциялануы керек. Ал басқа жағынан басқарудың әр компонентасы бастамамен ассоцияланған болу керек, көрсету мен редактілеу үшін мәліметтер алу үшін. Әрбір мәліметтер топтамасының компонентасына кем дегенде бір бастау компонентасы сай келуі тиіс. Ары қарай біз басқарудың барлық компоненттері DataSource қасиетіне ие екенін көреміз, оның мағынасы үш сатылы байланысты аяқтайды.

Басқару компонентінің екі формада жұмыс істеуін жұптастыру үшін, TDataSet ерекшелігін мәліметтер топтамасының біреуіне орналастыру жеткілікті:

void_fastcfll TForm2::FormCreate(TObgect*Sender)

{

DataSource-> Dataset=Form->Tablel;

Name берілген компаоненттің мазмұндық атын анықтайды, сіздің қосымшаңыздағы мәліметтердің басқа бастауларынан ерекшелендіретін. Бастауға онымен ассоцияландырылған мәліметтер топтамасының атын берген дұрысырақ болады. Мысалы үшін, егер сіз DataSet құрылымы берген клиенттер таблицасымен «Clients» жұмыс жасайын деп жатсаңыз, онда Name құрылымының белгісі болып «ClientsSource» немесе соған ұқсас ат болсын.

TdataSource компанентасымен үш оқиға байланысты:

OnDdlciC/iange курсор жаңа жазуға көшкенде пайда болады және басқару компанентінің тәртібін «қолмен» синхронизациялау қажет болғанда қолданылады.

OnStciteChcinse мәліметтер топтамасы State құрылымын өзгерткенде туындайды. Мысалы, оқиғаны жасаушы MyTable, таблицасының өзгеруін форма бойынша сай келетін тақырыптық белгілерді шығара отырып бақылайды.

 

void_fastcall TFormI::StateChange(TObject*Sender)

{

 

char S[20];

 

switch (MyTable->State) {

 

case dslnactive:

strcpy(S, “Таблица белсенді емес ”);

break;

case dsBrowse:

strcpy(S, “Көру жүріп жатыр”);

break;

case dsEdit: 

          strcpy(S, “Редактірлендіру жүріп жатыр”);

break;

case dslnsert:

  strcpy(S, “Жазудың қойылуы жүріп жатыр”);

  break;

} // Тақырыптық жолдың қортындысы S

}

 

OnUpdateData ағымдағы жазудың жаңаруы алдында пайда болады және қарапайым компаненттердің бір қатар мәліметтер топтамасының өзгеруімен мінезінің синхронизациялануы қажет болғанда пайдаланылады.

 

Кестелер

Кестенің компанентасы қалыптық және иілгіш компаненттік классты білдіреді. TTable мәліметтер базасының таблицасымен тікелей байланыста BDE құрамының көмгімен орнатады, бұл таблицаның барлық жазбалары немесе бағаналары қосымша үшін – бөлек күйінде де, анықталған адрес интервалдарының ішінде де қол жететін жағдайда болады. 3.7 суреті Обьектілер Инспекторының терезесіндегі таблицаның компоненттік қасиетін көрсетеді:

 

wpe4.jpg (16133 bytes)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сурет 3.7 – Обектілер инспекторы

 

TableName мәліметтер базасына адрестелген балық таблицалардың ағымдағы тізімінен таблицалардың фактілік атын таңдауға мүмкіндік береді.

Exclusive сіз оны қолданып жатқан таблицаға басқа қосымшалардың оған жүгінуіне рұқсат береді немесе тиым салады. False белгісі үндемеу туралы рұқсатқа тиым салады.

IndexFiles таблица үшін индекстік таңдау диалогын ашады.

IndexName мәліметтердің сұрыпталуының көрсетілуі ережесін береді, бірінші кілті бойынша тәртіптелуі (primary key order).

Filter фильтрацияның критерийін бекітуде мүмкіндік бреді, таблица жазбасы көптігі адрестелетінге сай келетін.

ReadOnly бағдарламаның орындалу процесін рұқсат беретін ережелерді басқарады. False белгісі үндемеу жазуына рұқсат береді.

MasterFields және  MasterSource master-detail ұстанымы бойынша екі таблица байланысын құруға қатысады (бастаушы және еруші). Келесі процедура BCDEMOS көрсетілімдік мәліметтер базасы үшін қарапайым формалардың құрылыс процесін иллюстрациялайды, онда тұтынушы барлық  ORDERS таблицасының көрінісі бар CUSTOMER тапсырыс берушілердің таблица жазбаларын айналдырып көре алады, оларды ағымдағы тапсырыс берушілер жасаған: кестеге арналған текстік файл.

IndexName мәліметтердің сұрыпталуының көрсетілуі ережесін береді, бірінші кілті бойынша тәртіптелуі (primary key order).

Filter фильтрацияның критерийін бекітуде мүмкіндік бреді, таблица жазбасы көптігі адрестелетінге сай келетін.

ReadOnly бағдарламаның орындалу процесін рұқсат беретін ережелерді басқарады. False белгісі үндемеу жазуына рұқсат береді.

MasterFields және  MasterSource master-detail ұстанымы бойынша екі таблица байланысын құруға қатысады (бастаушы және еруші). Келесі процедура BCDEMOS көрсетілімдік мәліметтер базасы үшін қарапайым формалардың құрылыс процесін иллюстрациялайды, онда тұтынушы барлық  ORDERS таблицасының көрінісі бар CUSTOMER тапсырыс берушілердің таблица жазбаларын айналдырып көре алады, оларды ағымдағы тапсырыс берушілер жасаған:

1. Жаңа мәліметтер модулін DataModule2

контейнерін ашу үшін бас менюдің  

File New Data Module бұйрығын орындаңыз.

 Бұл модулге ТTable және TDataSource

мәліметтер базасына рұқсат компанентінің

екі жұбын орналастырыңыз (3.8 сурет).

2. Tablet таблицасының бастаушы обьектісінің өзіндік қасиеттерін анықтаңыз.

DatabaseName = BCDEMOS TableName CUSTOMER.DB Name = CustomerTable

 

wpe5.jpg (4888 bytes)

  Сурет 3.8 – Мәліметтер қоры

3. Table2 таблица жетекшілік ететін обьекттің өзіндік қасиетін анықтаңыз.

DatabaseName = BCDEMOS TableName ORDERS.DB Name = OrdersTable.

4. DataSourcel бастауының обьектісінің өзіндік қасиетін анықтаңыз:

DataSet = CustomerTableName =CustomerSource.

5. DataSource2 бастауының обьектісінің өзіндік қасиетін анықтаңыз:

DataSet = OrdersTableName =OrdersSource.

6. Формаға TDBGridI торын басқаруды жұп компанентін орналастырыңыз.

7. Берілген форма жасалған мәліметтер модулін қолдануы керектігін көрсету үшін File   Include Unit Hdr, бұйрығын орындаңыз.

8. Бірінші DBGridI торының обьектісінің қаситтерін анықтаңыз.

DataSource =  DataModule2-> CustomerSource және екінші DBGridI2 торының обьектісінің өзіндік қасиеті.

DataSource =  DataModule2-> OrdersSource.

9. OrdersTable мәліметтер модулінің таблицасын белсендіріңдер және өзіндік қасиеттерін анықтаңдар.

MasterSource= CustomerSource, бастаушы Customer таблицасын еруші ORDERS таблицасымен байланыстыру үшін.

10. MasterFields өзіндегі белгісінің графасын тышқанмен екі рет басыңыз және алаңдарды байланыстырушы дизайнердің ашылған терезесінде:

- Available Indexes тізімінен шығатын тапсырыс берушінің CustNo номерін таңдаңыз;

- Detail Fields  және MasterFields тізімдеріне  CustNo беріңіз;

- Тізімге Joined Fields тең CustNo-> CustNo; байланысын қосу үшін Add нүктесін басыңыз;

- Жасалған таңдауды мақұлдап Ok нүктесін басыңыз.

11.  CustomerTabl  және OrdersTable  таблицасы үшін Active=true  қондырғысын орнатыңыз, тірі мәліметтерді формадағы торларында тез көрсету үшін.

12. Тексеріңіз және қосымшаның жіберілуі байланысқан таблицаның жұмысын көрсетіңіз: таблицаның жазбасын айналдырғанда сіз тек тапсырысқа қатысты жазбаларды көресіз.

 

Сұраныстар

Кестенің компоненттері толық құқықты, қолдануда жеңіл және иілгеш болып табылады, БҚБЖ қосымшаларға жеткілікті рұқсат компаненттерін қолдануда. TТable жалғыз таблицаның барлық қатарлаы мен бағаналарын қайтарады, егер рұқсат интервалдары мен фильтрдің орнатылуымен шектелмесе. Сұрау компоненті жасаушыларға баламалы мүмкіндіктер береді. TQuery бірнеше таблицаларға бір уақытта енуге мүкіндік береді және кейбір жазбалар көптігін адрестеуге мүмкіндігі бар. Қайтарылатын мәлімттер топтамасын (result set) түрі сұраудың ормасына тәуелді, ал сұраудың барлық параметірі жобалаудың барысында статистикалық немесе динамикалық бола алады, онда параметрлер бағдарламаның орындалу кезінде анықталады.

Көрсетілген іс әрекеттер структураланған сұраулардың стандартталған тілінде жазылып және жүзеге асады, SQL (Structured Query Language), ол релияциондық мәліметтер базасының жойылған серверлерінің басым бөлігімен қабылданған,  Sybase, Oracle, IterBase және SQL Server сияқтылар. SQL – де мәліметтер базасына жасалатын анағұрлым сұрауларды фомулаландыруға болады. C++Builder сұрауларды серверге береді, ол оларды интерпретациялайды және олардың нәтижелерін сіздің қосымшаңызға қайтарады.

3.9 сурет Обьект инспекторының терезесіндегі сұрау компанентінің өзіндік қасиетін көрсетеді.

 

wpe6.jpg (14209 bytes)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сурет 3.9  -  Өзіндік сұрау

 

Active  жобалау кезіндегі сұраулармен қайтарылған «тірі мәліметтерді» қарап шығуға тыйым салады немесе рұқсат береді. False белгісі үндемеу туралы бойынша бекітіледі.

Database Name  мәліметтер базасының бүркеніш атын ұстап тұрады немесе сұрауды шешуге қажетті каталогқа баратын толық жолынан тұрады.

RequestLive BDE ге «тірі» нәтижелі топтаманы қайтару әрекетін жасауға рұқсат береді немесе тыйым салады. False белгісі сұраудың қортындысын модификациялауға болмайтын көрсетеді. Trueбелгісі  SELECT бұйрығының синтаксисі сұралған мәліметтердің талаптарымен келісетін болса нәтижеленген топтаманы қайтаруға кепілдік береді.

SQL  қатарлық тізім редакторы арқасындағы SQL бұйрығын ендіу үшін қолданылады, ол осы белгісінің графасынын шыққанды екі рет басудан кейін ашылады. Мәліметтер базасының локальдіы және жойылған серверлері SQL- дің төрт бұйрығының орындалуын қамтамасыз етеді: SELECT – таблицада бар мәліметтерді таңдау үшін;  INSERT – таблицаға жаңа мәліметтерді қосу үшін; UPDATE – мәліметтер таблиасын модификацилау үшін; DELETE – мәліметтерді таблицадан жою үшін. Сұраудың өңдеуінің нәтижесі клиенттің қосымшасына қайтарылады. Келесі процедура  EMPLOYEE таблицасына айлықтары берілген мөлшерден асатын қызметкерлер туралы барлық ақпаратты статистикалық сұраудың формасын құруды илюстрациялайды:

1.TQuery компонентасын формаға орналастырыңыз.

2. Database Name қондырғысындағы сервердің адрестелген мәліметтер базасының бүркеншік атын анықтаңыз. Мысалы локальді мәліметтер көрсетілімінің базасының  BCDEMOS бүркеншік аты қолданылады, ол негізінде бірқатар өнеркәсіптің қызметкерлерінің таблицасынан тұрады.

3. Қатарлық тізім редакторын ашып, SQL бұйрығын ендіріңіз   SELECT*FROM EMPLOYEE WHEERE Salary>40000 және OK нүктесін басыңыз.

4. ТDataSource компанентасын формаға орналастырыңыз және оны  DataSet = Query1 қондырғысына  орнатыңыз.

5. TDBGrid торын басқару компанентасын формаға орналастырыңыз және оның DataSource = DataSourcel  қасиетін анықтаңыз.

6. Query1 сұрауы үшін  Active = true қасиетін анықтаңыз сосын бірден тірі мәліметтерді торда көрсету үшін.

 

3.2   Тұтынушылық интерфейсін ұйымдастыру

 

Берілген тапсырмалар модель мен құрылған алгоритмдер біздің бағдарламамыздың негізі болып табылатындықтан, біз бағдарламаны жүзеге асырмай тұрып  бізге алдымен оның структурасын  анықтап алу керек, және де тұтынушымен қарым – қатынас механизімін. Біздің болашақ қосымшамызды структуралық схема (сурет 3.10) түрінде көзге елестету барлығынан да ыңғайлы, ол жерде қосымшаың қандай негізгі бөліктері жұмысқа қатысатын  және олардың арасында қандай байланыс бар екені көрнекті түрде көрсетілген.

Негізгі блок  болып Project (Проект) блогы табылады, ол өзімен барлық қосымшаны көрсетеді.

Біздің бағдарламамыздың келесі иерархиялық сатысы негізгі функционалды блоктар. Form1 (Форма1) блогы қосымшаның сулы формасын көрсетеді яғни  оның сыртқы көрінісі . берілген формада Меню бар ол клиенттер туралы мәліметтер базасынан тұрады (frm Form1, Form2, Form3 ), бағдарлама туралы ақпараттар (Form6), автор туралы (Form7). Form2,  Form3, Form4, Form5 блоктары бұл комерциялық банктерді анықтаудың негізгі есебі жүргізілетін формалар. Қалған формалар есептеудің қорытындыларын білдіреді, ол жерде шешіліп отырған мәселенің қортындысы берілген.

 Ары қарай формаға барлық компаненттерді орналастырамыз олар бастаушы мәліметтер мен жұмыс қортындыларының ендірілуін, редактірленуін және көрсетілуін қамтамасыз етеді.

Тек бір бағдарламаның басты формасы мен жасалып жатқан қосымшаның басқару элементтерінің қасиеттерінің  таблицаларын келтіреміз. Қалған формалар мен басқару элементінің қасиеттерінің таблицасы аналогтық түрде орындалады.

 

 

 

 

 

 

 

 

 

 

Сурет 3.10  – Қосымшаның структуралық схемасы

 

 

 

 

 

 

 

3.3    Бағдарламаның құжаттары

 

3.3.1 Тұтынушының нұсқаулы ережелері

 

Банктің «Депозит» қосымша жүйесі комерциялық банктың «ресурстардың тартылуы мен бөлінуі» бөлімінің жұмысшыларымен эксплуатациялануы үшін арналған. Бағдарламаның жіберілуі Банктың депозиті иконасында тышқанды екі рет басу арқылы жүзеге асады, ол жұмыс столында орналасқан. Бағдарламаның бас формасының  терезесі 3.3.1 суретте көрсетілген.

 

 
 


Бағдарламамен депозиттің клиенттері туралы ақпараттың өңделуінің байланысы менюдің көмегімен жүзеге асады. Меню келесі бұйрықтарға ие: Клиентткр, Депозиттер, Сервис және шығу . бұйрықтардың біреуін таңдаған кезде меню астындағы меню шығады. Қосымша меню де де бұйрықтар бар. Менюмен өзара қарым-қатынас жасаудың қарапайым тәсілі тышқанның қолданылуы. Бұл үшін тышқанның курсорын керекті бұйрыққа апарып және тышқанның сол жағындағы нүктесін басу керек.

 

 

Суреті 3.3.1  – Бағдарламаның басты формасының терезесі

 

         Бағдарламада келесі операциялар жүзеге асады: клиенттер туралы ақпараттар мен олар ашып отырған салымдарды ендіру арқылы депозит ашу; клиенттер туралы ақпараттар бар мәліметтерді өзгерту; мәліметтер базасында іздеудің анықталған критериі бойынша іздеу жүргізу; клиенттерге сыйақы төлеу; клиенттердің қосымша жарналарды ендіруі, саланың мерзімі біткен кезде клиенттерге жинақтарын төлеу. Бұл операциялардан басқа тағы да қосымша мүмкіндіктер бар: режим депозиттік калькулятор, процент режимі, Депозиттер / Есептер пежимі. Режим депозиттің калькуляторы (сурет 3.3.2 – қараңыз) салым сомасына қатысты сыйақы сомасын есептеуге арналған, және де бірқатар басқа да параметрлерді  (салымның түрі, валютаның түрі, салым мерзімі). Процен режимінде (сурет 3.3.3 – қараңыз) салым (депозит) бойынша прценттік өсім туралы ақпаратты көруге болады. Депозиттер / Есептер пежимі  есептерді алу үшін арналған. Бұл режим әр қайсысы нақты есепке сай келетін бірнеше пунктен тұрады.

 

 

 
 


Сурет 3.3.2 – Депозиттік калькулятор

 

 

 

 

 
 

 

 

Сурет 3.3.3 – Проценттік үстеме

 

 

 

 

 

Жаңа жазбалардың қосымшасы

Мәліметтер базасына клиенттер туралы жаңа мәліметтердің ендірілуі «Жаңа салымшы» деген формаға жүгіну арқылы жүзеге асады (3.3.4 суретті қараңыз). Берілген форманың алаңы: Фамилияны ендіріңіз, атты ендіріңіз, әкесінің атын, туылған күнін, үйінің адресін, жұмыс орнын ендіріңіз. Форманы толтырған соң мәліметтердің енгенін мақұлдау керек, бұл үшін мақұлдау нүктесін басу керек. Осыдан кейін мәліметтер базаға жазылады.

 

 

 

 

 
 


Сурет 3.3.5  – Жаңа салымшы

 

 

         Клиенттер туралы мәліметтердің өзгертілуі

Бұл жерде мәліметтер базасында жақында кіргізілген мәліметтерді өзгертуге болады (3 күн бұрын кіргізілген клиенттер туралы мәліметтер). Мәліметтерді өзгерту «клиент туралы мәліметтерді өзгерту» (3.3.5 суретке қараңыз) формасына жүгіну көмегімен жүзеге асады. Берілген форманың алаңы  «жаңа салымшы » формасының алаңы сияқты.

 

 

 
 

 

 

 

Сурет 3.3.5  – Клиент туралы мәліметтерді өзгерту.

 

Мәліметтер базасынан ақпараттарды іздеу жүзеге асыру келесі параметрлер арқасында мүмкін:

  • Клиенттің Фамилиясы
  • Клиенттің аты
  • Клиенттің әкесінің аты
  • Туылған күні
  • Адресі
  • Жұмыс орны

Іздеу тәртібіне өту үшін «іздеу» формасын жіберу керек. Сосын іздеу параметірін форманың бір алаңына ендіріп және «Бастау» нүктесін басу керек. Егер іздеу сәтті орындалса онда «жазуға өту» нүктесін басу арқылы «іздеу» формасына өтуге болады (3.3.6 суретке қараңыз) ол жерде клиент туралы табылған ақпарат шығды.

 

 

 
 

 

 

Суретт 3.3.6  – Іздеу

 

 

Клиенттерге сыйақының төленуі

Клиенттерге сыйақының төленуі салымның мерзімі аяқталар кезде жүргізіледі. Бұл операцияның жүзеге асуы үшін «Сыйақыны төлеу» формасына өту керек (3.3.7 суретке қараңыз), оны «Сервис» бас менюіндегі «Сыйақыны төлеу» пунктінен алуға болады. Осы жағдайда клиентке сыйақы сомасын төлеу жүргізіледі.

 

 

 

 

 

 

 

 

 

 

 

 

Сурет 3.3.7  – Сыйақыны төлеу

 

Қосымша жарналардың қосылуы

Клиенттердің қосымша жарналарын іске асыру үшін «Қосымша жарна» формасы (3.38 суретке қарңыз) арналған, оны «Сервис» бас менюдегі «қосымша жарна» пунктінен алуға болады. Бұлжерде «жарна сомасы» деген алаңды толтырып сосын «Ендіру» нүктесін басу керек. Әр салым түрін қарай бөлінген, жарна сомасына деген шектеулер.

 

 
 

 

 

Сурет 3.3.8  – Сыйақыны төлеу

 

Жиналған қордың төленуі

Жиналған қордың төленуі салым мерзімі аяқталар кезде жүргізіледі. Қортындысында клиент туралы міліметтердің барлығы мәліметтер базасынан алынып тасталады ал көшірмесі архивке едіріледі. Жиналған қордың төлену функциясын «Серви» бас менюдегі «Жналған қоды төлеу»  пунктінен алу мүмкін, (3.3.9 суретке қараңыз). Осы жағдайда іс әрекет сұрауының диалогтық формасы туындайды, онда ағымдағы клиенттің жинақталған қорының сомасы көрінеді, мақұлданған жауап кезінде жүйе  жинақталған қордың төлемін жүргізеді. Берілген функция тек клиенттердің мәліметтерін қарау тәртібінде ғана мүмкін.

 

 
 

 

 

Сурет 3.3.9  – Төлемді мақұлдау

 

3.3.2 Прогроаммистің нұсқаулары

Мәліметтер базасына рұқсат механизімі – BDE – ні бағдарлама қолданады. Сондықтан ең алдымен ODBC Data Sources драйвері мен BDE  (Borland Database Engine), драйверлері анықталуы қажет, ал екіншіден  BDE Administratior қосымшасына сай келетін түрде күйге келтіру қажет. Яғни BDE Administratior қосымшасын жібереміз, осыдан кейін Database қосымшасына өтеміз, кейін Object бас менюінен МҚ бүркеншік атын құру функциясын шақырамыз.  Ол жерде Bank бүркеншік атына есім беріп МҚ жол көрсетеміз. Банктің «Депозит» қосымша жүйесінің бағдарламасы МҚ Paradox 7.0 (.db) форматындағы таблицасын қолданады,  демек дайверлерді таңдау кезінде Standard (Paradox 7.0) форматын таңдау керек. Осы іс әрекеттердің нәтижесінде  МҚ жағдайы дұрыс түрде күйге келтіріледі, осыдан кейін «АЖО Халық Банкінің Депозитің ішкі жүйесін ұймдастыру» бағдарламасымен жұмыс істей беруге болады.

 

ҚОРЫТЫНДЫ

 

         Жасалған жұмыстың қортындысы ретінде келесілерді айтуға болады :

  Берілген бағдарламалық кешенді ендіуде жүйені функцияландырумен қамтамасыз ету жұмысымен айналысатын операторлардың жұмысын эфектілігінің жоғарылауы жүреді, және мәліметтерді жинау, аналитикалық өңдеу, және құжаттарды өңдеудің жылдамдығын жоғарылатады.

Барлық жұмыстарды қолмен істегенде үлкен архивтің жүргізілуі, үлкен көлемдегі қызметкерлерді ұстау мәселесі туындайды. Құжаттарды толтыру сараптамасын жасауда және есепті жүргізу кезінде үлкен архив ыңғайлы емес, журнал мен архив журналдарын жүргізуге үлкен шығындарды қажет етеді.

Оңтүстік қазақстан обылысының Отырар ауданының  «Халық Банкі» АҚ – ның қосымша «Депозит» жүйесінің жасалған бағдарламалық қамтамасыз етілуі үлкен көлемдегі құжаттарды автоматизациялау үшін керек, депозиттің клиенттерінің әр түрлі структураларының орындалуы яғни салымшылар туралы  және әр түрлі есептердің берілуі, әр түрдегі құжаттар туралы анықтамалар.  

Қажеттілігі бойынша есеп түінде алынған және өңделген ақпараттар файл түрінде сақталады, ол жалпы мәліметтер базасына бекітіледі немесе керек кезінде ендірілген мәліметтерді қарап шығу үшін принтарге шығарылады

Жоба Қазақстан Республикасының «Еңбекті қорғау» заңының барлық талаптарына толығымен  қанағаттандырады. Жобаның арнайы бөлімінде денсаулыққа зияндылық мәселелрі туралы айтылған, оларды шешу және азайту жолдары көрсетілген. Тұтынушылардың қалыпты жұмыс істеуін қамтамасыз ететін жұмыс орнының дұыс ұйымдастырылуына жеткілікті назар аударылған

Жүйенің жасалуының мақсаттылығы мен енуі жобада ерекше қаралған. Дипломдық жоба аясында эксплуатацияның экономикалық эффектілігі мен жүйенің қызмет көрсету туралы есеп жасалған, ендірудің эффектілігі  мен жобаның өзін өзі өтеу мерзімі есептелген.

Берілген қосымша жүйе еңбек шығындары мен банк қызметкерлерінің уақытын азайтуға мүмкіндік береді, ол қызметкерлер санын азайтуға көмектеседі.

 

ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР

 

  1. Фаронов В.В. DELPHI Программирование на языке высокого уровня. Учебник для втузов, Москва: изд.дом «Питер», 2004.
  2. Архангельский А.Я. Язык Pascal и основы программирования в Delphi. Учебное пособие, Москва: изд.БИНОМ, 2004.
  3. Градусов  А.Б., Гришин В.С. Методические указания к лабораторным работам по дисциплинам «Основы алгоритмизации и языки программирования» и «Информатика».
  4. Ахаян Р., Горев А.., Макашарипов С. «Эффективная работа с СУБД».
  5. Попов А.А. «Создание приложений для FoxPro 2.5/2.6 в DOS и в WINDOWS». –М.: Издательство Март, 1996. –660с.
  6. Лемашко Е.В., Романчуков В.Г. Программирование в системе команд СУБД семейства Fox: учебное пособие / ГАУ, М., 1998.
  7. Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические указания к выполнению курсового проекта. /Сост.: О.Н. Леонова, И.А. Несмеянов; ГАУ, М.,1998.
  8. Культин Н. Delphi 4. Программирование на Object Pascal. BHV, Санкт-Петербург, 1999. – 480 с., ил.
  9. Дэн Оузьер и др. Delphi 5. Освой самостоятельно. М.: “Издательство БИНОМ”, 1998 г. – 560 с.: ил.
  10.  Бондарев В. М., Рублинецкий В. И., Качко Е. Г. Основы программирования. Харьков: Фолио; Ростов н/Д: Феникс, 1998  – 368 с.
  11. Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические указания к выполнению курсового проекта. /Сост.: О.Н.Леонова, И.А.Несмеянов; ГАУ, М.,1998.
  12. Организация взаимодействия человека с техническими средствами АСУ, том 4: «Отображение информации», редакция В.Н.Четверикова, Москва, «Высшая Школа» 1993.
  13. Организация взаимодействия человека с техническими средствами АСУ, том 7: «Системное проектирование взаимодействия человека с техническими средствами», редакция В.Н.Четверикова, Москва, «Высшая Школа» 1993.
  14. «Кибернетические диалоговые системы», И.П.Кузнецов.
  15. «Рекоммендации по общепользовательскому интерфейсу», Microsoft, редакция 1995г.
  16.  Джон Матчо, Дэвид Р.Фолкнер. «Delphi» — пер. с англ. — М.:Бином, 1995г.
  1.  Закон Республики Казахстан об охране труда /В редакции Закона РК от 22 января 1993 № 1915-ХП.
  2.  Кодекс законов о труде РК (с изменениями и дополнениями), – Алма-Ата, 1990.
  3. Охрана труда (Нормативные требования, организация охраны труда на предприятиях, сертификация рабочих мест и производственных объектов, административная и уголовная ответственность). – М: ПРИОР, 1997.
  4.  Охрана труда на предприятиях РФ. – М: Управление персоналом, 1997.
  5.  Хлопков В.В., Маслов А.А. Организация охраны труда (Практические рекомендации). – М: Богородский печатник (п. Черноголовка МО), 1994.
  6.  Куценко Г.И., Жашкова И.А. Основы гигиены труда и производственной санитарии. – М: Высшая школа, 1990.
  7.  Осокин В.В. и др. Охрана труда в торговле. – М: Экономика, 1985.
  8.  Учет физиологических факторов при организации труда в торговле. – М.: Экономика, 1983.
  9. Донская Л.В. Учет физиологических факторов при организации труда в торговле. – М: Экономика, 1983.
  10.  В.Г.Атаманюк, Л.Г.Ширшев, И.И.Акимов. Гражданская оборона. - М.: "Высшая школа", 1986.
  1. Бюллетень бухгалтера. 2000-2001 год
  2.  Мамедов О.Ю. «Современная экономика»
  3.  Ворст И. «Экономика фирмы»
  4.  Горфинкель В.Я. «Экономика предприятия»

 

 

 

 

 

Бағдарламаның листингі

//---------------------------------------------------------------------------

Модуль Unit_Main.cpp

//---------------------------------------------------------------------------

#include

#pragma hdrstop

 

#include "Unit_Main.h"

#include "DepCalc.h"

#include "Procent.h"

#include "View_Client.h"

#include "UnitModule.h"

#include "Add_Client.h"

#include "UnitAboutBox.h"

#include "UnitView.h"

#include "UnitValid_Client.h"

#include "UnitVozn.h"

#include "UnitFind.h"

#include "UnitDop_Vznos.h"

#include "UnitRep2.h"

#include "UnitRep3.h"

#include "UnitRep5.h"

#include "UnitRep1.h"

#include "UnitRep4.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm_Main *Form_Main;

//---------------------------------------------------------------------------

__fastcall TForm_Main::TForm_Main(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Dep_CalcClick(TObject *Sender)

{

 FormDepCalc->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm_Main::Dep_ProcClick(TObject *Sender)

{

 FormProcent->Show();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Cli_ViewClick(TObject *Sender)

{

  FormView->Show();

}

//---------------------------------------------------------------------------

int days(TDateTime dat_1,TDateTime dat_2)

{

 unsigned short year1 = 0, month1 = 0, day1 =0,

                year2 = 0, month2 = 0, day2 =0;

 DecodeDate(dat_1,year1,month1,day1);

 DecodeDate(dat_2,year2,month2,day2);

 if (day1 < day2) day2 = day2 - day1; else day2 = 0;

 while(year1 < year2 || (month1 < month2 && year1 == year2))

  {

   DecodeDate(dat_1,year1,month1,day1);

   if (month1 == 1 || month1 == 3 || month1 == 5 || month1 == 7 || month1 == 8 ||

       month1 == 10 || month1 == 12) day2 += (31 - day1);

   if (month1 == 4 || month1 == 6 || month1 == 9 || month1 == 10)

    {

      day2 += (30 - day1);

    }

   if (month1 == 2)

    {

     if (IsLeapYear(year1))

       day2 += (28 - day1);

       else day2 += (29 - day1);

    }

   day2 += day1;

   dat_1 = IncMonth(dat_1);

   DecodeDate(dat_1,year1,month1,day1);

  }

 return day2;

}

void revers_day(TDateTime &dat)

{

 unsigned short year = 0, month = 0, day =0;

 

 DecodeDate(dat,year,month,day);

 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||

       month == 10 || month == 12)

  {

   if (day + 15 <= 31) day += 15; else

   {

     month ++;

     day = 15 - (31 - day);

   }

   goto ex;

  }

 if (month == 4 || month == 6 || month == 9 || month == 10)

  {

   if (day + 15 <= 30) day += 15; else

    {

     month ++;

     day = 15 - (30 - day);

    }

   goto ex;

  }

   if (month == 2)

    {

     if (IsLeapYear(year))

      {

       if (day + 15 <= 28) day += 15; else

       {

        month ++;

        day = 15 - (28 - day);

       }

      }

       else

      {

       if (day + 15 <= 29) day += 15; else

       {

        month ++;

        day = 15 - (29 - day);

       }

      }

    }

 ex:

  dat = EncodeDate(year,month,day);

}

 

void __fastcall TForm_Main::FormCreate(TObject *Sender)

{

 DataModuleDepo->QRGen->Open();

 DataModuleDepo->TbClient->Active = true;

 DataModuleDepo->TbDeposit->Active = true;

 DataModuleDepo->TbDepositor->Active = true;

 DataModuleDepo->TbProc->Active = true;

 DataModuleDepo->TbSrok->Active = true;

 DataModuleDepo->TbVal->Active = true;

 DataModuleDepo->QRDC->Active = true;

 DataModuleDepo->QRGen->Active = true;

 Cli_Edit->Enabled = false;

 Cli_Find->Enabled = false;

 Serve_Vznos->Enabled = false;

 Serve_voz->Enabled = false;

 Serve_vyp->Enabled = false;

 //Serve_Copy->Enabled = false; Serve_Paste->Enabled = false;

 TBtnEdit->Enabled = false;

 TBtnFind->Enabled = false;

 TBtnVozn->Enabled = false;

 TBtnVznos->Enabled = false;

 TBtnVyp->Enabled = false;

 TDateTime last_dat, future_dat;

 int Number = 0, k = 0;

 int CDeposit, CVal, CSrok;

 float ProcDepo,SumDep, Voz;

 DataModuleDepo->TbSrok->MasterSource = DataModuleDepo->DSDepositor;

 DataModuleDepo->TbSrok->MasterFields = "CSrok";

 DataModuleDepo->TbDepositor->First();

 while(!DataModuleDepo->TbDepositor->Eof)

  {

    k = 0;

    last_dat = DataModuleDepo->TbDepositor->FieldByName("Dat")->AsDateTime;

    Number = DataModuleDepo->TbSrok->FieldByName("Number")->AsFloat;

    future_dat = last_dat;

    future_dat = IncMonth(future_dat, Number);

    while (future_dat <= Date())

     {

       last_dat = future_dat;

       future_dat = IncMonth(future_dat, Number);

       if (DataModuleDepo->TbSrok->FieldByName("Number")->AsFloat == 12.5) revers_day(future_dat);

       k ++;

     }

    future_dat = last_dat;

    if (k == 0)

     {

      DataModuleDepo->TbDepositor->Next();

      continue;

     }

    CDeposit = DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger;

    CVal = DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger;

    CSrok = DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger;

    DataModuleDepo->TbProc->Filter = "(CDep = "+IntToStr(CDeposit)+")And(CVal = "+

    IntToStr(CVal)+")And(CSrok = "+IntToStr(CSrok)+")";

    DataModuleDepo->TbProc->Filtered = true;

    ProcDepo = DataModuleDepo->TbProc->FieldByName("DPoc")->AsFloat;

    ProcDepo *= k;

    SumDep = DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat;

    Voz = SumDep*((ProcDepo/(12.0/Number))/100);

    DataModuleDepo->TbDepositor->Edit();

    DataModuleDepo->TbDepositor->FieldByName("Dat")->AsDateTime = future_dat;

    DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat += Voz;

    DataModuleDepo->TbDepositor->Post();

    DataModuleDepo->TbProc->Filtered = false;

    DataModuleDepo->TbDepositor->Next();

 }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::FormDestroy(TObject *Sender)

{

 DataModuleDepo->QRGen->Active = false;

 DataModuleDepo->TbClient->Active = false;

 DataModuleDepo->TbDeposit->Active = false;

 DataModuleDepo->TbDepositor->Active = false;

 DataModuleDepo->TbProc->Active = false;

 DataModuleDepo->TbSrok->Active = false;

 DataModuleDepo->TbVal->Active = false;

 DataModuleDepo->QRDC->Active = false;

 DataModuleDepo->QRGen->Active = false;

 Timer->Enabled = false;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Cli_AddClick(TObject *Sender)

{

  Info_StatusBar->Panels->Items[0]->Text = "Добавление данных о клиенте (для нового вкладчика)";

  FormAdd_Client->Show();

  Info_StatusBar->Panels->Items[0]->Text = "";

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::AboutBoxClick(TObject *Sender)

{

 FormAboutBox->ShowModal();

}

//---------------------------------------------------------------------------

 

 

 

void __fastcall TForm_Main::Cli_EditClick(TObject *Sender)

{

 FormValid_Client->EditFam->Text = DataModuleDepo->TbClient->FieldByName("Fam")->AsString;

 FormValid_Client->EditName->Text = DataModuleDepo->TbClient->FieldByName("Name")->AsString;

 FormValid_Client->EditOtch->Text = DataModuleDepo->TbClient->FieldByName("Otch")->AsString;

 FormValid_Client->MaskEditGr->Text = DateTimeToStr(DataModuleDepo->TbClient->FieldByName("Dat")->AsDateTime);

 FormValid_Client->EditAdr->Text = DataModuleDepo->TbClient->FieldByName("Adr")->AsString;

 FormValid_Client->EditRab->Text = DataModuleDepo->TbClient->FieldByName("Rab")->AsString;

 FormValid_Client->MEditDT->Text = DataModuleDepo->TbClient->FieldByName("DTel")->AsString;

 FormValid_Client->MEditRT->Text = DataModuleDepo->TbClient->FieldByName("RTel")->AsString;

 FormValid_Client->EditSum->Text = FloatToStr(DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat);

 DataModuleDepo->TbDepositor->MasterSource = DataModuleDepo->DSClient;

 DataModuleDepo->TbDepositor->MasterFields = "CClient";

 if (FormValid_Client->ShowModal() == mrCancel)

  {

    if (DataModuleDepo->TbDepositor->State == dsEdit ||

        DataModuleDepo->TbClient->State == dsEdit)

    {

     DataModuleDepo->TbDepositor->Cancel();

     DataModuleDepo->TbClient->Cancel();

    }

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Cli_DelClick(TObject *Sender)

{

 if (Application->MessageBox("Действительно хотите удалить все данные о клиенте?",

                             "Потвердите удаление данных",MB_YESNO + MB_ICONEXCLAMATION) == IDYES)

  {

   DataModuleDepo->TbDepositor->MasterSource = DataModuleDepo->DSClient;

   DataModuleDepo->TbDepositor->MasterFields = "CClient";

   if (DataModuleDepo->TbDepositor->RecordCount != 0)

    {

     DataModuleDepo->TbClient->Delete();

    }

   DataModuleDepo->TbDepositor->MasterSource = NULL;

   DataModuleDepo->TbDepositor->MasterFields = "";

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Serve_vozClick(TObject *Sender)

{

 FormVozn->ShowModal();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Cli_FindClick(TObject *Sender)

{

 FormFind->ShowModal();

}

//---------------------------------------------------------------------------

 

 

void __fastcall TForm_Main::Serve_VznosClick(TObject *Sender)

{

 FormDop_Vznos->Show();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::Serve_vypClick(TObject *Sender)

{

 DataModuleDepo->TbVal->MasterSource = DataModuleDepo->DSDepositor;

 DataModuleDepo->TbVal->MasterFields = "CVal";

 DataModuleDepo->TbDepositor->Filter = "CClient="+IntToStr(DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger);

 DataModuleDepo->TbDepositor->Filtered = true;

  if (DataModuleDepo->TbDepositor->RecordCount == 0 ||

     DataModuleDepo->TbVal->RecordCount == 0)

  {

   Application->MessageBox("Нарушена целостность данных","Операция прервана",MB_OK + MB_ICONINFORMATION);

   DataModuleDepo->TbVal->MasterSource = NULL;

   DataModuleDepo->TbVal->MasterFields = "";

   DataModuleDepo->TbAClient->Close();

   Abort();

  }

 AnsiString str = "Выплачиваемая сумма составляет : \n\n",str1 = "",str2 = "",str3 = "";

 str1 = "сумма вклада:        "+FormatFloat("0.00",DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat) + "  " +

 DataModuleDepo->TbVal->FieldByName("NVal")->AsString+"\n\n";

 str2 = "сумма вознагр.:     "+FormatFloat("0.00",DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat) + "  " +

 DataModuleDepo->TbVal->FieldByName("NVal")->AsString+"\n\n";

 str3 = "сумма накоплений:   "+FormatFloat("0.00",DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat+DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat)+

 "  "+DataModuleDepo->TbVal->FieldByName("NVal")->AsString;

 if (Application->MessageBox((str+str1+str2+str3).c_str(),"Потвердите выплату",MB_YESNO + MB_ICONINFORMATION) == IDYES)

  {

    DataModuleDepo->TbProc->Filter = "(CDep="+IntToStr(DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger)+")and(CVal="+

    IntToStr(DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger)+")and(CSrok="+IntToStr(DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger)+")";

    DataModuleDepo->TbProc->Filtered = true;

    DataModuleDepo->TbVNac->Open();

    DataModuleDepo->TbVNac->Append();

    DataModuleDepo->TbVNac->FieldByName("CClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

    DataModuleDepo->TbVNac->FieldByName("CDeposit")->AsInteger = DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger;

    DataModuleDepo->TbVNac->FieldByName("CVal")->AsInteger = DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger;

    DataModuleDepo->TbVNac->FieldByName("CSrok")->AsInteger = DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger;

    DataModuleDepo->TbVNac->FieldByName("BSum")->AsFloat = DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat;

    DataModuleDepo->TbVNac->FieldByName("VSum")->AsFloat = DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat;

    DataModuleDepo->TbVNac->FieldByName("BDat")->AsDateTime = DataModuleDepo->TbDepositor->FieldByName("BDate")->AsDateTime;

    DataModuleDepo->TbVNac->FieldByName("EDat")->AsDateTime = Date();

    DataModuleDepo->TbVNac->FieldByName("Proc")->AsFloat = DataModuleDepo->TbProc->FieldByName("DPoc")->AsFloat;

    DataModuleDepo->TbVNac->Post();

    DataModuleDepo->TbProc->Filtered = false;

    DataModuleDepo->TbVNac->Close();

    DataModuleDepo->TbVal->MasterSource = NULL;

    DataModuleDepo->TbVal->MasterFields = "";

    DataModuleDepo->TbAClient->Open();

    DataModuleDepo->TbAClient->Append();

 

    DataModuleDepo->TbAClient->FieldByName("CClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

    DataModuleDepo->TbAClient->FieldByName("Fam")->AsString = DataModuleDepo->TbClient->FieldByName("Fam")->AsString;

    DataModuleDepo->TbAClient->FieldByName("Name")->AsString = DataModuleDepo->TbClient->FieldByName("Name")->AsString;

    DataModuleDepo->TbAClient->FieldByName("Otch")->AsString = DataModuleDepo->TbClient->FieldByName("Otch")->AsString;

    DataModuleDepo->TbAClient->FieldByName("Dat")->AsDateTime = DataModuleDepo->TbClient->FieldByName("Dat")->AsDateTime;

    DataModuleDepo->TbAClient->FieldByName("Adr")->AsString = DataModuleDepo->TbClient->FieldByName("Adr")->AsString;

    DataModuleDepo->TbAClient->FieldByName("Rab")->AsString = DataModuleDepo->TbClient->FieldByName("Rab")->AsString;

    DataModuleDepo->TbAClient->FieldByName("DTel")->AsString = DataModuleDepo->TbClient->FieldByName("DTel")->AsString;

    DataModuleDepo->TbAClient->FieldByName("RTel")->AsString = DataModuleDepo->TbClient->FieldByName("RTel")->AsString;

    DataModuleDepo->TbAClient->Post();

    DataModuleDepo->TbAClient->Close();

    DataModuleDepo->TbDepositor->Filtered = false;

    FormView->Close();

    DataModuleDepo->TbDepositor->Delete();

    DataModuleDepo->TbClient->Delete();

    FormView->Show();

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::N4Click(TObject *Sender)

{

 FormRep1->Show();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::N3Click(TObject *Sender)

{

 FormRep2->Show();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::N5Click(TObject *Sender)

{

 FormRep3->Show();       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::N7Click(TObject *Sender)

{

 FormRep4->Show();       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::N8Click(TObject *Sender)

{

 FormRep5->Show();       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::ApplicationEvents1Message(tagMSG &Msg,

      bool &Handled)

{

 

 if (Msg.message == WM_KEYDOWN)

  {

   if (Msg.wParam == VK_INSERT)

    {

     if ((GetKeyState(VK_INSERT) & 1) != 0)

        Info_StatusBar->Panels->Items[1]->Text = "Ins"; else

        Info_StatusBar->Panels->Items[1]->Text = "";

    }

   if (Msg.wParam == VK_NUMLOCK)

    {

     if ((GetKeyState(VK_NUMLOCK) & 1) != 0)

        Info_StatusBar->Panels->Items[2]->Text = "Num"; else

        Info_StatusBar->Panels->Items[2]->Text = "";

    }

   if (Msg.wParam == VK_CAPITAL)

    {

     if ((GetKeyState(VK_CAPITAL) & 1) != 0)

        Info_StatusBar->Panels->Items[3]->Text = "Caps"; else

        Info_StatusBar->Panels->Items[3]->Text = "";

    }

  }

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TimerTimer(TObject *Sender)

{

 if (Form_Main->Active) Info_StatusBar->Panels->Items[4]->Text = TimeToStr(Time());

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::FormActivate(TObject *Sender)

{

 Timer->Enabled = true;       

}

//---------------------------------------------------------------------------

 

 

 

void __fastcall TForm_Main::TBtnExitClick(TObject *Sender)

{

 Close();       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnViewClick(TObject *Sender)

{

 Cli_ViewClick(Sender);       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnAddClick(TObject *Sender)

{

 Cli_AddClick(Sender);       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnEditClick(TObject *Sender)

{

 Cli_EditClick(Sender);       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnFindClick(TObject *Sender)

{

 Cli_FindClick(Sender);       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnVoznClick(TObject *Sender)

{

 Serve_vozClick(Sender);        

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnVznosClick(TObject *Sender)

{

 Serve_VznosClick(Sender);       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::TBtnVypClick(TObject *Sender)

{

 Serve_vypClick(Sender);       

}

//---------------------------------------------------------------------------

 

void __fastcall TForm_Main::FormCloseQuery(TObject *Sender, bool &CanClose)

{

 if (Application->MessageBox("Вы действительно хотите выйти?",

       "Выход из системы",MB_YESNO+MB_ICONQUESTION) != IDYES) CanClose = false;

}

//---------------------------------------------------------------------------

Модуль UnitModul.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TDataModuleDepo *DataModuleDepo;

//---------------------------------------------------------------------------

__fastcall TDataModuleDepo::TDataModuleDepo(TComponent* Owner)

        : TDataModule(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TDataModuleDepo::DSClientStateChange(TObject *Sender)

{

 TbClient->Edit();

 

}

//---------------------------------------------------------------------------

Модуль UnitFboutBox.cpp

//---------------------------------------------------------------------

#include

#pragma hdrstop

 

#include "UnitAboutBox.h"

//---------------------------------------------------------------------

#pragma resource "*.dfm"

TFormAboutBox *FormAboutBox;

//---------------------------------------------------------------------

__fastcall TFormAboutBox::TFormAboutBox(TComponent* AOwner)

                : TForm(AOwner)

{

}

//---------------------------------------------------------------------

Модуль Add_Client.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "Add_Client.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormAdd_Client *FormAdd_Client;

 

//---------------------------------------------------------------------------

__fastcall TFormAdd_Client::TFormAdd_Client(TComponent* Owner)

        : TForm(Owner)

{

}

 

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::FormShow(TObject *Sender)

{

 CBoxDep->Clear();

 CBoxDep->Items->Add("Выберите");

 CBoxDep->ItemIndex = 0;

 DataModuleDepo->TbDeposit->First();

 while (!DataModuleDepo->TbDeposit->Eof)

  {

   CBoxDep->Items->Add(DataModuleDepo->TbDeposit->FieldByName("DNazv")->AsString);

   DataModuleDepo->TbDeposit->Next();

  }

 CBoxVal->Clear();

 CBoxVal->Items->Add("Выберите");

 CBoxVal->ItemIndex = 0;

 DataModuleDepo->TbVal->First();

 while (!DataModuleDepo->TbVal->Eof)

  {

   CBoxVal->Items->Add(DataModuleDepo->TbVal->FieldByName("NVal")->AsString);

   DataModuleDepo->TbVal->Next();

  }

 PgControl->ActivePageIndex = 0;

 if (EditFam->CanFocus())

  {

   EditFam->SelectAll();

   EditFam->SetFocus();

  }

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::CBoxDepChange(TObject *Sender)

{

 CBoxSrk->Clear();

 CBoxSrk->Items->Add("Выберите");

 CBoxSrk->ItemIndex = 0;

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 AnsiString str = CBoxDep->Items->Strings[CBoxDep->ItemIndex];

 if (!DataModuleDepo->TbDeposit->Locate("DNazv",str,SearchOptions))

    {ShowMessage("Нарушена целостность данных"); Abort();}

 AnsiString CodeDepo = IntToStr(DataModuleDepo->TbDeposit->FieldByName("DCod")->AsInteger);

 try

 {

  DataModuleDepo->QRDC->SQL->Clear();

  DataModuleDepo->QRDC->SQL->Add("Select Distinct Srok.SNazv,Srok.CSrok From Deposit,Srok, DProc");

  DataModuleDepo->QRDC->SQL->Add("Where ( DProc.CDep  =  "+CodeDepo+") AND (DProc.CVal = 1) AND (Srok.CSrok = DProc.CSrok)");

  DataModuleDepo->QRDC->SQL->Add("ORDER BY Srok.CSrok");

  DataModuleDepo->QRDC->Open();

 }

 catch (EDatabaseError&)

 {

  DataModuleDepo->QRDC->ExecSQL();

 }

 DataModuleDepo->QRDC->First();

 while (!DataModuleDepo->QRDC->Eof)

  {

   CBoxSrk->Items->Add(DataModuleDepo->QRDC->FieldByName("SNazv")->AsString);

   DataModuleDepo->QRDC->Next();

  }

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::FormKeyPress(TObject *Sender, char &Key)

{

  if (Key == VK_RETURN) Perform(WM_NEXTDLGCTL,0,0);

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::BtnCloseClick(TObject *Sender)

{

 Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::PgControlChange(TObject *Sender)

{

 if (PgControl->ActivePageIndex == 0) BtnLast->Enabled = false; else BtnLast->Enabled = true;

 if (PgControl->ActivePageIndex == 2) BtnNext->Enabled = false; else BtnNext->Enabled = true;

}

//---------------------------------------------------------------------------

 

void __fastcall TFormAdd_Client::BtnLastClick(TObject *Sender)

{

 PgControl->ActivePageIndex --;

 PgControlChange(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::BtnNextClick(TObject *Sender)

{

 PgControl->ActivePageIndex ++;

 PgControlChange(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::BtnOKClick(TObject *Sender)

{

 if (EditFam->GetTextLen() == 0)

  {

   Application->MessageBox("Не указанна фамилия клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditFam->SetFocus();

   Abort();

  }

 if (EditName->GetTextLen() == 0)

  {

   Application->MessageBox("Не указанна имя клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditName->SetFocus();

   Abort();

  }

 if (EditOtch->GetTextLen() == 0)

  {

   Application->MessageBox("Не указан отчество клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditOtch->SetFocus();

   Abort();

  }

 if (MaskEditGr->GetTextLen() == 0)

  {

   Application->MessageBox("Не указан год рождения клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   MaskEditGr->SetFocus();

   Abort();

  }

 if (EditAdr->GetTextLen() == 0)

  {

   Application->MessageBox("Не указан адрес проживания клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditAdr->SetFocus();

   Abort();

  }

 if (CBoxDep->ItemIndex == 0)

  {

   Application->MessageBox("Не указанна наименование депозита","Внимание",MB_OK);

   CBoxDep->SetFocus();

   Abort();

  }

 if (CBoxSrk->ItemIndex == 0)

  {

   Application->MessageBox("Не указан срок депозита","Внимание",MB_OK);

   CBoxSrk->SetFocus();

   Abort();

  }

 if (CBoxVal->ItemIndex == 0)

  {

   Application->MessageBox("Не указанна валюта депозита","Внимание",MB_OK);

   CBoxVal->SetFocus();

   Abort();

  }

 if (EditSum->GetTextLen() == 0)

  {

   Application->MessageBox("Не указанна сумма депозита","Внимание",MB_OK);

   EditSum->SetFocus();

   Abort();

  }

 float SumDep = 0;

 try

  {

   SumDep = StrToFloat(EditSum->Text);

  }

 catch(EConvertError&)

 {

  Application->MessageBox("Вы ввели ошибочное число","Повторите ввод",MB_OK);

  EditSum->SelectAll();

  EditSum->SetFocus();

  Abort();

 }

 catch(EOverflow&)

 {

  Application->MessageBox("Переполнение","Ошибка вычислений",MB_OK);

  Abort();

 }

 AnsiString mes = "";

 float sum = 0;

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 AnsiString str = CBoxDep->Items->Strings[CBoxDep->ItemIndex];

 if (!DataModuleDepo->TbDeposit->Locate("DNazv",str,SearchOptions))

    {ShowMessage("Нарушена целостность данных"); Abort();}

 str = CBoxSrk->Items->Strings[CBoxSrk->ItemIndex];

 if (!DataModuleDepo->TbSrok->Locate("SNazv",str,SearchOptions))

    {ShowMessage("Нарушена целостность данных"); Abort();}

 str = CBoxVal->Items->Strings[CBoxVal->ItemIndex];

 if (!DataModuleDepo->TbVal->Locate("NVal",str,SearchOptions))

    {ShowMessage("Нарушена целостность данных"); Abort();}

 

 if (CBoxVal->Items->Strings[CBoxVal->ItemIndex] == "тенге") sum = DataModuleDepo->TbDeposit->FieldByName("FSumTen")->AsFloat;

 if (CBoxVal->Items->Strings[CBoxVal->ItemIndex] == "доллары США") sum = DataModuleDepo->TbDeposit->FieldByName("FSumDol")->AsFloat;

 if (CBoxVal->Items->Strings[CBoxVal->ItemIndex] == "евро") sum = DataModuleDepo->TbDeposit->FieldByName("FSumEur")->AsFloat;

  {

   if (StrToFloat(EditSum->Text) < sum)

    {

      mes = "Минимальная сумма первоначального взноса : " + FloatToStr(DataModuleDepo->TbDeposit->FieldByName("FSumTen")->AsFloat)+" "+CBoxVal->Items->Strings[CBoxVal->ItemIndex];

      Application->MessageBox(mes.c_str(), "ВНИМАНИЕ",MB_OK);

      EditSum->SelectAll();

      EditSum->SetFocus();

      Abort();

    }

  }

 DataModuleDepo->TbDepositor->Append();

 DataModuleDepo->TbClient->Append();

 

 DataModuleDepo->TbClient->FieldByName("Fam")->AsString = EditFam->Text;

 DataModuleDepo->TbClient->FieldByName("Name")->AsString = EditName->Text;

 DataModuleDepo->TbClient->FieldByName("Otch")->AsString = EditOtch->Text;

 DataModuleDepo->TbClient->FieldByName("Dat")->AsDateTime = StrToDateTime(MaskEditGr->Text);

 DataModuleDepo->TbClient->FieldByName("Adr")->AsString = EditAdr->Text;

 DataModuleDepo->TbClient->FieldByName("Rab")->AsString = EditRab->Text;

 DataModuleDepo->TbClient->FieldByName("DTel")->AsString = MEditDT->Text;

 DataModuleDepo->TbClient->FieldByName("RTel")->AsString = MEditRT->Text;

 

 DataModuleDepo->TbDepositor->FieldByName("CClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger = DataModuleDepo->TbDeposit->FieldByName("DCod")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger = DataModuleDepo->TbVal->FieldByName("CVal")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger = DataModuleDepo->TbSrok->FieldByName("CSrok")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("Dat")->AsDateTime = DateTimeToStr(Date());

 DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat = StrToFloat(EditSum->Text);

 DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat = 0;

 TDateTime d = d.CurrentDateTime();

 DataModuleDepo->TbDepositor->FieldByName("BDate")->AsDateTime = d;

 DataModuleDepo->TbClient->Post();

 DataModuleDepo->TbDepositor->Post();

 Application->MessageBox("Данные были успешно внесены","Добавление",MB_OK);

 if (Application->MessageBox("Хотите еще добавить запись?",

       "Продолжение записи",MB_YESNO+MB_ICONQUESTION) == IDYES)

    {

     DataModuleDepo->TbDepositor->Append();

     DataModuleDepo->TbClient->Append();

     EditFam->Clear(); EditName->Clear();

     EditOtch->Clear();MaskEditGr->Clear();

     MEditDT->Clear();MEditRT->Clear();

     EditAdr->Clear();EditRab->Clear();

     PgControl->ActivePageIndex = 0;

     EditFam->SetFocus();

    }

 else

    {

     ModalResult == mrYes;

     Close();

    }

}

//---------------------------------------------------------------------------

void __fastcall TFormAdd_Client::FormClose(TObject *Sender,

      TCloseAction &Action)

{

 EditFam->Clear(); EditName->Clear();

 EditOtch->Clear();MaskEditGr->Clear();

 MEditDT->Clear();MEditRT->Clear();

 EditAdr->Clear();EditRab->Clear();

}

//---------------------------------------------------------------------------

Модуль DepCalc.cpp

//---------------------------------------------------------------------------

#include

 

#include

#pragma hdrstop

 

#include "DepCalc.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormDepCalc *FormDepCalc;

 

float ProcDepo = 0;

//---------------------------------------------------------------------------

__fastcall TFormDepCalc::TFormDepCalc(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormDepCalc::FormActivate(TObject *Sender)

{

 Application->Title = "Внимание";

 if (!DataModuleDepo->TbDeposit->Active) DataModuleDepo->TbDeposit->Active;

 if (!DataModuleDepo->TbVal->Active) DataModuleDepo->TbVal->Active;

 if (!DataModuleDepo->TbSrok->Active) DataModuleDepo->TbSrok->Active;

 

 CBNDep->Clear();

 CBNDep->Items->Add("Выберите");

 CBNDep->ItemIndex = 0;

 DataModuleDepo->TbDeposit->First();

 while (!DataModuleDepo->TbDeposit->Eof)

  {

   CBNDep->Items->Add(DataModuleDepo->TbDeposit->FieldByName("DNazv")->AsString);

   DataModuleDepo->TbDeposit->Next();

  }

 CBoxVal->Clear();

 CBoxVal->Items->Add("Выберите");

 CBoxVal->ItemIndex = 0;

 DataModuleDepo->TbVal->First();

 while (!DataModuleDepo->TbVal->Eof)

  {

   CBoxVal->Items->Add(DataModuleDepo->TbVal->FieldByName("NVal")->AsString);

   DataModuleDepo->TbVal->Next();

  }

 CBoxDay->ItemIndex = 0;

 CBoxMonth->ItemIndex = 0;

 CBoxYear->ItemIndex = 0;

 CBoxVal->ItemIndex = 0;

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormDepCalc::CBNDepChange(TObject *Sender)

{

 if (CBNDep->ItemIndex == 0)

 {

  CBoxVal->ItemIndex = 0;

  Abort();

 }

 CBoxSrok->Clear();

 CBoxSrok->Items->Add("Выберите");

 CBoxSrok->ItemIndex = 0;

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 AnsiString str = CBNDep->Items->Strings[CBNDep->ItemIndex];

 if (!DataModuleDepo->TbDeposit->Locate("DNazv",str,SearchOptions))

    {ShowMessage("ошибка в базе данных"); exit;}

 try

 {

  QrSr->Close();

  QrSr->Params->Items[0]->AsInteger = DataModuleDepo->TbDeposit->FieldByName("DCod")->AsInteger;

  QrSr->Open();

 }

 catch (EDatabaseError&)

 {

  QrSr->ExecSQL();

 }

 QrSr->First();

 while (!QrSr->Eof)

  {

   CBoxSrok->Items->Add(QrSr->FieldByName("SNazv")->AsString);

   QrSr->Next();

  }

 exet:

}

//---------------------------------------------------------------------------

 

void __fastcall TFormDepCalc::CBoxSrokChange(TObject *Sender)

{

   if (CBoxVal->ItemIndex == 0) CBoxVal->ItemIndex = 1;

   AnsiString str1 = CBNDep->Items->Strings[CBNDep->ItemIndex],

              str2 = CBoxVal->Items->Strings[CBoxVal->ItemIndex],

              str3 = CBoxSrok->Items->Strings[CBoxSrok->ItemIndex];

   int cop1, cop2, cop3;

   cop1 = DataModuleDepo->TbDeposit->Lookup("DNazv",str1,"DCod");

   cop2 = DataModuleDepo->TbVal->Lookup("NVal",str2,"CVal");

   cop3 = DataModuleDepo->TbSrok->Lookup("SNazv",str3,"CSrok");

   try

   {

    QrVoz->Close();

    QrVoz->Params->Items[0]->AsInteger = cop1;

    QrVoz->Params->Items[1]->AsInteger = cop2;

    QrVoz->Params->Items[2]->AsInteger = cop3;

    QrVoz->Open();

   }

   catch (EDatabaseError&)

   {

    QrVoz->ExecSQL();

   }

   QrVoz->First();

   ProcDepo = QrVoz->FieldByName("DPoc")->AsFloat;

   LblVoz->Caption = FloatToStr(QrVoz->FieldByName("DPoc")->AsFloat) + "  %  годовых";

 //

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormDepCalc::BtnClearClick(TObject *Sender)

{

 EditDep  ->Clear();

 CBNDep   ->ItemIndex = 0;

 CBoxVal  ->ItemIndex = 0;

 CBoxSrok ->ItemIndex = 0;

 CBoxDay->ItemIndex = 0; CBoxMonth->ItemIndex = 0; CBoxYear->ItemIndex = 0;

 LblVoz ->Caption = "";

 LblDatEnd ->Caption = "";

 LblSumVoz ->Caption = "";

 LblSumCap ->Caption = "";

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormDepCalc::BtnComputeClick(TObject *Sender)

{

 float Voz = 0, cop = 0;

 AnsiString str;

 bool FDate = false;

 float SumDep = 0;

 try

  {

   SumDep = StrToFloat(EditDep->Text);

  }

 catch(EConvertError&)

 {

  Application->MessageBox("Вы ввели ошибочное число","Повторите ввод",MB_OK);

  EditDep->SelectAll();

  EditDep->SetFocus();

 }

 catch(EOverflow&)

 {

  Application->MessageBox("Переполнение","Ошибка вычислений",MB_OK);

 }

 if (CBNDep->ItemIndex==0) {ShowMessage("Не указанна наименование депозита");goto ex;}

 if (CBoxVal->ItemIndex==0) {ShowMessage("Не указанна валюта депозита");goto ex;}

 if (EditDep->GetTextLen()==0) {ShowMessage("Не указанна сумма депозита");goto ex;}

 if (CBoxSrok->ItemIndex==0) {ShowMessage("Не указан срок депозита");goto ex;}

 if (!(CBoxDay->ItemIndex == 0 && CBoxMonth->ItemIndex == 0 && CBoxYear->ItemIndex == 0))

 if (CBoxDay->ItemIndex != 0 || CBoxMonth->ItemIndex != 0 || CBoxYear->ItemIndex != 0)

  {

    if (CBoxDay   -> ItemIndex == 0) {ShowMessage("Не указан день");goto ex;}

    if (CBoxMonth -> ItemIndex == 0) {ShowMessage("Не указан месяц");goto ex;}

    if (CBoxYear  -> ItemIndex == 0) {ShowMessage("Не указан год");goto ex;}

    FDate = true;

  }

 str = CBoxSrok->Items->Strings[CBoxSrok->ItemIndex];

 cop = DataModuleDepo->TbSrok->Lookup("SNazv",str,"Number");

 Voz = SumDep*(ProcDepo/(12 / cop)/100);

 LblSumVoz -> Caption = FloatToStr(Voz);

 Voz = SumDep + StrToFloat(LblSumVoz->Caption);

 LblSumCap -> Caption = FloatToStr(Voz);

 if (FDate)

  {

   TDateTime date;

   date = EncodeDate(StrToInt("20"+CBoxYear -> Text),StrToInt(CBoxMonth -> Text),StrToInt(CBoxDay -> Text));

   date = IncMonth(date, cop);

   LblDatEnd -> Caption =  FormatDateTime("d mmmm yyy г., день - dddd",date);

  }

 else LblDatEnd -> Caption = "неопр.";

 ex:

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormDepCalc::CBoxMonthChange(TObject *Sender)

{

 if (CBoxDay->ItemIndex != 0)

  {

    if (StrToInt(CBoxDay->Text) == 31)

    {

     Set Mon;

     Mon << 6 << 9 << 4 << 11;

     if (Mon.Contains(StrToInt(CBoxMonth->Text)))

     {

      CBoxDay->ItemIndex = 30;

      switch (StrToInt(CBoxMonth->Text)) {

        case 4 : ShowMessage("Апрель заканчивается 30 числа !"); break;

        case 6 : ShowMessage("Июнь заканчивается 30 числа !"); break;

        case 9 : ShowMessage("Сентябрь заканчивается 30 числа !"); break;

        case 11 : ShowMessage("Ноябрь заканчивается 30 числа !");

      }

     }

    }

   if (CBoxYear->ItemIndex != 0) CBoxYearChange(Sender);

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormDepCalc::CBoxYearChange(TObject *Sender)

{

 if (CBoxDay->ItemIndex != 0 && CBoxMonth->ItemIndex != 0)

  {

    if (StrToInt(CBoxDay->Text) > 28 && CBoxMonth->ItemIndex == 2)

    {

     if (fmod(StrToInt(CBoxYear->Text),4) != 0)

     {

      CBoxDay->ItemIndex = 28;

      ShowMessage("Неправильно указан день, Это високосный год, и месяц февраль");

     }

    }

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormDepCalc::CBoxDayChange(TObject *Sender)

{

 if (CBoxMonth->ItemIndex != 0 && CBoxYear->ItemIndex != 0)

  {

   CBoxMonthChange(Sender);

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormDepCalc::CBoxValChange(TObject *Sender)

{

 if (CBoxSrok->ItemIndex != 0 && CBNDep->ItemIndex != 0)

  {

   CBoxSrokChange(Sender);

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormDepCalc::FormClose(TObject *Sender,

      TCloseAction &Action)

{

 Application->Title = "Депозиты";       

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormDepCalc::FormKeyUp(TObject *Sender, WORD &Key,

      TShiftState Shift)

{

  if (Key == VK_ESCAPE) FormDepCalc->Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormDepCalc::EditDepKeyUp(TObject *Sender, WORD &Key,

      TShiftState Shift)

{

 if (Key == VK_RETURN) BtnComputeClick(Sender);

}

//---------------------------------------------------------------------------

Модуль UnitDop_Vsnos.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitDop_Vznos.h"

#include "Unit_Main.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormDop_Vznos *FormDop_Vznos;

//---------------------------------------------------------------------------

__fastcall TFormDop_Vznos::TFormDop_Vznos(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormDop_Vznos::FormShow(TObject *Sender)

{

 DataModuleDepo->TbDop_vznos->Open();

 DataModuleDepo->TbDepositor->MasterSource = DataModuleDepo->DSClient;

 DataModuleDepo->TbDepositor->MasterFields = "CClient";

 DataModuleDepo->TbDeposit->MasterSource = DataModuleDepo->DSDepositor;

 DataModuleDepo->TbDeposit->MasterFields = "CDeposit";

 DataModuleDepo->TbVal->MasterSource = DataModuleDepo->DSDepositor;

 DataModuleDepo->TbVal->MasterFields = "CVal";

}

//---------------------------------------------------------------------------

void __fastcall TFormDop_Vznos::BtnOKClick(TObject *Sender)

{

 

 float sum = 0,

       bsum = DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat,

       asum = 0;

 try

 {

   sum = StrToFloat(EditSum->Text);

 }

 catch(EConvertError&)

 {

  Application->MessageBox("Неправильный формат данных","Повторите ввод",MB_OK + MB_ICONEXCLAMATION);

  EditSum->SelectAll();

  EditSum->SetFocus();

  Abort();

 }

 

 AnsiString msum = "",nam = DataModuleDepo->TbVal->FieldByName("NVal")->AsString;

 if (nam == "тенге")

  {

   asum = DataModuleDepo->TbDeposit->FieldByName("ASumTen")->AsFloat;

   msum = FloatToStr(asum)+ " тенге";

  }

 if (nam == "доллары США")

  {

   asum = DataModuleDepo->TbDeposit->FieldByName("ASumDol")->AsFloat;

   msum = FloatToStr(asum)+ " $";

  }

 if (nam == "евро")

  {

   asum = DataModuleDepo->TbDeposit->FieldByName("ASumEur")->AsFloat;

   msum = FloatToStr(asum)+ " евро";

  }

 if (sum < asum)

  {

   Application->MessageBox(("Минимальная сумма дополнительного взноса составляет: " + msum).c_str(),"Повторите ввод",MB_OK + MB_ICONEXCLAMATION);

   EditSum->SelectAll();

   EditSum->SetFocus();

   Abort();

  }

 DataModuleDepo->TbDop_vznos->Append();

 DataModuleDepo->TbDop_vznos->FieldByName("CClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

 DataModuleDepo->TbDop_vznos->FieldByName("Old_sum")->AsFloat = bsum;

 DataModuleDepo->TbDop_vznos->FieldByName("New_sum")->AsFloat = bsum + sum;

 DataModuleDepo->TbDop_vznos->FieldByName("Dat")->AsDateTime = Date();

 DataModuleDepo->TbDop_vznos->Post();

 DataModuleDepo->TbDepositor->Edit();

 DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat = bsum + sum;

 DataModuleDepo->TbDepositor->Post();

 Application->MessageBox("Взнос произведен","",MB_OK + MB_ICONEXCLAMATION);

 Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormDop_Vznos::FormClose(TObject *Sender,

      TCloseAction &Action)

{

 DataModuleDepo->TbDepositor->MasterSource = NULL;

 DataModuleDepo->TbDepositor->MasterFields = "";

 DataModuleDepo->TbVal->MasterSource = NULL;

 DataModuleDepo->TbDeposit->MasterSource = NULL;

 DataModuleDepo->TbDeposit->MasterFields = "";

 DataModuleDepo->TbVal->MasterFields = "";

}

//---------------------------------------------------------------------------

void __fastcall TFormDop_Vznos::BtnCancelClick(TObject *Sender)

{

 Close();

}

//---------------------------------------------------------------------------

int days(TDateTime dat_1,TDateTime dat_2)

{

 unsigned short year1 = 0, month1 = 0, day1 =0,

                year2 = 0, month2 = 0, day2 =0;

 DecodeDate(dat_1,year1,month1,day1);

 DecodeDate(dat_2,year2,month2,day2);

 if (day1 < day2) day2 = day2 - day1; else day2 = 0;

 while(year1 < year2 || (month1 < month2 && year1 == year2))

  {

   DecodeDate(dat_1,year1,month1,day1);

   if (month1 == 1 || month1 == 3 || month1 == 5 || month1 == 7 || month1 == 8 ||

       month1 == 10 || month1 == 12) day2 += (31 - day1);

   if (month1 == 4 || month1 == 6 || month1 == 9 || month1 == 10)

    {

      day2 += (30 - day1);

    }

   if (month1 == 2)

    {

     if (IsLeapYear(year1))

       day2 += (28 - day1);

       else day2 += (29 - day1);

    }

   day2 += day1;

   dat_1 = IncMonth(dat_1);

   DecodeDate(dat_1,year1,month1,day1);

  }

 return day2;

}

 

 

void __fastcall TFormDop_Vznos::FormPaint(TObject *Sender)

{

 TDateTime d = DataModuleDepo->TbDepositor->FieldByName("Dat")->AsDateTime;

 if (days(d,Date()) > 3)

 {

   Hide();

   Application->MessageBox("Очередной взнос можно сделать только по истечении срока вклада","Операция прервана",MB_OK + MB_ICONEXCLAMATION);

   Close(); Abort();

 };

 

 DataModuleDepo->TbDop_vznos->Last();

 

 if (DataModuleDepo->TbDop_vznos->FieldByName("Dat")->AsDateTime == Date()&&

     DataModuleDepo->TbDop_vznos->FieldByName("CClient")->AsInteger == DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger)

 {

   Hide();

   Application->MessageBox("Очередной взнос можно сделать только завтра","Операция прервана",MB_OK + MB_ICONEXCLAMATION);

   Close(); Abort();

 }

 if (DataModuleDepo->TbDepositor->RecordCount == 0 ||

     DataModuleDepo->TbVal->RecordCount == 0 ||DataModuleDepo->TbDeposit->RecordCount == 0)

  {

   Hide();

   Application->MessageBox("Ошибка в базе данных, ","Операция прервана",MB_OK + MB_ICONINFORMATION);

   Close(); Abort();

  }

}

//---------------------------------------------------------------------------

Модуль UnitFind.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitFind.h"

#include "UnitModule.h"

#include "UnitView.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormFind *FormFind;

//---------------------------------------------------------------------------

__fastcall TFormFind::TFormFind(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

bool finding = false;

void __fastcall TFormFind::FormShow(TObject *Sender)

{

 BtnGo->Enabled = false;

 EditDat->Enabled = false;

 CheckBoxDat->Checked = false;

 EditFam->Clear(); EditName->Clear(); EditOtch->Clear();

 EditAdr->Clear();  EditRab->Clear();

}

//---------------------------------------------------------------------------

void __fastcall TFormFind::BtnBeginClick(TObject *Sender)

{

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 Variant locvalues[5];

 AnsiString fields = "", str = "";

 int i = 0;

 if (EditFam->GetTextLen() != 0){locvalues[i ++ ] = EditFam->Text.c_str();

         fields +="Fam"; str = EditFam->Text;}

 if (EditName->GetTextLen() != 0)

  {

   locvalues[i ++ ] = EditName->Text; str = EditName->Text;

   if (i != 0) fields += ";Name"; else fields += "Name";

  }

  if (EditOtch->GetTextLen() != 0)

  {

   locvalues[i ++ ] = EditOtch->Text; str = EditOtch->Text;

   if (i != 0) fields += ";Otch"; else fields += "Otch";

  }

  if (CheckBoxDat->Checked)

  {

   locvalues[i ++ ] = EditDat->Date;

   if (i != 0) fields += ";Dat"; else fields += "Dat";

  }

  if (EditAdr->GetTextLen() != 0)

  {

   locvalues[i ++ ] = EditAdr->Text; str = EditAdr->Text;

   if (i != 0) fields += ";Adr"; else fields += "Adr";

  }

  if (EditRab->GetTextLen() != 0)

  {

   locvalues[i ++ ] = EditRab->Text; str = EditRab->Text;

   if (i != 0) fields += ";Rab"; else fields += "Rab";

  }

 if (i != 1 && i !=0) {

 if (!DataModuleDepo->TbClient->Locate(fields,VarArrayOf(locvalues,i),SearchOptions))

    {ShowMessage("Клиент с такими данными в базе не найден"); Abort();}else

     {ShowMessage("Клиент с такими данными в базе найден");finding = true;BtnGo->Enabled = true;} }

 else

 {

  if (!CheckBoxDat->Checked)

  if (!DataModuleDepo->TbClient->Locate(fields,str,SearchOptions))

    {ShowMessage("Клиент с такими данными в базе не найден"); Abort();}else

    {ShowMessage("Клиент с такими данными в базе найден");finding = true;BtnGo->Enabled = true;}

 }

}

//---------------------------------------------------------------------------

void __fastcall TFormFind::CheckBoxDatClick(TObject *Sender)

{

 if (CheckBoxDat->Checked) EditDat->Enabled = true; else

                           EditDat->Enabled = false;

}

//---------------------------------------------------------------------------

 

void __fastcall TFormFind::BtnGoClick(TObject *Sender)

{

 if (finding)

  {

   FormFind->Previous();

   FormFind->Close();

  }

}

//---------------------------------------------------------------------------

Модуль Procent.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "Procent.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormProcent *FormProcent;

//---------------------------------------------------------------------------

__fastcall TFormProcent::TFormProcent(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TFormProcent::FormCreate(TObject *Sender)

{

 StGrid->Cells[0][0] = "     в % годовых";

 StGrid->Cells[0][1] = "                  в тенге";

 StGrid->Cells[0][2] = "   в долларах США";

 StGrid->Cells[0][3] = "                   в евро";

 LsBox->Clear();

 DataModuleDepo->TbDeposit->First();

 while (!DataModuleDepo->TbDeposit->Eof)

  {

    LsBox->Items->Add(DataModuleDepo->TbDeposit->FieldByName("DNazv")->AsString);

    DataModuleDepo->TbDeposit->Next();

  }

 LsBox->ItemIndex = 0;

 DataModuleDepo->TbDeposit->First();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormProcent::FormActivate(TObject *Sender)

{

 int i = 0, j = 1;

 bool fl = true;

 AnsiString str = LsBox->Items->Strings[LsBox->ItemIndex];

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 if (!DataModuleDepo->TbDeposit->Locate("DNazv", str, SearchOptions))

  {

   ShowMessage("Ошибка обращения к БД!");

   Abort();

  }

 AnsiString tit1 = FloatToStr(DataModuleDepo->TbDeposit->FieldByName("FSumTen")->AsFloat),

            tit2 = " тен., "+ FloatToStr(DataModuleDepo->TbDeposit->FieldByName("FSumDol")->AsFloat)+" $, ";

 LblSum->Caption = tit1+tit2+FloatToStr(DataModuleDepo->TbDeposit->FieldByName("FSumDol")->AsFloat)+" евро";

 int CDep = DataModuleDepo->TbDeposit->FieldByName("DCod")->AsInteger;

 DataModuleDepo->QRDC->SQL->Clear();

 DataModuleDepo->QRDC->SQL->Add("Select DProc.CVal, DProc.DPoc, DProc.CSrok, Srok.SNazv");

 DataModuleDepo->QRDC->SQL->Add("From DProc Left outer join Srok on DProc.CSrok = Srok.CSrok");

 DataModuleDepo->QRDC->SQL->Add("Where CDep = "+IntToStr(CDep));

 DataModuleDepo->QRDC->SQL->Add("Order By CVal, DPoc, DProc.CSrok");

 DataModuleDepo->QRDC->Open();

 DataModuleDepo->QRDC->First();

 

 StGrid->ColCount = DataModuleDepo->QRDC->RecordCount/3 + 1;

 

 int val = DataModuleDepo->QRDC->FieldByName("CVal")->AsInteger;

 while (!DataModuleDepo->QRDC->Eof)

  {

    StGrid->Cells[++i][j] = FloatToStr(DataModuleDepo->QRDC->FieldByName("DPoc")->AsFloat);

    DataModuleDepo->QRDC->Next();

    if (DataModuleDepo->QRDC->FieldByName("CVal")->AsInteger != val)

     {

       val = DataModuleDepo->QRDC->FieldByName("CVal")->AsInteger;

       i = 0;

       j++;

     }

  }

 DataModuleDepo->QRDC->First();

 val = DataModuleDepo->QRDC->FieldByName("CVal")->AsInteger;

 i = 0;

 while (!DataModuleDepo->QRDC->Eof)

  {

    if (DataModuleDepo->QRDC->FieldByName("CVal")->AsInteger == val)

      StGrid->Cells[++i][0] = DataModuleDepo->QRDC->FieldByName("SNazv")->AsString;

    else break;

    DataModuleDepo->QRDC->Next();

  }

}

//---------------------------------------------------------------------------

 

 

 

void __fastcall TFormProcent::FormKeyUp(TObject *Sender, WORD &Key,

      TShiftState Shift)

{

  if (Key ==VK_ESCAPE) FormProcent->Close();       

}

//---------------------------------------------------------------------------

 

void __fastcall TFormProcent::LsBoxClick(TObject *Sender)

{

 FormActivate(Sender);       

}

//---------------------------------------------------------------------------

 

Модуль UnitRep1.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitRep1.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormRep1 *FormRep1;

//---------------------------------------------------------------------------

__fastcall TFormRep1::TFormRep1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep1::FormShow(TObject *Sender)

{

 Q1->Open();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep1::FormClose(TObject *Sender, TCloseAction &Action)

{

 Q1->Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep1::FormPaint(TObject *Sender)

{

 Hide();

 QuickRep1->Preview();

 Close();

}

//---------------------------------------------------------------------------

МодульUnitRep2.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitRep2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormRep2 *FormRep2;

//---------------------------------------------------------------------------

__fastcall TFormRep2::TFormRep2(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormRep2::FormShow(TObject *Sender)

{

 AnsiString str = "";

 QTEN->Open(); QDOL->Open(); QEUR->Open();

 Tb->Open();

 Tb->First();

 while (!Tb->Eof) Tb->Delete();

 QTEN->First();

 QDOL->First();

 QEUR->First();

 while (!QTEN->Eof)

  {

   Tb->Append();

   Tb->FieldByName("CDep")->AsInteger = QTEN->FieldByName("CDep")->AsInteger;

   if (str != QTEN->FieldByName("DNazv")->AsString) Tb->FieldByName("DNazv")->AsString = QTEN->FieldByName("DNazv")->AsString;

   Tb->FieldByName("SNazv")->AsString = QTEN->FieldByName("SNazv")->AsString;

   Tb->FieldByName("Ten")->AsFloat = QTEN->FieldByName("DPoc")->AsFloat;

   Tb->FieldByName("Dol")->AsFloat = QDOL->FieldByName("DPoc")->AsFloat;

   Tb->FieldByName("Eur")->AsFloat = QEUR->FieldByName("DPoc")->AsFloat;

   str = QTEN->FieldByName("DNazv")->AsString;

   Tb->Post();

   QTEN->Next();

   QDOL->Next();

   QEUR->Next();

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep2::FormClose(TObject *Sender, TCloseAction &Action)

{

 QTEN->Close();

 QDOL->Close();

 QEUR->Close();

 Tb->Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep2::FormPaint(TObject *Sender)

{

 Hide();

 QuickRep1->Preview();

 Close();

}

//---------------------------------------------------------------------------

Модуль UnitRep3.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitRep3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormRep3 *FormRep3;

//---------------------------------------------------------------------------

__fastcall TFormRep3::TFormRep3(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormRep3::FormShow(TObject *Sender)

{

 Q1->Open();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep3::FormClose(TObject *Sender, TCloseAction &Action)

{

 Q1->Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep3::FormPaint(TObject *Sender)

{

 Hide();

 QuickRep1->Preview();

 Close();

}

//---------------------------------------------------------------------------

Модуль UnitRep4.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitRep4.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormRep4 *FormRep4;

//---------------------------------------------------------------------------

__fastcall TFormRep4::TFormRep4(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormRep4::FormShow(TObject *Sender)

{

 Q1->Open();       

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep4::FormClose(TObject *Sender, TCloseAction &Action)

{

 Q1->Close();       

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep4::FormPaint(TObject *Sender)

{

 Hide();

 QuickRep1->Preview();

 Close();       

}

//---------------------------------------------------------------------------

Модуль UnitRep5.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitRep5.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormRep5 *FormRep5;

//---------------------------------------------------------------------------

__fastcall TFormRep5::TFormRep5(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormRep5::FormShow(TObject *Sender)

{

 Q1->Open();       

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep5::FormClose(TObject *Sender, TCloseAction &Action)

{

 Q1->Close();       

}

//---------------------------------------------------------------------------

 

void __fastcall TFormRep5::FormPaint(TObject *Sender)

{

 Hide();

 QuickRep1->Preview();

 Close();       

}

//---------------------------------------------------------------------------

Модуль UnitValid_Client.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitValid_Client.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormValid_Client *FormValid_Client;

//---------------------------------------------------------------------------

__fastcall TFormValid_Client::TFormValid_Client(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormValid_Client::FormShow(TObject *Sender)

{

 int a1 = 0, a2 = 0,a3 = 0;

 a1 = DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger;

 a2 = DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger;

 a3 = DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger;

 DataModuleDepo->TbDepositor->MasterSource = NULL;

 DataModuleDepo->TbDepositor->MasterFields = "";

 CBoxDep->Clear();

 CBoxDep->Items->Add("Выберите");

 CBoxDep->ItemIndex = 0;

 DataModuleDepo->TbDeposit->First();

 while (!DataModuleDepo->TbDeposit->Eof)

  {

   CBoxDep->Items->Add(DataModuleDepo->TbDeposit->FieldByName("DNazv")->AsString);

   DataModuleDepo->TbDeposit->Next();

  }

 CBoxVal->Clear();

 CBoxVal->Items->Add("Выберите");

 CBoxVal->ItemIndex = 0;

 DataModuleDepo->TbVal->First();

 while (!DataModuleDepo->TbVal->Eof)

  {

   CBoxVal->Items->Add(DataModuleDepo->TbVal->FieldByName("NVal")->AsString);

   DataModuleDepo->TbVal->Next();

  }

 CBoxDep->ItemIndex = a1;

 CBoxVal->ItemIndex = a2;

 CBoxDepChange(Sender);

 CBoxSrk->ItemIndex = a3;

 PgControl->ActivePageIndex = 0;

 if (EditFam->CanFocus())

  {

   EditFam->SelectAll();

   EditFam->SetFocus();

  }

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::CBoxDepChange(TObject *Sender)

{

 if (CBoxDep->ItemIndex == 0) Abort();

 CBoxSrk->Clear();

 CBoxSrk->Items->Add("Выберите");

 CBoxSrk->ItemIndex = 0;

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 AnsiString str = CBoxDep->Items->Strings[CBoxDep->ItemIndex];

 if (!DataModuleDepo->TbDeposit->Locate("DNazv",str,SearchOptions))

    {ShowMessage("ошибка в базе данных"); exit;}

 AnsiString CodeDepo = IntToStr(DataModuleDepo->TbDeposit->FieldByName("DCod")->AsInteger);

 try

 {

  DataModuleDepo->QRDC->SQL->Clear();

  DataModuleDepo->QRDC->SQL->Add("Select Distinct Srok.SNazv,Srok.CSrok From Deposit,Srok, DProc");

  DataModuleDepo->QRDC->SQL->Add("Where ( DProc.CDep  =  "+CodeDepo+") AND (DProc.CVal = 1) AND (Srok.CSrok = DProc.CSrok)");

  DataModuleDepo->QRDC->SQL->Add("ORDER BY Srok.CSrok");

  DataModuleDepo->QRDC->Open();

 }

 catch (EDatabaseError&)

 {

  DataModuleDepo->QRDC->ExecSQL();

 }

 DataModuleDepo->QRDC->First();

 while (!DataModuleDepo->QRDC->Eof)

  {

   CBoxSrk->Items->Add(DataModuleDepo->QRDC->FieldByName("SNazv")->AsString);

   DataModuleDepo->QRDC->Next();

  }

       

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::FormKeyPress(TObject *Sender, char &Key)

{

 if (Key == VK_RETURN) Perform(WM_NEXTDLGCTL,0,0);

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::BtnCloseClick(TObject *Sender)

{

 FormValid_Client->ModalResult = mrCancel;

 Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::PgControlChange(TObject *Sender)

{

 if (PgControl->ActivePageIndex == 0) BtnLast->Enabled = false; else BtnLast->Enabled = true;

 if (PgControl->ActivePageIndex == 2) BtnNext->Enabled = false; else BtnNext->Enabled = true;        

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::BtnLastClick(TObject *Sender)

{

 PgControl->ActivePageIndex --;

 PgControlChange(Sender);

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::BtnNextClick(TObject *Sender)

{

 PgControl->ActivePageIndex ++;

 PgControlChange(Sender);

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::BtnOKClick(TObject *Sender)

{

 if (EditFam->GetTextLen() == 0)

  {

   Application->MessageBox("Не указанна фамилия клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditFam->SetFocus();

   Abort();

  }

 if (EditName->GetTextLen() == 0)

  {

   Application->MessageBox("Не указанна имя клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditName->SetFocus();

   Abort();

  }

 if (EditOtch->GetTextLen() == 0)

  {

   Application->MessageBox("Не указан отчество клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditOtch->SetFocus();

   Abort();

  }

 if (MaskEditGr->GetTextLen() == 0)

  {

   Application->MessageBox("Не указан год рождения клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   MaskEditGr->SetFocus();

   Abort();

  }

 if (EditAdr->GetTextLen() == 0)

  {

   Application->MessageBox("Не указан адрес проживания клиента","Внимание",MB_OK);

   PgControl->ActivePageIndex = 0;

   EditAdr->SetFocus();

   Abort();

  }

 if (CBoxDep->ItemIndex == 0)

  {

   Application->MessageBox("Не указанна наименование депозита","Внимание",MB_OK);

   CBoxDep->SetFocus();

   Abort();

  }

 if (CBoxSrk->ItemIndex == 0)

  {

   Application->MessageBox("Не указан срок депозита","Внимание",MB_OK);

   CBoxSrk->SetFocus();

   Abort();

  }

 if (CBoxVal->ItemIndex == 0)

  {

   Application->MessageBox("Не указанна валюта депозита","Внимание",MB_OK);

   CBoxVal->SetFocus();

   Abort();

  }

 if (EditSum->GetTextLen() == 0)

  {

   Application->MessageBox("Не указанна сумма депозита","Внимание",MB_OK);

   EditSum->SetFocus();

   Abort();

  }

 float SumDep = 0;

 try

  {

   SumDep = StrToFloat(EditSum->Text);

  }

 catch(EConvertError&)

 {

  Application->MessageBox("Вы ввели ошибочное число","Повторите ввод",MB_OK);

  EditSum->SelectAll();

  EditSum->SetFocus();

  Abort();

 }

 catch(EOverflow&)

 {

  Application->MessageBox("Переполнение","Ошибка вычислений",MB_OK);

  Abort();

 }

 DataModuleDepo->TbDepositor->Edit();

 DataModuleDepo->TbClient->Edit();

 DataModuleDepo->TbClient->FieldByName("Fam")->AsString = EditFam->Text;

 DataModuleDepo->TbClient->FieldByName("Name")->AsString = EditName->Text;

 DataModuleDepo->TbClient->FieldByName("Otch")->AsString = EditOtch->Text;

 DataModuleDepo->TbClient->FieldByName("Dat")->AsDateTime = StrToDateTime(MaskEditGr->Text);

 DataModuleDepo->TbClient->FieldByName("Adr")->AsString = EditAdr->Text;

 DataModuleDepo->TbClient->FieldByName("Rab")->AsString = EditRab->Text;

 DataModuleDepo->TbClient->FieldByName("DTel")->AsString = MEditDT->Text;

 DataModuleDepo->TbClient->FieldByName("RTel")->AsString = MEditRT->Text;

 AnsiString mes = "";

 float sum = 0;

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 AnsiString str = CBoxDep->Items->Strings[CBoxDep->ItemIndex];

 if (!DataModuleDepo->TbDeposit->Locate("DNazv",str,SearchOptions))

    {ShowMessage("ошибка в базе данных"); exit;}

 str = CBoxSrk->Items->Strings[CBoxSrk->ItemIndex];

 if (!DataModuleDepo->TbSrok->Locate("SNazv",str,SearchOptions))

    {ShowMessage("ошибка в базе данных"); exit;}

 str = CBoxVal->Items->Strings[CBoxVal->ItemIndex];

 if (!DataModuleDepo->TbVal->Locate("NVal",str,SearchOptions))

    {ShowMessage("ошибка в базе данных"); exit;}

 

 if (CBoxVal->Items->Strings[CBoxVal->ItemIndex] == "тенге") sum = DataModuleDepo->TbDeposit->FieldByName("FSumTen")->AsFloat;

 if (CBoxVal->Items->Strings[CBoxVal->ItemIndex] == "доллары США") sum = DataModuleDepo->TbDeposit->FieldByName("FSumDol")->AsFloat;

 if (CBoxVal->Items->Strings[CBoxVal->ItemIndex] == "евро") sum = DataModuleDepo->TbDeposit->FieldByName("FSumEur")->AsFloat;

  {

   if (StrToFloat(EditSum->Text) < sum)

    {

      mes = "Минимальная сумма первоначального взноса : " + FloatToStr(DataModuleDepo->TbDeposit->FieldByName("FSumTen")->AsFloat)+" "+CBoxVal->Items->Strings[CBoxVal->ItemIndex];

      Application->MessageBox(mes.c_str(), "ВНИМАНИЕ",MB_OK);

      EditSum->SelectAll();

      EditSum->SetFocus();

      Abort();

    }

  }

 DataModuleDepo->TbDepositor->FieldByName("CClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger = DataModuleDepo->TbDeposit->FieldByName("DCod")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger = DataModuleDepo->TbVal->FieldByName("CVal")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger = DataModuleDepo->TbSrok->FieldByName("CSrok")->AsInteger;

 DataModuleDepo->TbDepositor->FieldByName("Dat")->AsDateTime = DateTimeToStr(Date());

 DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat = StrToFloat(EditSum->Text);

 DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat = 0;

 DataModuleDepo->TbDepositor->FieldByName("BDate")->AsDateTime = DateTimeToStr(Date());

 try

 {

  DataModuleDepo->TbClient->Post();

  DataModuleDepo->TbDepositor->Post();

 }

 catch(EDatabaseError&)

 {

  Application->MessageBox("Неверные данные, операция отменяется","Ошибка",MB_OK);

  DataModuleDepo->TbClient->Cancel();

  DataModuleDepo->TbDepositor->Cancel();

  Abort();

 }

 Application->MessageBox("Данные были успешно изменены","Изменение",MB_OK);

 ModalResult = mrYes;

 Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TFormValid_Client::FormClose(TObject *Sender,

      TCloseAction &Action)

{

 EditFam->Clear(); EditName->Clear();

 EditOtch->Clear();MaskEditGr->Clear();

 MEditDT->Clear();MEditRT->Clear();

 EditAdr->Clear();EditRab->Clear();

}

//---------------------------------------------------------------------------

 

int days(TDateTime dat_1,TDateTime dat_2)

{

 unsigned short year1 = 0, month1 = 0, day1 =0,

                year2 = 0, month2 = 0, day2 =0;

 DecodeDate(dat_1,year1,month1,day1);

 DecodeDate(dat_2,year2,month2,day2);

 if (day1 < day2) day2 = day2 - day1; else day2 = 0;

 while(year1 < year2 || (month1 < month2 && year1 == year2))

  {

   DecodeDate(dat_1,year1,month1,day1);

   if (month1 == 1 || month1 == 3 || month1 == 5 || month1 == 7 || month1 == 8 ||

       month1 == 10 || month1 == 12) day2 += (31 - day1);

   if (month1 == 4 || month1 == 6 || month1 == 9 || month1 == 10)

    {

      day2 += (30 - day1);

    }

   if (month1 == 2)

    {

     if (IsLeapYear(year1))

       day2 += (28 - day1);

       else day2 += (29 - day1);

    }

   day2 += day1;

   dat_1 = IncMonth(dat_1);

   DecodeDate(dat_1,year1,month1,day1);

  }

 return day2;

}

 

void __fastcall TFormValid_Client::FormPaint(TObject *Sender)

{

 TDateTime d;

 if (DataModuleDepo->QRGen->Active)

 d = DataModuleDepo->QRGen->FieldByName("BDate")->AsDateTime;else

 d = DataModuleDepo->TbDepositor->FieldByName("BDate")->AsDateTime;;

 if (days(d,Date()) > 3)

 {

   Hide();

   Application->MessageBox("Изменение недопустимо","Операция прервана",MB_OK + MB_ICONEXCLAMATION);

   Close(); Abort();

 };

}

//---------------------------------------------------------------------------

Модуль UnitView.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitView.h"

#include "UnitModule.h"

#include "Unit_Main.h"

#include "Add_Client.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormView *FormView;

//---------------------------------------------------------------------------

__fastcall TFormView::TFormView(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormView::DBGrid1KeyUp(TObject *Sender, WORD &Key,

      TShiftState Shift)

{

 if (DataModuleDepo->TbClient->RecordCount != 0 && (Key == VK_UP || Key == VK_DOWN))

 {

  DataModuleDepo->QRGen->Close();

  DataModuleDepo->QRGen->ParamByName("CodeClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

  DataModuleDepo->QRGen->Open();

  LblSumV->Caption = FormatFloat("0.00",DataModuleDepo->QRGen->FieldByName("VSum")->AsFloat) + "  " +

  DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  LblSum->Caption = FormatFloat("0.00",DataModuleDepo->QRGen->FieldByName("BSum")->AsFloat) + "  " +

  DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  LblBDate->Caption = FormatDateTime("d mmmm yyy г.",DataModuleDepo->QRGen->FieldByName("BDate")->AsDateTime);

  LblDat->Caption = FormatDateTime("d mmmm yyy г.",DataModuleDepo->QRGen->FieldByName("Dat")->AsDateTime);

  AnsiString st1 = "", st2 = "", nam = DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  if (nam == "тенге")

   {

    st1 = FloatToStr(DataModuleDepo->QRGen->FieldByName("FSumTen")->AsFloat);

    st2 = FloatToStr(DataModuleDepo->QRGen->FieldByName("ASumTen")->AsFloat);

   }

  if (nam == "доллары США")

   {

    st1 = FloatToStr(DataModuleDepo->QRGen->FieldByName("FSumDol")->AsFloat);

    st2 = FloatToStr(DataModuleDepo->QRGen->FieldByName("ASumDol")->AsFloat);

   };

  if (nam == "евро")

   {

    st1 = FloatToStr(DataModuleDepo->QRGen->FieldByName("FSumEur")->AsFloat);

    st2 = FloatToStr(DataModuleDepo->QRGen->FieldByName("ASumEur")->AsFloat);

   }

  LblMSum->Caption = st1 + "  " + DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  LblMSumD->Caption = st2 + "  " + DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

 

 }

}

//---------------------------------------------------------------------------

void __fastcall TFormView::DBNavigator1Click(TObject *Sender,

      TNavigateBtn Button)

{

 if (DataModuleDepo->TbClient->RecordCount != 0)

 {

  DataModuleDepo->QRGen->Close();

  DataModuleDepo->QRGen->ParamByName("CodeClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

  DataModuleDepo->QRGen->Open();

  Action_ReadExecute(Sender);

 }

}

//---------------------------------------------------------------------------

void __fastcall TFormView::FormKeyPress(TObject *Sender, char &Key)

{

 if (Key == VK_ESCAPE)

  {

   Close();

  }

}

//---------------------------------------------------------------------------

void __fastcall TFormView::FormShow(TObject *Sender)

{

 Form_Main->Cli_Edit->Enabled = true;

 Form_Main->Cli_Find->Enabled = true;

 Form_Main->Serve_voz->Enabled = true;

 Form_Main->Serve_vyp->Enabled = true;

 //Form_Main->Serve_Copy->Enabled = true;

 Form_Main->Serve_Vznos->Enabled = true;

 Form_Main->TBtnEdit->Enabled = true;

 Form_Main->TBtnFind->Enabled = true;

 Form_Main->TBtnVozn->Enabled = true;

 Form_Main->TBtnVznos->Enabled = true;

 Form_Main->TBtnVyp->Enabled = true;

 DataModuleDepo->TbClient->First();

 ActionList_->Actions[0]->Execute();

}

//---------------------------------------------------------------------------

void __fastcall TFormView::FormClose(TObject *Sender, TCloseAction &Action)

{

 Form_Main->Cli_Edit->Enabled = false;

 Form_Main->Cli_Find->Enabled = false;

 Form_Main->Serve_voz->Enabled = false;

 Form_Main->Serve_vyp->Enabled = false;

 //Form_Main->Serve_Copy->Enabled = false;

 Form_Main->Serve_Vznos->Enabled = false;

 Form_Main->TBtnEdit->Enabled = false;

 Form_Main->TBtnFind->Enabled = false;

 Form_Main->TBtnVozn->Enabled = false;

 Form_Main->TBtnVznos->Enabled = false;

 Form_Main->TBtnVyp->Enabled = false;

 DataModuleDepo->QRGen->Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormView::Action_ReadExecute(TObject *Sender)

{

  if (DataModuleDepo->TbClient->RecordCount != 0)

 {

  DataModuleDepo->QRGen->Close();

  DataModuleDepo->QRGen->ParamByName("CodeClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

  DataModuleDepo->QRGen->Open();

  LblSumV->Caption = FormatFloat("0.00",DataModuleDepo->QRGen->FieldByName("VSum")->AsFloat) + "  " +

  DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  LblSum->Caption = FormatFloat("0.00",DataModuleDepo->QRGen->FieldByName("BSum")->AsFloat) + "  " +

  DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  LblBDate->Caption = FormatDateTime("d mmmm yyy г.",DataModuleDepo->QRGen->FieldByName("BDate")->AsDateTime);

  LblDat->Caption = FormatDateTime("d mmmm yyy г.",DataModuleDepo->QRGen->FieldByName("Dat")->AsDateTime);

  AnsiString st1 = "", st2 = "", nam = DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  if (nam == "тенге")

   {

    st1 = FloatToStr(DataModuleDepo->QRGen->FieldByName("FSumTen")->AsFloat);

    st2 = FloatToStr(DataModuleDepo->QRGen->FieldByName("ASumTen")->AsFloat);

   }

  if (nam == "доллары США")

   {

    st1 = FloatToStr(DataModuleDepo->QRGen->FieldByName("FSumDol")->AsFloat);

    st2 = FloatToStr(DataModuleDepo->QRGen->FieldByName("ASumDol")->AsFloat);

   };

  if (nam == "евро")

   {

    st1 = FloatToStr(DataModuleDepo->QRGen->FieldByName("FSumEur")->AsFloat);

    st2 = FloatToStr(DataModuleDepo->QRGen->FieldByName("ASumEur")->AsFloat);

   }

  LblMSum->Caption = st1 + "  " + DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

  LblMSumD->Caption = st2 + "  " + DataModuleDepo->QRGen->FieldByName("NVal")->AsString;

 }

 

}

//---------------------------------------------------------------------------

 

 

void __fastcall TFormView::DBGrid1CellClick(TColumn *Column)

{

 ActionList_->Actions[0]->Execute();

}

//---------------------------------------------------------------------------

Модуль UnitVozn.cpp

//---------------------------------------------------------------------------

 

#include

#pragma hdrstop

 

#include "UnitVozn.h"

#include "UnitModule.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormVozn *FormVozn;

//---------------------------------------------------------------------------

__fastcall TFormVozn::TFormVozn(TComponent* Owner)

        : TForm(Owner)

{

}

float Voz = 0;

//---------------------------------------------------------------------------

 

void __fastcall TFormVozn::FormClose(TObject *Sender, TCloseAction &Action)

{

 DataModuleDepo->TbVozn->Close();

 DataModuleDepo->TbDepositor->Filtered = false;

 DataModuleDepo->TbDeposit->MasterSource = NULL;

 DataModuleDepo->TbDeposit->MasterFields = "";

}

//---------------------------------------------------------------------------

 

void __fastcall TFormVozn::BtnOKClick(TObject *Sender)

{

   float Vyp = 0;

   try

   {

    Vyp = StrToFloat(EditVyp->Text);

   }

   catch(EConvertError&)

   {

    Application->MessageBox("Неправильный формат данных","Повторите ввод",MB_OK + MB_ICONEXCLAMATION);

   }

   if (Voz<=1000)

     {

       Application->MessageBox("Необходимо выплатить всю сумму вознагр.","Повторите ввод",MB_OK + MB_ICONEXCLAMATION);

       EditVyp->SelectAll();

       EditVyp->SetFocus();

       Abort();

     }

   if (StrToFloat(EditVyp->Text)>StrToFloat(EditVoz->Text))

     {

       Application->MessageBox("Сумма выплаты не может превышать суммы вознагр.","Повторите ввод",MB_OK + MB_ICONEXCLAMATION);

       EditVyp->SelectAll();

       EditVyp->SetFocus();

       Abort();

     }

   if (0.1*Voz>StrToFloat(EditVyp->Text))

     {

       Application->MessageBox("Минимальная сумма выплаты составляет 10% от суммы вознагр.","Повторите ввод",MB_OK + MB_ICONEXCLAMATION);

       EditVyp->SelectAll();

       EditVyp->SetFocus();

       Abort();

     }

   if (Application->MessageBox("Вы уверены?",

                             "Потверждение выплаты",MB_YESNO + MB_ICONEXCLAMATION) == IDYES)

     {

      DataModuleDepo->TbVozn->Append();

      DataModuleDepo->TbVozn->FieldByName("VSum")->AsFloat = Vyp;

      TDateTime d = d.CurrentDateTime();

      DataModuleDepo->TbVozn->FieldByName("Dat")->AsDateTime = d;

      DataModuleDepo->TbVozn->FieldByName("CClient")->AsInteger = DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger;

      DataModuleDepo->TbVozn->Post();

      DataModuleDepo->TbDepositor->Edit();

      DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat = DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat - Vyp;

      DataModuleDepo->TbDepositor->Post();

      Close();

     }

    

}

//---------------------------------------------------------------------------

 

 

 

void __fastcall TFormVozn::FormPaint(TObject *Sender)

{

 DataModuleDepo->TbVozn->Open();

 TLocateOptions SearchOptions;

 SearchOptions << loPartialKey << loCaseInsensitive;

 DataModuleDepo->TbDepositor->Filter = "CClient="+IntToStr(DataModuleDepo->TbClient->FieldByName("CClient")->AsInteger);

 DataModuleDepo->TbDepositor->Filtered = true;

 if (DataModuleDepo->TbDepositor->RecordCount == 0)

    {FormVozn->Hide();ShowMessage("запись не найдена"); Close(); Abort();}

 

 try

 {

  EditVoz->Text = FloatToStr(DataModuleDepo->TbDepositor->FieldByName("VSum")->AsFloat);

 }

 catch(EDatabaseError&)

 {

  Application->MessageBox("Ошибка",

                             "Сообщение",MB_OK + MB_ICONEXCLAMATION);

  Abort();

 }

 int depo = DataModuleDepo->TbDepositor->FieldByName("CDeposit")->AsInteger,

     val  = DataModuleDepo->TbDepositor->FieldByName("CVal")->AsInteger,

     srok = DataModuleDepo->TbDepositor->FieldByName("CSrok")->AsInteger;

 Variant locvalues[] = {depo,val,srok};

 if (!DataModuleDepo->TbProc->Locate("CDep;CVal;CSrok",VarArrayOf(locvalues,2),SearchOptions))

    {ShowMessage("запись не найдена"); Abort();}

 float ProcDepo = DataModuleDepo->TbProc->FieldByName("DPoc")->AsFloat,

       SumDep = DataModuleDepo->TbDepositor->FieldByName("BSum")->AsFloat;

 int cop = DataModuleDepo->TbSrok->Lookup("CSrok",srok,"Number");

 Voz = SumDep*(ProcDepo/(12 / cop)/100);

 EditVyp->Text = FloatToStr(Voz);

 EditVyp->SelectAll();

 EditVyp->SetFocus();

 

}

//---------------------------------------------------------------------------

 

Сурет 1.1 - Информационная структурная схема систем банка «ТуранАлем»

  

Сурет 1.2 - Информационная взаимосвязь задач подсистемы «Физическим лицам»

 

  

Сурет 2.1 - Структурная схема Подсистемы «Депозит»

 

 

Сурет 3.1 - Алгоритм обращения к задачам подсистемы «Депозит» банка

 

  

Сурет 3.5 - Информационная взаимосвязь приложений базы данных

 

 

 

 

Мәлімет сізге көмек берді ма

  Жарияланған-2013-11-19 20:28:58     Қаралды-13082

АДАМ ОТТЫ ҚАЛАЙ "БАҒЫНДЫРДЫ"?

...

Ежелгі адам көп нәрседен қорқады: ...

ТОЛЫҒЫРАҚ »

ЖҰМЫРТҚА НЕГЕ СОПАҚ ПІШІНДЕ?

...

Сопақ пішіні жұмыртқалар үшін ең оңтайлы болып табылады.

ТОЛЫҒЫРАҚ »

АРА НЕ БЕРЕДІ?

...

Аралар - біздің әлемде маңызды рөл атқаратын кішкентай, бірақ өте маңызды жәндіктер.

ТОЛЫҒЫРАҚ »

НЕЛІКТЕН КЕМПІРҚОСАҚ ДОҒА ТӘРІЗДІ?

...

Адамдар бұл сұрақты көптен бері қойып келеді.

ТОЛЫҒЫРАҚ »

КЕМПРҚОСАҚ ДЕГЕНІМІЗ НЕ?

...

Адамдар бұл ең әдемі табиғат құбылысының табиғаты туралы бұрыннан қызықтырды.

ТОЛЫҒЫРАҚ »

АЮЛАР НЕГЕ ҚЫСТАЙДЫ?

...

Ұйықта қысқы ұйқы аюларға қыстың аш маусымынан аман өтуіне көмектеседі.

ТОЛЫҒЫРАҚ »

МАҚТАДАН НЕ ЖАСАУҒА БОЛАДЫ?

...

Мақта – тамаша талшық беретін өте бағалы өсімдік.

ТОЛЫҒЫРАҚ »

НЕГЕ АНТАРКТИКА ЕҢ СУЫҚ КҮНТИНЕНТ?

...

Жер шарындағы ең суық аймақтар – полюстер.

ТОЛЫҒЫРАҚ »

АНТИБӨЛШЕКТЕР ДЕГЕНІМІЗ НЕ?

...

«Анти» сөзінің мағынасын елестету үшін қағаз парағын алып...

ТОЛЫҒЫРАҚ »