Пошук найстаршої студентки

Інформація про навчальний заклад

ВУЗ:
Київський національний університет культури і мистецтв
Інститут:
Не вказано
Факультет:
Менеджмент
Кафедра:
Не вказано

Інформація про роботу

Рік:
2009
Тип роботи:
Курсова робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН-117

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО КУЛЬТУРИ I ТУРИЗМУ УКРАЇНИ КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ КУЛЬТУРИ I МИСТЕЦТВ ІНСТИТУТ МЕНЕДЖМЕНТУ І ЕКОНОМІКИ КАФЕДРА КОМП'ЮТЕРНИХ НАУК КУРСОВА РОБОТА з дисципліни «Об'єктно-орієнтоване програмування» на тему: «Пошук найстаршої студентки» ЗМІСТ ВСТУП 3 I. ПОСТАНОВКА ЗАДАЧІ 4 II. ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ ПРОГРАМИ 4 III. ТЕОРЕТИЧНА ЧАСТИНА Поняття про бібліотеку ADO 4 Об'єкт Connection 6 Об'єктна модель ADO 8 Установка з'єднання з джерелом даних 8 Рядки з'єднання 9 Набори записів 10 Установка фільтру в наборі записів 12 Компоненти для работи з базою даних 13 Data Source 13 Компонент Ttable 14 Компонент ADOQuery 15 Компонент DBGrid 15 IV. ФУНКЦІЇ, ЩО ВИКЛИКАЮТЬСЯ В ПРОГРАМІ 16 V. ТЕКСТ ПРОГРАМИ 17 VI. Блок-схема програми 32 VII. СТВОРЕННЯ ПРОЕКТУ 35 VIII. ПРИКЛАД РОБОТИ ПРОГРАМИ 38 IX. ВИСНОВККИ 39 X. ВИКОРИСТАНА ЛІТЕРАТУРА 40 Вступ C++ Builder є sdi-додатком, головне вікно якого містить інструментальну панель (зліва), що набудовується, і палітру компонентів (справа). За замовчанням при запуску C++ Builder з'являються вікно інспектора об'єктів і форма нового застосування. Під вікном форми додатка знаходиться вікно редактора коди. Форми є основою додатків C++ Builder. Створення інтерфейсу для користувача додатком полягає в додаванні у вікно форми елементів об'єктів C++ Builder, званих компонентами. Компоненти C++ Builder розташовуються на палітрі компонентів, виконаній у вигляді багатосторінкового блокнота. Важлива особливість C++ Builder полягає в тому, що він дозволяє створювати власні компоненти і набудовувати палітру компонентів, а також створювати різні версії палітри компонентів для різних проектів. Набір даних в C++ Builder є нащадком абстрактного класу Tdataset (абстрактний клас - це клас, від якого можна породжувати інші класи, але не можна створити екземпляр об'єкту даного класу). Наприклад, класи Tquery, Ttable і Tstoredproc, що містяться на сторінці палітри компонентів Data Access - спадкоємці Tdbdataset, який, у свою чергу, є спадкоємцем Tdataset. Tdataset містить абстракції, необхідні для безпосереднього управління таблицями або запитами, забезпечуючи засоби для того, щоб відкрити таблицю або виконати запит і переміщатися по рядках. ADO - інтерфейс, покликаний забезпечити клієнтське застосування доступом і можливостями маніпулювання зовнішніми даними. ADO є інтерфейсом програмного рівня до OLE DB (інтерфейсом надзвичайно зручним і високопродуктивним). ADO і OLE DB складають разом технологію Універсального Доступу до Даних (UDA). При цьому, будучи інтерфейсом високого рівня до OLE DB, ADO використовує OLE DB постачальники даних (на даний момент це, в основному, провайдери реляційних баз даних хоча вже з'являються постачальники для нереляційних джерел даних і систем електронної пошти). Варто відзначити, що корпорація Microsoft на повний голос заявляє, що ADO найближчим часом замінить величезну різноманітність моделей і технологій доступу до даних, включаючи такі методи самої Microsoft, як DAO. Постановка задачі Написати програму у вигляді бази даних (БД) на мові С++ що дозволяє зберігати інформацію про студентів (Ф.І.О., бали, унікальний код запису (порядковий №), дату народження, кількість пропусків). База даних повинна містити основні функції : додавання запису, видалення запису, редагування запису пошук і сортування по заданих параметрах. У даній курсовій роботі виконується пошук найстаршої студентки. Функціональне призначення програми Дана програма є базою даних що дозволяє зберігати інформацію про студентів. Програма дозволяє використовувати наступні можливості: створення нової БД, або відкриттів вже створеної, додавання нових даних у файл БД, видалення записів, редагування наявних записів, пошук існуючих записів по даті народження. Кожному новому запису привласнюється свій індивідуальний номер (код), для спрощення введення цей код привласнюється автоматично: функцій find_max_num(char *) знаходить максимальний номер запису у файлі і подальший код привласнюється введеному запису. Також передбачена перевірка даних, що вводяться, на ідентичність, при введенні ідентичних даних користувачеві буде видано запобігання і дана можливість ввести нові дані . Програма використовує дуже зручний і зрозумілий інтерфейс, організована система меню і підменю. Так само передбачений так званий скролінг (прокрутка) інформації, що виводиться, клавішами вгору-вниз. Поняття про бібліотеку ADO Бібліотека ADO (Microsoft ACTIVEX Data Object) служить для доступу до баз даних різних типів і надає об'єктний програмний інтерфейс до інтерфейсу OLE DB, який пропонується компанією Microsoft як альтернатива інтерфейсу ODBC. Об'єктна модель ADO реалізована на базі технології COM (Component Object Model). Бібліотека ADO може бути використана в будь-якій середі, яка в змозі виступити в ролі Ole-клієнта, наприклад, в MS Office (VBA), 1c:предпріятії, адміністративних скриптах Windows (.vbs і .js) і так далі Приклади коду в справжній статті наводитимуться на мові Vbscript для адміністративних скриптів Windows. За допомогою бібліотеки ADO можна звернутися до величезної кількості типів баз даних, наприклад, dbase, Access, Excel, Oracle, Paradox, MS SQL Server, Sybase, текстові файли, Foxpro Active Directory Service, Microsoft Jet, Interbase, Informix, POSTGRESQL, MYSQL і так далі, необхідна лише наявність встановленого відповідного Ole-провайдера ("драйвера" відповідного типа бази даних, який встановлюється в систему як правило з дистрибутива цієї ж бази даних). Приклади коду в справжній статті наводитимуться лише для MS SQL Server, оскільки неможливо обійняти необ'ятноє. Перелік властивостей і методів ADO, пріведённий в цій статті не є вичерпним (в деяких випадках і опис деяких властивостей і методів не є повним). Повний опис об'єктної моделі бібліотеки ADO ви можете отримати в MSDN або у файлі "Ado210.CHM", який входить в постачання MS Office. Проте матеріалу даної статті вистачає щоб почати працювати з ADO. Основними об'єктами бібліотеки ADO є об'єкти Connection, Command і Recordset. Об'єкт Connection Об'єкт Connection (Таблиця 1)забезпечує створення підключення до джерела даних і еквівалентний поточному мережевому з'єднанню з сервером. Об'єкт Connection надає можливість налаштування з'єднання перед його відкриттям, установки бази даних за умовчанням установки і розриву з'єднання з джерелом даних, завдання налаштувань і виконання команди за допомогою методу Execute. Примітка: для виконання команди можна використовувати також метод Execute об'єкту Command, не вдаючись до об'єкту Connection. Таблиця 1 Методи та властивості компоненту Connection Опис  Version Містить рядок, що визначає версію бібліотеки.  ConnectionString Визначає параметри підключення до джерела даних. Читання і запис. Це рядок, що містить декілька параметрів, разделённих крапкою з комою. Властивість Connectionstring автоматично набуває значення задане як одноїмённого аргумент методу Open. Властивість Connectionstring доступно для запису лише для закритого з'єднання. Багаточисельні приклади різних рядків підключення для різних типів баз даних ви можете знайти в Інтернеті або в документації до відповідних програмних продуктів.  ConnectionTimeout Встановлює або повертає число секунд очікування підключення до бази даних. Значення за умовчанням - 15. Використовуйте цю властивість, якщо виникають проблеми із-за щільного мережевого трафіку або завантаженості сервера. Якщо час, вказаний в Connectiontimeout, витікає до відкриття підключення, відбувається помилка і ADO відміняє спробу підключення. Якщо Ви встановите властивість в нуль, ADO чекатиме нескінченно, поки підключення не буде відкрито. Упевніться, що використовуваний провайдер підтримує властивість Connectiontimeout. Властивість доступна для запису лише для закритого соєдіненія.дуктам.  CommandTimeout Встановлює або повертає число секунд очікування виконання команди. Значення за умовчанням - 30. Читання і запис. Використовуйте цю властивість, якщо виникають проблеми із-за щільного мережевого трафіку або завантаженості сервера. Якщо час, вказаний в Commandtimeout, витікає до завершення виконання команди відбувається помилка, і ADO відміняє команду. Якщо Ви встановите властивість в нуль, ADO чекатиме нескінченно, поки команда не буде виконана. Упевніться, що використовуваний провайдер підтримує властивість Commandtimeout. Установка Commandtimeout об'єкту Connection ніяк не пов'язана з установкою властивості Commandtimeout об'єкту Command.  Provider Встановлює або повертає рядкове значення, яке містить ім'я використовуваного провайдера. За умовчанням - "MSDASQL". Провайдер може бути також встановлений вмістом властивості Connectionstring або параметром методу Open. Визначення провайдера в більш ніж одному місці може мати непередбачувані результати.  DefaultDatabase Встановлює або повертає рядкове значення, яке містить задану за умовчанням базу даних. Якщо є задана за умовчанням база даних, запити SQL можуть використовувати "дискваліфікований" синтаксис для звернення до об'єктів в цій базі даних. Щоб звертатися до об'єктів з іншої бази даних ви повинні "кваліфікувати" імена об'єктів ім'ям цієї бази даних. При підключенні провайдер записує задану за умовчанням базу даних в цю властивість. Деякі провайдери вирішують лише одну таку базу даних на одне підключення, і в цьому випадку ви не зможете змінити цю властивість. Деякі джерела даних і провайдери можуть не підтримувати цю властивість, генеруючи помилку або повертаючи порожній рядок.  CursorLocation Визначає розташування курсора, тобто місце, де виконується робота з даними. Можливі значення: • adusenone(1) - курсор не використовується (лише для сумісності із старими версіями). • aduseserver(2) - курсор на стороні провайдера (за умовчанням). • aduseclient(3) - курсор на стороні користувача. Може надавати додаткові можливості, які відсутні на стороні провайдера. Зміна властивості Cursorlocation не має жодного ефекту при вже існуючому підключенні. Зв'язані об'єкти Recordset і курсори, возвращённиє методом Execute, успадковують цю установку. При відкритому об'єкті Recordset ця властивість доступна лише для читання.   Об'єктна модель ADO ADO складається з наступних основних компонентів: • Connection. ADO використовує об'єкти Connection для надання окремих з'єднань з джерелом даних. • Command. Об'єкти Command використовуються для надання конкретних команд, що виконуються над джерелом даних. Ці об'єкти використовуються для відстежування параметрів, пов'язаних з командою. • Parameter. Об'єкти Command містять колекцію Parameters, що включає всі пов'язані з командою параметри. Кожен окремий об'єкт Parameter служить для зберігання інформації про параметр передаваному у виконувану команду або такому, що повертається в ній. • Recordset. Об'єкти Recordset забезпечують взаємодію з даними. Вони використовуються для зберігання набору записів, що повертається з джерела даних. • Field. Об'єкти Recordset містять колекцію об'єктів Field, використовуваних для оботи з окремими стовпцями групи рядків. • Property. Об'єкти Connection, Command, Recordset, Field містять колекцію Properties об'єктів Property. Об'єкти Property служать для представлення додаткових параметрів або властивостей об'єкту ADO, які не можуть управлятися вбудованими властивостями об'єкту. • Error. Призначені для уявлення інформації про помилки, які можуть відбуватися в рамках однієї операції. Установка з'єднання з джерелом даних Для цих цілей використовується об'єкт Connection (підключення до джерела даних і управління цим підключенням здійснюється за допомогою методів Open(), Close() об'єкту Connection) . Користувач не може створювати його самостійно. Можна просто дозволити ADO створити з'єднання, використовуване об'єктами Recordset і Command. Проте необхідно створити об'єкт Connection якщо передбачається управління транзакціями (для створення і управління транзакціями призначені наступні методи Connection: Begintrans(), Committrans() і Roolbacktrans()). Рядки з'єднання Вид рядка з'єднання (Таблиця 2), що передається в метод Open(...) об'єкту Connection для різних OLE DB постачальників (MSDN) Таблиця 2 Рядки з’єднання OLE DB Джерело даних Рядок з'єднання OLE DB  Microsoft® Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=physical path to .mdb file  Microsoft SQL Server Provider=SQLOLEDB.1;Data Source=path to database on server  Oracle Provider=MSDAORA.1;Data Source=path to database on server  Microsoft Indexing Service Provider=MSIDXS.1;Data Source=path to file   Вид строки з’єднання (Таблиця 3), що передається в метод Open(...) об’єкта Connection для різних ODBC постачальників даних (MSDN) Таблиця 3 Строки з’єднання ODBC Джерело даних Рядок з'єднання ODBC  Microsoft Access Driver={Microsoft Access Driver (*.mdb)};DBQ=physical path to .mdb file  SQL Server DRIVER={SQL Server};SERVER=path to server  Oracle DRIVER={Microsoft ODBC for Oracle};SERVER=path to server  Microsoft Excel Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file; DriverID=278  Microsoft Excel 97 Driver={Microsoft Excel Driver (*.xls)};DBQ=physical path to .xls file;DriverID=790  Paradox Driver={Microsoft Paradox Driver (*.db)};DBQ=physical path to .db file;DriverID=26  Text Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=physical path to .txt file  Microsoft Visual FoxPro® (with a database container) Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDb=physical path to .dbc file  Microsoft Visual FoxPro (without a database container) Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDb=physical path to .dbf file   Набори записів З'єднання з джерелом даних встановлене. Далі необхідно власне ці дані отримати і якось ними управляти. З цією метою створюється об'єкт Recordset, який інкапсулює набір записів, що повертаються джерелом. За допомогою цього об'єкту ми зможемо додавати, видаляти, змінювати записи у цей об'єкт включений механізм переміщень по записах в наборі даних. Створення набору записів Об'єкт Recordset можна створити декількома способами: в результаті виконання команди (використання методу Execute() об'єкту Command або Connection), або за допомогою методу Open() безпосередньо об'єкту Recordset. • Source - джерело вибірки (набору записів). Може бути як SQL рядок (запит), так і ім'я таблиці або процедури, що зберігається, на SQL сервері. • Activeconnection - З'єднання, використовуване для створення набору записів (вибірки). Може бути передано або у вигляді рядка з'єднання (при цьому відпадає необхідність створення об'єкту Connection - ADO автоматично створює з'єднання, яке буде використано для даного об'єкту Recordset. Покажчик на таке з'єднання можна отримати за допомогою властивості об'єкту Recordset Activeconnection) або у вигляді покажчика на вже створене активне з'єднання • Cursortype - тип курсора для створюваного об'єкту Recordset. Може приймати одне з наступних значень: о adopenunspecified - невизначений тип курсора. о adopenforwardonly - однобічний курсор (значення за умовчанням). Не підтримує методи Movefirst() (на початок вибірки), Movelast() (до останнього запису у вибірці)Moveprevious()(до попереднього запису у вибірці). Також не підтримує використання властивості Recordcount (кількість записів у вибірці). Не відстежуються зміни і додавання, зроблені іншими користувачами. о adopenkeyset - курсор, керований по ключовій безлічі, який може вільно переміщатися і знаходить деякі види змін, внесені до рядків вибірки. Число записів в такому наборі незмінно. Ви не зможете побачити доданих іншими користувачами записів видалені іншими користувачами запису залишаються видимі в такій вибірці, хоча і стають недоступнимі. о adopendynamic - динамічний курсор, який може переміщатися і визначати всі зміни, внесені до даних, що містяться у вибірці. Самий багатофункціональний але і найдорожчий по витраті пам'яті тип курсора. о adopenstatic - статичний курсор. На відміну від DAO, дозволяється модифікувати все ADO Recordset, що навіть мають курсори adforwardonly і adopenstatic. Проте при виборі таких курсорів для вибірки всі зміни що вносяться іншими користувачами для вас невідіми. • Locktype - Тип блокування, використовуваний даним набором записів. Варіанти: о adlockreadonly - лише читання. о adlockpessimistic - блокує рядки, коли ви починаєте редагування (якщо постачальник підтримує даного типа). о adlockoptimistic - блокує зміни лише при передачі змін в БД (підтримується всіма постачальниками даних). о adlockbatchoptimistic - використовується для пакетних операцій модифікації. Пакетна модифікація дозволяє вивантажувати безліч записів модифікувати їх локально і посилати зміни постачальникові в одному пакеті. Большинсто провайдерів не підтримують це блокування. • Options - використовується для вказівки виду Source. Варіанти: о adcmdtext - текстова команда (у SQL угоді). о adcmdtable - таблиця або вистава (вона ж - "вьюха", т.е.view). о adcmdstoredproc - процедура, що зберігається о adcmdunknown - невідомий тип (за умовчанням). Установка фільтру в наборі записів У ADO є механізм обмеження по якому-небудь критерію набору записів, що повертається, - фільтрація вибірки. Саме для цілей фільтрації об'єкт Recordset володіє властивістю Filter. Властивістю Filter є розширення запиту заданого в параметрі Source Recordset'a. Рядок, що передається у властивість Filter, повинен мати вид Імя_поля(стовпця) - Оператор – Значення. Властивість Filter також може набувати значення однієї з нижче перерахованих констант: • adfilternone - Відміняє поточне значення властивості Filter. • adfilterpendingrecords - В режимі пакетної модифікації (см.ніже) це значення можна використовувати для вибору лише з тих рядків, які були змінені, але ще не модифіковані в базі даних. • adfilteraffectedrecords - Вибирає рядки для яких виконувалася остання операція Delete(), Resync(), Updatebatch(), Cancelbatch(). • adfilterfetchedrecords - вибирає рядки, які в даний час містяться в локальному буфері. Компоненти для работи з базою даних Data Source Компонент Data source діє як посередник між компонентами Tdataset (Ttable, Tquery, Tstoredproc) і компонентами Data Controls - елементами управління, що забезпечують представлення даних на формі. Компоненти Tdataset управляють зв'язками з бібліотекою Borland Database Engine (BDE), а компонент Datasource управляє зв'язками з даними в компонентах Data Controls. У типових додатках БД компонент Datasource, як правило, пов'язаний з одним компоненом Tdataset (Ttable або Tquery) і з одним або більш компонентами Data Controls (такими, як Dbgrid, Dbedit і ін.). Зв'язок цього компоненту з компонентами Tdataset і Datacontrols здійснюється з використанням наступних властивостей і подій: • Cвойство Dataset компоненту Datasource ідентифікує ім'я компоненту Tdataset. Можна привласнити значення властивості Dataset на етапі виконання або за допомогою інспектора об'єктів на етапі проектування. • Cвойство Enabled компоненту Datasource активізує або зупиняє взаємозв'язок між компонентами Tdatasource і Data Controls. Якщо значення властивості Enabled рівне true, то компоненти Data Controls, пов'язані з Tdatasource, сприймають зміни набору даних. Використання властивості Enabled дозволяє тимчасово роз'єднувати візуальні компоненти Data Controls і Tdatasource, наприклад, для того, щоб в разі пошуку в таблиці з великою кількістю записів не відображувати на екрані перегортування всієї таблиці. • Властивість Autoedit компоненту Datasource контролює, як ініціюється редагування в компонентах Data Controls. Якщо значення властивості Autoedit рівне true, то режим редагування починається безпосередньо при здобутті фокусу компонентом Data Controls, пов'язаним з даним компонентом Tdataset. Інакше режим редагування починається, коли викликається метод Edit компоненту Tdataset, наприклад, після натиснення користувачем кнопки Edit на компоненті Dbnavigator. • Подія Ondatachange компоненту Datasource настає, коли відбувається зміна значення поля, запису, таблиці, запиту. • Cобиті Onupdatedata компоненту Datasource настає, коли користувач намагається змінити поточний запис в Tdataset. Обробник цієї події слід створювати, коли потрібно дотримати умови посилальної цілісності або обмеження, що накладаються на значення полів змінної бази даних. Компонент Ttable Найбільш простим способом звернення до таблиць баз даних є використання компоненту Ttable, що надає доступ до однієї таблиці. Для цієї мети найчастіше використовуються наступні властивості: • Active - вказує, відкрита (true) чи ні (false) дана таблиця. • Databasename - ім'я каталога, що містить шукану таблицю, або псевдонім (alias) видаленої БД (псевдоніми встановлюються за допомогою утиліти конфігурації BDE, опис якої присутній в багатьох джерелах, присвячених продуктам Borland, або за допомогою SQL Explorer меню Database/explore, що викликається за допомогою пункту). Ця властивість може бути змінене лише у випадку, якщо таблиця закрита (її властивість Active рівна false). • Tablename - ім'я таблиці. • Exclusive - якщо цю властивість приймає значення true, то жодною інший користувач не може відкрити таблицю, якщо вона відкрита даним застосуванням. Якщо ця властивість рівна false (значення за умовчанням), то інші користувачі можуть відкривати цю таблицю. • Indexname - ідентифікує вторинний індекс для таблиці. Цю властивість не можна змінити, поки таблиця відкрита. • Masterfields - визначає ім'я поля для створення зв'язку з іншою таблицею. • Mastersource - ім'я компоненту Tdatasource, за допомогою якого Ttable отримуватиме дані із зв'язаної таблиці. • Readonly - якщо ця властивість рівна true, таблиця відкрита в режимі "лише для читання". Не можна змінити властивість Readonly, поки таблиця відкрита. • Eof, Bof - ці властивості набувають значення true, коли покажчик поточного запису розташований на останній або відповідно першому запису таблиці. • Fields - масив об'єктів Tfield. Використовуючи цю властивість, можна звертатися до полів по номеру, що зручно, коли заздалегідь невідома структура таблиці: Edit1->text=table1->fields[2]->AsString; Компонент ADOQuery Компонент Query (Таблиця 4) представляє частина бази даних — записи, вміст яких задовольняє критерію Sql-запросу до таблиці. Таблиця 4 Властивості компоненту ADOQuery Властивість Визначає  Name Ім'я компоненту. Використовується компонентом Datasource для зв'язку результату виконання запиту (набору записів) з компонентом, що забезпечує перегляд записів, наприклад Dbgrid  SQL Записаний на мові Sql-запрос до бази даних (до таблиці)  Active При привласненні властивості значення true активізує виконання запиту  RecordCount Кількість записів в базі даних, що задовольняють критерію запиту   Компонент DBGrid Компонент Tdbgrid забезпечує табличний спосіб відображення на екрані рядків даних з компонентів Ttable або Tquery. Додаток може використовувати Tdbgrid для відображення, вставки, знищення, редагування даних БД. Зазвичай Dbgrid використовується у поєднанні з Dbnavigator хоча можна використовувати і інші інтерфейсні елементи, включивши в їх обробники подій методи First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel компоненту Ttable. Зовнішній вигляд таблиці (наприклад, написи в заголовках стовпців) може бути змінений за допомогою редактора властивостей Columns Editor. Для виклику Columns Editor потрібне або вибрати відповідну опцію в контекстному меню компоненту Dbgrid або клацнути мишею в колонці значень напроти властивості Columns в інспекторові об'єктів. Функції, що викликаються в програмі void interface(char *) - функція основного інтерфейсу програми. Як вхідний параметр приймає ім'я робочого файлу fn яке передається функціями void create() або void open(). У цій функції реалізовано вельми зручне меню, через яке і відбувається виклик подальший функція додавання сортування, видалення, пошуку і редагування; void add(char *) - функція додавання запису в БД. Вхідний параметр fn ім'я файлу. Використовує функцію int find_max_num(char *) для привласнення запису, що вводиться, свій унікальний номер. void del(char *) - функція видалення запису з БД. Вхідний параметр fn ім'я файлу. Використовує тимчасовий файл temp.$$$, в кінці виконання функції тимчасовий файл перейменовується у файл під ім'ям змінної fn; void edit(char *) - функція редагування існуючого запису. Вхідний параметр fn ім'я файлу. Дозволяє змінювати № (код) записи, а також будь-яку інформацію запису; void view(char *, int ) - функція виведення даних на екран. Вхідний параметр fn ім'я файлу; void find(char *) - функція пошуку запису по даті народження. Вхідний параметр fn ім'я файлу; int get_number(char *) - повертає кількість записів у файлі. Вхідний параметр fn ім'я файлу; void open() - відкриття файлу БД. Йде запит на ймення файл, після цього до імені файлу автоматично додається розширення “.dat” ім'я цього файлу вважається робочим для всієї програми. При вдалому відкритті файлу його ім'я передається у функцію void interface(char *) і т.д.; Текст програми //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Buttons.hpp> #include <ComCtrls.hpp> #include <ToolWin.hpp> #include <Dialogs.hpp> #include <Menus.hpp> #define N 100 class PRICE { AnsiString Name; int Year; int Month; int Day; int Mark1; int Mark2; int Mark3; bool Sex; int Lost; public: PRICE(); AnsiString GetName() {return Name;} int GetYear() {return Year;} int GetMonth() {return Month;} int GetDay() {return Day;} int GetMark1() {return Mark1;} int GetMark2() {return Mark2;} int GetMark3() {return Mark3;} int GetSex() {return Sex;} int GetLost() {return Lost;} void Add(AnsiString, int, int, int, int, int, int, bool, int); }; //--------------------------------------------------------------------------- PRICE::PRICE() { Name = "NULL"; Year = 0; Month = 0; Day = 0; Mark1 = 0; Mark2 = 0; Mark3 = 0; Sex = 0; Lost = 0; } //--------------------------------------------------------------------------- void PRICE::Add(AnsiString name, int year, int month, int day, int mark1, int mark2, int mark3, bool sex, int lost) { Name = name; Year = year; Month = month; Day = day; Mark1 = mark1; Mark2 = mark2; Mark3 = mark3; Sex = sex; Lost = lost; } //--------------------------------------------------------------------------- class TMP : public TForm { __published: // IDE-managed Components TMemo *Name; TMemo *Year; TMemo *Month; TMemo *Mark1; TMemo *Mark2; TMemo *Day; TEdit *FindName; TEdit *FindYear; TEdit *FindMonth; TEdit *FindDay; TEdit *FindMark1; TEdit *FindMark2; TMemo *No; TEdit *FindNo; TToolBar *ToolBar1; TSpeedButton *OpenBut; TSpeedButton *SaveBut; TOpenDialog *OD; TSaveDialog *SD; TMemo *Lost; TMemo *Sex; TMemo *Mark3; TEdit *FindLost; TEdit *FindSex; TEdit *FindMark3; TLabel *L01; TLabel *L02; TLabel *L03; TLabel *L04; TLabel *L05; TLabel *L06; TLabel *L07; TLabel *L08; TLabel *L09; TLabel *L10; TButton *NewStud; void __fastcall NewStudClick(TObject *Sender); void __fastcall OpenButClick(TObject *Sender); void __fastcall SaveButClick(TObject *Sender); void __fastcall Find(TObject *Sender); private: // User declarations public: // User declarations PRICE Stud[N]; void __fastcall Clear(); void __fastcall Refresh(); void __fastcall View(int); void __fastcall Open(AnsiString); void __fastcall Save(AnsiString); __fastcall TMP(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TMP *MP; //--------------------------------------------------------------------------- #endif //--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Menus.hpp> //--------------------------------------------------------------------------- class TAdd : public TForm { __published: // IDE-managed Components TEdit *Name; TEdit *Year; TEdit *Month; TEdit *Day; TLabel *L1; TLabel *L2; TLabel *L3; TLabel *L4; TGroupBox *EditBox; TButton *EditBut; TButton *DelBut; TButton *LeftBut; TButton *RightBut; TEdit *Numb; TButton *NewBut; TLabel *L5; TLabel *L6; TLabel *L7; TEdit *Mark1; TEdit *Mark2; TEdit *Mark3; TLabel *L8; TLabel *L9; TEdit *Lost; TComboBox *Sex; TMainMenu *MainMenu1; TMenuItem *N3; void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall NewButClick(TObject *Sender); void __fastcall DelButClick(TObject *Sender); void __fastcall EditButClick(TObject *Sender); void __fastcall LeftButClick(TObject *Sender); void __fastcall RightButClick(TObject *Sender); private: // User declarations public: // User declarations __fastcall TAdd(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TAdd *Add; //--------------------------------------------------------------------------- #endif //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TMP *MP; //--------------------------------------------------------------------------- __fastcall TMP::TMP(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TMP::Clear() { No->Lines->Clear(); Name->Lines->Clear(); Year->Lines->Clear(); Month->Lines->Clear(); Day->Lines->Clear(); Mark1->Lines->Clear(); Mark2->Lines->Clear(); Mark3->Lines->Clear(); Sex->Lines->Clear(); Lost->Lines->Clear(); } //--------------------------------------------------------------------------- void __fastcall TMP::Refresh() { Clear(); for (int i=0; i<N; i++) { if (Stud[i].GetName() != "NULL") { No->Lines->Add(i+1); Name->Lines->Add(Stud[i].GetName()); Year->Lines->Add(Stud[i].GetYear()); Month->Lines->Add(Stud[i].GetMonth()); Day->Lines->Add(Stud[i].GetDay()); Mark1->Lines->Add(Stud[i].GetMark1()); Mark2->Lines->Add(Stud[i].GetMark2()); Mark3->Lines->Add(Stud[i].GetMark3()); Sex->Lines->Add(Stud[i].GetSex()==1?"Мужской":"Женский"); Lost->Lines->Add(Stud[i].GetLost()); } } } //--------------------------------------------------------------------------- void __fastcall TMP::View(int i) { if (Stud[i].GetName() != "NULL") { No->Lines->Add(i+1); Name->Lines->Add(Stud[i].GetName()); Year->Lines->Add(Stud[i].GetYear()); Month->Lines->Add(Stud[i].GetMonth()); Day->Lines->Add(Stud[i].GetDay()); Mark1->Lines->Add(Stud[i].GetMark1()); Mark2->Lines->Add(Stud[i].GetMark2()); Mark3->Lines->Add(Stud[i].GetMark3()); Sex->Lines->Add(Stud[i].GetSex()==1?"Мужской":"Женский"); Lost->Lines->Add(Stud[i].GetLost()); } } //--------------------------------------------------------------------------- void __fastcall TMP::NewStudClick(TObject *Sender) { Add->Visible = true; MP->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TMP::OpenButClick(TObject *Sender) { if (OD->Execute()) { Open(OD->FileName); Refresh(); } } //--------------------------------------------------------------------------- void __fastcall TMP::SaveButClick(TObject *Sender) { if (SD->Execute()) { Save(SD->FileName); } } //--------------------------------------------------------------------------- void __fastcall TMP::Open(AnsiString Path) { char Name[32]; int Year; int Month; int Day; int Mark1; int Mark2; int Mark3; bool Sex; int Lost; int load = FileOpen(Path, 0); for (int i=0; i<N; i++) { FileRead (load, Name, 32); FileRead (load, &Year, sizeof(Year)); FileRead (load, &Month, sizeof(Month)); FileRead (load, &Day, sizeof(Day)); FileRead (load, &Mark1, sizeof(Mark1)); FileRead (load, &Mark2, sizeof(Mark2)); FileRead (load, &Mark3
Антиботан аватар за замовчуванням

08.02.2013 00:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!