ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния «Автосалон»

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

MySQLсвободная рСляционная систСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ MySQL осущСствляСт корпорация Oracle, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°Ρ ΠΏΡ€Π°Π²Π° Π½Π° Ρ‚ΠΎΡ€Π³ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ€ΠΊΡƒ вмСстС с ΠΏΠΎΠ³Π»ΠΎΡ‰Ρ‘Π½Π½ΠΎΠΉ Sun Microsystems, которая Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° ΡˆΠ²Π΅Π΄ΡΠΊΡƒΡŽ компанию MySQL AB. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π‘Π£Π‘Π” MySQL обСспСчиваСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ большого количСства Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚ΠΈΠΏΠ° MyISAM, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния «Автосалон» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ спроСктировнна Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… «ΠΠ²Ρ‚осалон» ΠΏΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°ΠΌ Π‘Π£Π‘Π” MicroSoft Office Access. Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΡΠ΅Π±Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, ΠΏΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. ВсС связи Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ ΠΎΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π»Π°ΡΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΡΡ€Π΅Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΠΊΠΈ C++ Builder Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «ΠΠ²Ρ‚осалон» для обслуТивания ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ возмоТности просмотра, добавлСния, рСдактирования ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ язык запросов SQL.

builder Ρ‚Π°Π±Π»ΠΈΡ†Π° запрос msaccess

1. Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π—Π°Π΄Π°Π½ΠΈΠ΅:

Π‘ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… «ΠΠ²Ρ‚осалон»;

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «ΠΠ²Ρ‚осалон», для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… «ΠΠ²Ρ‚осалон».

2. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

2.1 Π’Ρ‹Π±ΠΎΡ€ Π‘Π£Π‘Π” Для выполнСния поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π’. ΠΊ Π² Π΄Π°Π½Π½ΠΎΠ΅ врСмя сущСствуСт мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… субд, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ условиями: сСтСвой интСрфСйс, рСляционная систСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, кроссплатформСнная api (c++).

Под эти критСрия подходят нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²: MySQL, MSSQL, MSAccess. Рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

2.1.1 MSSQL

MSSQL-систСма управлСния рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π Π‘Π”), разработанная ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Microsoft. Основной ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ язык запросов — Transact-SQL, создан совмСстно Microsoft ΠΈ Sybase. Transact-SQL являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ стандарта ANSI/ISO ΠΏΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ языку запросов (SQL) с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° прСдприятия; ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π‘Π£Π‘Π” Π² ΡΡ‚ΠΎΠΌ сСгмСнтС Ρ€Ρ‹Π½ΠΊΠ°. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ сСрвСр.

2.1.2 MySQL

MySQLсвободная рСляционная систСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ MySQL осущСствляСт корпорация Oracle, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°Ρ ΠΏΡ€Π°Π²Π° Π½Π° Ρ‚ΠΎΡ€Π³ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ€ΠΊΡƒ вмСстС с ΠΏΠΎΠ³Π»ΠΎΡ‰Ρ‘Π½Π½ΠΎΠΉ Sun Microsystems, которая Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° ΡˆΠ²Π΅Π΄ΡΠΊΡƒΡŽ компанию MySQL AB. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π‘Π£Π‘Π” MySQL обСспСчиваСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ большого количСства Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚ΠΈΠΏΠ° MyISAM, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ полнотСкстовый поиск, Ρ‚Π°ΠΊ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ InnoDB, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… записСй. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π‘Π£Π‘Π” MySQL поставляСтся со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ† EXAMPLE, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ создания Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†. Благодаря ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΈ GPL-Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π² Π‘Π£Π‘Π” MySQL постоянно ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ‚Π°Π±Π»ΠΈΡ†. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ сСрвСр.

2.1.3 Microsoft Access

Microsoft Access — рСляционная субд ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ Microsoft. Π˜ΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ связанныС запросы, связь с Π²Π½Π΅ΡˆΠ½ΠΈΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Благодаря встроСнному языку VBA, Π² ΡΠ°ΠΌΠΎΠΌ Access ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π―Π·Ρ‹ΠΊ запросов Transact-SQL. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, Π½Π΅Ρ‚ нСобходимости ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ. Достаточно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΈΠ» Π±Π°Π·Ρ‹.

2.2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Из Π²Ρ‹ΡˆΠ΅ пСрСчислСнных Π‘Π£Π‘Π”, Π±ΠΎΠ»Π΅Π΅ подходящая для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния «ΠΠ²Ρ‚осалон» являСтся MS Access. ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Рисунок 1 — ER-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 1, Π² Π±Π°Π·Π΅ присутствуСт 10 Ρ‚Π°Π±Π»ΠΈΡ†. ОпишСм структуру ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ….

Π’Π°Π±Π»ΠΈΡ†Π° «ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ» ΠΈΠΌΠ΅Π΅Ρ‚ 2 поля: «ΠšΠΎΠ΄ производитСля» ΠΈ «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ производитСля». «ΠšΠΎΠ΄ производитСля» ΠΈΠΌΠ΅Π΅Ρ‚ числовой Ρ‚ΠΈΠΏ, Π° «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ производитСля» — строковый.

Π’Π°Π±Π»ΠΈΡ†Π° «ΠœΠΎΠ΄Π΅Π»ΡŒ» ΠΈΠΌΠ΅Π΅Ρ‚ 3 поля: «ΠšΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ», «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ» ΠΈ «ΠšΠΎΠ΄ производитСля (FK)». «ΠšΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ» ΠΈ «ΠšΠΎΠ΄ производитСля (FK)» ΠΈΠΌΠ΅ΡŽΡ‚ числовой Ρ‚ΠΈΠΏ, Π° «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ» — строковый. «ΠšΠΎΠ΄ производитСля (FK)» — внСшний ΠΊΠ»ΡŽΡ‡ для связи с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ «ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ» .

Π’Π°Π±Π»ΠΈΡ†Π° «ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ация» ΠΈΠΌΠ΅Π΅Ρ‚ 7 ΠΏΠΎΠ»Π΅ΠΉ: «ΠšΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ», «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ», «ΠšΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ (FK)», «Π¦Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ», «Π“ΠΎΠ΄ выпуска», «Π’ΠΈΠΏ ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π°» ΠΈ «Π’ΠΈΠΏ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°». «ΠšΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ», «ΠšΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ (FK)», «Π¦Π΅Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ» ΠΈ «Π“ΠΎΠ΄ выпуска» ΠΈΠΌΠ΅ΡŽΡ‚ числовой Ρ‚ΠΈΠΏ, Π° «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ», «Π’ΠΈΠΏ ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π°» ΠΈ «Π’ΠΈΠΏ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°» — строковый. «ΠšΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ (FK)» — внСшний ΠΊΠ»ΡŽΡ‡ для связи с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ «ΠœΠΎΠ΄Π΅Π»ΡŒ» .

Π’Π°Π±Π»ΠΈΡ†Π° «Π¦Π²Π΅Ρ‚» ΠΈΠΌΠ΅Π΅Ρ‚ 3 поля: «ΠšΠΎΠ΄ Ρ†Π²Π΅Ρ‚Π°», «Π’ΠΈΠΏ Ρ†Π²Π΅Ρ‚Π°» ΠΈ «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°» .

Π’Π°Π±Π»ΠΈΡ†Π° «ΠšΠ»ΠΈΠ΅Π½Ρ‚» ΠΈΠΌΠ΅Π΅Ρ‚ 5 ΠΏΠΎΠ»Π΅ΠΉ: «ΠšΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°», «Π€Π°ΠΌΠΈΠ»ΠΈΡ», «Π˜ΠΌΡ», «ΠžΡ‚чСство» ΠΈ «Π’Π΅Π»Π΅Ρ„ΠΎΠ½» .

Π’Π°Π±Π»ΠΈΡ†Π° «ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ» ΠΈΠΌΠ΅Π΅Ρ‚ 8 ΠΏΠΎΠ»Π΅ΠΉ: «ΠšΠΎΠ΄ автомобиля», «ΠšΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (FK)», «ΠšΠΎΠ΄ Ρ†Π²Π΅Ρ‚Π° (FK)», «ΠšΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°Ρ†ΠΈΠΈ (FK)», «Π”Π°Ρ‚Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ», «Π’ΠΈΠΏ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ», «Π•ΠΆΠ΅ΠΌΠ΅ΡΡΡ‡Π½Ρ‹ΠΉ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆ» ΠΈ «ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ мСсяцСв рассрочки» .

Π’Π°Π±Π»ΠΈΡ†Π° «Π’ΠΈΠΏ аксСссуара» ΠΈΠΌΠ΅Π΅Ρ‚ 2 поля: «ΠšΠΎΠ΄ Ρ‚ΠΈΠΏΠ° аксСссуара» ΠΈ «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° аксСссуара» .

Π’Π°Π±Π»ΠΈΡ†Π° «ΠΠΊΡΠ΅ΡΡΡƒΠ°Ρ€» ΠΈΠΌΠ΅Π΅Ρ‚ 5 ΠΏΠΎΠ»Π΅ΠΉ: «ΠšΠΎΠ΄ аксСссуара», «ΠšΠΎΠ΄ Ρ‚ΠΈΠΏΠ° аксСссуара (FK)», «ΠšΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ (FK)», «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ аксСссуара» ΠΈ «Π¦Π΅Π½Π° аксСссуара» .

Π’Π°Π±Π»ΠΈΡ†Π° «Π—аявка» ΠΈΠΌΠ΅Π΅Ρ‚ 3 поля: «ΠšΠΎΠ΄ заявки», «ΠšΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (FK)» ΠΈ «Π”Π°Ρ‚Π° заявки» .

Π’Π°Π±Π»ΠΈΡ†Π° «ΠŸΡ€ΠΎΠ΄Π°Π½Π½Ρ‹ΠΉ аксСссуар» ΠΈΠΌΠ΅Π΅Ρ‚ 4 поля: «ΠšΠΎΠ΄ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ аксСссуара», «ΠšΠΎΠ΄ аксСссуара (FK)», «ΠšΠΎΠ΄ заявки (FK)» ΠΈ «ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ» .

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° интСрфСйса

3.1 Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

C++ BuilderΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, инструмСнт быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (RAD), интСгрированная срСда программирования (IDE), систСма, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ программистами для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования C++.Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ разрабатывался ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Borland Software, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Ρ‘ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ CodeGear, Π½Ρ‹Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Embarcadero Technologies. C++ Builder ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π² ΡΠ΅Π±Π΅ комплСкс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (STL, VCL, CLX, MFC ΠΈ Π΄Ρ€.), компилятор, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π¦ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Delphi. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π² Delphi, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π² C++ Builder Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π²Π΅Ρ€Π½ΠΎ. C++ Builder содСрТит инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ drag-and-drop Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ благодаря встроСнному WYSIWYG — Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρƒ интСрфСйса ΠΈ ΠΏΡ€.

3.2 ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «ΠΠ²Ρ‚осалон»

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° BorlandC++ Builder 6.0, Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°Π»ΠΈΡ‚Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ ΠΈΡ… Π½ΠΈΠΆΠ΅:

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° ADO, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TADOQuery;

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° ADO, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TADOConnection;

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° Additional, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚TImage;

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° Standart, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TEdit;

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° Standart, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TButton;

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° Standart, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TLabel;

— Π²ΠΊΠ»Π°Π΄ΠΊΠ° Standart, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TComboBox.

3.2.1 Π“Π»Π°Π²Π½Ρ‹ΠΉ экран ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π“Π»Π°Π²Π½Ρ‹ΠΉ экран ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ загруТаСтся ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Он ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌ. КаТдой ΠΊΠ½ΠΎΠΏΠΊΠ΅ соотвСтствуСт Π²ΠΊΠ»Π°Π΄ΠΊΠ° с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

Рисунок 2 — Π“Π»Π°Π²Π½Ρ‹ΠΉ экран ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3.2.2 Π­ΠΊΡ€Π°Π½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π­ΠΊΡ€Π°Π½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… окрываСтся Π² Ρ‚ΠΎΠΌ случаС, Ссли Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π±Ρ‹Π» ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½. Π­Ρ‚ΠΎΡ‚ экран позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ нСдостащий Ρ„Π°ΠΉΠ».

Рисунок 3 — Π­ΠΊΡ€Π°Π½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «…» открываСтся ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π°:

Рисунок 4 — Окно Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ» запускаСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ† Π‘Π” ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

3.2.3 Π­ΠΊΡ€Π°Π½ «ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ»

Π­ΠΊΡ€Π°Π½ «ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ» содСрТит всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Слях Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ. Π­Ρ‚Π° информация прСдставлСна с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² TDBGrid ΠΈ TImage. Π’ TDBGrid содСрТатся названия ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ производитСлями. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ TImage отоброТаСтся Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ производитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ бСрСтся ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° BMP. Если Ρ„Π°ΠΉΠ» с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ отсутствуСт Ρ‚ΠΎ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ замСняСтся Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Рисунок 5 — Π­Ρ€Π°Π½ «ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ»

Рисунок 6 — Π­Ρ€Π°Π½ «ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ» ΠΏΡ€ΠΈ отсутствии Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°

3.2.4 Π­ΠΊΡ€Π°Π½ «ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹»

Π­ΠΊΡ€Π°Π½ «ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹» содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…. Вся информация находится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ‚ΠΈΠΏΠ° TDBGrid.

Рисунок 7 — Π­ΠΊΡ€Π°Π½ «ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹»

3.2.5 Π­ΠΊΡ€Π°Π½ «Π¦Π²Π΅Ρ‚Π°»

Π­ΠΊΡ€Π°Π½ «Π¦Π²Π΅Ρ‚Π°» содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ†Π²Π΅Ρ‚Π°Ρ…. Вся информация находится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ‚ΠΈΠΏΠ° TDBGrid.

Рисунок 8 — Π­ΠΊΡ€Π°Π½ «Π¦Π²Π΅Ρ‚Π°»

3.2.6 Π­ΠΊΡ€Π°Π½ «ΠœΠΎΠ΄Π΅Π»ΡŒ»

Π­ΠΊΡ€Π°Π½ «ΠœΠΎΠ΄Π΅Π»ΡŒ» содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…. Вся информация находится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ‚ΠΈΠΏΠ° TDBGrid.

Рисунок 9 — Π­ΠΊΡ€Π°Π½ «ΠœΠΎΠ΄Π΅Π»ΡŒ»

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° освоил Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния Π² ΡΡ€Π΅Π΄Π΅ C++ Builder, научился ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Разобрался с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ C++ Builder для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† Π‘Π”. Научился ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ запросы ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ языка SQL.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ срСдства

1) MSAccess;

2) Borland C++ Builder 6.0;

3) ВСкстовый процСссор MSWord.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, А Π›ΠΈΡΡ‚ΠΈΠ½Π³ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1) ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

//—————————————————————————————————————;

#include

#pragma hdrstop

//—————————————————————————————————————;

USEFORM («MainUnit.cpp», MainForm);

USEFORM («DataBaseDataModuleUnit.cpp», DataBaseDataModule); /* TDataModule: File Type */

USEFORM («DialogsDataModuleUnit.cpp», DialogsDataModule); /* TDataModule: File Type */

USEFORM («PreviewUnit.cpp», PreviewForm);

//—————————————————————————————————————;

WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize ();

Application->CreateForm (__classid (TMainForm), &MainForm);

Application->CreateForm (__classid (TDataBaseDataModule), &DataBaseDataModule);

Application->CreateForm (__classid (TDialogsDataModule), &DialogsDataModule);

Application->CreateForm (__classid (TPreviewForm), &PreviewForm);

Application->Run ();

}

catch (Exception &exception)

{

Application->ShowException (&exception);

}

catch (…)

{

try

{

throw Exception (««);

}

catch (Exception &exception)

{

Application->ShowException (&exception);

}

}

return 0;

}

//—————————————————————————————————————;

2) ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

//—————————————————————————————————————;

#include

#pragma hdrstop

#include «MainUnit.h»

#include «DataBaseDataModuleUnit.h»

#include «DialogsDataModuleUnit.h»

#include «FunctionsUnit.h»

//—————————————————————————————————————;

#pragma package (smart_init)

#pragma resource «*.dfm»

TMainForm *MainForm;

//—————————————————————————————————————;

AnsiString DoubleSlash (AnsiString str);

void DataBaseConnection (AnsiString Path);

void ManufacturerButtonVisibleFalseAddEditDeleteTruePostCancel (TButton * ManufacturerAddButton, TButton * ManufacturerEditButton, TButton * ManufacturerDeleteButton, TButton * ManufacturerPostButton, TButton * ManufacturerCancelButton);

void ManufacturerButtonVisibleTrueAddEditDeleteFalsePostCancel (TButton * ManufacturerAddButton, TButton * ManufacturerEditButton, TButton * ManufacturerDeleteButton, TButton * ManufacturerPostButton, TButton * ManufacturerCancelButton);

//—————————————————————————————————————;

__fastcall TMainForm: TMainForm (TComponent* Owner)

: TForm (Owner)

{

}

//—————————————————————————————————————;

void __fastcall TMainForm: FormCreate (TObject *Sender)

{

MainForm->Position = poDesktopCenter;

PageControl->ActivePage = MainTabSheet;

if (!(DirectoryExists («Files»)))

{

MkDir («Files»);

}

if (!(DirectoryExists («Files\DataBase»)))

{

MkDir («Files\DataBase»);

}

}

//—————————————————————————————————————;

//——-Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

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

{

if (Application->MessageBox («Π’Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ?» ," Π’Ρ‹Ρ…ΠΎΠ΄", MB_YESNO + MB_ICONSTOP)==IDYES)

{

CanClose = True;

}

else

{

CanClose = False;

}

}

//—————————————————————————————————————;

void __fastcall TMainForm: DataBaseFilePathOpenDialogExecuteButtonClick (

TObject *Sender)

{

if (DialogsDataModule->DataBaseFilePathOpenDialog->Execute ())

{

FilePathEdit->Text = DialogsDataModule->DataBaseFilePathOpenDialog->FileName;

}

}

//—————————————————————————————————————;

void __fastcall TMainForm: FormShow (TObject *Sender)

{

DataBaseConnection («D:\Projects\BuilderProjects\CarShop\Files\DataBase\CarShopDataBase.mdb»);

ManufacturerDBGrid->DataSource = DataBaseDataModule->ManufacturerDataSource;

ManufacturerDBGrid->Options = TDBGridOptions (ManufacturerDBGrid->Options) >> dgEditing >> dgIndicator >> dgColumnResize;

//ManufacturerDBGrid->Columns->Add ();

//ManufacturerDBGrid->Columns->Add ();

//ManufacturerDBGrid->Columns->Add ();

//ManufacturerDBGrid->Columns->Items[0]->FieldName = «Title_Manufacturer» ;

//ManufacturerDBGrid->Columns->Items[0]->Title->Caption = «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅» ;

//ManufacturerDBGrid->Columns->Items[1]->Title->Caption = «ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ» ;

//ManufacturerDBGrid->Columns->Items[2]->Title->Caption = «ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ» ;

ManufacturerDBGrid->Columns->Items[0]->Width = (ManufacturerDBGrid->Width — 40)/3;

ManufacturerDBGrid->Columns->Items[1]->Visible = False;

//ManufacturerDBGrid->Columns->Items[1]->Width = (ManufacturerDBGrid->Width — 40)/3;

//ManufacturerDBGrid->Columns->Items[2]->Width = (ManufacturerDBGrid->Width — 40)/3;

//DataBaseDataModule->ManufacturerADOTable->Sort = «Title_Manufacturer ASC» ;

ModelDBGrid->DataSource = DataBaseDataModule->ModelDataSource;

ModelDBGrid->Options = TDBGridOptions (ModelDBGrid->Options) >> dgEditing >> dgIndicator >> dgColumnResize;

ModelDBGrid->Columns->Items[0]->Width = (ModelDBGrid->Width — 40)/2;

ModelDBGrid->Columns->Items[1]->Width = (ModelDBGrid->Width — 40)/2;

ColorDBGrid->DataSource = DataBaseDataModule->ColorDataSource;

ColorDBGrid->Options = TDBGridOptions (ColorDBGrid->Options) >> dgEditing >> dgIndicator >> dgColumnResize;

ColorDBGrid->Columns->Add ();

ColorDBGrid->Columns->Add ();

ColorDBGrid->Columns->Items[0]->FieldName = «Type_of_Color» ;

ColorDBGrid->Columns->Items[1]->FieldName = «Title_Color» ;

ColorDBGrid->Columns->Items[0]->Title->Caption = «Π’ΠΈΠΏ» ;

ColorDBGrid->Columns->Items[1]->Title->Caption = «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅» ;

ColorDBGrid->Columns->Items[0]->Width = (ColorDBGrid->Width — 40)/2;

ColorDBGrid->Columns->Items[1]->Width = (ColorDBGrid->Width — 40)/2;

ClientDBGrid->DataSource = DataBaseDataModule->ClientDataSource;

ClientDBGrid->Options = TDBGridOptions (ClientDBGrid->Options) >> dgEditing >> dgIndicator >> dgColumnResize;

ClientDBGrid->Columns->Add ();

ClientDBGrid->Columns->Add ();

ClientDBGrid->Columns->Add ();

ClientDBGrid->Columns->Add ();

ClientDBGrid->Columns->Items[0]->FieldName = «Forename» ;

ClientDBGrid->Columns->Items[1]->FieldName = «Surname» ;

ClientDBGrid->Columns->Items[2]->FieldName = «Patronymic» ;

ClientDBGrid->Columns->Items[3]->FieldName = «Telephone_number» ;

ClientDBGrid->Columns->Items[0]->Title->Caption = «Π€Π°ΠΌΠΈΠ»ΠΈΡ» ;

ClientDBGrid->Columns->Items[1]->Title->Caption = «Π˜ΠΌΡ» ;

ClientDBGrid->Columns->Items[2]->Title->Caption = «ΠžΡ‚чСство» ;

ClientDBGrid->Columns->Items[3]->Title->Caption = «Π’Π΅Π»Π΅Ρ„ΠΎΠ½» ;

ClientDBGrid->Columns->Items[0]->Width = (ClientDBGrid->Width — 40)/4;

ClientDBGrid->Columns->Items[1]->Width = (ClientDBGrid->Width — 40)/4;

ClientDBGrid->Columns->Items[2]->Width = (ClientDBGrid->Width — 40)/4;

ClientDBGrid->Columns->Items[3]->Width = (ClientDBGrid->Width — 40)/4;

}

//—————————————————————————————————————;

void __fastcall TMainForm: DataBaseConnectButtonClick (TObject *Sender)

{

DataBaseConnection (DoubleSlash (FilePathEdit->Text));

}

//—————————————————————————————————————;

void __fastcall TMainForm: ManufacturerEditButtonClick (TObject *Sender)

{

ManufacturerButtonVisibleFalseAddEditDeleteTruePostCancel (ManufacturerAddButton, ManufacturerEditButton, ManufacturerDeleteButton, ManufacturerPostBitBtn, ManufacturerCancelBitBtn);

}

//—————————————————————————————————————;

void __fastcall TMainForm: ManufacturerDeleteButtonClick (TObject *Sender)

{

ManufacturerButtonVisibleFalseAddEditDeleteTruePostCancel (ManufacturerAddButton, ManufacturerEditButton, ManufacturerDeleteButton, ManufacturerPostBitBtn, ManufacturerCancelBitBtn);

}

//—————————————————————————————————————;

void __fastcall TMainForm: ManufacturerDBGridTitleClick (TColumn *Column)

{ /*

if (Column->FieldName == «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅»)

{

DataBaseDataModule->ManufacturerADOQuery->Active = False;

DataBaseDataModule->ManufacturerADOQuery->SQL->Clear ();

if (Edit1->Text ≠ «SELECT Title_Manufacturer AS НазваниС, Logo FROM Manufacturer ORDER BY Title_Manufacturer ASC»)

{

DataBaseDataModule->ManufacturerADOQuery->SQL->Add («SELECT Title_Manufacturer AS НазваниС, Logo FROM Manufacturer ORDER BY Title_Manufacturer DESC»);

}

else

{

DataBaseDataModule->ManufacturerADOQuery->SQL->Add («SELECT Title_Manufacturer AS НазваниС, Logo FROM Manufacturer ORDER BY Title_Manufacturer ASC»);

}

DataBaseDataModule->ManufacturerADOQuery->Open ();

DataBaseDataModule->ManufacturerADOQuery->Active = True;

ManufacturerDBGrid->Columns->Items[0]->Width = (ManufacturerDBGrid->Width — 40)/3;

} */

/*if (AnsiString (DataBaseDataModule->ManufacturerADOTable->Sort) == «Title_Manufacturer ASC»)

{

DataBaseDataModule->ManufacturerADOTable->Sort = «Title_Manufacturer DESC» ;

}

else

{

DataBaseDataModule->ManufacturerADOTable->Sort = «Title_Manufacturer ASC» ;

}

*/

}

//—————————————————————————————————————;

void __fastcall TMainForm: ManufacturerPostBitBtnClick (TObject *Sender)

{

ManufacturerButtonVisibleTrueAddEditDeleteFalsePostCancel (ManufacturerAddButton, ManufacturerEditButton, ManufacturerDeleteButton, ManufacturerPostBitBtn, ManufacturerCancelBitBtn);

}

//—————————————————————————————————————;

void __fastcall TMainForm: ManufacturerCancelBitBtnClick (TObject *Sender)

{

ManufacturerButtonVisibleTrueAddEditDeleteFalsePostCancel (ManufacturerAddButton, ManufacturerEditButton, ManufacturerDeleteButton, ManufacturerPostBitBtn, ManufacturerCancelBitBtn);

}

//—————————————————————————————————————;

void __fastcall TMainForm: ManufacturerButtonClick (TObject *Sender)

{

PageControl->ActivePage = ManufacturerTabSheet;

}

//—————————————————————————————————————;

void __fastcall TMainForm: ModelButtonClick (TObject *Sender)

{

PageControl->ActivePage = ModelTabSheet;

}

//—————————————————————————————————————;

void __fastcall TMainForm: ClientButtonClick (TObject *Sender)

{

PageControl->ActivePage = ClientTabSheet;

}

//—————————————————————————————————————;

void __fastcall TMainForm: CarButtonClick (TObject *Sender)

{

PageControl->ActivePage = CarTabSheet;

}

//—————————————————————————————————————;

void __fastcall TMainForm: GradeButtonClick (TObject *Sender)

{

PageControl->ActivePage = GradeTabSheet;

}

//—————————————————————————————————————;

void __fastcall TMainForm: AccessoryButtonClick (TObject *Sender)

{

PageControl->ActivePage = AccessoryTabSheet;

}

//—————————————————————————————————————;

void __fastcall TMainForm: ColorButtonClick (TObject *Sender)

{

PageControl->ActivePage = ColorTabSheet;

}

//—————————————————————————————————————;

3) ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

//—————————————————————————————————————;

#include

#pragma hdrstop

#include «DataBaseDataModuleUnit.h»

#include «MainUnit.h»

#include «FunctionsUnit.h»

//—————————————————————————————————————;

#pragma package (smart_init)

#pragma resource «*.dfm»

TDataBaseDataModule *DataBaseDataModule;

//—————————————————————————————————————;

AnsiString DoubleSlash (AnsiString str);

//—————————————————————————————————————;

__fastcall TDataBaseDataModule: TDataBaseDataModule (TComponent* Owner)

: TDataModule (Owner)

{

}

//—————————————————————————————————————;

void __fastcall TDataBaseDataModule: ManufacturerADOTableAfterScroll (

TDataSet *DataSet)

{

/*if (DataSet->FieldByName («Logo»)->AsString ≠ «»)

{

MainForm->ManufacturerLogoImage->Picture->LoadFromFile (DoubleSlash (ExtractFilePath (Application->ExeName))+" Files" +String (Char (92))+String (Char (92))+" Pictures" +String (Char (92))+String (Char (92))+" ManufacturerLogos" +String (Char (92))+String (Char (92))+DoubleSlash (DataSet->FieldByName («Logo»)->AsString));

}

else

{

MainForm->ManufacturerLogoImage->Picture->LoadFromFile (DoubleSlash (ExtractFilePath (Application->ExeName))+" Files" +String (Char (92))+String (Char (92))+" Pictures" +String (Char (92))+String (Char (92))+" ManufacturerLogos" +String (Char (92))+String (Char (92))+" nologo. bmp");

} */

}

//—————————————————————————————————————;

void __fastcall TDataBaseDataModule: ManufacturerADOQueryAfterScroll (

TDataSet *DataSet)

{

if (ManufacturerADOQuery->Active == True) {

if (DataSet->FieldByName («Logo»)->AsString ≠ «»)

{

MainForm->ManufacturerLogoImage->Picture->LoadFromFile (DoubleSlash (ExtractFilePath (Application->ExeName))+" Files" +String (Char (92))+String (Char (92))+" Pictures" +String (Char (92))+String (Char (92))+" ManufacturerLogos" +String (Char (92))+String (Char (92))+DoubleSlash (DataSet->FieldByName («Logo»)->AsString));

}

else

{

MainForm->ManufacturerLogoImage->Picture->LoadFromFile (DoubleSlash (ExtractFilePath (Application->ExeName))+" Files" +String (Char (92))+String (Char (92))+" Pictures" +String (Char (92))+String (Char (92))+" ManufacturerLogos" +String (Char (92))+String (Char (92))+" nologo. bmp");

} }

}

//—————————————————————————————————————;

4) ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²

//—————————————————————————————————————;

#include

#pragma hdrstop

#include «DialogsDataModuleUnit.h»

//—————————————————————————————————————;

#pragma package (smart_init)

#pragma resource «*.dfm»

TDialogsDataModule *DialogsDataModule;

//—————————————————————————————————————;

__fastcall TDialogsDataModule: TDialogsDataModule (TComponent* Owner)

: TDataModule (Owner)

{

}

//—————————————————————————————————————;

5) ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

//—————————————————————————————————————;

#pragma hdrstop

#include «FunctionsUnit.h»

#include «DataBaseDataModuleUnit.h»

//—————————————————————————————————————;

#pragma package (smart_init)

//—————————————————————————————————————;

AnsiString DoubleSlash (AnsiString str)

{

return StringReplace (str, String (Char (92)), String (Char (92))+String (Char (92)), TReplaceFlags ()<

}

//—————————————————————————————————————;

void DataBaseConnection (AnsiString Path)

{

DataBaseDataModule->ADOConnection->Connected = False;

DataBaseDataModule->ADOConnection->ConnectionString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Path+» ;Persist Security Info=False" ;

DataBaseDataModule->ADOConnection->LoginPrompt = False;

DataBaseDataModule->ADOConnection->Connected = True;

//DataBaseDataModule->ManufacturerADOTable->Connection = DataBaseDataModule->ADOConnection;

//DataBaseDataModule->ManufacturerADOTable->TableName = «Manufacturer» ;

//DataBaseDataModule->ManufacturerADOTable->Active = True;

//DataBaseDataModule->ManufacturerDataSource->DataSet = DataBaseDataModule->ManufacturerADOTable;

DataBaseDataModule->ManufacturerADOQuery->Connection = DataBaseDataModule->ADOConnection;

DataBaseDataModule->ManufacturerADOQuery->Active = False;

DataBaseDataModule->ManufacturerADOQuery->SQL->Clear ();

DataBaseDataModule->ManufacturerADOQuery->SQL->Add («SELECT Title_Manufacturer As ΠΠ°Π·Π²Π°Π½ΠΈΠ΅, Logo FROM Manufacturer ORDER BY Title_Manufacturer»);

DataBaseDataModule->ManufacturerADOQuery->Open ();

DataBaseDataModule->ManufacturerADOQuery->Active = True;

DataBaseDataModule->ManufacturerDataSource->DataSet = DataBaseDataModule->ManufacturerADOQuery;

DataBaseDataModule->ModelADOQuery->Connection = DataBaseDataModule->ADOConnection;

DataBaseDataModule->ModelADOQuery->Active = False;

DataBaseDataModule->ModelADOQuery->SQL->Clear ();

DataBaseDataModule->ModelADOQuery->SQL->Add («SELECT Manufacturer. Title_Manufacturer As [НазваниС производитСля], Model. Title_Model AS [НазваниС ΠΌΠΎΠ΄Π΅Π»ΠΈ] FROM Manufacturer, Model WHERE Manufacturer. Code_Manufacturer = Model. FK_Code_Manufacturer»);

DataBaseDataModule->ModelADOQuery->Open ();

DataBaseDataModule->ModelADOQuery->Active = True;

DataBaseDataModule->ModelDataSource->DataSet = DataBaseDataModule->ModelADOQuery;

DataBaseDataModule->ColorADOTable->Active = False;

DataBaseDataModule->ColorADOTable->Connection = DataBaseDataModule->ADOConnection;

DataBaseDataModule->ColorADOTable->TableName = «Color» ;

DataBaseDataModule->ColorADOTable->Active = True;

DataBaseDataModule->ColorDataSource->DataSet = DataBaseDataModule->ColorADOTable;

DataBaseDataModule->ClientADOTable->Active = False;

DataBaseDataModule->ClientADOTable->Connection = DataBaseDataModule->ADOConnection;

DataBaseDataModule->ClientADOTable->TableName = «Client» ;

DataBaseDataModule->ClientADOTable->Active = True;

DataBaseDataModule->ClientDataSource->DataSet = DataBaseDataModule->ClientADOTable;

}

//—————————————————————————————————————;

void ManufacturerButtonVisibleFalseAddEditDeleteTruePostCancel (TButton * ManufacturerAddButton, TButton * ManufacturerEditButton, TButton * ManufacturerDeleteButton, TButton * ManufacturerPostButton, TButton * ManufacturerCancelButton)

{

ManufacturerAddButton->Visible = False;

ManufacturerEditButton->Visible = False;

ManufacturerDeleteButton->Visible = False;

ManufacturerPostButton->Visible = True;

ManufacturerCancelButton->Visible = True;

}

//—————————————————————————————————————;

void ManufacturerButtonVisibleTrueAddEditDeleteFalsePostCancel (TButton * ManufacturerAddButton, TButton * ManufacturerEditButton, TButton * ManufacturerDeleteButton, TButton * ManufacturerPostButton, TButton * ManufacturerCancelButton)

{

ManufacturerAddButton->Visible = True;

ManufacturerEditButton->Visible = True;

ManufacturerDeleteButton->Visible = True;

ManufacturerPostButton->Visible = False;

ManufacturerCancelButton->Visible = False;

}

//—————————————————————————————————————;

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ