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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ° рСдактирования записи, Ρ„ΠΎΡ€ΠΌΠ° отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса, Ρ„ΠΎΡ€ΠΌΠ° построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², Ρ„ΠΎΡ€ΠΌΠ° Π²Ρ‹Π±ΠΎΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠΏΠ°ΡΡ‚ΡŒ Π½Π° ΡΡ‚ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ использования ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. Помимо этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ записи Π² Π‘Π”… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

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

  • Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ структура прилоТСния
  • БпСцификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса
  • Бтруктурная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса
  • Π”Π°Π½Π½Ρ‹Π΅ для тСстирования
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ подсистСму ΠΎΡ‚Π΄Π΅Π»Π° ΠΊΠ°Π΄Ρ€ΠΎΠ².

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, обрабатываСмая Π² ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ΅, Π΄ΠΎΠ»ΠΆΠ½Π° Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Скстовом ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π°Ρ….

Π”Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ΅: фамилия, мСсяц ΠΈ Π³ΠΎΠ΄ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ», ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π²ΠΎΠΈΠ½ΡΠΊΠΎΠΉ слуТбС, Π³ΠΎΠ΄ роТдСния.

БвСдСния ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ°Ρ… ΠΏΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π’ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°.

2. Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°.

3. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅.

4. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° Π·Π°ΠΏΡ€ΠΎΡΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

4.1. ВывСсти Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π²ΠΎΠΈΠ½ΡΠΊΠΎΠΉ слуТбС сотрудников младшС 30 Π»Π΅Ρ‚;

4.2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ срСдний возраст Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΌΡƒΠΆΡ‡ΠΈΠ½ ΠΈ ΠΆΠ΅Π½Ρ‰ΠΈΠ½;

4.3. ВывСсти Π½Π° ΡΠΊΡ€Π°Π½ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ сотрудников, принятых Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π³ΠΎΠ΄Ρƒ, Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ убывания ΠΈΡ… Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°;

4.4. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ измСнСния уровня образования ΠΎΡ‚ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°;

4.5. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ возрастноС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ…: Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄ΠΎ 30 Π»Π΅Ρ‚, ΠΎΡ‚ 31 Π΄ΠΎ 50 Π»Π΅Ρ‚, ΡΡ‚Π°Ρ€ΡˆΠ΅ 51 Π³ΠΎΠ΄Π°;

4.6. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»Π±ΠΈΠΊΠΎΠ²ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ долю сотрудников с Π²Ρ‹ΡΡˆΠΈΠΌ, срСдним ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ, срСдним, Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌ срСдним, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π‘Ρ‚ΠΎΠ»Π±ΠΈΠΊΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ возрастания.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ структура прилоТСния

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ txt. КомплСкс осущСствляСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, запись ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹.

Помимо этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ записи Π² Π‘Π”. А Ρ‚Π°ΠΊΠΆΠ΅ осущСствляСт Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ фиксированных ΠΏΡ€Π°Π²ΠΈΠ» ΠΎΡ‚Π±ΠΎΡ€Π° ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ.

БпСцификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса

Основной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ подсистСмы ΠΎΡ‚Π΄Π΅Π»Π° ΠΊΠ°Π΄Ρ€ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ трСбуСтся друТСствСнный интСрфСйс Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ вСсти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² ΡΡ€Π΅Π΄Π΅ программирования Delphi 7. Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ качСства ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ графичСский интСрфСйс для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows.

ЕдинствСнноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° это Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠžΠ‘ сСмСйства Windows.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ° рСдактирования записи, Ρ„ΠΎΡ€ΠΌΠ° отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса, Ρ„ΠΎΡ€ΠΌΠ° построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², Ρ„ΠΎΡ€ΠΌΠ° Π²Ρ‹Π±ΠΎΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠΏΠ°ΡΡ‚ΡŒ Π½Π° ΡΡ‚ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ использования ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ свСдСния ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

Β· Ѐамилия — тСкстовоС ΠΏΠΎΠ»Π΅ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ 100 символов;

Β· Π”Π°Ρ‚Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ — ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° TDate;

Β· ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ — тСкстовоС ΠΏΠΎΠ»Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ 100 символов;

Β· Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ — тСкстовоС ΠΏΠΎΠ»Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ 100 символов;

Β· Пол — ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° byte;

Β· ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π²ΠΎΠΈΠ½ΡΠΊΠΎΠΉ слуТбС — тСкстовоС ΠΏΠΎΠ»Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ 100 символов;

Β· Π“ΠΎΠ΄ роТдСния — ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° TDate.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выступаСт Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. А Ρ‚Π°ΠΊΠΆΠ΅ графичСскоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Из Π³Ρ€Π°Ρ„ичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

Β· Π’Π°Π±Π»ΠΈΡ†Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ;

Β· Π“Ρ€Π°Ρ„ΠΈΠΊ;

Β· ВСкстовая информация.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вся информация провСряСтся ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅, Ρ‚ΠΎ Π»ΠΎΠ²ΠΈΡ‚ся всСго ΠΎΠ΄Π½Π° ошибка связанная с ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ рСдактирования пустой строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Бтруктурная Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса

Π‘Ρ…Π΅ΠΌΠ° построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… классов:

Π”Π°Π½Π½Ρ‹Π΅ для тСстирования

Ѐамилия

Π”Π°Ρ‚Π° роТдСния

ΠŸΡ€ΠΈΠ½ΡΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ

Пол

ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π²ΠΎΠΈΠ½ΡΠΊΠΎΠΉ слуТбС

ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²

03.12.1956

12.12.2001

ΠΌΡƒΠΆ

Π’Ρ‹ΡΡˆΠ΅Π΅

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€

Π’ Π·Π°ΠΏΠ°ΡΠ΅

Иванов

15.01.1990

11.12.2009

ΠΌΡƒΠΆ

Π‘Ρ€Π΅Π΄Π½Π΅Π΅

Π’Π΅Ρ…Π½ΠΈΠΊ

Π’ Π·Π°ΠΏΠ°ΡΠ΅

Π€Π΅Π΄ΠΎΡ€ΠΎΠ²Π°

30.04.1964

04.11.2004

ΠΆΠ΅Π½

Π’Ρ‹ΡΡˆΠ΅Π΅

Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€

Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²

24.07.1992

0707.2010

ΠΌΡƒΠΆ

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅

ΠšΡƒΡ€ΡŒΠ΅Ρ€

ΠŸΡ€ΠΈΠ·Ρ‹Π²Π½ΠΈΠΊ

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ». ПослС этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π½Π° ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° создания ΠΈΠ»ΠΈ открытия ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π±Π°Π·Ρ‹.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «…» ΠΈ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ имя ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹Π±Ρ€Π°Π½ Ρ€Π΅ΠΆΠΈΠΌ создания Π‘Π” ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ», Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан.

ΠŸΡ€ΠΈ этом Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ записи. По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ внСсСнныС измСнСния.

Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ записями ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Ρ€ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Π½ΠΈΠ·Ρƒ экрана. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этих ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ. Π£Π΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ записи.

БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запросов. Для Π²Ρ‹Π±ΠΎΡ€Π° Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ запроса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ списком Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части экрана, послС Ρ‡Π΅Π³ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос». Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° осущСствит Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π½Π° ΡΠΊΡ€Π°Π½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° Ρ„ΠΎΡ€ΠΌΠ° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ запроса.

Π³Ρ€Π°Ρ„ΠΈΠΊ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, Grids, DBGrids, DB, DBTables;

type

TWorker=record

FIO: string[100];

StartWork: TDate;

Edication: String[100];

Spec: String[100];

sex: byte;

Armi: String[100];

BirthDay: TDate;

end;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

Exit1: TMenuItem;

Button1: TButton;

Button2: TButton;

Button3: TButton;

StringGrid1: TStringGrid;

Button4: TButton;

Button5: TButton;

ComboBox1: TComboBox;

procedure Exit1Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure ReadData (fileName:string; new: bool);

procedure Button2Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure TableRowToWorker (index:integer; table: TStringGrid);

procedure AddRowToTable (row:TWorker; table: TStringGrid);

procedure EditTableRow (row:TWorker; table: TStringGrid);

procedure Button5Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure SetBase ();

procedure WriteData (fileName:string; table: TStringGrid);

procedure Button3Click (Sender: TObject);

procedure FormShow (Sender: TObject);

private

{ Private declarations }

Worker:TWorker;

Base:String;

tableDS:TDataSet;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, DateUtils, Unit4, Unit5, Unit6, Unit7;

{$R *.dfm}

procedure TForm1. Exit1Click (Sender: TObject);

begin

Close;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

SetBase ();

end;

//Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π° с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…

procedure TForm1. SetBase ();

var

i:integer;

begin

if Form2. ShowModal = mrOk then

begin

if Form2. RadioButton1.Checked then

begin

Base := Form2. Edit1.Text;

ReadData (Base, true);

end

else

begin

Base := Form2. Edit3.Text;

ReadData (Base, false);

end;

end;

end;

//ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° TWorker Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

//row — новая строка Ρ‚ΠΈΠΏΠ° TWorker

//table — Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ добавляСтся строка

procedure TForm1. AddRowToTable (row:TWorker; table: TStringGrid);

begin

table.Cells[0, table. RowCount — 1] := row. FIO;

table.Cells[1, table. RowCount — 1] := DateToStr (row.StartWork);

table.Cells[2, table. RowCount — 1] := row. Edication;

table.Cells[3, table. RowCount — 1] := row. Spec;

if row. sex = 0 then

table.Cells[4, table. RowCount — 1] := 'ΠΌΡƒΠΆ'

else

table.Cells[4, table. RowCount — 1] := 'ΠΆΠ΅Π½';

table.Cells[5, table. RowCount — 1] := row. Armi;

table.Cells[6, table. RowCount — 1] := DateToStr (row.BirthDay);

table.RowCount := table. RowCount + 1;

end;

//Вносит измСнСния Π² ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку

//row — ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° TWorker

//table — Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ вносятся измСнСния

procedure TForm1. EditTableRow (row:TWorker; table: TStringGrid);

var

i:integer;

begin

i := table.Selection.Top;

table.Cells[0, i] := row. FIO;

table.Cells[1, i] := DateToStr (row.StartWork);

table.Cells[2, i] := row. Edication;

table.Cells[3, i] := row. Spec;

if row. sex = 0 then

table.Cells[4, i] := 'ΠΌΡƒΠΆ'

else

table.Cells[4, i] := 'ΠΆΠ΅Π½';

table.Cells[5, i] := row. Armi;

table.Cells[6, i] := DateToStr (row.BirthDay);

end;

//ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² TWorker

//index — Π½ΠΎΠΌΠ΅Ρ€ строки

//table — Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся Π΄Π°Π½Π½Ρ‹Π΅

procedure TForm1. TableRowToWorker (index:integer; table: TStringGrid);

var

i:integer;

begin

i := index;

Worker.FIO := table. Cells[0, i];

Worker.StartWork := StrToDate (table.Cells[1, i]);

Worker.Edication := table. Cells[2, i];

Worker.Spec := table. Cells[3, i];

if table. Cells[4, i] = 'ΠΌΡƒΠΆ' then

Worker.sex := 0

else

Worker.sex := 1;

Worker.Armi := table. Cells[5, i];

Worker.BirthDay := StrToDate (table.Cells[6, i]);

end;

//Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

// fileName — имя Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ

//new — ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ отрываСтся ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π±Π°Π·Π° ΠΈΠ»ΠΈ создаСтся новая

procedure TForm1. ReadData (fileName:string; new: bool);

var

F:File of TWorker;

size:integer;

begin

AssignFile (F, fileName);

if new then

begin

Rewrite (F);

end

else

begin

Reset (F);

Seek (F, 0);

while (not EOF (F)) do

begin

Read (F, Worker);

AddRowToTable (Worker, StringGrid1);

end;

end;

CloseFile (F);

end;

//событиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ создания Π½ΠΎΠ²ΠΎΠΉ записи

procedure TForm1. Button2Click (Sender: TObject);

begin

Form3.editRecord := false;

if Form3. ShowModal = mrOk then

begin

Worker := Form3. Worker;

AddRowToTable (Worker, StringGrid1);

//Worker.StartWork := Form3. Edit1;

end;

end;

//событиС ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ рСдактирования

procedure TForm1. Button4Click (Sender: TObject);

begin

try

Form3.editRecord := true;

TableRowToWorker (StringGrid1.Selection.Top, StringGrid1);

Form3.Worker := Worker;

if Form3. ShowModal = mrOk then

begin

Worker := Form3. Worker;

EditTableRow (Worker, StringGrid1);

end;

except

MessageDlg ('ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ рСдактирования ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка', mtError,[mbOK], 0);

end;

end;

//Ѐункция удалСния строки ΠΈΠ· TStringGrid

//RowNumber — Π½ΠΎΠΌΠ΅Ρ€ строки

//Grid — Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅

procedure GridDeleteRow (RowNumber: Integer; Grid: TstringGrid);

var

i: Integer;

begin

Grid.Row := RowNumber;

if (Grid.Row = Grid. RowCount — 1) then

{ On the last row}

Grid.RowCount := Grid. RowCount — 1

else

begin

{ Not the last row}

for i := RowNumber to Grid. RowCount — 1 do

Grid.Rows[i] := Grid. Rows[i + 1];

Grid.RowCount := Grid. RowCount — 1;

end;

end;

//Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ строк

procedure TForm1. Button5Click (Sender: TObject);

var

i, n, start:integer;

begin

n := StringGrid1.Selection.Bottom — StringGrid1.Selection.Top + 1;

start:= StringGrid1.Selection.Top;

if StringGrid1.Selection.Bottom < StringGrid1.Selection.Top then

start:= StringGrid1.Selection.Bottom;

for i := 1 to n do

begin

GridDeleteRow (start + i — 1, StringGrid1);

end;

end;

procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);

var

res:integer;

begin

if Base = '' then

begin

res := MessageDlg ('Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ записи?', mtInformation,[mbYes, mbNo], 0);

if res = mrYes then

SetBase ()

else

exit;

end;

WriteData (Base, StringGrid1);

end;

//запись Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹

//fileName — имя ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π±Π°Π·Ρ‹

//table — Π’Π°Π±Π»ΠΈΡ†Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

procedure TForm1. WriteData (fileName:string; table: TStringGrid);

var

F:File of TWorker;

i:integer;

begin

AssignFile (F, fileName);

Reset (F);

Seek (F, 0);

for i := 1 to table. RowCount-2 do

begin

TableRowToWorker (i, StringGrid1);

Write (F, Worker);

end;

CloseFile (F);

end;

//Ѐункция быстрой сортировки

//А — массив для сортировки

//iLo — Π½Π°Ρ‡Π°Π»ΠΎ массива

//iHi — ΠΊΠΎΠ½Π΅Ρ† массива

procedure QuickSort (var A: array of TWorker; iLo, iHi: Integer);

var

Lo, Hi: Integer;

Pivot :TDate;

T: TWorker;

begin

Lo := iLo;

Hi := iHi;

Pivot := A[(Lo + Hi) div 2]. BirthDay;

repeat

while A[Lo]. BirthDay < Pivot do Inc (Lo) ;

while A[Hi]. BirthDay > Pivot do Dec (Hi) ;

if Lo <= Hi then

begin

T := A[Lo];

A[Lo] := A[Hi];

A[Hi] := T;

Inc (Lo) ;

Dec (Hi) ;

end;

until Lo > Hi;

if Hi > iLo then QuickSort (A, iLo, Hi) ;

if Lo < iHi then QuickSort (A, Lo, iHi) ;

end;

//ВыполняСт запросы

procedure TForm1. Button3Click (Sender: TObject);

var

i:integer;

Workers:array of TWorker;

y1,m1,d1,y2,m2,d2:Word;

MAge, WAge: real;

MStch, WStch: integer;

begin

if ComboBox1. ItemIndex = 0 then

begin

SetLength (Workers, StringGrid1. RowCount — 2);

DecodeDate (Now, y2, m2,d2);

for i := 1 to StringGrid1. RowCount — 2 do

begin

TableRowToWorker (i, StringGrid1);

DecodeDate (Worker.BirthDay, y1, m1,d1);

if (abs (y2 — y1) <= 30) and (Worker.sex = 0) then

Workers[i-1] := Worker;

end;

Form4.FillTable (Workers);

Form4.ShowModal;

end

else

if ComboBox1. ItemIndex = 1 then

begin

DecodeDate (Now, y2, m2,d2);

MStch := 0;

WStch := 0;

for i := 1 to StringGrid1. RowCount — 2 do

begin

TableRowToWorker (i, StringGrid1);

DecodeDate (Worker.BirthDay, y1, m1,d1);

if (Worker.sex = 0) then

begin

MAge := MAge + y2 — y1;

MStch := MStch +1;

end

else

begin

WAge := WAge + y2 — y1;

WStch := WStch +1;

end;

end;

MAge := MAge / MStch;

WAge := WAge / WStch;

Form5.Label3.Caption := FloatToStrF (MAge, ffGeneral, 8, 2);

Form5.Label4.Caption := FloatToStrF (WAge, ffGeneral, 8, 2);

Form5.ShowModal;

end

else

if ComboBox1. ItemIndex = 2 then

begin

SetLength (Workers, StringGrid1. RowCount — 1);

DecodeDate (Now, y2, m2,d2);

for i := 1 to StringGrid1. RowCount — 2 do

begin

TableRowToWorker (i, StringGrid1);

DecodeDate (Worker.StartWork, y1, m1,d1);

if y2 = y1 then

Workers[i] := Worker;

end;

if (Length (Workers) > 3) then

QuickSort (Workers, 1, Length (Workers))

else

if Workers[1]. BirthDay < Workers[1]. BirthDay then

begin

worker := Workers[1];

Workers[1] := Workers[2];

Workers[2] := worker;

end;

Form6.FillTable (Workers);

Form6.ShowModal;

end

else

if ComboBox1. ItemIndex = 3 then

begin

SetLength (Workers, StringGrid1. RowCount — 2);

for i := 1 to StringGrid1. RowCount — 2 do

begin

TableRowToWorker (i, StringGrid1);

Workers[i-1] := Worker;

end;

Form7.FillTable (Workers);

Form7.ShowModal;

end

else

if ComboBox1. ItemIndex = 4 then

begin

SetLength (Workers, StringGrid1. RowCount — 2);

for i := 1 to StringGrid1. RowCount — 2 do

begin

TableRowToWorker (i, StringGrid1);

Workers[i-1] := Worker;

end;

Form7.FillKrug (Workers);

Form7.ShowModal;

end

else

if ComboBox1. ItemIndex = 5 then

begin

SetLength (Workers, StringGrid1. RowCount — 2);

for i := 1 to StringGrid1. RowCount — 2 do

begin

TableRowToWorker (i, StringGrid1);

Workers[i-1] := Worker;

end;

Form7.FillStolb (Workers);

Form7.ShowModal;

end;

end;

procedure TForm1. FormShow (Sender: TObject);

begin

StringGrid1.Cells[0,0] := 'Ѐамилия';

StringGrid1.Cells[1,0] := 'ΠŸΡ€ΠΈΠ½ΡΡ‚';

StringGrid1.Cells[2,0] := 'ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅';

StringGrid1.Cells[3,0] := 'БпСциализация';

StringGrid1.Cells[4,0] := 'Пол';

StringGrid1.Cells[5,0] := 'ΠžΡ‚Π½. ΠΊ ΡΠ»ΡƒΠΆΠ±Π΅';

StringGrid1.Cells[6,0] := 'Π”Π°Ρ‚Π° роТдСния';

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm2 = class (TForm)

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Edit1: TEdit;

Label1: TLabel;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

procedure RadioButton1Click (Sender: TObject);

procedure RadioButton2Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2. RadioButton1Click (Sender: TObject);

begin

Label1.Enabled := true;

Edit1.Enabled := true;

Edit3.Enabled := false;

Label3.Enabled := false;

Button2.Enabled := true;

Button3.Enabled := false;

end;

procedure TForm2. RadioButton2Click (Sender: TObject);

begin

Label1.Enabled := false;

Edit1.Enabled := false;

Button2.Enabled := false;

Edit3.Enabled := true;

Label3.Enabled := true;

Button3.Enabled := true;

end;

procedure TForm2. Button2Click (Sender: TObject);

begin

if SaveDialog1. Execute then

begin

Edit1.Text := SaveDialog1. FileName+'.txt';

end

end;

procedure TForm2. Button3Click (Sender: TObject);

begin

if OpenDialog1. Execute then

begin

Edit3.Text := OpenDialog1. FileName;

end;

end;

procedure TForm2. Button1Click (Sender: TObject);

begin

ModalResult := mrOk;

//Close;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, Unit1;

type

TForm3 = class (TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

ComboBox1: TComboBox;

Edit2: TEdit;

ComboBox2: TComboBox;

Edit3: TEdit;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

Button1: TButton;

Button2: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure ClearFields ();

procedure FormShow (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

Worker:TWorker;

editRecord:bool;

end;

var

Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3. ClearFields ();

begin

Edit1.Text := '';

DateTimePicker2.Date := Now;

ComboBox1.ItemIndex := 0;

Edit2.Text := '';

ComboBox2.ItemIndex := 0;

Edit3.Text := '';

DateTimePicker1.Date := Now;

end;

procedure TForm3. Button1Click (Sender: TObject);

begin

Worker.FIO := Edit1. Text;

Worker.StartWork := DateTimePicker2. Date;

Worker.Edication := ComboBox1. Text;

Worker.Spec := Edit2. Text;

Worker.sex := ComboBox2. ItemIndex;

Worker.Armi := Edit3. Text;

Worker.BirthDay := DateTimePicker1. Date;

ModalResult := mrOK;

end;

procedure TForm3. Button2Click (Sender: TObject);

begin

ModalResult := mrCancel;

end;

procedure TForm3. FormShow (Sender: TObject);

begin

if not editRecord then

ClearFields

else

begin

Edit1.Text := Worker. FIO;

DateTimePicker2.Date := Worker. StartWork;

ComboBox1.Text := Worker. Edication;

Edit2.Text := Worker. Spec;

ComboBox2.ItemIndex := Worker. sex;

Edit3.Text := Worker. Armi;

DateTimePicker1.Date := Worker. BirthDay;

end;

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, Unit1;

type

TForm4 = class (TForm)

StringGrid1: TStringGrid;

private

{ Private declarations }

public

{ Public declarations }

procedure FillTable (Workers:array of TWorker);

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4. FillTable (Workers:array of TWorker);

var

i, n: integer;

begin

n:= Length (Workers);

StringGrid1.Cells[0,0] := 'Ѐамилия';

StringGrid1.Cells[1,0] := 'ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅';

StringGrid1.Cells[2,0] := 'ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»ΡƒΠΆΠ±Π΅';

StringGrid1.RowCount := n+1;

for i:=1 to n do

begin

StringGrid1.Cells[0,i] := Workers[i-1]. FIO;

StringGrid1.Cells[1,i] := Workers[i-1]. Edication;

StringGrid1.Cells[2,i] := Workers[i-1]. Armi;

end;

end;

end.

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, Unit1;

type

TForm6 = class (TForm)

StringGrid1: TStringGrid;

private

{ Private declarations }

public

procedure FillTable (Workers:array of TWorker);

{ Public declarations }

end;

var

Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6. FillTable (Workers:array of TWorker);

var

i, n: integer;

begin

n:= Length (Workers);

StringGrid1.Cells[0,0] := 'Ѐамилия';

StringGrid1.Cells[1,0] := 'Π”Π°Ρ‚Π° Ρ€ΠΎΠΆΠ΄.';

StringGrid1.RowCount := n;

for i:=1 to n-1 do

begin

StringGrid1.Cells[0,i] := Workers[i]. FIO;

StringGrid1.Cells[1,i] := DateToStr (Workers[i]. BirthDay);

end;

end;

end.

unit Unit7;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, TeeFunci, Series, ExtCtrls, TeeProcs, Chart, Unit1;

type

TForm7 = class (TForm)

Chart1: TChart;

Series1: TLineSeries;

TeeFunction1: TMultiplyTeeFunction;

Chart2: TChart;

Series3: TPieSeries;

Chart3: TChart;

Series2: TBarSeries;

private

{ Private declarations }

public

{ Public declarations }

procedure FillTable (Workers:array of TWorker);

procedure FillKrug (Workers:array of TWorker);

procedure FillStolb (Workers:array of TWorker);

end;

var

Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7. FillTable (Workers:array of TWorker);

var

i, n: integer;

y1,m1,d1,y2,m2,d2:Word;

yars:array[0.60] of integer;

begin

//Chart1.SeriesList.Clear;

//Chart1.SeriesList.Add (Series1);

Chart1.Visible := true;

Chart2.Visible := false;

Chart3.Visible := false;

Caption := 'ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅';

Series1.Clear;

n:= Length (Workers);

DecodeDate (Now, y2, m2,d2);

for i:=1 to 60 do

yars[i-1] := 0;

for i:=1 to n do

begin

DecodeDate (Workers[i-1]. BirthDay, y1, m1,d1);

if (Workers[i-1]. Edication = 'Π’Ρ‹ΡΡˆΠ΅Π΅') then

yars[y2-y1] := yars[y2-y1] + 5

else

if (Workers[i-1]. Edication = 'CΡ€Π΅Π΄Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅') then

yars[y2-y1] := yars[y2-y1] + 4

else

if (Workers[i-1]. Edication = 'CΡ€Π΅Π΄Π½Π΅Π΅') then

yars[y2-y1] := yars[y2-y1] + 3

else

if (Workers[i-1]. Edication = 'НСполноС срСднСС') then

yars[y2-y1] := yars[y2-y1] + 2

else

yars[y2-y1] := yars[y2-y1] + 1;

end;

for i:=1 to 60 do

Series1.AddXY (i, yars[i-1]);

end;

procedure TForm7. FillKrug (Workers:array of TWorker);

var

i, n: integer;

y1,m1,d1,y2,m2,d2: Word;

stch1,stch2,stch3: integer;

begin

//Chart1.SeriesList.Clear;

//Chart1.SeriesList.Clear;

//Chart1.SeriesList.Add (Series2);

Chart1.Visible := false;

Chart2.Visible := true;

Chart3.Visible := false;

Caption := 'ВозрастноС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅';

Series3.Clear;

stch1 := 0;

stch2 := 0;

stch3 := 0;

n:= Length (Workers);

DecodeDate (Now, y2, m2,d2);

for i:=1 to n do

begin

DecodeDate (Workers[i-1]. BirthDay, y1, m1,d1);

if (y2-y1 <= 30) then

Inc (stch1)

else

if (y2-y1 <= 50) then

Inc (stch2)

else

Inc (stch3);

end;

//Series2.Add (50);

Series3.Add (stch1);

Series3.Add (stch2);

Series3.Add (stch3);

end;

procedure TForm7. FillStolb (Workers:array of TWorker);

var

i, n: integer;

stch1,stch2,stch3,stch4,stch5: integer;

begin

Chart1.Visible := false;

Chart2.Visible := false;

Chart3.Visible := true;

Caption := 'ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ сотрудников';

Series2.Clear;

stch1 := 0;

stch2 := 0;

stch3 := 0;

stch4 := 0;

stch5 := 0;

n:= Length (Workers);

for i:=1 to n do

begin

if (Workers[i-1]. Edication = 'Π’Ρ‹ΡΡˆΠ΅Π΅') then

Inc (stch1)

else

if (Workers[i-1]. Edication = 'CΡ€Π΅Π΄Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅') then

Inc (stch2)

else

if (Workers[i-1]. Edication = 'CΡ€Π΅Π΄Π½Π΅Π΅') then

Inc (stch3)

else

if (Workers[i-1]. Edication = 'НСполноС срСднСС') then

Inc (stch4)

else

Inc (stch5);

end;

Series2.Add (stch1);

Series2.Add (stch2);

Series2.Add (stch3);

Series2.Add (stch4);

Series2.Add (stch5);

end;

end.

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