Реферат: Автоматизация расчёта нагрузки и преподавателей ВУЗа


Курсовая работа

По дисциплине Информатика и программирование

Автоматизация расчёта нагрузки и преподавателей ВУЗа

 

программирование база данных приложение


Введение

Целью данной курсовойработы является разработка прикладной программы в среде Borland C++Builder 6.0 для реализации функцииавтоматизации расчёта и преподавателей ВУЗа. Для достижения цели необходимо созданиегибкого интерфейса, а также осуществление следующих задач:

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

В качестве средыразработки в данной курсовой работе использована визуальная среда Borland C++Builder. Данный выбор обусловленследующими факторами:

Borland C++ Builderявляется средой быстрой разработки приложений. В На сегодняшний день С++ являетсяодним из самых распространенных языков программирования. Его преимуществами являютсягибкость, переносимость, универсальность. На этом языке написаны самые распространённыена сегодняшний день операционные системы, такие как Windows и Linux. Язык С++ может быть использовандля решения практически любых задач.

Язык С++ не требуетобязательного применения объектов в программах Это позволяет модернизировать ранеена писанные и создавать новые программы, пользуясь практически синтаксисом С и выполняялишь более строгие требования С++ к типам: наличие в начале программы прототиповвсех функций, определенных пользователей явного приведения типов для указателейна разные типы и некоторых других. Архитектура современных операционных систем становитсявсе более и более объектно-ориентированной. При работе в таких системах не обойтисьбез понимания использования таких основополагающих понятий объектно-ориентированногопрограммирования, как объекты, инкапсуляция и полиморфизм. основе систем быстройразработки (RAD-систем, Rapid Application Development — среда быстрой paзpa6oткиприложений) лежит технология визуального проектирования и событийного программирования,суть которой заключается в том, что среда разработки берет на себя большую частьработы по генерации кода программы, оставляя программисту работу по конструированиюдиалоговых окон и написанию функций обработки событий. Производительность программистапри использовании RAD систем существенно увеличивается. Система объектно-ориентированногопрограммирования Borland C++ Builder, предназначена для операционных систем Windows.Интегрированная среда C++ Builder обеспечивает скорость визуальной разработки, продуктивностьповторно используемых компонентов в сочетании с мощью языковых средств C++, усовершенствованнымиинструментами и разномасштабными средствами доступа к базам данных.

Профессиональныесредства языка C++ интегрированы в визуальную среду разработки. C++Builder предоставляетбыстродействующий компилятор с языка Borland C++, эффективный инкрементальный загрузчики гибкие средства отладки как на уровне исходных инструкций, так и на уровне ассемблерныхкоманд — в расчете удовлетворить высокие требования программистов-профессионалов.

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

Профессиональныесредства языка C++ интегрированы в визуальную среду разработки. C++Builder предоставляетбыстродействующий компилятор с языка Borland C++, эффективный инкрементальный загрузчики гибкие средства отладки как на уровне исходных инструкций, так и на уровне ассемблерныхкоманд — в расчете удовлетворить высокие требования программистов-профессионалов.

Конструированиепо способу «drag-and-drop » позволяет создавать приложение простым перетаскиваниемзахваченных мышью визуальных компонентов из Палитры на форму приложения. Инспекторобъектов предоставляет возможность оперировать со свойствами и событиями компонентов,автоматически создавая заготовки функций обработки событий, которые наполняютсякодом и редактируются в процессе разработки.

Свойства, методыи события — это именно те элементы языка, которые обеспечивают быструю разработкуприложений в рамках объектно-ориентированного программирования. «Свойства» позволяютлегко устанавливать разнообразные характеристики объектов. «Методы» производят определенные,иногда довольно сложные, операции над объектом. «События» связывают воздействияпользователя на объекты с кодами реакции на эти воздействия. События могут возникатьпри таких специфических изменениях состояния объектов как обновление данных в интерфейсныхэлементах доступа к базам данных. Работая совместно, свойства, методы и событияобразуют среду RAD (Rapid Application Development) быстрого и интуитивного программированиянадежных приложений для Windows.

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

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

Исходные текстыБиблиотеки Визуальных Компонентов облегчают разработку новых компонентов на базеготовых примеров.

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

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

Интерфейс BorlandC++ Builder.

В состав интерфейсаС++ Builder входят:

• Палитра компонент содержит более 100 повторноиспользуемых компонентов, предлагаемых для построения приложений.

• Редакторформ предназначендля создания интерфейса программы с пользователем.

• Редакторкода предназначендля написания текста программы, в частности, функций обработки событий.

• Инспекторобъектовпозволяет визуально устанавливать свойства объектов без необходимости рутинногопрограммирования и содержит события, которые можно связывать с кодами реакции объектовна их возникновение.

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

C++Builder реализуетвизуальную методику построения приложений посредством выбора из Палитры компонентовнужных управляющих элементов. С каждым компонентом (например, кнопкой) связанысвойства, которые меняют ее вид и поведение. Любой компонент может вызывать сериюсобытий, которые определяют его реакцию на различные воздействия[1].


1.Основныеподходы к разработке программных средств

 

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

Разработка Систем Управления Базами Данных(СУБД) раньше всегда была очень трудоемким и медленным процессом, отягощенным необходимостьюучитывать массу специфических деталей подсистем обслуживания различных баз данныхна низком уровне. C++Builder принимает на себя выполнение этих рутинных операцийпозволяя сосредоточиться на решении основной задачи.

Все приложения СУБД, создаваемые в средеC++Builder, являются клиентами в архитектуре программного взаимодействия клиент/сервер.Клиент выдает запросы к серверу базы данных на получение или передачу информации.Сервер обрабатывает запросы от множества клиентов одновременно, координируядоступ к данным и их обновление.

Все приложения СУБД, создаваемые в средеC++Builder, основаны на компонентах пользовательского интерфейса с некоторой базойданных, которые предоставляют удивительно легкие в использовании средства разработкиспециальных приложений. Львиная доля времени процесса разработки уходит на визуальнуюустановку свойств выбранных компонент. Удачно спроектированное приложение всегдаобеспечивает простоту просмотра и редактирования данных пользователем, независимоот сложности структуры используемой модели данных. Данная глава с очевидностью покажет,что формы приложений СУБД для типично сложной системы в архитектуре взаимодействияклиент/сервер действительно могут быть созданы в интегрированной среде C++Builderвесьма быстро и с малыми усилиями.

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

Организация доступа к базам данных

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

Механизм BDE

Ключевой механизм BDE (Borland Database Engine),обеспечивающий работу визуальных компонент баз данных, действует как интерфейс междувашим приложением и самой базой данных. BDE реализован в виде набора системных DLLфайлов. Взаимодействие компонентных объектов с BDE никак не специфицирует конкретнуюбазу данных и не зависит от реализации обмена информацией на нижнем уровне иерархии.Именно BDE обращается в свою очередь к драйверам, специфическим для базы данныхуказанного типа, возвращая вашему приложению запрошенные фактические данные. BDEиграет роль, аналогичную контроллеру драйверов ODBC (Open Database Connectivity)производства фирмы Microsoft, изолируя приложения от нижнего уровня взаимодействияс базой данных и увеличивая общую производительность связи за счет использованиякэш-памяти. Используя BDE, вы получаете доступ ко всем локальным стандартным базамданных вашего компьютера, к источникам данных ODBC и к SQL серверам баз данных вархитектуре сетевой связи клиент/сервер.

Унифицированная технология BDE применяетсяво всех продуктах производства корпорации Borland: C++Builder, Borland C++, Delphi,IntraBuilder и JBuilder. Чтобы получить доступ к содержимому базы данных, приложениюнеобходимо знать только идентификатор ее псевдонима (alias).

Рис. 1 изображает иерархическую структурувзаимодействия вашего приложения с базами данных.

/>

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

При добавлении компонент баз данных к формевашего приложения соединение с BDE происходит автоматически — никакого программированияне требуется. Визуальный процесс соединения полностью находится под вашим контролем.Во время выполнения программы BDE делает необходимые запросы и получает данные,заказанные свойствами каждой используемой компоненты.[6]

Шаги созданиятаблицы БД при помощи DataBase Desktop представлены на рис.2,3,4,5.

/>

Рис2 Внешний видокна Database Desktop


/>

Рис 3Подключениек БД

/>

Рис4Окно выборатипа подключения

/>

Рис 5Созданиетаблицы БД


2.Характеристикавизуальных компонентов среды разработки Builder6.0, используемых вприложении

2.1 Компонентыглавное и всплывающее меню(MainMenu, PopurMenu(Standart))

Компоненты оформленияприложений:

MainMenu создаёт на форме главное менюв виде строки с ниспадающими списками.

Содержимое пунктаменю определяется свойством –Items[i]-задаёт значение пункта меню с номером i.

Значение пунктаменю можно вводить программно: MainMenu->Items->Items[0]= “ ”.

В разработанномприложении данные компоненты обеспечивают удобный интерфейс между приложением ипользователем, позволяют пользователю управлять приложением (использованы на формах:«Управление приложением» и «Автоматизация расчёта нагрузки и преподавателей ВУЗа»).

2.2 Компоненты,реализующие работу с БД

Компонент TDataSource

Компонент DataSourceдействует как посредник между компонентами TDataSet (TTable, TQuery, TStoredProc)и компонентами Data Controls — элементами управления, обеспечивающими представлениеданных на форме. Компоненты TDataSet управляют связями с библиотекой Borland DatabaseEngine (BDE), а компонент DataSource управляет связями с данными в компонентах DataControls.

В типичных приложениях БД компонент 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, например, для того, чтобы в случае поиска в таблице с большим количествомзаписей не отображать на экране пролистывание всей таблицы.

/>Компонент TTable

Наиболее простымспособом обращения к таблицам баз данных является использование компонента TTable,предоставляющего доступ к одной таблице. Для этой цели наиболее часто используютсяследующие свойства:

· Active- указывает, открыта (true) или нет (false) данная таблица.

· DatabaseName- имя каталога, содержащего искомую таблицу, либо псевдоним (alias) удаленной БД(псевдонимы устанавливаются с помощью утилиты конфигурации BDE, описание которойприсутствует во многих источниках, посвященных продуктам Borland, либо с помощьюSQL Explorer, вызываемого с помощью пункта меню Database/Explore). Это свойствоможет быть изменено только в случае, если таблица закрыта (ее свойство Active равноfalse).

· TableName- имя таблицы.

· Exclusive- если это свойство принимает значение true, то никакой другой пользователь не можетоткрыть таблицу, если она открыта данным приложением. Если это свойство равно false(значение по умолчанию), то другие пользователи могут открывать эту таблицу.

· IndexName- идентифицирует вторичный индекс для таблицы. Это свойство нельзя изменить, покатаблица открыта.

· MasterFields- определяет имя поля для создания связи с другой таблицей.

· MasterSource- имя компонента TDataSource, с помощью которого TTable будет получать данные изсвязанной таблицы.

Наиболее частопри работе с компонентом TTable используются следующие методы:

· Open иClose устанавливают значения свойства Active равными True и False соответственно.

· Refreshпозволяет заново считать набор данных из БД.

· First,Last, Next, Prior перемещают указатель текущей записи на первую, последнюю, следующуюи предыдущую записи соответственно.

· Insert,Edit, Delete, Append — переводят таблицу в режимы вставки записи, редактирования,удаления, добавления записи соответственно.

· Post — осуществляет физическое сохранение измененных данных.

· Cancel- отменяет внесенные изменения, не сохраненные физически.

· FieldByName- предоставляет возможность обращения к данным в полях по имени поля.

В данном приложение компоненты,реализующие работу с БД использованы с целью обеспечения простоты просмотра и редактированияданных пользователем, независимо от сложности структуры используемой модели данных.[1]

3.Программнаяреализация приложения

 

3.1 Деревоформ приложения

/>

Рис.1

3.2.1Форма«Автоматизация расчёта нагрузки и преподавателей ВУЗа» является главной формой разработанногоприложения, выполняет следующие функции:

1.Возможностьвыбора режима работы с приложением;

1.1Переключениена режим просмотра (файлы базы данных недоступны для просмотра);

1.2Переключениена режим редактирования файлов баз данных (файлы можно просматривать и редактировать);

1.3Остановка работыприложения, выход из приложения;

1.4Поддерживаетсярежим быстрого вызова через заранее фиксированные сочетания клавиш;

2.Защита информации(функция поддерживается только в режиме редактирования);

2.1Обеспечен вводкода в появившееся окно ввода;

2.2Обеспечен вводграфического кода;

3Возможность управлятьцветом формы при помощи пунктов меню;

4.Возможностьиспользовать «горячих клавиш»

5.Возможностьиспользовать всплывающие подсказки для комфорта работы пользователя.

Её внешний видпредставлен на рис6

/>

Рис6 Внешний видформы «Автоматизация расчёта нагрузки и преподавателей ВУЗа»

Листинг модуляформы приведён в приложении А

3.2.2Форма«Управление приложением» вызывается автоматически в процессе работы приложения приусловии правильно введённого кода (в случае выбора режима редактирования) или привыборе режима просмотра.

Форма служит дляреализации следующих функций:

1.Возможностьмодификации базы данных;

2.Функция, использующаявычисляемое поле;

3.Функция фильтрацииданных БД;

4.Функция поискасведений БД;

5.Возможностьпереключения на другие формы приложения.

Её внешний видпредставлен на рис7


/>

Рис7 Внешний видформы «Форма управления приложением»

Листинг модуляформы приведён в приложении В

3.2.3Форма«Текстовый редактор» организует следующие функции:

1.Создание новогодокумента;

2Открытие файла;

3Сохранение файла;

4Сохранение файлапод указанным именем;

2.Использованиебуфера обмена :

2.1Функция «вырезать»;

2.2Функция «копировать»;

2.3Функция «вставить»;

3.Вызов формы«О программе» через пункт меню «Справка»;

Её внешний видпредставлен на рисунке

/>

Рис8 Внешний видформы «Текстовый редактор»


Листинг модуляформы приведён в приложении А

3.2.4Форма«Справка» содержит сведения о программе, её вызов инициализируется через пункт менюформы «Текстовый редактор»;

Её внешний видпредставлен на рис9

/>

Рис9 Внешний видформы «Справка»

Листинг модуляформы приведён в приложении А

3.2.5Форма«Создание расписания» содержит три вкладки. Вкладка «Расписание для групп» организуетследующие функции:

1.Возможностьиспользования механизма базы данных с целью создания расписания для групп;

2.Поддерживаетфункцию фильтрации данных таблицы;

Внешний вид первойвкладки представлен на рис10

/>

Рис10 Внешнийвид вкладки «Расписание для групп»


3.2.5.1.Вкладка«Расписание для преподавателей»:

1.Возможностьвыбора преподавателя из списка преподавателей с целью создания расписания.

2.Автоматическоевызов формы, содержащей расписание для преподавателя на основе данных таблицы свкладки «Расписание для групп» Её внешний вид представлен на рис11

/>

Рис11 Внешнийвид вкладки «Расписание для преподавателей»

3.2.5.2.Вкладка«Справка» служит для реализации следующих функций:

1.Выбор разделасправки;

2.Загрузка файладанных, содержащего текст справки;

3.6Форма «Расписание»служит для отображения расписания для преподавателей. Форма создаётся автоматическипри нажатии на кнопку в процессе работы приложения. Содержит таблицу, в которуюавтоматически записываются данные. Данные, содержащиеся в таблице уничтожаются призакрытии формы.

Внешний вид вкладкипредставлен на рис12


/>

Рис12 Внешнийвид вкладки «Справка»

Листинг модуляформы «Создание расписания» приведён в приложении А


4.Тестированиеприложения

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

4.1 Тест 1

При тестированииприложения на возможность изменения внешнего вида окна получены следующие результаты(рис. 13)

/>

Рис.13Выбор цветаформы приложения из перечня возможных цветов

Изменение цветаформы происходит в момент нажатия кнопки пункта меню «Закраска формы».(рис14,15)

/>

Рис.14Результатизменения цвета1


/>

Рис 15Результатизменения цвета2

4.2Тест2

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

/>

Рис16 Выбор режимаработы

После выбора режиманеобходимо нажать на кнопку «Работать!».

В режиме просмотрасведения, содержащиеся в базе данных остаются недоступными для пользователя.(рис16,17)


/>

Рис 17Работа врежиме просмотра

При выбранномрежиме редактирования нажатие кнопки «Работать!» даст следующий результат:

На форме появитсяещё одно окно ввода, служащее для ввода пароля, а также ещё одна кнопка «Подтвердитеправильность пароля».

Кроме того, высветитсясообщение следующего вида (рис 18)

/>

Рис18 Сообщениео необходимости ввода пароля

/>

Рис19 Организациязащиты информации в процессе работы в разработанном приложении.

При правильномвводе пароля нажатие на кнопку «подтвердите правильность пароля спровоцирует следующуюреакцию приложения (рис19)


/>

Рис 20Реакцияна правильный ввод пароля

На форме высветитсяновое сообщение с другим запросом (рис

/>

Рис.20Запрос наввод графического кода

В том случае,если в окно ввода пароля на момент нажатия кнопки находится сообщение, не являющеесяпаролем, программа оповестит об этом пользователя при помощи сообщения следующеговида (рис21)

/>

Рис21 Сообщениеоб ошибке при вводе пароля


В случае ошибкитребуется снова ввести пароль, иначе приложение не допустит работы с ним.

Для ввода графическогокода предусмотрены некоторые атрибуты, вызываемые через меню рабочей формы.

Код распознаётсяпо параметрам: цвет линии (рис22), тип линии (рис23), цвет заливки компонента Image, который в данном приложениипредназначен для рисования.

/>

Рис22 выбор цветалинии

/>

Рис 23выбортипа линии

/>

Рис 24 Ввод неверногографического кода


При несоответствиивыбранных параметров условиям(рис, заданным программно появляется сообщение (рис25)

/>

Рис25 Сообщениеоб ошибке

При необходимостивновь ввести графический код можно воспользоваться кнопкой «Очистить», отвечающейза очистку компонента Image (рис 26)

/>

Рис 26Очисткакомпонента Image

В случае правильногозадания графического кода, нажатие на кнопку «Добро пожаловать!» инициирует появлениедругой формы (рис27)

/>

Рис 27Реакцияприложения на ввод верного графического кода

4.3Тест3


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

Для этого попытаемсяввести какие-либо сведения в одну из ячеек таблицы, затем переместимся на другуюячейку данной таблицы (рис28)

/>

Рис28 Попыткамодификации базы данных

Если проделатьвсе вышеперечисленные действия, появится сообщение (рис29)

/>

Рис29 Предупреждениенежелательной модификации БД

Далее при нажатиина кнопку OK модифицированная ячейка сохраняет своё состояние, в обратном случаеданные таблицы приобретают первоначальный вид.


4.4 Тест4

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

В данном случаевычисляемым поле будет поле «Возраст», которое рассчитывается на основе содержанияполя «Год рождения» (рис30)

/>

Рис 30 Использованиевычисляемого поля

4.5Тест5

Протестируем приложениена возможность поиска по заданному ключу, а также фильтрации данных в соответствиис заданным условием.

Выберем пунктменю «Поиск», на форме появится панель поиска (рис31) В число параметров поискавключены поле, по которому необходимо осуществить поиск, и запись, которую требуетсянайти.

/>

Рис 31Остановкауказателя на строке с найденной записью


Для осуществленияфильтрации выберем пункт меню «Сортировка».рис(32,33)

/>

Рис32 Режим фильтрациивключен

/>

Рис 33Режим фильтрацииотключён

Для удобства поотношению к GroupBox1, содержащей компоненты фильтрации, возможно применение функции «Скрыть»,вызываемой через Popur Menu правым щелчком мыши по компоненту (рис34,35)

/>

Рис 34 Вызов функции«Скрыть»


/>

Рис 35Результатприменения функции «Скрыть»

4.6Тест6

Протестируем функциюпереключения между формами, реализуемую при помощи одноимённого пункта Главногоменю формы управления приложением.

При выборе пункта«Создание файла» получим следующий результат (рис36)

В случае выборапункта «Переключение режима» появится окно главной формы (рис37)

/>

Рис36 Открытиеформы «Текстовый редактор»


/>

Рис 37 Переключениена главную форму

4.7Тест7

Протестируем функциональныевозможности формы «Текстовый редактор».

Вторая группакнопок на панели инструментов отвечает за сохранение и создание новых файлов (рис38,39).

/>

Рис 38 Открытиефайла

/>

Рис39 Результатоткрытия файла


Возможно сохранениесодержимого окна при нажатии на кнопку «Сохранить как» (рис40)

/>

Рис 40 Сохранениефайла под выбранным именем

Вторая группакнопок отвечает за редактирование введённого текста.

Кнопки поддерживаютфункции соответственно «вырезать», «копировать», вставить».(рис41)

/>

Рис41 Внесениефрагмента текста в буфер обмена

Последняя кнопкаорганизует вызов формы, содержащей сведения о программе (рис 42)


/>

Рис 42 Внешнийвид окна справки

Самая первая кнопкаслужит для закрытия окна редактора.

Параллельно можетосуществляться сохранение данных, содержащихся в окне (рис43)

/>

Рис43 Событиена нажатие кнопки «Выход»

4.8Тест8

Протестируем форму«Создание расписания» на возможность реализации вложенных функций. Вкладка «Расписаниедля групп» формы реализует функции ввода(рис 44)и фильтрации (рис45) данных таблицыБД

/>

Рис44 Реализацияфункции ввода


/>

Рис45 Реализацияфункции фильтрации данных

Вкладка «Расписаниедля преподавателей» реализует функцию

Выбора преподавателяиз общего списка (рис46,47,48), а также инициирует появление формы, содержащей расписаниедля данного преподавателя(рис.49,50)

/>

Рис46 список преподавателей

/>

Рис 47Осуществлениевыбора 1


/>

Рис 48Осуществлениевыбора 2

/>

Рис 49Расписаниедля преподавателя а

/>

Рис 50Расписаниедля преподавателя б

При тестированиивкладки «Справка» получены следующие результаты (рис51,52,53)


/>

Рис51 Реализацияфункции «справка»1

/>

Рис 52Реализацияфункции «справка»2

/>

Рис53 Реализацияфункции «справка»3


Заключение

В ходе разработкиприложения была достигнута цель данной курсовой работы, а именно: реализации функцииавтоматизации расчёта и преподавателей ВУЗа. Поставленные в данной курсовой работезадачи были решены в ходе тестирования полученного приложения.

Готовая программаспособна облегчить работу пользователя за счёт экономии времени и усилий, однакоприложение не совершенно. Гибкость выбранной визуальной среды позволяет вноситьв приложения необходимые коррективы. Удобный интерфейс позволяет создать необходимыеусловия для комфортной работы с приложением.


Список использованныхисточников

1. «Работа с локальнымибазами данных в C++ Builder 5», Аpхангельский .

2. «Введение в BorlandC++ Builder», Елманова.

3.Джарод Холингвэрт, Дэн Баттерфилд,Боб Сворт, Джэйми Оллсоп C++Builder 5. Руководство разработчика.

4.Borland C++ Builder 5. Энциклопедияпрограммиста. Калверт Ч., Рейсдорф К., «ДиаСофт» — 2001, 944 стр.

5.http://www.codenet.ru/

6.«Язык C++ Builder5. Справочноепособие», Архангельский А.

7.«C++ Builder 5: 70компонентов ввода/вывода инф.», Аpхангельский А.

8. www.interface.ru

9. Borland C++ Builderand MS SQL 2000 developer


ПриложениеА

Листинг формы«Автоматизация расчёта нагрузки и преподавателей ВУЗа.

#ifndefKurH

#defineKurH

//---------------------------------------------------------------------------

#include<Classes.hpp>

#include<Controls.hpp>

#include<StdCtrls.hpp>

#include<Forms.hpp>

#include<ExtCtrls.hpp>

#include<Menus.hpp>

#include«CGRID.h»

#include«PERFGRAP.h»

#include<Mask.hpp>

#include<jpeg.hpp>

#include<ComCtrls.hpp>

#include«Word_2K_SRVR.h»

#include<OleServer.hpp>

//---------------------------------------------------------------------------

classTForm1: public TForm

{

__published://IDE-managed Components

TMainMenu*MainMenu1;

TButton*Button1;

TMenuItem*N2;

TMenuItem*N4;

TMenuItem*N5;

TCColorGrid*CColorGrid1;

TPanel*Panel1;

TComboBox*ComboBox1;

TButton*Button2;

TEdit*Edit1;

TImage*Image1;

TColorBox*ColorBox1;

TLabel*Label1;

TMenuItem*N1;

TMenuItem*N3;

TMenuItem*N6;

TMenuItem*N7;

TButton*Button3;

TButton*Button4;

void__fastcall N5Click(TObject *Sender);

void__fastcall Button1Click(TObject *Sender);

void__fastcall N8Click(TObject *Sender);

void__fastcall N9Click(TObject *Sender);

void__fastcall N2Click(TObject *Sender);

void__fastcall Button2Click(TObject *Sender);

void__fastcall Image1MouseDown(TObject *Sender,

TMouseButtonButton, TShiftState Shift, int X, int Y);

void__fastcall CColorGrid1Change(TObject *Sender);

void__fastcall N4Click(TObject *Sender);

void__fastcall N10Click(TObject *Sender);

void__fastcall N1Click(TObject *Sender);

void__fastcall FormCreate(TObject *Sender);

void__fastcall Button3Click(TObject *Sender);

void__fastcall N6Click(TObject *Sender);

void__fastcall N3Click(TObject *Sender);

void__fastcall Button4Click(TObject *Sender);

private:

intfbMouseDown;// User declarations

public://User declarations

__fastcallTForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

externPACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

#include<vcl.h>

#pragmahdrstop

#include«Kur.h»

#include«Unit4.h»

boolOK;

//---------------------------------------------------------------------------

#pragmapackage(smart_init)

#pragmalink «CGRID»

#pragmalink «PERFGRAP»

#pragmalink «Word_2K_SRVR»

#pragmaresource "*.dfm"

TForm1*Form1;

TForm4*Form4;

//---------------------------------------------------------------------------

__fastcallTForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

fbMouseDown=0;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N5Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void__fastcall TForm1::Button1Click(TObject *Sender)

{

inti,j;

for(i=0;i<Image1->Width;i++)

{for(j=0;j<Image1->Height;j++)

Image1->Canvas->Pixels[i][j]=clWhite;}

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N8Click(TObject *Sender)

{

Image1->Canvas->Pen->Style=psDot;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N9Click(TObject *Sender)

{

Image1->Canvas->Pen->Style=psClear;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N2Click(TObject *Sender)

{

CColorGrid1->Width=90;

CColorGrid1->Height=90;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::Button2Click(TObject *Sender)

{ if(ComboBox1->ItemIndex==0)

{

Form4=newTForm4(Application);

Form4->Table1->Active=false;

Form4->Table2->Active=false;

Form4->Show();

}

else

{Application->MessageBox(«Защита конфиденциальности информации»,«Введите пароль»,MB_OK);

Edit1->Visible=true;

Button3->Visible=true;}}

//---------------------------------------------------------------------------

void__fastcall TForm1::Image1MouseDown(TObject *Sender,

TMouseButtonButton, TShiftState Shift, int X, int Y)

{

Image1->Canvas->LineTo(X,Y);

}

//---------------------------------------------------------------------------

void__fastcall TForm1::CColorGrid1Change(TObject *Sender)

{

Image1->Canvas->Brush->Color=CColorGrid1->BackgroundColor;

Image1->Canvas->Rectangle(0,0,265,385);

Image1->Canvas->Pen->Width=1;

Image1->Canvas->Pen->Color=CColorGrid1->ForegroundColor;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N4Click(TObject *Sender)

{

Form1->Color=ColorBox1->Selected;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N10Click(TObject *Sender)

{

Image1->Canvas->Pen->Style=psSolid;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N1Click(TObject *Sender)

{

Image1->Canvas->Pen->Style=psDot;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::FormCreate(TObject *Sender)

{

Edit1->Visible=false;

Button3->Visible=false;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::Button3Click(TObject *Sender)

{

if(Edit1->Text!=«пэ-81»)

Application->MessageBox(«Пароль введён неверно»,«Сообщение об ошибке»,MB_OK);

else

{Application->MessageBox(«Введитеграфический код»,«Добро пожаловать!»,MB_OK);}

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N6Click(TObject *Sender)

{

Image1->Canvas->Pen->Style=psDash;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::N3Click(TObject *Sender)

{

Image1->Canvas->Pen->Style=psDot;

}

//---------------------------------------------------------------------------

void__fastcall TForm1::Button4Click(TObject *Sender)

{

if(Image1->Canvas->Pen->Style==psDash)

{Form4=newTForm4(Application);

Form4->Show();}

else

Application->MessageBox("",«Попробуйте ещё раз»,MB_OK);

}

//---------------------------------------------------------------------------

void__fastcall TForm1::Image1Click(TObject *Sender)

{}

Листинг формы«Форма управления приложением»

#include<vcl.h>

#pragmahdrstop

#include«Unit4.h»

#include«Unit2.h»

#include«Kur.h»

#include«Unit3.h»

#include«uni.h»

#include«Unit7.h»

#include«Unit8.h»

#include«Unit5.h»

boolSuccess;

//---------------------------------------------------------------------------

#pragmapackage(smart_init)

#pragmalink «CGRID»

#pragmaresource "*.dfm"

TForm4*Form4;

TForm1*Form1;

TForm3*Form3;

//---------------------------------------------------------------------------

__fastcallTForm4::TForm4(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Button1Click(TObject *Sender)

{

GroupBox1->Visible=true;

Edit2->Visible=false;

GroupBox1->Caption="Èñõîäíûåäàííûå";

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N11Click(TObject *Sender)

{

Form4->Close();

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Table1BeforePost(TDataSet *DataSet)

{

if(MessageBox(0,"Âû äåéñòâèòåëüíîõîòèòå ñîõðàíèòüèçìåíåíèÿ?","Ïðåäóïðåæäåíèåî íåæåëàòåëüíîéìîäèôèêàöèèÁÄ",MB_YESNO)==IDNO)

Table1->Cancel();

else

{Table1->Post();

Table1->Append();}

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Table1CalcFields(TDataSet *DataSet)

{

Table1Voz->Value=2009-Table1God->Value;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N7Click(TObject *Sender)

{ Form1=newTForm1(Application);

Form1->Show();

}

//---------------------------------------------------------------------------

void__fastcall TForm4::O1Click(TObject *Sender)

{

Panel1->Visible=1;

ProgressBar1->Visible=true;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Edit1Change(TObject *Sender)

{inti;

Timer1->Enabled=true;

ProgressBar1->Visible=true;

TLocateOptionsOptions;

Success=Table1->Locate(ComboBox1->Text,Edit1->Text,Options);

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Timer1Timer(TObject *Sender)

{

if(Edit1->Text!=""&&!Success)

Application->MessageBox("íåíàéäåíî íè îäíîéçàïèñè",MB_OK);

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N6Click(TObject *Sender)

{

Form3=newTForm3(Application);

Form3->Show();

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Timer2Timer(TObject *Sender)

{if(Edit1->Text!="")

ProgressBar1->StepIt();

if(ProgressBar1->Position==80)

{Timer1->Enabled=false;

ProgressBar1->Visible=false;}

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N18Click(TObject *Sender)

{

Form8=newTForm8(Application);

Form8->Show();

}

//---------------------------------------------------------------------------

void__fastcall TForm4::FormCreate(TObject *Sender)

{

GroupBox1->Visible=false;

ProgressBar1->Visible=false;

Table1->FilterOptions>>foNoPartialCompare;

Table1->FilterOptions<<foCaseInsensitive;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N19Click(TObject *Sender)

{

GroupBox1->Visible=false;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N20Click(TObject *Sender)

{

Panel1->Visible=false;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N8Click(TObject *Sender)

{

Form6=newTForm6(Application);

Form6->Show();

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N1Click(TObject *Sender)

{

GroupBox1->Visible=true;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::CheckBox1Click(TObject *Sender)

{

if(!CheckBox1->Checked)

Table1->Filtered=false;

}

//---------------------------------------------------------------------------

void__fastcall TForm4::Edit2Change(TObject *Sender)

{floatm;

StringStrFiltr;

if(CheckBox1->Checked)

{Table1->Filtered=false;

Table1->Refresh();

StrFiltr=Edit2->Text+"*";

if(ListBox1->Items->Strings[ListBox1->ItemIndex]==«FIO»)

{Table1->Filter=«FIO='»+StrFiltr+"'";}

else

{if(ListBox1->Items->Strings[ListBox1->ItemIndex]==«God»)

Table1->Filter=«God='»+FloatToStr(m)+"'";

else{if (ListBox1->Items->Strings[ListBox1->ItemIndex]==«Pol»)

Table1->Filter=«Pol='»+StrFiltr+"'";

else{if (ListBox1->Items->Strings[ListBox1->ItemIndex]==«Spec»)

Table1->Filter=«Spec='»+StrFiltr+"'";

else

Table1->Filter=«Group='»+StrFiltr+"'";}}}}

{

Table1->Filtered=true;}

}

//---------------------------------------------------------------------------

void__fastcall TForm4::N13Click(TObject *Sender)

{

GroupBox1->Visible=false;

}

//---------------------------------------------------------------------------

Листинг формы«О программе»

#include<vcl.h>

#pragmahdrstop

#include«Unit3.h»

//---------------------------------------------------------------------

#pragmaresource "*.dfm"

TForm7*Form7;

//---------------------------------------------------------------------

__fastcallTForm7::TForm7(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

void__fastcall TForm7::OKButtonClick(TObject *Sender)

{

Form7->Close();

}

//---------------------------------------------------------------------------

Листинг формы«Текстовый редактор»

#include<vcl.h>

#pragmahdrstop

#include«uni.h»

#include«Unit3.h»

//---------------------------------------------------------------------

#pragmaresource "*.dfm"

TForm3*Form3;

//---------------------------------------------------------------------

__fastcallTForm3::TForm3(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

void__fastcall TForm3::SpeedButton1Click(TObject *Sender)

{

if(OpenDialog1->Execute())

{Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

StatusBar1->Panels->Items[0]->Text=OpenDialog1->FileName;

}

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton3Click(TObject *Sender)

{

if(Memo1->Lines->Count>0)

{

if(MessageBox(0,"Ñîõðàíèòüñîäåðæèìîå îêíàðåäàêòèðîâàíèÿ?","Ïîäòâåðäèòåñîõðàíåíèå",MB_YESNO)==IDYES)

{

SpeedButton4Click(Sender);

}

}

Memo1->Clear();

StatusBar1->Panels->Items[0]->Text="Áåçèìåíè";

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton5Click(TObject *Sender)

{

if(StatusBar1->Panels->Items[0]->Text=="Áåç èìåíè")

SpeedButton4Click(Sender);

else

{Memo1->Lines->SaveToFile(StatusBar1->Panels->Items[0]->Text);}

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton2Click(TObject *Sender)

{

SpeedButton3Click(Sender);

Close();

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton4Click(TObject *Sender)

{

if(SaveDialog1->Execute())

Memo1->Lines->SaveToFile(SaveDialog1->FileName);

StatusBar1->Panels->Items[0]->Text=SaveDialog1->FileName;

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton6Click(TObject *Sender)

{

Memo1->CutToClipboard();

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton7Click(TObject *Sender)

{

Memo1->CopyToClipboard();

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton8Click(TObject *Sender)

{

Memo1->PasteFromClipboard();

}

//---------------------------------------------------------------------------

void__fastcall TForm3::SpeedButton9Click(TObject *Sender)

{

Form7=newTForm7(Application);

Form7->Show();

}

//---------------------------------------------------------------------------

Листинг формы«Создание расписания»

#include <vcl.h>

#pragmahdrstop

#include«Unit7.h»

//---------------------------------------------------------------------

#pragmaresource "*.dfm"

TForm6*Form6;

//---------------------------------------------------------------------

__fastcallTForm6::TForm6(TComponent* AOwner)

: TForm(AOwner)

{

}

//---------------------------------------------------------------------

void__fastcall TForm6::CancelBtnClick(TObject *Sender)

{

Table1->Cancel();

Form6->Close();

}

//---------------------------------------------------------------------------

void__fastcall TForm6::OKBtnClick(TObject *Sender)

{

Table1->Post();

Form6->Close();

}

//---------------------------------------------------------------------------

void__fastcall TForm6::Button1Click(TObject *Sender)

{

Table1->Bof;

while(Table1->Eof)

{Table1->Next();

}

TForm*GridForm=new TForm((TComponent *)NULL);

GridForm->Caption=«Расписание»;

GridForm->Width=300;

GridForm->Height=300;

TStringGrid*Grid=new TStringGrid(GridForm);

Grid->ColCount=Table1->FieldCount;

Grid->RowCount=Table1->FieldCount;

Grid->Parent=GridForm;

Grid->Align=alClient;

GridForm->Show();

Grid->FixedCols=1;

Grid->FixedRows=1;

Grid->Cells[0][1]=«8.20»;

Grid->Cells[0][2]=«10.00»;

Grid->Cells[0][3]=«11.45»;

Grid->Cells[0][4]=«13.20»;

Grid->Cells[0][5]=«15.00»;

Grid->Cells[0][6]=«16.45»;

Grid->Cells[0][7]=«18.00»;

Grid->Cells[0][8]=«19.45»;

Grid->Cells[1][0]=«Понедельник»;

Grid->Cells[2][0]=«Вторник»;

Grid->Cells[3][0]=«Среда»;

Grid->Cells[4][0]=«Четверг»;

Grid->Cells[5][0]=«Пятница»;

Grid->Show();

GridForm->Handle;

StringStrFiltr;

Table1->Filtered=false;

Table1->Refresh();

StrFiltr=ListBox1->Items->Strings[ListBox1->ItemIndex]+"*";

Table1->Filter=«FIO1='»+StrFiltr+"'";

Table1->Filtered=true;

inti;

while(!Table1->Eof)

{for(i=1;i<Table1->FieldCount;i++)

{if(Table1Time->Value==Grid->Cells[0][i])

Grid->Cells[1][i]=Table1Group->Value+Table1N1->Value;}

Table1->Next();

}

Table1->Filtered=false;

Table1->Bof;

Table1->Filter=«FIO2='»+StrFiltr+"'";

Table1->Filtered=true;

while(!Table1->Eof)

{for(i=1;i<Table1->FieldCount;i++)

{if(Table1Time->Value==Grid->Cells[0][i])

Grid->Cells[2][i]=Table1Group->Value+Table1N2->Value;}

Table1->Next();}

Table1->Filtered=false;

Table1->Bof;

Table1->Filter=«FIO3='»+StrFiltr+"'";

Table1->Filtered=true;

while(!Table1->Eof)

{for(i=1;i<Table1->FieldCount;i++)

{if(Table1Time->Value==Grid->Cells[0][i])

Grid->Cells[3][i]=Table1Group->Value+Table1N3->Value;}

Table1->Next();}

Table1->Filtered=false;

Table1->Bof;

Table1->Filter=«FIO4='»+StrFiltr+"'";

Table1->Filtered=true;

while(!Table1->Eof)

{for(i=1;i<Table1->FieldCount;i++)

{if(Table1Time->Value==Grid->Cells[0][i])

Grid->Cells[4][i]=Table1Group->Value+Table1N4->Value;}

Table1->Next();}

Table1->Filtered=false;

Table1->Bof;

Table1->Filter=«FIO5='»+StrFiltr+"'";

Table1->Filtered=true;

while(!Table1->Eof)

{for(i=1;i<Table1->FieldCount;i++)

{if(Table1Time->Value==Grid->Cells[5][i])

Grid->Cells[5][i]=Table1Group->Value+Table1N5->Value;}

Table1->Next();}

}

//---------------------------------------------------------------------------

void__fastcall TForm6::Button2Click(TObject *Sender)

{

RichEdit1->Lines->LoadFromFile(ListBox2->Items->Strings[ListBox2->ItemIndex]+".txt");

}

//---------------------------------------------------------------------------

void__fastcall TForm6::Edit1Change(TObject *Sender)

{

StringStrFiltr;

Table1->Filtered=false;

Table1->Refresh();

StrFiltr=Edit1->Text+"*";

Table1->Filter=«Group='»+StrFiltr+"'";

if(CheckBox1->Checked)

Table1->Filtered=true;

}

//---------------------------------------------------------------------------

еще рефераты
Еще работы по экономико-математическому моделированию