Учебная работа. Реферат: Система рейтингового контроля знаний

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Система рейтингового контроля знаний

Приднестровский Муниципальный Институт

им. Т. Г. Шевченко

Кафедра АСОИиУ
Курсовая работа

по дисциплине «Разработка программирования»

на тему:

Система рейтингого контроля познаний .

работу выполнили: Работу проверили:

студент ИТФ –96В педагоги:

Кольцов Е.С. Галюшина О.В.

Тирасполь 1999 г.
Содержание:

Задание на курсовую работу

1.1 Задание 4

1.2 Реализация 4

Введение

Глава I:Системы поддержки принятия решений

1. Система Paradox

Глава II: Индивидуальности объектно-ориентированного анализа 19

Информационная модель 21

Модель состояний для объекта «Операции над БД» 22

Модель состояний для объекта «Ввод в базу» 25

Модель взаимодействия объектов 26

Таблица переходов в состояния для объекта «Операции над БД» 27

Таблица переходов в состояния для объекта «Ввод в бузу» 28

Перечень событий 29

ДПДД для состояния «Инициализация» объекта «Операции над БД» 40

ДПДД для состояния «Создание БД» объекта «Операции над БД» 40

ДПДД для состояния «Открытие БД» объекта «Операции над БД» 41

ДПДД для состояния «Редактирование БД» объекта «Операции над БД» 41

ДПДД для состояния «Закрытие БД» объекта «Операции над БД» 42

ДПДД для состояния «Ввод данных» объекта «Операции над БД» 42

ДПДД для состояния «Сохранение БД» объекта «Операции над БД» 43

ДПДД для состояния «Неуспешное открытие БД» объекта «Операции над БД» 43

ДПДД для состояния «Обновление БД» объекта «Операции над БД» 44

текст программки 47

Перечень использованной литературы 77

Задание на курсовую работу

по дисциплине «Разработка программирования»

тема:

Система рейтингого контроля познаний .

1.1 Задание

В данной курсовой работе было нужно написать программку, с внедрением объектно-ориентированного способа программирования и объектно-ориентированного анализа, которая позволяла бы вести учетную запись студентов по 10 предметам с оценкам. В программку заноситься Ф.И.О. студента, факультет на котором он обучается, специальность, которую приобретает и группа соответственно. программка автоматом считает средней балл и вносит его в базу. Данная программка сортирует, находит и фильтрует данные по студентам, что упрощает поиск либо просмотр перед печатью подходящих студентов. Результатом программки является вывод перед печатью всех студентов либо по любому студенту соответственно.

1.2 Реализация

Данная программка была реализована на объектно-ориентированном языке С++ и написана в среде разраба программного обеспечения С++Builder.

Введение

 îáúåêòíîå ïðîãðàììèðîâàíèå:

Òðàäèöèîííàÿ òåõíîëîãèÿ ïðîãðàììèðîâàíèÿ 70-õ ãîäîâ — ñòðóêòóðíîå ïðîãðàììèðîâàíèå:

— ìîäóëüíîå ïðîãðàììèðîâàíèå;

— íèñõîäÿùåå ïðîãðàììèðîâàíèå;

— ñòðóêòóðíîå ïðîåêòèðîâàíèå ïðîöåäóð è äàííûõ (ïðîãðàììèðîâàíèå áåç goto).

ßçûê Ïàñêàëü — ñîîòâåòñòâóåò óêàçàííûì ïðèíöèïàì è áûë ðàçðàáîòàí ïîä âëèÿíèåì èäåé ñòðóêòóðíîãî ïðîãðàììèðîâàíèÿ.

Àëüòåðíàòèâíûé ïîäõîä — âîñõîäÿùåå ïðîãðàììèðîâàíèå — ïðåäïîëàãàåò â ïðîñòåéøåì ñëó÷àå ñîçäàíèå ñëîÿ ñòðóêòóð äàííûõ è ïðîöåäóð, îáåñïå÷èâàþùèõ ïîëíûé íàáîð äåéñòâèé íàä îáúåêòàìè, êîòîðûå ïðåäñòàâëåíû â äàííîé çàäà÷å. Ïðèìåð òðàäèöèîííîãî ïîäõîäà áèáëèîòåêà ñòàíäàðòíûõ ôóíêöèé.

Ñëåäóþùèé øàã — ââåäåíèå â ïðîãðàììó îáúåêòîâ. Ïîä îáúåêòîì ïîíèìàåòñÿ ñòðóêòóðà äàííûõ, êîòîðàÿ ñîäåðæèò ïîëíóþ èíôîðìàöèþ î ñîñòîÿíèè ñîîòâåòñòâóþùåãî ôèçè÷åñêîãî îáúåêòà, êîòîðûé îòîáðàæàåòñÿ ïðîãðàììîé.  Ñè ýòîìó ìîæåò ñîîòâåòñòâîâàòü ñòðóêòóðà struct, â Ïàñêàëå — çàïèñü (record). Ìíîæåñòâî îáúåêòîâ îäíîãî òèïà ñîñòàâëÿþò ïîíÿòèå êëàññà. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä ê ðàçðàáîòêå ïðîãðàìì ïðåäïîëàãàåò, ÷òî â ïðîãðàììå óñòàíàâëèâàåòñÿ âçàèìíî-îäíîçíà÷íîå ñîîòâåòñòâèå ìåæäó ôèçè÷åñêèìè îáúåêòàìè,

îòîáðàæàåìûìè ïðîãðàììîé, è ïðîãðàìííûìè îáúåêòàìè, ÿâëÿþùèìèñÿ, ïî ñóùåñòâó, ñòðóêòóðèðîâàííûìè ïåðåìåííûìè (â äàëüíåéøåì ïîä òåðìèíîì «îáúåêò» áóäåì ïîíèìàòü ïðîãðàììíûé îáúåêò).

Òðàäèöèîííûé ïîäõîä: ———- ïåðåìåííàÿ òèï äàííûõ

Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä:

ôèçè÷åñêèé ïðîãðàììíûé êëàññ îáúåêò îáúåêò îáúåêòîâ

Ïðè ñîçäàíèè îáúåêòîâ ïðîãðàììèñò îïðåäåëÿåò ìíîæåñòâî ôóíêöèé, ïðè ïîìîùè êîòîðûõ (à òî÷íåå, èñêëþ÷èòåëüíî ÷åðåç êîòîðûå)íàä îáúåêòîì âûïîëíÿåòñÿ íåêîòîðîå äîïóñòèìîå ìíîæåñòâî îïåðàöèé.

Òàêèå ôóíêöèè äîëæíû èìåòü îáÿçàòåëüíûé ïàðàìåòð — ññûëêó íà òåêóùèé îáúåêò, äëÿ êîòîðîãî îíè âûçûâàþòñÿ. Ñàìè ôóíêöèè ÿâëÿþòñÿ íåîòúåìëèìîé ÷àñòüþ ïîíÿòèÿ êëàññà îáúåêòîâ, òàê êàê îíè îïðåäåëÿþò âîçìîæíûå äåéñòâèÿ íàä îáúåêòàìè îäíîãî è òîãî æå òèïà (òî åñòü êëàññà).

Ôàêòè÷åñêè îïðåäåëåíèå êëàññà îáúåêòîâ êàê òèïà äàííûõ è èçâåñòíîãî íàáîðà ôóíêöèé äëÿ âûïîëíåíèÿ îïåðàöèé íàä ïåðåìåííûìè ýòîãî òèïà ýêâèâàëåíòíî ïîíÿòèþ áàçîâîãî òèïà äàííûõ (ÁÒÄ) ÿçûêà ïðîãðàììèðîâàíèÿ. Åäèíñòâåííîå îòëè÷èå êëàññà îò ÁÒÄ çàêëþ÷àåòñÿ â òîì, ÷òî ïåðâûé îïðåäåëÿåòñÿ ïðîãðàììèñòîì, à âòîðîé âñòðîåí â îïðåäåëåíèå ÿçûêà ïðîãðàììèðîâàíèÿ.

ßçûê ïðîãðàììèðîâàíèÿ Ñè++ ïðåäñòàâëÿåò ñîáîé ðàñøèðåíèå ÿçûêà Ñè äëÿ ïðîãðàììèðîâàíèÿ îáúåêòîâ è èõ êëàññîâ. Ïðè ýòîì èñïîëüçîâàíèå êëàññîâ ýêâèâàëåíòíî âïëîòü äî ñèíòàêñèñà èñïîëüçîâàíèþ áàçîâûõ òèïîâ äàííûõ.

Глава I
системы поддержки принятия решений

1. Система Paradox

Paradox представляет из себя реляционную базу данных, разработанную формой Borland. Данная база данных предназначена как для непрофессионалов, которым необходимо решать задачки типа картотеки и пр., потому что владеет довольно развитой и понятной системой меню и подсказки, так и для проф программистов, разрабатывающих сложные информационные системы, используя при всем этом язык запросов QBE либо язык разработки приложений PAL. Не считая версий под DOS, разработана версия Paradox for Windows. Требования к техническим средствам и сравнительные свойства по быстродействию см. Глава ??. Поддерживаются последующие типы полей:

— алфавитно-цифровые (строковые);

— числовые;

— валютные;

— дата;

— Memo — поля;

— графические;

— OLE — поля;

— BLOB (Binary Large OBject);

При этом, типы полей от Memo до Blob поддерживаются лишь в Paradox for Windows.

Строковые поля разрешают содержать всякую последовательность знаков длиной до 255 б.

Числовые поля могут содержать как целые, так и действительные числа с числов цифр до 15.

Валютные поля — тоже что и числовые с 2-мя знаками опосля запятой, отдельный тип служит лишь для определения Paradox-ом формата вывода данных полей.

Поля даты — соответственно содержат дату и разрешают проводить над собой надлежащие операции сопоставления и вычитания.

Мемо — поля содержат хоть какой текст неограниченной длины (совместно с атрибутами текста — шрифт, начертание, цвет и др.)

В графических полях могут содержаться графика типа bitmat.

В OLE — полях могут содержаться объекты от остальных приложений Windows.

В BLOB — полях можно хранить любые данные по выбору юзера (по сути исходя из убеждений Paradox, Memo, Graphic и OLE — поля также являются полями типа BLOB). В реальный момент может быть хранение объектов MultiMedia, чертежи и остальные приложения.

Довольно комфортным является тот факт, что для всех типов полей существует

Также необходимо подчеркнуть тип данных «BLOB», т.к. в полях такового типа можно хранить любые данные случайного размера, что прибыльно различается от MEMO-полей в dBASE и Clipper, которые разрешают хранить лишь текст, ну и то ограниченного о’ема (4K).

Вся работа по созданию и работе с таблицами, подготовке отчетов и запросов, созданию довольно сложных приложений, не требующих каких-то сложных расчетов проводится в единой

встроенной среде с помощью системы меню. Система владеет довольно широкими способностями по манипулированию данными и построению отчетов, некими полезными статистическими и алгебраическими функциями для сотворения расчетных задач.

Функции манипулирования данными можно поделить на последующие довольно обычные группы:

— работа с таблицами;

— работа с отдельными записями;

— подготовки отчетов;

— работа с запросами;

— работа с сетью;

— работа с макросами;

работы с деловой графикой.

Функии работы с таблицами разрешают создавать таблицы, переименовывать, удалять, копировать и, что довольно принципиально, видоизменять структуру таблиц, даже если в их уже находятся данные. Также, что важно, все эти операции выполняются не над отдельными файлами (как, скажем, в dBase), а над всем семейством таблиц (включая файлы данных, индексов, запросов и отчетов). Имеются и такие операции реляционной алгебры, как объединение и вычитание ?таблиц?отношений?.

Функции работы с записями — обычные (добавить, удалить, отредактировать).

Комфортными средствами владеет генератор отчетов — форму отчета можно «нарисовать» на дисплее и получить практически то, что вы видите. генератор отчетов дозволяет создавать как отчеты в «обычной» (табличной) форме, так и отчет в вольной форме (в т.ч. наклейки, деловые письма и пр.), создавать группировку отчета по значениям полей (при этом нескольких уровней вложенности), употреблять вычисляемые поля.

Функции запросов реализованы на реляционном языке QBE, при этом отчеты можно сформировывать и по запросным формам. В Paradox for Windows построение запросов еще наиболее

облегчено — для связей таблиц друг с другом довольно просто провести полосы меж надлежащими полями.

Функции работы с сетью разрешают получить доступ к удаленной БД, заблокировать данные для защиты от доступа остальных юзеров на время модификации, установить защиту по паролю от несанкционированного доступа.

Функции работы с макросами разрешают фактически создавать сценарий работы с юзером и созодать некие обыкновенные приложения.

Система деловой графики дозволяет по таблицам строить до 6 функций в виде различного рода диаграмм и графиков.

Если всех перечисленных способностей недостаточно, то можно пользоваться языком построения приложений PAL. Данный язык дозволяет пользоваться всеми вышеперечисленными

способностями, т.к. из него можно иметь доступ к функциям основного меню, также владеет доп средствами, соответствующими для языков программирования (управляющие структуры

типы if — then — else, циклы, переменные, операторы ввода-вывода, доп математические и статистические функции, возможность сотворения процедур и библиотек процедур) и средствами доступа к продукту компании Borland — SQL-link. Средствами Pal можно создавать пользовательские меню, окна и

остальные радости для неискушенного юзера, для которого картина важнее, чем содержание.

В системе имеется отладчик, при помощи которого можно довольно комфортно отлаживать программки на PAL. К огорчению, для работы программ на PAL нужна или система Paradox, или соответственный модуль выполнения, т.е. проблематической становится возможность распространения программ (любой юзер должен приобрести соответственный Run-time модуль для выполнения программ.

По показателям быстродействия система находится в первых рядах посреди схожих.

Система поддерживает последующие индексы — первичный (не быть может циклических главных полей), вторичный — по одному полю, и составной — по группе полей. К огорчению, если таблица имеет несколько индексов, то при работе с записями делается модификация лишь 1-го индекса, а все другие будут перестраиваться или по окончании работы с таблицей, или по запросу юзера. Можно создать этот процесс «прозрачным» для юзера (1-ая возможность — индексы перестраиваются при закрытии таблицы), на ясно, что это довольно очень замедляет работу с схожими таблицами и причиняет юзеру некие неудобства (в особенности если таблицы огромных размеров).

Система поддерживает доступ к БД на сервере по сети типа Novell, 3Com, Starlan, Banyan, также иными, совместимыми с NetBios и обеспечивает нужную блокировку данных как на уровне таблиц, так и на уровне отдельных записей. Paradox for Windows дозволяет работать со всеми типами сетей, поддерживаемых Windows. Система имеет и такую полезную изюминка, как возможность найти во время работы , изменялись ли данные в таблицах, к которым имеют доступ несколько юзеров сразу, хотя это и наращивает нагрузку на сеть и может сделать некие препядствия при наличии огромного числа юзеров .

Данные в таблицах хранятся в их естественном виде без преобразования, а не в виде символьных строк, как это принято в формате dBase, что сказывается на убыстрении работы и уменьшении размеров самой базы данных.

Имеются средства экспорта и импорта данных из/в формат Qattro/Pro, 1-2-3, Symphony, dBase, VisiCalc, а в системе Paradox for Windows может быть работать с файлами dBase без преобразования.

Таковым образом, система достаточна комфортна как для неподготовленного юзера, который желает решить свою маленькую задачу типа записной книги — за счет развитой системы меню и подсказки; и комфортна для проф программера, который решает довольно сложные задачки — за счет богатых способностей, предоставляемых системой, массивного реляционного языка запросов QBE, развитых средств построения отчетов, наличия языка построения приложений, имеющего выход на SQL-link; развитые

средства защиты данных от несанкционированного доступа. Все это дозволяет строить сложные приложения, работающие в сети со почти всеми юзерами. Но отсутствие способности получить исполняемый модуль накладывает ограничения на обширное распространение разработанных программ (хотя Run-Time модуль стоит довольно недорого, все-же психологически лучше приобрести одну либо несколько программ у 1-го изготовителя, чем связываться с несколькими) А работа практически в режиме интерпретации PAL хоть и фактически не сказывается при построении сложных информационныо-поисковых систем, в каких время на поиск данных существенно превосходит время выполнения расчетов, но накладывает ограничения на системы, в каких не считая задач поиска стоят довольно сложные задачки обработки данных. Но Paradox for Windows дозволяет преодолеть это ограничение, т.к. в нем может быть иметь доступ к функциям, написанных на обыденных языках программирования и собранные в динамические библиотеки (DDL). Так что можно воспользоваться данной нам возможностью, хотя перенос программ в среду Windows (в том числе

и СУБД) работу этих программ очевидно не ускоряет.

В пользу выбора данной системы для нашей задачки могут служить последующие причины (наверняка):

— программирование на языке программирования PAL дозволяет проводить довольно сложную обработку данных, дозволяет употреблять развитые средства диалога с юзером;

— данные в БД хранятся в их естественном виде, что дозволяет прирастить скорость обработки и уменьшить нужное для хранения данных место;

— весьма полезные поля типа BLOB — разрешают хранить текст случайной длины, к примеру, тексты методичек и пр.;

— возможность сетевого взаимодействия дозволяет проводить предстоящее расширение системы до уровня института с подключением остальных подсистем (скажем, УэО, деканат и пр.) и обеспечивать нужную в рамках схожих систем защиту данных;

— богатые способности по экспорту и {импорту} данных;

— возможность работы под Windows;

— относительно обыкновенные, но массивные средства для построения запросов к базе данных.

Хотя, естественно, вышеуказанные ограничения (невозможность получить .ЕХЕ — файл и интерпретатор) — это для нас очевидные минусы.

Глава
IV

Индивидуальности объектно-ориентированного анализа

При разработке данной курсовой работы был применен объектно-ориентированный подход к написанию данной программки. Проектирование происходило последующим образом:

1. Была сформирована информационная модель, на которой были выделены объекты, оказывающие воздействие на ход процесса. В процессе проектирования преднамеренно в информационную модель были включены некие абстрактные типы данных, которые при предстоящей разработке не образовали объекты. Это было изготовлено с целью наиболее много показать все дела и взаимодействия, возникающие при работе программки.

2. Для всякого объекта была сформирована модель состояний, которая отражала действия и состояния, в каких мог находиться объект, т.е. его актуальный цикл. Для нескольких объектов не было модели состояний. Это соединено с тем, что нрав поведения данных объектов является чисто статическим и не претерпевает значимых конфигураций. Напротив, объекты, имеющие динамическое Информационная модель

Модель состояний для объекта «Операции над БД»

7

Модель состояний для объекта «Ввод данных»

Модель взаимодействия объектов

Таблица переходов в состояния

для объекта «Операции над БД»

состояние

O1

O2

O3

O4

O5

O6

O7

O8

O9

Инициализация

2

3

Создание

6

Открытие

4

6

Неуспех

5

Закрытие

1

Редактирование

7

Обновление

6

8

Ввод в базу

9

Схранение

1

Таблица переходов в состояния

для объекта «Ввод данных»

состояние

В1

В2

В3

В4

В5

В6

Инициализация

2

Отключения редактирования

3

Формирование поиска, фильт., сортир.,

4

Формирование групп

5

Просмотр

Перед печ.

6

Печать

Перечень событий

Метка

Данные действия

Источник

Назначение

О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

Главный интерфейс

Учащихся

ДПДД для состояния инициализация

объекта «Операции над БД»

ДПДД для состояния Создание базы

объекта «Операции над БД»

ДПДД для состояния Открытие базы

объекта «Операции над БД»

ДПДД для состояния Редактирование базы

объекта «Операции над БД»

ДПДД для состояния Закрытие базы

объекта «Операции над БД»

ДПДД для состояния Сохранение БД

объекта «Операции над БД»

ДПДД для состояния Неуспешное открытие БД

объекта «Операции над БД»

ДПДД для состояния Обновление БД

объекта «Операции над БД»

текст программки

В листинг программки был включен весь тот код, который был написан в процессе разработки и включения тех строк кода, которые были автоматом сгенерированы С++ Builder:

1. Заголовочные файлы:

Kur1.h:

//—————————————————————————

#ifndef kur1H

#define kur1H

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclMenus.hpp>

#include <vclDialogs.hpp>

#include <vclExtCtrls.hpp>

#include <vclComCtrls.hpp>

#include <vclDBGrids.hpp>

#include «Grids.hpp»

#include <vclButtons.hpp>

#include <vclDBCtrls.hpp>

#include <vclMask.hpp>

#include <vclDB.hpp>

#include <vclDBTables.hpp>

#include <vclQuickRep.hpp>

#include <vclsystem.hpp>

//—————————————————————————

class TForm1 : public TForm

{

__published: // IDE-managed Components

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N10;

TMenuItem *N14;

TMenuItem *N16;

TMenuItem *N17;

TOpenDialog *OpenDialog1;

TSaveDialog *SaveDialog1;

TMenuItem *N18;

TMenuItem *N20;

TPrintDialog *PrintDialog1;

TPrinterSetupDialog *PrinterSetupDialog1;

TStatusBar *StatusBar1;

TPanel *Panel1;

TDBGrid *DBGrid1;

TDBNavigator *DBNavigator1;

TMenuItem *N2;

TMenuItem *N5;

TMenuItem *N6;

TBitBtn *BitBtn1;

TBitBtn *BitBtn2;

TBitBtn *BitBtn3;

TMenuItem *N7;

void __fastcall N10Click(TObject *Sender);

void __fastcall N17Click(TObject *Sender);

void __fastcall N14Click(TObject *Sender);

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 declarations

public: // User declarations

// AnsiString file2;

__fastcall TForm1(TComponent* Owner);

};

//—————————————————————————

extern TForm1 *Form1;

//—————————————————————————

#endif

Datam.h:

//—————————————————————————

#ifndef DatamH

#define DatamH

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclDB.hpp>

#include <vclDBTables.hpp>

//—————————————————————————

class TDM1 : public TDataModule

{

__published: // IDE-managed Components

TDataSource *DataSource1;

TTable *Table1;

TQuery *Query1;

TDataSource *DataSource2;

private: // User declarations

public: // User declarations

__fastcall TDM1(TComponent* Owner);

};

//—————————————————————————

extern TDM1 *DM1;

//—————————————————————————

#endif

filename.h:

//—————————————————————————

#ifndef filenameH

#define filenameH

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclExtCtrls.hpp>

//—————————————————————————

class TForm6 : public TForm

{

__published: // IDE-managed Components

TEdit *Edit1;

TLabel *Label2;

TBevel *Bevel1;

TButton *Button1;

TButton *Button2;

void __fastcall Button1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm6(TComponent* Owner);

};

//—————————————————————————

extern TForm6 *Form6;

//—————————————————————————

#endif

filter.h:

//—————————————————————————

#ifndef filterH

#define filterH

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclExtCtrls.hpp>

//—————————————————————————

class TForm5 : public TForm

{

__published: // IDE-managed Components

TBevel *Bevel1;

TLabel *Label1;

TLabel *Label2;

TComboBox *ComboBox1;

TEdit *Edit1;

TButton *Button1;

TButton *Button2;

TButton *Button3;

void __fastcall Button3Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm5(TComponent* Owner);

};

//—————————————————————————

extern TForm5 *Form5;

//—————————————————————————

#endif

Findcust.h:

//—————————————————————————

#ifndef filterH

#define filterH

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclExtCtrls.hpp>

//—————————————————————————

class TForm5 : public TForm

{

__published: // IDE-managed Components

TBevel *Bevel1;

TLabel *Label1;

TLabel *Label2;

TComboBox *ComboBox1;

TEdit *Edit1;

TButton *Button1;

TButton *Button2;

TButton *Button3;

void __fastcall Button3Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm5(TComponent* Owner);

};

//—————————————————————————

extern TForm5 *Form5;

//—————————————————————————

#endif

Repopt.h:

//—————————————————————————-

#ifndef ReportH

#define ReportH

//—————————————————————————-

#include <vclExtCtrls.hpp>

#include <vclStdCtrls.hpp>

#include <vclQuickrep.hpp>

#include <vclDialogs.hpp>

#include <vclForms.hpp>

#include <vclControls.hpp>

#include <vclGraphics.hpp>

#include <vclClasses.hpp>

#include <vclSysUtils.hpp>

#include <vclMessages.hpp>

#include <vclWindows.hpp>

#include <vclSystem.hpp>

//—————————————————————————-

class TQRListForm : public TForm

{

__published:

TQuickReport *QuickReport;

TQRBand *Title;

TQRBand *PageHeader;

TQRBand *Detail;

TQRBand *PageFooter;

TQRLabel *QRLabel4;

TQRLabel *QRLabel1;

TQRLabel *QRLabel2;

TQRLabel *QRLabel3;

TQRLabel *QRLabel5;

TQRLabel *QRLabel6;

TQRGroup *QRGroup1;

TQRSysData *QRSysData1;

TQRShape *QRShape1;

TQRDBText *QRDBText3;

TQRDBText *QRDBText1;

TQRDBText *QRDBText9;

TQRDBText *QRDBText10;

TQRDBText *QRDBText2;

void __fastcall QRGroup1NeedData(AnsiString &Value);

private:

public:

virtual __fastcall TQRListForm(TComponent* AOwner);

};

//—————————————————————————-

extern TQRListForm *QRListForm;

//—————————————————————————-

#endif

RichАbt.h:

//—————————————————————————-

#ifndef RichAbtH

#define RichAbtH

//—————————————————————————-

#include <ExtCtrls.hpp>

#include <StdCtrls.hpp>

#include <Dialogs.hpp>

#include <Forms.hpp>

#include <Controls.hpp>

#include <Graphics.hpp>

#include <Classes.hpp>

#include <SysUtils.hpp>

#include <Messages.hpp>

#include <Windows.hpp>

#include <System.hpp>

//—————————————————————————-

class TForm2 : public TForm

{

__published:

TImage *ProgramIcon;

TButton *OKButton;

public:

virtual __fastcall TForm2(TComponent *Owner);

};

//—————————————————————————-

extern TForm2 *Form2;

//—————————————————————————-

#endif

Sort.h:

//—————————————————————————

#ifndef SortH

#define SortH

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclExtCtrls.hpp>

//—————————————————————————

class TForm4 : public TForm

{

__published: // IDE-managed Components

TBevel *Bevel1;

TComboBox *ComboBox1;

TLabel *Label1;

TButton *Button1;

TButton *Button2;

void __fastcall ComboBox1Change(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm4(TComponent* Owner);

};

//—————————————————————————

extern TForm4 *Form4;

//—————————————————————————

#endif

Unit1.h:

//—————————————————————————

#ifndef Unit1H

#define Unit1H

//—————————————————————————

#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>

#include <vclDBTables.hpp>

#include <vclDB.hpp>

#include <vclDBCtrls.hpp>

#include <vclMask.hpp>

#include <vclButtons.hpp>

#include <vclComCtrls.hpp>

#include <vclDBGrids.hpp>

#include «Grids.hpp»

#include <vclExtCtrls.hpp>

//—————————————————————————

class TForm3 : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TDBEdit *DBEdit3;

TDBEdit *DBEdit6;

TLabel *Label6;

TLabel *Label7;

TDBEdit *DBEdit8;

TButton *Button1;

TButton *Button2;

TButton *Button5;

TLabel *Label5;

TDBEdit *DBEdit4;

TDBEdit *DBEdit1;

TDBEdit *DBEdit2;

TLabel *Label8;

TDBEdit *DBEdit5;

TBitBtn *BitBtn1;

TBitBtn *BitBtn2;

TButton *Button3;

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);

private: // User declarations

public: // User declarations

__fastcall TForm3(TComponent* Owner);

};

//—————————————————————————

extern TForm3 *Form3;

//—————————————————————————

#endif

2. Файлы с способами:

Project1.cpp:

//—————————————————————————

#include <vclvcl.h>

#pragma hdrstop

//—————————————————————————

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);

//—————————————————————————

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TForm1), &Form1);

Application->CreateForm(__classid(TQRListForm), &QRListForm);

Application->CreateForm(__classid(TDM1), &DM1);

Application->CreateForm(__classid(TForm3), &Form3);

Application->CreateForm(__classid(TfmFindCust), &fmFindCust);

Application->CreateForm(__classid(TForm4), &Form4);

Application->CreateForm(__classid(TForm5), &Form5);

Application->CreateForm(__classid(TForm6), &Form6);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

return 0;

}

//—————————————————————————

Kur1.cpp:

#include <vclvcl.h>

#include <stdio.h>

#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»

//—————————————————————————

#pragma link «Grids»

#pragma resource «*.dfm»

TForm1 *Form1;

AnsiString ff;

//—————————————————————————

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

ff=Form1->Caption;

}

//—————————————————————————

void __fastcall TForm1::N10Click(TObject *Sender)

{

Form1->Caption=ff;

Form6->ShowModal();

N2->Enabled=true;

N20->Enabled=true;

N5->Enabled=true;

N14->Enabled=true;

N16->Enabled=true;

Form1->Caption =Form1->Caption+»->»+DM1->Table1->TableName;

}

//—————————————————————————

void __fastcall TForm1::N17Click(TObject *Sender)

{

Close();

}

//—————————————————————————

void __fastcall TForm1::N14Click(TObject *Sender)

{

QRListForm->QuickReport->Print();

}

//—————————————————————————

void __fastcall TForm1::N5Click(TObject *Sender)

{

DBGrid1->Visible=false;

DBNavigator1->Enabled=false;

BitBtn1->Enabled=false;

BitBtn2->Enabled=false;

BitBtn3->Enabled=false;

}

//—————————————————————————

void __fastcall TForm1::N2Click(TObject *Sender)

{

DBGrid1->Visible=true;

DBNavigator1->Enabled=true;

BitBtn1->Enabled=true;

DBGrid1->ReadOnly=true;

BitBtn2->Enabled=true;

BitBtn3->Enabled=true;

}

//—————————————————————————

void __fastcall TForm1::N16Click(TObject *Sender)

{

QRListForm->QuickReport->Preview();

}

//—————————————————————————

void __fastcall TForm1::N20Click(TObject *Sender)

{

Form3->ShowModal();

DM1->Table1->Refresh();

}

//—————————————————————————

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

DBGrid1->DataSource=DM1->DataSource2;

fmFindCust->ShowModal();

if (fmFindCust->ModalResult == mrOk)

DM1->Table1->GotoCurrent(DM1->Table1);

}

//—————————————————————————

void __fastcall TForm1::BitBtn2Click(TObject *Sender)

{

DBGrid1->DataSource=DM1->DataSource1;

Form4->ShowModal();

if (Form4->ModalResult == mrOk)

DM1->Table1->GotoCurrent(DM1->Table1);

}

//—————————————————————————

void __fastcall TForm1::BitBtn3Click(TObject *Sender)

{

DBGrid1->DataSource=DM1->DataSource1;

Form5->ShowModal();

if (Form4->ModalResult == mrOk)

DM1->Table1->GotoCurrent(DM1->Table1);

}

//—————————————————————————

void __fastcall TForm1::N7Click(TObject *Sender)

{

if ( OpenDialog1->Execute() )

{

Form1->Caption=ff;

N2->Enabled=true;

N20->Enabled=true;

N5->Enabled=true;

N14->Enabled=true;

N16->Enabled=true;

if (DM1->Table1->Active == true )

DM1->Table1->Active = false;

DM1->Table1->DatabaseName = ExtractFilePath( OpenDialog1->FileName );

DM1->Table1->TableName = ExtractFileName( OpenDialog1->FileName );

DM1->Table1->Active = true;

Form1->Caption =Form1->Caption+»->»+DM1->Table1->TableName;

}

}

//—————————————————————————

void __fastcall TForm1::N4Click(TObject *Sender)

{

Form2= new TForm2(Application);

Form2->ShowModal();

delete Form2;

}

//—————————————————————————

Datam.cpp:

//—————————————————————————

#include <vclvcl.h>

#pragma hdrstop

#include «Datam.h»

//—————————————————————————

#pragma resource «*.dfm»

TDM1 *DM1;

//—————————————————————————

__fastcall TDM1::TDM1(TComponent* Owner)

: TDataModule(Owner)

{

}

//—————————————————————————

filename.cpp:

//—————————————————————————

#include <vclvcl.h>

#pragma hdrstop

#include «filename.h»

#include «Datam.h»

#include «kur1.h»

//—————————————————————————

#pragma resource «*.dfm»

TForm6 *Form6;

//—————————————————————————

__fastcall TForm6::TForm6(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

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;

}

//—————————————————————————

filter.cpp:

//—————————————————————————

#include <vclvcl.h>

#pragma hdrstop

#include «filter.h»

#include «Datam.h»

#include «kur1.h»

//—————————————————————————

#pragma resource «*.dfm»

TForm5 *Form5;

//—————————————————————————

__fastcall TForm5::TForm5(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

void __fastcall TForm5::Button3Click(TObject *Sender)

{

AnsiString filter;

filter=Edit1->Text;

if(ComboBox1->Text != «»){

if(Edit1->Text != «» ){

if (ComboBox1->Text == «L.L.+.»){

DM1->Query1->SQL->Clear();

DM1->Query1->SQL->Append(«Select * From baza Where A=»»+filter+»»»);

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+»»»);

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+»»»);

DM1->Query1->Open();

DM1->Table1->Open();}

else if (ComboBox1->Text == «+Ёєяяр»){

DM1->Query1->SQL->Clear();

DM1->Query1->SQL->Append(«Select * From baza Where S=»»+filter+»»»);

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();

DM1->Query1->SQL->Append(«Select * From baza «);

DM1->Query1->Open();

DM1->Table1->Open();}

DM1->Table1->Refresh();}

//—————————————————————————

findcust.cpp:

#include <vcl.h>

#pragma hdrstop

#include «FindCust.h»

#include «Datam.h»

//—————————————————————————

#pragma resource «*.dfm»

TfmFindCust* fmFindCust;

char field[2]={‘A’,’Z’};

char w1;

//—————————————————————————

__fastcall TfmFindCust::TfmFindCust(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

void __fastcall TfmFindCust::ComboBox1Change(TObject *Sender)

{

if (ComboBox1->Text == «L.L.+.»)

w1=field[0];

else if (ComboBox1->Text == «TЁ.+рыы»)

{w1=field[1];

//Edit1->Text = «»;

}

else

ComboBox1->Text =»L.L.+.»;

w1=field[0];

}

//———————————————————————

void __fastcall TfmFindCust::Edit1Change(TObject *Sender)

{

bool Success;

Set<TLocateOption,0,1> flags;

flags << loCaseInsensitive << loPartialKey;

TLocateOptions Options;

Success = DM1->Table1->Locate(w1,Edit1->Text,flags);

DM1->Table1->Refresh();

}

//—————————————————————————

Report.cpp:

//———————————————————————

#include <vcl.h>

#pragma hdrstop

#include «Report.h»

#include «Datam.h»

#include «kur1.h»

//———————————————————————

#pragma resource «*.dfm»

TQRListForm *QRListForm;

//———————————————————————

// QuickReport simple list

// — Connect a datasource to the QuickReport component

// — Put QRDBText components on the Detail band

//———————————————————————

__fastcall TQRListForm::TQRListForm(TComponent* AOwner)

: TForm(AOwner)

{

}

//———————————————————————

void __fastcall TQRListForm::QRGroup1NeedData(AnsiString &Value)

{

//QuickReport->NewPage();

}

//—————————————————————————

RichAbt.cpp:

//—————————————————————————-

//Borland C++Builder

//Copyright (c) 1987, 1997 Borland International Inc. All Rights Reserved.

//—————————————————————————-

//———————————————————————

#include <vcl.h>

#pragma hdrstop

#include «RichAbt.h»

//—————————————————————————-

#pragma resource «*.dfm»

TForm2 *Form2;

//—————————————————————————-

__fastcall TForm2::TForm2(TComponent *Owner)

: TForm(Owner)

{

}

//—————————————————————————-

Sort.cpp:

//—————————————————————————

#include <vclvcl.h>

#pragma hdrstop

#include «Sort.h»

#include «Datam.h»

//—————————————————————————

#pragma resource «*.dfm»

TForm4 *Form4;

//—————————————————————————

__fastcall TForm4::TForm4(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

void __fastcall TForm4::ComboBox1Change(TObject *Sender)

{

if (ComboBox1->Text == «L.L.+.»){

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();}

DM1->Table1->Refresh();

}

//—————————————————————————

Unit1.cpp:

//—————————————————————————

#include <vclvcl.h>

#pragma hdrstop

#include «Unit1.h»

#include «Datam.h»

//—————————————————————————

#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;

//—————————————————————————

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

//—————————————————————————

void __fastcall TForm3::FormCreate(TObject *Sender)

{

//-юсрты хь эютє¦ чряшё№ т срчє

DM1->Table1->Append();

}

//—————————————————————————

void __fastcall TForm3::Button1Click(TObject *Sender)

{

if(DM1->Table1->State == dsInsert||DM1->Table1->State == dsEdit)

DM1->Table1->Post();

DM1->Table1->Append();

for(i=0;i<=9;i++){

predmet1[i]=0;}

i=0;

Button5->Enabled=true;

Button2->Enabled=true;

DBEdit8->DataField=’x’;

DBEdit5->DataField=’y’;

DBEdit5->ReadOnly=false;

DBEdit8->ReadOnly=false;

DBEdit1->ReadOnly=false;

DBEdit2->ReadOnly=false;

DBEdit4->ReadOnly=false;

DBEdit6->ReadOnly=false;

DBEdit4->Visible=false;

Label8->Visible=false;

DM1->Table1->Refresh();

}

//—————————————————————————

void __fastcall TForm3::Button6Click(TObject *Sender)

{

if ( !DM1->Table1->Bof )

DM1->Table1->Prior();

i=10;

}

//—————————————————————————

void __fastcall TForm3::Button4Click(TObject *Sender)

{

if ( !DM1->Table1->Eof )

DM1->Table1->Next();

i=10;

}

//—————————————————————————

void __fastcall TForm3::Button2Click(TObject *Sender)

{

DM1->Table1->Delete();

DM1->Table1->Refresh();

if(DM1->Table1->Eof && DM1->Table1->Bof )

Button2->Enabled=false;

DBEdit4->Visible=false;

Label8->Visible=false;

}

//—————————————————————————

void __fastcall TForm3::Button5Click(TObject *Sender)

{

if(i<=8)

{

int Size = DBEdit8->GetTextLen();

char *name = new char[++Size];

DBEdit8->GetTextBuf(name,Size);

DBEdit8->Text = name;

r=atoi(name);

ozenka1[i]=r;

delete name;

r=0;

DBEdit5->DataField=predmet1[i];

DBEdit8->DataField=predmet2[i];

i++;

Button3->Enabled=true;

}

else {if(i==9){

int Size = DBEdit8->GetTextLen();

char *name = new char[++Size];

DBEdit8->GetTextBuf(name,Size);

DBEdit8->Text = name;

r=atoi(name);

ozenka1[i]=r;

delete name;

r=0;}

ozenka1[10]=(ozenka1[0]+ozenka1[1]+ozenka1[2]+ozenka1[3]+ozenka1[4]+ozenka1[5]+ozenka1[6]+ozenka1[7]+ozenka1[8]+ozenka1[9])/10;

DBEdit4->SelText=ozenka1[10];

DM1->Table1->FieldValues[«Z»] = ozenka1[10];

Button5->Enabled=false;

Button3->Enabled=false;

DBEdit5->ReadOnly=true;

DBEdit8->ReadOnly=true;

DBEdit1->ReadOnly=true;

DBEdit2->ReadOnly=true;

DBEdit4->ReadOnly=true;

DBEdit6->ReadOnly=true;

DBEdit4->Visible=true;

Label8->Visible=true;

}}

//—————————————————————————

void __fastcall TForm3::Table1AfterOpen(TDataSet *DataSet)

{

if(DM1->Table1->Eof && DM1->Table1->Bof )

Button2->Enabled=false;

}

//—————————————————————————

void __fastcall TForm3::Button3Click(TObject *Sender)

{

if(i>=0)

{i—;

DBEdit5->DataField=predmet1[i];

DBEdit8->DataField=predmet2[i];

}

else

Button3->Enabled=false;

Button5->Enabled=true;}

//—————————————————————————

Перечень использованной литературы

1. Трахтенгерц Э.А. «Компьютерная поддержка принятия решений»

2. Том Сван «Программирование в Borland C++ 5.02»

3. «Объектно-ориентированный анализ»

4. Мэт Теллес «Borland С++ Builder»

]]>