Придністровський Державний Університет ім. Т. Г. Шевченко p>
Кафедра АСОІіУ p>
Курсова робота p>
з дисципліни «Технологія програмування» p>
на тему: p>
Система рейтингового контролю знань. p>
Роботу виконали: Роботу перевірили:студент ІТФ-96в викладачі:
Кольцов Е.С. Галюшіна О.В. p>
Тирасполь 1999 p>
Зміст: p>
Завдання на курсову роботу p>
1.1 Завдання p>
4 p>
1.2 Реалізація p>
4 p>
Введення p>
Глава I: Системи підтримки прийняття рішень p>
1. Система Paradox
Глава II: Особливості об'єктно-орієнтованого аналізу
19
Інформаційна модель
21
Модель станів для об'єкта «Операції над БД»
22
Модель станів для об'єкта «Введення в базу»
25
Модель взаємодії об'єктів
26
Таблиця переходів до стану для об'єкта «Операції над БД»
27
Таблиця переходів до стану для об'єкта «Введення в бузу»
28
Список подій
29
ДПДД для стану «Ініціалізація» об'єкта «Операції над БД»
40
ДПДД для стану «Створення БД» об'єкта «Операції над БД»
40
ДПДД для стану «Відкриття БД» об'єкта «Операції над БД»
41
ДПДД для стану «Редагування БД» об'єкта «Операції над БД»
41
ДПДД для стану «Закриття БД» об'єкта «Операції над БД»
42
ДПДД для стану «Введення даних» об'єкта «Операції над БД»
42
ДПДД для стану «Збереження БД» об'єкта «Операції над БД»
43
ДПДД для стану «неуспішне відкриття БД» об'єкта «Операції над БД»
43
ДПДД для стану «Оновлення БД» об'єкта «Операції над БД»
44
Текст програми
47
Список використаної літератури
77 p>
Завдання на курсову роботу p>
з дисципліни «Технологія програмування» p>
тема: p>
Система рейтингового контролю знань. P>
1.1 Завдання p>
У цій роботі було необхідно написати програму, з використанням об'єктно-орієнтованого методу програмування і об'єктно-орієнтованого аналізу, яка дозволяла б вести обліковий запис студентів з десяти предметів з оцінками. У програму заноситися p>
П.І.Б. студента, факультет на якому він навчається, спеціальність, яку набуває і група відповідно. Програма автоматично вважає середній бал і заносить його в базу. Дана програма сортує, знаходить і фільтрує дані щодо студентів, що полегшує пошук або перегляд перед друком потрібних студентів. Результатом програми є висновок перед друком всіх студентів або по кожному студенту відповідно. P>
1.2 Реалізація p>
Дана програма була реалізована на об'єктно-орієнтованої мови С + + і написана в середовищі розробника програмного забезпечення З + + Builder. p>
Введення p>
У об'єктне програмування:
Традиційна технологія програмування 70-х років - структурнийпрограмування: p>
- модульне програмування; p>
- спадний програмування; p>
- структурний проектування процедур і даних (програмування безgoto). p>
Мова Паскаль - відповідає зазначеним принципам і був розроблений підвпливом ідей структурного програмування. p>
Альтернативний підхід - висхідне програмування - припускає впростому випадку створення шару структур даних та процедур, що забезпечуютьповний набір дій над об'єктами, які представлені в цій задачі.
Приклад традиційного підходу бібліотека стандартних функцій. P>
Наступний крок - введення в програму об'єктів. Під об'єктомрозуміється структура даних, яка містить повну інформацію про станвідповідного фізичного об'єкта, що відображається програмою. У
Сі цьому може відповідати структура struct, у Паскалі - запис
(record). Безліч об'єктів одного типу складають поняття класу.
Об'єктно-орієнтований підхід до розробки програм припускає, що впрограмі встановлюється взаємно-однозначна відповідність міжфізичними об'єктами,відображаються програмою, і програмними об'єктами, які є, посуті, структурованими змінними (надалі під терміном
"об'єкт" будемо розуміти програмний об'єкт). p>
Традиційний підхід: ---------- мінлива тип даних p>
Об'єктно-орієнтований підхід:Фізичний програмний клас об'єкт об'єкт об'єктів p>
При створенні об'єктів програміст визначає безліч функцій, придопомогою яких (а точніше, виключно через які) над об'єктомвиконується деякий допустимий безліч операцій.
Такі функції повинні мати обов'язковий параметр - посилання на поточнийоб'єкт, для якого вони викликаються. Самі функції є невід'ємноючастиною поняття класу об'єктів, так як вони визначають можливідії над об'єктами одного і того ж типу (тобто класу).
Фактично визначення класу об'єктів як типу даних і відомого наборуфункцій для виконання операцій над змінними цього типу еквівалентнопоняттю базового типу даних (БТД) мови програмування. Єдиневідміну класу від БТД полягає в тому, що перша визначаєтьсяпрограмістом, а другий вбудований у визначення мови програмування. p>
Мова програмування Сі + + є розширення мови Сідля програмування об'єктів та їх класів. При цьому використаннякласів еквівалентно аж до синтаксису використання базових типівданих. p>
Глава I p>
Системи підтримки прийняття рішень p>
1. Система Paradox p>
Paradox представляє із себе реляційну базу даних,розроблену формою Borland. Ця база даних використовується як длянепрофесіоналів, яким потрібно вирішувати завдання типу картотеки тощо,оскільки володіє досить розвиненою і зрозумілою системою меню іпідказки, так і для професійних програмістів,розробляють складні інформаційні системи, використовуючи при цьомумова запитів QBE або мова розробки додатків PAL. Крім версійпід DOS, розроблена версія Paradox for Windows. Вимоги до технічнихзасобам і порівняльні характеристики по швидкодії см. Глава??.
Підтримуються такі типи полів: p>
- алфавітно-цифрові (рядкові); p>
- числові; p> < p> - грошові; p>
- дата; p>
- Memo - поля; p>
- графічні; p>
- OLE - поля;
- BLOB (Binary Large OBject); p>
Причому, типи полів від Memo до Blob підтримуються тільки в Paradoxfor Windows. p>
рядкові поля дозволяють містити будь-яку послідовність символівдовжиною до 255 байт. p>
Числові поля можуть містити як цілі, так ідійсні числа з числом цифр до 15. p>
Грошові поля - теж що і числові з двома знаками після коми,окремий тип служить тільки для визначення Paradox-му формату виводуданих полів. p>
Поля дати - відповідно містять дату і дозволяють проводитинад собою відповідні операції порівняння та вирахування. p>
Мемо - поля містять будь-який текст необмеженої довжини (разом затрибутами тексту - шрифт, накреслення, колір та ін) p>
У графічних полях можуть міститися графіка типу bitmat. p>
У OLE - полях можуть міститися об'єкти від інших програм
Windows. P>
У BLOB - полях можна зберігати будь-які дані на вибіркористувача (насправді з точки зору Paradox, Memo, Graphic і
OLE - поля також є полями типу BLOB). На даний моментможливо зберігання об'єктів MultiMedia, креслення та інші програми. p>
Досить зручним є той факт, що для всіх типів полівіснує значення "пусте поле". p>
Також слід зазначити тип даних "BLOB", тому що в полях такоготипу можна зберігати будь-які дані довільного розміру, що вигідновідрізняється від MEMO-полів у dBASE і Clipper, які дозволяють зберігатитільки текст, та й то обмеженого об'ема (4K). p>
Вся робота по створенню та роботі з таблицями, підготовці звітів ізапитів, створенню досить складних додатків, які не потребують будь-яких складних розрахунків проводиться в єдинійінтегрованому середовищі за допомогою системи меню. Система володієдосить широкими можливостями з маніпулювання даними іпобудови звітів, деякими корисними статистичними таалгебраїчними функціями для створення розрахункових завдань. p>
Функції маніпулювання даними можна розділити на наступнідосить стандартні групи: p>
- робота з таблицями; p>
- робота з окремими записами; p>
- підготовки звітів; p>
- робота з запитами; p>
- робота з мережею; p>
- робота з макросами; p>
- роботи з діловою графікою. p>
Функе роботи з таблицями дозволяють створювати таблиці,перейменовувати, видаляти, копіювати і, що досить важливо,модифікувати структуру таблиць, навіть якщо в них вже знаходяться дані.
Також, що важливо, всі ці операції проводяться не над окремимифайлами (як, скажімо, в dBase), а над усім сімейством таблиць (включаючифайли даних, індексів, запитів та звітів). Є і такі операції реляційної алгебри, як об'єднання і віднімання? Таблиць? Відносин?. P>
Функції роботи з записами - стандартні (додати, видалити,відредагувати). p>
Зручними засобами володіє генератор звітів - форму звітуможна "намалювати" на екрані і отримати фактично те, що ви бачите.
Генератор звітів дозволяє створювати як звіти в "стандартної"
(табличній) формі, так і звіт у вільній формі (в т.ч. наклейки, діловілисти та ін), проводити угруповання звіту за значеннями полів
(причому кількох рівнів вкладеності), використовувати обчислювані поля. p>
Опції запитів реалізовані на реляційному мовою QBE, причомузвіти можна формувати і по запитними формам. У Paradox for
Windows побудова запитів ще більшеспрощено - для зв'язків таблиць один з одним досить просто провестилінії між відповідними полями. p>
Функції роботи з мережею дозволяють отримати доступ до віддаленої
БД, заблокувати дані для захисту від доступу інших користувачів начас модифікації, встановити захист за паролем від несанкціонованогодоступу. p>
Функції роботи з макросами дозволяють практично створювати сценарійроботи з користувачем і робити деякі прості програми. p>
Система ділової графіки дозволяє за таблицями будувати до шестифункцій у вигляді різного роду діаграм і графіків. p>
Якщо всіх перерахованих можливостей недостатньо, то можнаскористатися мовою побудови додатків PAL. Дана мова дозволяє скористатися всіма перерахованими вищеможливостями, тому що з нього можна мати доступ до функцій основногоменю, а також володіє додатковими засобами, характерними длямов програмування (керуючі структуритипи if - then - else, цикли, змінні, оператори введення -висновку, додаткові математичні і статистичні функції,можливість створення процедур і бібліотек процедур) та засобами доступу до продукту фірми Borland - SQL-link. Засобами Pal можнастворювати призначені для користувача меню, вікна іінші радощі для недосвідченого користувача, для якого картинкаважливіше, ніж утримання. p>
У системі є відладчик, за допомогою якого можна доситьзручно налагоджувати програми на PAL. На жаль, для роботи програм на PAL необхідна або система Paradox, або відповідний модульвиконання, тобто проблематичною стає можливість розповсюдженняпрограм (кожен користувач повинен придбати відповідний Run-timeмодуль для виконання програм. p>
За показниками швидкодії система знаходиться в перших рядахсеред подібних. p>
Система підтримує наступні індекси - первинний (не може бутиповторюваних ключових полів), вторинний - по одному полю, і складовою --по групі полів. На жаль, якщо таблиця має кілька індексів, топри роботі з записами здійснюється модифікація тільки одного індексу, авсі інші будуть перебудовуватися або після закінчення роботи зтаблицею, або за запитом користувача. Можна зробити цей процес
"прозорим" для користувача (перша можливість - індексиперебудовуються при закритті таблиці), на ясно, що це доситьсильно уповільнює роботу з подібними таблицями і завдає користувачудеякі незручності (особливо якщо таблиці великих розмірів). p>
Система підтримує доступ до БД на сервері по мережі типу Novell,
3Com, Starlan, Banyan, а також іншими, сумісними з NetBios ізабезпечує необхідну блокування даних як на рівні таблиць, так іна рівні окремих записів. Paradox for Windows дозволяє працювати звсіма типами мереж, які підтримуються Windows. Система має і такукорисну особливість, як можливість визначити під час роботи,змінювалися чи дані в таблицях, до яких мають доступ декількакористувачів одночасно, хоча це і збільшує навантаження на мережу іможе створити деякі проблеми при наявності великої кількостікористувачів. p>
Дані в таблицях зберігаються в їх природному вигляді безперетворення, а не у вигляді символьних рядків, як це прийнято у форматіdBase, що позначається на прискоренні роботи та зменшенні розмірів самоїбази даних. p>
Є засоби експорту та імпорту даних з/в формат
Qattro/Pro, 1-2-3, Symphony, dBase, VisiCalc, а в системі Paradoxfor Windows можливо працювати з файлами dBase без перетворення. p>
Таким чином, система достатня зручна як длянепідготовленого користувача, який хоче вирішити свою дрібну задачкутипу записника - за рахунок розвиненої системи меню та підказки, ізручна для професійного програміста, який вирішує доситьскладні завдання - за рахунок багатих можливостей, що надаються системою,потужного реляційного мови запитів QBE, розвинених засобівпобудови звітів, наявності мови побудови додатків, що маєвихід на SQL-link; розвиненізасоби захисту даних від несанкціонованого доступу. Все це дозволяєбудувати складні програми, що працюють у мережі з багатьмакористувачами. Але відсутність можливості одержати виконуваний модуль накладає обмеження на широке розповсюдження розробленихпрограм (хоча Run-Time модуль коштує досить дешево, все-такипсихологічно краще купити одну або декілька програм в одноговиробника, ніж зв'язуватися з декількома) А робота фактично в режимі інтерпретації PAL хоч і практично не позначається припобудові складних інформаціоннио-пошукових систем, в яких час напошук даних значно перевищує час виконання розрахунків, аленакладає обмеження на системи, в яких крім завдань пошуку стоятьдосить складні завдання обробки даних. Але Paradox for Windows дозволяє подолати це обмеження, тому що в ньому можливо мати доступ до функцій, написаних на звичайних мовах програмування ізібрані в динамічні бібліотеки (DDL). Так що можна користуватисяцією можливістю, хоча перенесення програм у середу Windows (у тому числіі СУБД) роботу цих програм явно не прискорює. p>
На користь вибору даної системи для нашого завдання можуть служитинаступні фактори (напевно): p>
- програмування на мові програмування PAL дозволяє проводитидосить складну обробку даних, дозволяє використовувати розвиненізасоби діалогу з користувачем; p>
- дані в БД зберігаються в їх природному вигляді, що дозволяєзбільшити швидкість обробки і зменшити необхідне для зберігання данихпростір; p>
- дуже корисні поля типу BLOB - дозволяють зберігати текстдовільної довжини, наприклад, тексти методичок тощо; p>
- можливість мережевої взаємодії дозволяє проводитиподальше розширення системи до рівня інституту з підключенням іншихпідсистем (скажімо, УЕТ, деканат та ін) і забезпечувати необхідну врамках подібних систем захист даних; p>
- багаті можливості з експорту та імпорту даних; p>
- можливість роботи під Windows; p>
- відносно прості, але потужні засоби для побудови запитів добазі даних. p>
Хоча, звичайно, вищевказані обмеження (неможливість отримати
. ЕХЕ - файл і інтерпретатор) - це для нас явні мінуси. P>
Глава IV p>
Особливості об'єктно-орієнтованого аналізу p>
При розробці даної курсової роботи було використано об'єктно --орієнтований підхід до написання даної програми. Проектуваннявідбувалося таким чином: p>
1. Була сформована інформаційна модель, на якій були виділені об'єкти, що роблять вплив на хід процесу. У процесі проектування навмисно в інформаційну модель були включені деякі абстрактні типи даних, які при подальшій розробці не утворили об'єкти. Це було зроблено з метою більш повно відобразити всі відносини і взаємодії, що виникають при роботі програми. P>
2. Для кожного об'єкта була сформована модель станів, яка відображала події і стани, в яких міг знаходитися об'єкт, тобто його життєвий цикл. Для кількох об'єктів не було моделі станів. Це пов'язано з тим, що характер поведінки даних об'єктів є суто статичним і не зазнає значних змін. Навпаки, об'єкти, що мають динамічний поведінку були повно відображені на моделях станів. Особливість представлених моделей станів полягає в тому,?? то на них представлені події та дії, які виникають при виникненні перших. p>
3. Модель взаємодії об'єктів являє собою графічне представлення зв'язків і взаємодії між усіма об'єктами, визначеними на інформаційній моделі. P>
4. У об'єктів, з моделлю станів, була сформована таблиця переходів до стану, що демонструє несуперечність моделі станів. P>
5. Для всіх об'єктів була сформована таблиця всіх можливих подій об'єктів. P>
6. Для кожної дії у кожного певного об'єкта була сформована ДПДД, що відбиває послідовність дій, що виникають при певній дії. P>
Інформаційна модель p>
Модель станів для об'єкта «Операції над БД» p> < p> 7 p>
Модель станів для об'єкта «Введення даних» p>
Модель взаємодії об'єктів p>
Таблиця переходів до стану p>
для об'єкта «Операції над БД » p>
| Перебуваючи | O1 | O2 | O3 | O4 | O5 | O6 | O7 | O8 | O9 |
| ня | | | | | | | | | |
| Ініціати | - | 2 | 3 | - | - | - | - | - | - |
| лізація | | | | | | | | | |
| я | | | | | | | | | |
| Створений | - | - | - | - | - | 6 | - | - | - |
| ие | | | | | | | | | |
| Відкрито | - | - | - | 4 | - | 6 | - | - | - |
| ие | | | | | | | | | |
| Неуспе | - | - | - | - | 5 | - | - | - | - |
| х | | | | | | | | | |
| Закритий | 1 | - | - | - | - | - | - | - | - |
| ие | | | | | | | | | |
| Редакт | - | - | - | - | - | - | 7 | - | - |
| ірован | | | | | | | | | |
| ие | | | | | | | | | |
| Оновлено | - | - | - | - | - | 6 | - | 8 | - |
| ение | | | | | | | | | |
| Введення в | - | - | - | - | - | - | - | - | 9 |
| базу | | | | | | | | | |
| Схране | 1 | - | - | - | - | - | - | - | - |
| ня | | | | | | | | | | p>
Таблиця переходів до стану p>
для об'єкта «Введення даних» p>
| Стан | В1 | В2 | В3 | В4 | В5 | В6 |
| Ініціаліз | - | 2 | - | - | - | - |
| ація | | | | | | |
| Відключення | - | - | 3 | - | - | - |
| я | | | | | | |
| редагую | | | | | | |
| вання | | | | | | |
| Формуванні | - | - | - | 4 | - | - |
| ня | | | | | | |
| пошуку, | | | | | | |
| фільт., | | | | | | |
| сортир., | | | | | | |
| Формуванні | - | - | - | - | 5 | - |
| ня груп | | | | | | |
| Перегляд | | | | | | 6 |
| Перед | | | | | | |
| печ. | | | | | | |
| Друк | - | - | - | - | - | - | p>
Список подій p>
| Позначка | Значення | Дані події | Джерело | Призначення |
| О1 | Ініціалізація | ID Основний | Основний | Операції |
| | | Інтерфейс.ID | інтерфейс | |
| | | Операції | | |
| О2 | Створення БД | ID Основний | Операція | Створення |
| | | Інтерфейс.ID | | |
| | | Операціі.Созда | | |
| | | Ня | | |
| О3 | Відкриття БД | ID Основний | Операція | Відкриття |
| | | Інтерфейс.ID | | |
| | | Операціі.Откри | | |
| | | Нення | | |
| О4 | Неуспіх | ID Основний | Операція | Статус |
| | | Інтерфейс.ID | | |
| | | Операціі.Откри | | |
| | | Тіе.Статус | | |
| ПРО5 | Закриття БД | ID Основний | Операція | Закриття |
| | | Інтерфейс.ID | | |
| | | Операціі.Закри | | |
| | | Нення | | |
| ПРО6 | Редагування БД | ID Основний | Операція | Редагування |
| | | Інтерфейс.ID | | |
| | | Операціі.Редак | | |
| | | Тирование | | |
| ПРО7 | Оновлення БД | ID Основний | Операція | Оновлення |
| | | Інтерфейс.ID | | |
| | | Операціі.Обнов | | |
| | | Ня | | |
| ПРО8 | Введення в БД | ID Основний | Операція | Редагування |
| | | Інтерфейс.ID | | |
| | | Операції. | | |
| ПРО9 | Збереження БД | ID Основний | Операція | Збереження |
| | | Інтерфейс.ID | | |
| | | Операціі.Сохра | | |
| | | Ня | | |
| В1 | Ініціалізація | ID Основний | Основний | База даних |
| | | Інтерфейс.ID | інтерфейс | |
| | | Операції | | |
| В2 | Відключення | ID Основний | Операція | Перехід в |
| | Редагування | інтерфейс.ID | | основний |
| | | Операції. | | Інтерфейс |
| В3 | Формування пошуку, | ID Основний | Основний | Формування |
| | Фільтра, сортування | інтерфейс.ID | інтерфейс | фільтра |
| | | Операціі.ID | | |
| В4 | Формування груп | ID Основний | Основний | Формувати |
| | | Інтерфейс.ID | інтерфейс | |
| | | Операції. | | |
| В5 | Дивитися перед | ID Основний | Основний | Перегляд |
| | Печаткою | інтерфейс.ID | інтерфейс | учнів |
| | | Операціі.ID | | |
| В6 | Друкувати | ID Основний | Основний | Учнів |
| | | Інтерфейс.ID | інтерфейс | |
| | | Операціі.ID | | | p>
ДПДД для стану Ініціалізація об'єкту «Операції над БД» p>
ДПДД для стану Створення бази об'єкта «Операції над БД» p>
ДПДД для стану Відкриття бази об'єкта «Операції над БД» p>
ДПДД для стану Редагування бази об'єкта «Операції над БД» p>
ДПДД для стану Закриття бази об'єкта «Операції над БД» p>
ДПДД для стану Збереження БД об'єкта «Операції над БД» p>
ДПДД для стану неуспішне відкриття БД об'єкта «Операції над БД» p>
ДПДД для стану Оновлення БД об'єкта «Операції над БД » p>
Текст програми p>
У лістинг програми був включений весь той код, який був написаний впроцесі розробки та включення тих рядків коду, які булиавтоматично згенерували С + + Builder: p>
1. Заголовки:
Kur1.h:
//------------------------------------------------ --------------------------< br>-
# ifndef kur1H
# define kur1H
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include "Grids.hpp"
# include
# include
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TForm1: public TForm
(
__published:// IDE-managed Components p>
TMainMenu * MainMenu1; p>
TMenuItem * N1; p>
TMenuItem * N3; p>
TMenuItem * N4; p>
TMenuItem * N10; p>
TMenuItem * N14; p>
TMenuItem * N16; p>
TMenuItem * N17; p>
TOpenDialog * OpenDialog1; p>
TSaveDialog * SaveDialog1; p>
TMenuItem * N18; p>
TMenuItem * N20; p>
TPrintDialog * PrintDialog1 ; p>
TPrinterSetupDialog * PrinterSetupDialog1; p>
TStatusBar * StatusBar1; p>
TPanel * Panel1; p>
TDBGrid * DBGrid1; p> < p> TDBNavigator * DBNavigator1; p>
TMenuItem * N2; p>
TMenuItem * N5; p>
TMenuItem * N6; p>
TBitBtn * BitBtn1; p>
TBitBtn * BitBtn2; p>
TBitBtn * BitBtn3; p>
TMenuItem * N7; void __fastcall N10Click (TObject * Sender); void __fastcall N17Click (TObject * Sender) ; void __fastcall N14Click (TObject * Sender); p>
void __fastcall N5Click (TObject * Sender); void __fastcall N2Click (TObject * Sender); void __fastcall N16Click (TObject * Sender); void __fastcall N20Click (TObject * Sender); void __fastcall BitBtn1Click (TObject * Sender); void __fastcall BitBtn2Click (TObject * Sender); void __fastcall BitBtn3Click (TObject * Sender); void __fastcall N7Click (TObject * Sender); void __fastcall N4Click (TObject * Sender);private:// User declarationspublic:// User declarations
//AnsiString file2; p>
__fastcall TForm1 (TComponent * Owner); p>
);
//------------------------------------------------ --------------------------< br>--extern TForm1 * Form1;
//------------------------------------------------ --------------------------< br>-
# endif
Datam.h:
//------------------------------------------------ --------------------------< br>-
# ifndef DatamH
# define DatamH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TDM1: public TDataModule
(
__published:// IDE-managed Components p>
TDataSource * DataSource1; p>
TTable * Table1; p>
TQuery * Query1; p>
TDataSource * DataSource2;private:// User declarationspublic:// User declarations p>
__fastcall TDM1 (TComponent * Owner);
);
//------------------------------------------------ --------------------------< br>--extern TDM1 * DM1;
//------------------------------------------------ --------------------------< br>-
# endiffilename.h:
//------------------------------------------------ --------------------------< br>-
# ifndef filenameH
# define filenameH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TForm6: public TForm
(
__published:// IDE-managed Components p>
TEdit * Edit1; p>
TLabel * Label2; p>
TBevel * Bevel1; p>
TButton * Button1; p>
TButton * Button2; void __fastcall Button1Click (TObject * Sender);private:// User declarationspublic:// User declarations p>
__fastcall TForm6 (TComponent * Owner); p>
);
//------------------------------------------------ --------------------------< br>--extern TForm6 * Form6;
//------------------------------------------------ --------------------------< br>-
# endif p>
filter.h:
//------------------------------------------------ --------------------------< br>-
# ifndef filterH
# define filterH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TForm5: public TForm
(
__published:// IDE-managed Components p>
TBevel * Bevel1; p>
TLabel * Label1; p>
TLabel * Label2; p>
TComboBox * ComboBox1; p>
TEdit * Edit1; p>
TButton * Button1; p>
TButton * Button2; p>
TButton * Button3; void __fastcall Button3Click ( TObject * Sender);private:// User declarationspublic:// User declarations p>
__fastcall TForm5 (TComponent * Owner);
);
//------------------------------------------------ --------------------------< br>--extern TForm5 * Form5;
//------------------------------------------------ --------------------------< br>-
# endif
Findcust.h:
//------------------------------------------------ --------------------------< br>-
# ifndef filterH
# define filterH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TForm5: public TForm
(
__published:// IDE-managed Components p>
TBevel * Bevel1; p>
TLabel * Label1; p>
TLabel * Label2; p>
TComboBox * ComboBox1; p>
TEdit * Edit1; p>
TButton * Button1; p>
TButton * Button2; p>
TButton * Button3; void __fastcall Button3Click ( TObject * Sender);private:// User declarationspublic:// User declarations p>
__fastcall TForm5 (TComponent * Owner);
);
//------------------------------------------------ --------------------------< br>--extern TForm5 * Form5;
//------------------------------------------------ --------------------------< br>-
# endif
Repopt.h:
//------------------------------------------------ --------------------------< br>-
# ifndef ReportH
# define ReportH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TQRListForm: public TForm
(
__published: p>
TQuickReport * QuickReport; p>
TQRBand * Title; p>
TQRBand * PageHeader; p>
TQRBand * Detail; p>
TQRBand * PageFooter; p>
TQRLabel * QRLabel4; p>
TQRLabel * QRLabel1; p>
TQRLabel * QRLabel2; p>
TQRLabel * QRLabel3 ; p>
TQRLabel * QRLabel5; p>
TQRLabel * QRLabel6; p>
TQRGroup * QRGroup1; p>
TQRSysData * QRSysData1; p> < p> TQRShape * QRShape1; p>
TQRDBText * QRDBText3; p>
TQRDBText * QRDBText1; p>
TQRDBText * QRDBText9; p>
TQRDBText * QRDBText10; p>
TQRDBText * QRDBText2; void __fastcall QRGroup1NeedData (AnsiString & Value);private:public: virtual __fastcall TQRListForm (TComponent * AOwner);
);
//------------------------------------------------ --------------------------< br>--extern TQRListForm * QRListForm;
//------------------------------------------------ --------------------------< br>-
# endif
RichАbt.h:
//------------------------------------------------ --------------------------< br>-
# ifndef RichAbtH
# define RichAbtH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TForm2: public TForm
(
__published: p>
TImage * ProgramIcon; p>
TButton * OKButton;public: virtual __fastcall TForm2 (TComponent * Owner);
);
//------------------------------------------------ --------------------------< br>--extern TForm2 * Form2;
//------------------------------------------------ --------------------------< br>-
# endif
Sort.h:
//------------------------------------------------ --------------------------< br>-
# ifndef SortH
# define SortH
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
//------------------------------------------------ --------------------------< br>--class TForm4: public TForm
(
__published:// IDE-managed Components p>
TBevel * Bevel1; p>
TComboBox * ComboBox1; p>
TLabel * Label1; p>
TButton * Button1; p>
TButton * Button2; void __fastcall ComboBox1Change (TObject * Sender);private:// User declarationspublic:// User declarations p>
__fastcall TForm4 (TComponent * Owner);
);
//------------------------------------------------ --------------------------< br>--extern TForm4 * Form4;
//------------------------------------------------ --------------------------< br>-
# endif
Unit1.h:
//------------------------------------------------ --------------------------< br>-
# ifndef Unit1H
# define Unit1H
//------------------------------------------------ --------------------------< br>-
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include "Grids.hpp"
# include
//------------------------------------------------ --------------------------< br>--class TForm3: public TForm
(
__published:// IDE-managed Components p>
TLabel * Label1; p>
TLabel * Label2; p>
TLabel * Label3; p>
TLabel * Label4; p>
TDBEdit * DBEdit3; p>
TDBEdit * DBEdit6; p>
TLabel * Label6; p>
TLabel * Label7; p>
TDBEdit * DBEdit8; p>
TButton * Button1; p>
TButton * Button2; p>
TButton * Button5; p>
TLabel * Label5 ; p>
TDBEdit * DBEdit4; p>
TDBEdit * DBEdit1; p>
TDBEdit * DBEdit2; p>
TLabel * Label8; p> < p> TDBEdit * DBEdit5; p>
TBitBtn * BitBtn1; p>
TBitBtn * BitBtn2; p>
TButton * Button3; p>
TStatusBar * StatusBar1; void __fastcall FormCreate (TObject * Sender); void __fastcall Button1Click (TObject * Sender); void __fastcall Button2Click (TObject * Sender); void __fastcall Button6Click (TObject * Sender); void __fastcall Button4Click (TObject * Sender); void __fastcall Button5Click (TObject * Sender); void __fastcall Table1AfterOpen (TDataSet * DataSet); void __fastcall Button3Click (TObject * Sender); p>
private:// User declarationspublic:// User declarations p>
__fastcall TForm3 (TComponent * Owner);
);
//------------------------------------------------ --------------------------< br>--extern TForm3 * Form3;
//------------------------------------------------ --------------------------< br>-
# endif
2. Файли з методами:
Project1.cpp:
//------------------------------------------------ --------------------------< br>-
# include
# pragma hdrstop
//------------------------------------------------ --------------------------< br>-
USEFORM ( "kur1.cpp", Form1);
USEFORM ( "Richabt.cpp", Form2);
USERES ( "Project1.res");
USEFORM ( "Report.cpp", QRListForm);
USEDATAMODULE ( "Datam.cpp", DM1);
USEFORM ( "Unit1.cpp", Form3);
USEFORM ( "Findcust.cpp", fmFindCust);
USEFORM ( "Sort.cpp", Form4);
USEFORM ( "filter.cpp", Form5);
USEFORM ( "filename.cpp", Form6);
//------------------------------------------------ --------------------------< br>-
WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)
(Try p>
( p>
Application-> Initialize (); p>
Application-> CreateForm (__classid (TForm1), & Form1); p>
Application-> CreateForm (__classid (TQRListForm), & QRListForm); p>
Application-> CreateForm (__classid (TDM1), & DM1); p>
Application-> CreateForm (__classid (TForm3) , & Form3); p>
Application-> CreateForm (__classid (TfmFindCust), & fmFindCust); p>
Application-> CreateForm (__classid (TForm4), & Form4); p>
Application-> CreateForm (__classid (TForm5), & Form5); p>
Application-> CreateForm (__classid (TForm6), & Form6); p>
Application-> Run (); p>
) catch (Exception & exception) p>
( p>
Application-> ShowException (& exception); p>
) return 0;
)
//------------------------------------------------ --------------------------< br>-
Kur1.cpp:
# include
# include
# pragma hdrstop
# include "kur1.h"
# include "RichAbt.h"
# include "Datam.h"
# include "Report.h"
# include "Unit1.h"
# include "Findcust.h"
# include "Sort.h"
# include "filter.h"
# include "filename.h"
//------------------------------------------------ --------------------------< br>-
# pragma link "Grids"
# pragma resource "*. dfm"
TForm1 * Form1;
AnsiString ff;
//------------------------------------------------ --------------------------< br>-
__fastcall TForm1:: TForm1 (TComponent * Owner) p>
: TForm (Owner)
(Ff = Form1-> Caption;
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N10Click (TObject * Sender)
( p>
Form1-> Caption = ff; p>
Form6-> ShowModal (); p>
N2-> Enabled = true; p>
N20-> Enabled = true; p>
N5-> Enabled = true; p>
N14-> Enabled = true; p>
N16-> Enabled = true;
Form1-> Caption = Form1-> Caption +"->"+ DM1-> Table1-> TableName; p>
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N17Click (TObject * Sender)
(
Close ();
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N14Click (TObject * Sender)
( p>
QRListForm-> QuickReport-> Print ();
)
//------------------------------------------------ --------------------------< br>- p>
void __fastcall TForm1:: N5Click (TObject * Sender)
( p>
DBGrid1-> Visible = false; p>
DBNavigator1-> Enabled = false; p>
BitBtn1-> Enabled = false; p>
BitBtn2-> Enabled = false; p>
BitBtn3-> Enabled = false;
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N2Click (TObject * Sender)
( p>
DBGrid1-> Visible = true; p>
DBNavigator1-> Enabled = true; p>
BitBtn1-> Enabled = true; p>
DBGrid1-> ReadOnly = true; p>
BitBtn2-> Enabled = true; p>
BitBtn3-> Enabled = true;
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N16Click (TObject * Sender)
(
QRListForm-> QuickReport-> Preview ();
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N20Click (TObject * Sender)
( p>
Form3-> ShowModal (); p>
DM1-> Table1-> Refresh ();
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: BitBtn1Click (TObject * Sender)
( p>
DBGrid1-> DataSource = DM1-> DataSource2; fmFindCust-> ShowModal (); if (fmFindCust-> ModalResult == mrOk) p>
DM1-> Table1-> GotoCurrent ( DM1-> Table1); p>
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: BitBtn2Click (TObject * Sender)
( p>
DBGrid1-> DataSource = DM1-> DataSource1; p>
Form4-> ShowModal (); if (Form4-> ModalResult == mrOk) p>
DM1 -> Table1-> GotoCurrent (DM1-> Table1);
)
//------------------------------------------------ --------------------------< br>- p>
void __fastcall TForm1:: BitBtn3Click (TObject * Sender)
(
DBGrid1-> DataSource = DM1-> DataSource1;
Form5-> ShowModal (); if (Form4-> ModalResult == mrOk)
DM1-> Table1-> GotoCurrent (DM1-> Table1) ;
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N7Click (TObject * Sender)
(If (OpenDialog1-> Execute ()) p>
( p>
Form1-> Caption = ff; p>
N2-> Enabled = true; p>
N20-> Enabled = true; p>
N5-> Enabled = true; p>
N14-> Enabled = true; p>
N16-> Enabled = true; if (DM1-> Table1-> Active == true) p>
DM1-> Table1-> Active = false; p>
DM1-> Table1-> DatabaseName = ExtractFilePath (OpenDialog1 -> FileName); p>
DM1-> Table1-> TableName = ExtractFileName (OpenDialog1-> FileName); p>
DM1-> Table1-> Active = true; p> < p> Form1-> Caption = Form1-> Caption +"->"+ DM1-> Table1-> TableName; p>
)
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm1:: N4Click (TObject * Sender)
(
Form2 = new TForm2 (Application);
Form2-> ShowModal ();delete Form2;
)
//------------------------------------------------ --------------------------< br>-
Datam.cpp:
//------------------------------------------------ --------------------------< br>-
# include
# pragma hdrstop p>
# include "Datam.h"
//------------------------------------------------ --------------------------< br>-
# pragma resource "*. dfm"
TDM1 * DM1;
//------------------------------------------------ --------------------------< br>-
__fastcall TDM1:: TDM1 (TComponent * Owner) p>
: TDataModule (Owner)
(
)
//------------------------------------------------ --------------------------< br>--filename.cpp:
//------------------------------------------------ --------------------------< br>-
# include
# pragma hdrstop p>
# include "filename.h"
# include "Datam.h"
# include "kur1.h"
//------------------------------------------------ --------------------------< br>-
# pragma resource "*. dfm"
TForm6 * Form6;
//------------------------------------------------ --------------------------< br>-
__fastcall TForm6:: TForm6 (TComponent * Owner) p>
: TForm (Owner)
(
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm6:: Button1Click (TObject * Sender)
(
DM1-> Table1-> Active = false;
DM1-> Query1-> Active = false;if (Edit1-> Text == "")
Edit1-> Text = "ITF.db";
TFileStream * Old = new TFileStream ( "baza1.db", fmOpenRead);
TFileStream * New = new TFileStream (Edit1-> Text, fmCreate);
New-> CopyFrom (Old, Old-> Size);delete Old; delete New;
DM1-> Table1-> TableName = Edit1-> Text;
DM1-> Query1-> Active = true;
DM1-> Table1-> Active = true;
)
//------------------------------------------------ --------------------------< br>--filter.cpp:
//------------------------------------------------ --------------------------< br>-
# include
# pragma hdrstop p>
# include "filter.h"
# include "Datam.h"
# include "kur1.h"
//------------------------------------------------ --------------------------< br>-
# pragma resource "*. dfm"
TForm5 * Form5;
//------------------------------------------------ --------------------------< br>-
__fastcall TForm5:: TForm5 (TComponent * Owner) p>
: TForm (Owner)
(
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm5:: Button3Click (TObject * Sender)
(
AnsiString filter;filter = Edit1-> Text;if (ComboBox1-> Text! = "") (if (Edit1-> Text! = "") (if (ComboBox1-> Text == "LL +."){< br> DM1-> Query1-> SQL-> Clear ();
DM1-> Query1 -> SQL-> Append ( "Select * From baza Where A =" "+ filter +""");< br> DM1-> Query1-> Open ();
DM1-> Table1-> Open (); ) else if (ComboBox1-> Text == "Lр'єи № ЄхЄ") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Where W = "" + filter +""");< br> DM1-> Query1-> Open ();
DM1-> Table1-> Open ();) else if (ComboBox1-> Text == "TяхЎшры № еюеЄ №") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Where Q =" "+ filter + """);< br> DM1-> Query1-> Open ();
DM1-> Table1-> Open ();) else if (ComboBox1-> Text == "+ Еєяяр") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Where S =" "+ filter +""");< br> DM1-> Query1-> Open ();
DM1-> Table1-> Open ();) else if (ComboBox1-> Text == "Tе. + рии") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Where Z> =" + filter);
DM1-> Query1-> Open ();
DM1 - > Table1-> Open ();}} else
(
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza ");
DM1-> Query1-> Open ();
DM1-> Table1-> Open ();}} else (
DM1-> Query1-> SQL-> Clear (); < br> DM1-> Query1-> SQL-> Append ( "Select * From baza");
DM1-> Query1-> Open ();
DM1-> Table1-> Open ();}< br > DM1-> Table1-> Refresh ();}< br>//------------------------------------------------ --------------------------< br>--findcust.cpp:
# include
# pragma hdrstop p>
# include "FindCust.h"
# include "Datam.h" p>
//---------------------------------- ----------------------------------------< br>-
# pragma resource "*. dfm" p>
TfmFindCust * fmFindCust;char field [2] = ( 'A', 'Z');char w1;
//------------------------------------------------ --------------------------< br>-
__fastcall TfmFindCust:: TfmFindCust (TComponent * Owner)
: TForm (Owner)
(
) p>
//---------------------------------------- ----------------------------------< br>--void __fastcall TfmFindCust:: ComboBox1Change (TObject * Sender)
(If (ComboBox1-> Text == "LL +.") W1 = field [0]; else if (ComboBox1-> Text == "Tе. + Рии") p>
(w1 = field [ 1];
// Edit1-> Text = "";
) else
ComboBox1-> Text = "LL +."; w1 = field [0];
)
//------------------------------------------------ ---------------------void __fastcall TfmFindCust:: Edit1Change (TObject * Sender)
(Bool Success; p>
Set flags; flags Locate (w1, Edit1-> Text, flags);
DM1-> Table1-> Refresh ();
)
//------------------------------------------------ --------------------------< br>-
Report.cpp:
//------------------------------------------------ ---------------------< br># include
# pragma hdrstop p>
# include "Report.h"
# include "Datam.h"
# include "kur1.h" p>
//---------------------------------- -----------------------------------< br># pragma resource "*. dfm"
TQRListForm * QRListForm;
//------------------------------------------------ ---------------------< br>//QuickReport simple list
//- Connect a datasource to the QuickReport component
//- Put QRDBText components on the Detail band
//------------------------------------------------ ---------------------< br>__fastcall TQRListForm:: TQRListForm (TComponent * AOwner) p>
: TForm (AOwner)
(
)
//------------------------------------------------ ---------------------void __fastcall TQRListForm:: QRGroup1NeedData (AnsiString & Value)
(
//QuickReport-> NewPage ();
)
//------------------------------------------------ --------------------------< br>-
RichAbt.cpp:
//------------------------------------------------ --------------------------< br>-
//Borland C + + Builder
//Copyright (c) 1987, 1997 Borland International Inc. All Rights Reserved.
//------------------------------------------------ --------------------------< br>-
//------------------------------------------------ ---------------------< br># include
# pragma hdrstop p>
# include "RichAbt.h"
//------------------------------------------------ --------------------------< br>-
# pragma resource "*. dfm"
TForm2 * Form2;
//------------------------------------------------ --------------------------< br>-
__fastcall TForm2:: TForm2 (TComponent * Owner)
: TForm (Owner)
(
)
//------------------------------------------------ --------------------------< br>-
Sort.cpp:
//------------------------------------------------ --------------------------< br>-
# include
# pragma hdrstop p>
# include "Sort.h"
# include "Datam.h"
//------------------------------------------------ --------------------------< br>-
# pragma resource "*. dfm"
TForm4 * Form4;
//------------------------------------------------ --------------------------< br>-
__fastcall TForm4:: TForm4 (TComponent * Owner) p>
: TForm (Owner)
(
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm4:: ComboBox1Change (TObject * Sender)
(If (ComboBox1-> Text == "LL +."){< br> DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append (" Select * From baza Order by A asc ");
DM1-> Query1-> Open ();
DM1-> Table1-> Open ();) else if (ComboBox1-> Text ==" Lр'єи № ЄхЄ ") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Order by W asc");
DM1-> Query1 -> Open ();
DM1-> Table1-> Open ();) else if (ComboBox1-> Text == "TяхЎшры № еюеЄ №") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Order by Q asc");
DM1-> Query1-> Open ();
DM1-> Table1 - > Open ();) else if (ComboBox1-> Text == "+ Еєяяр") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append ( "Select * From baza Order by S asc");
DM1-> Query1-> Open ();
DM1-> Table1-> Open ();) else if (ComboBox1-> Text == " Lр'єи № ЄхЄ ") (
DM1-> Query1-> SQL-> Clear ();
DM1-> Query1-> SQL-> Append (" Select * From baza Order by Z asc ");
DM1-> Query1-> Open ();
DM1-> Table1-> Open ();}< br> DM1-> Table1-> Refresh ();
)
//------------------------------------------------ --------------------------< br>-
Unit1.cpp:
//------------------------------------------------ --------------------------< br>-
# include
# pragma hdrstop p>
# include "Unit1.h"
# include "Datam.h"
//------------------------------------------------ --------------------------< br>-
# pragma link "Grids"
# pragma resource "*. dfm"
TForm3 * Form3;char predmet1 [9] = ( 'H', 'N', 'U', 'J', 'M', 'I', 'K', '1 ',' O ');char predmet2 [9] = ( 'E', 'D', 'C', 'R', 'F', 'V', 'T', 'G', 'B');double ozenka1 [12];int i = 0;double r;
//------------------------------------------------ --------------------------< br>-
__fastcall TForm3:: TForm3 (TComponent * Owner) p>
: TForm (Owner)
(
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm3:: FormCreate (TObject * Sender)
(
/ /-юсрти хь еютє | чряше № т срчє
DM1-> Table1-> Append ();
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm3:: Button1Click (TObject * Sender)
(If (DM1-> Table1-> State == dsInsert | | DM1-> Table1-> State == dsEdit) p>
DM1-> Table1-> Post (); p>
DM1-> Table1-> Append (); for (i = 0; iEnabled = true; p>
Button2-> Enabled = true; p>
DBEdit8-> DataField = 'x'; p>
DBEdit5-> DataField = 'y'; p>
DBEdit5-> ReadOnly = false; p>
DBEdit8-> ReadOnly = false; p>
DBEdit1-> ReadOnly = false; p>
DBEdit2-> ReadOnly = false; p>
DBEdit4-> ReadOnly = false; p>
DBEdit6-> ReadOnly = false; p>
DBEdit4-> Visible = false; p>
Label8-> Visible = false; p>
DM1-> Table1-> Refresh (); p> < p>)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm3:: Button6Click (TObject * Sender)
(If (! DM1-> Table1-> Bof) p>
DM1-> Table1-> Prior (); i = 10;
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm3:: Button4Click (TObject * Sender)
(If (! DM1-> Table1-> Eof) p>
DM1-> Table1-> Next (); i = 10;
)
//------------------------------------------------ --------------------------< br>--void __fastcall TForm3:: Button2Click (TObject * Sender)
(
DM1-> Table1-> Delete ();
DM1-> Table1-> Refresh (); if (DM1-> Table1-> Eof & & DM1-> Table1-> Bof) p> <