Курсовая работа: Создание информационного банка данных Успеваемость студентов
Название: Создание информационного банка данных Успеваемость студентов Раздел: Рефераты по информатике Тип: курсовая работа | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Министерство образования и науки Республики Казахстан Карагандинский Государственный Технический Университет КУРСОВАЯ РАБОТА По дисциплине: «Разработка программного обеспечения» Тема: «Создание информационного банка данных «Успеваемость студентов» 20 09 Содержание Введение 1. Предпроектные исследования 1.1 Общие сведения о базах данных 1.2 Классификация баз данных 1.3 Структура базы данных 1.4 Модель базы данных в Delphi 2. Техническое задание 2.1 Основание для создания 2.2 Цель и назначение подсистемы 2.3 Требования к подсистеме 2.4 Требования к информационному обеспечению 2.5 Требования к лингвистическому обеспечению 2.6 Требования к программному обеспечению 2.7 Требования к техническому обеспечению 2.8 Требования к методическому обеспечению 3. Информационное обеспечение 3.1 Структура информационных потоков 3.2 Логическая модель банка данных 3.3 Физическая модель банка данных 4. Лингвистическое обеспечение 4.1 Языки программирования 4.2 Входные данные 4.3 Выходные данные 4.4 Разработка сценария диалога 5. Программное обеспечение 5.1 Общесистемное программное обеспечение 5.2 Базовое программное обеспечение 5.3 Прикладное программное обеспечение 6. Методическое обеспечение 6.1 Руководство для пользователя Заключение Список использованной литературы Приложения Введение В наше время информация играет ключевую роль в любой области жизнедеятельности человека. Цель исследований нашего курсового проекта состоит в разработке информационного банка данных, который поможет любому пользователю легко найти нужную информацию о любом студенте вуза. Разработанный нами проект демонстрирует то, как работу с данными можно сделать удобной и интересной, используя базу данных. Программа является очень актуальной на сегодняшний день, она автоматизирует работу с базой данных любого вуза и предоставляет пользователю (оператору) понятный и дружественный интерфейс. Мощность информационного банка данных обусловлена возможностью его постоянного пополнения новыми данными, причем в неограниченном количестве информации. Это является очень удобным для пользователя. Таким образом, создание информационного банка данных, обладающего такими свойствами, задача достаточно актуальная и полезная. 1. Предпроектные исследования 1.1 Общие сведения о базах данных С точки зрения пользователя, база данных – это программа, которая обеспечивает работу с информацией. При запуске такой программы на экране, как правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную. С точки зрения программиста, база данных – это набор файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных. В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные (dBASE, FoxPro, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных. В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от dBASE до Infomix и Oracle. Delphi также позволяет программисту, используя утилиту Borland Database Desktop, создавать файлы баз данных в различных форматах. 1.2 Классификация баз данных В зависимости от расположения программы, использующей данные, и самих данных, а также способа разделения данных между несколькими пользователями различают локальные и удаленные базы данных. Данные локальной базы данных (файлы данных) находятся на одном (локальном) устройстве, в качестве которого может выступать диск компьютера или сетевой диск (диск другого компьютера, работающего в сети). Для обеспечения разделения данных (доступа к данным) между несколькими пользователями, в качестве которых выступают программы, работающие на одном или нескольких компьютерах, в локальных базах данных применяется метод, получивший название блокировка файлов. Суть этого метода заключается в том, что пока данные используются одним пользователем, другой пользователь не может работать с этими данными, т.е. данные для него закрыты, заблокированы. Paradox, dBase, FoxPro и Access – это локальные базы данных. Данные (файлы) удаленной базы данных находятся на удаленном компьютере. (Следует обратить внимание, что каталоги удаленного компьютера не могут рассматриваться как сетевые диски.) Программа работы с удаленной базой данных состоит из двух частей: клиентской и серверной. Клиентская часть программы, работающая на компьютере пользователя, обеспечивает взаимодействие с серверной программой: посредством запросов, передаваемых на удаленный компьютер, предоставляет доступ к данным. Серверная часть программы, работающая на удаленном компьютере, принимает запросы, выполняет их и пересылает данные клиентской программе. Запросы представляют собой команды, представленные на языке SQL (Structured Query Language) – языке структурированных запросов. Программа, работающая на удаленном сервере, проектируется таким образом, чтобы обеспечить одновременный доступ к информации нескольким пользователям. При этом для обеспечения доступа к данным вместо механизма блокировки файлов используют механизм транзакций. Транзакция – это некоторая последовательность действий, которая должна быть обязательно выполнена над данными перед тем, как они будут переданы. В случае обнаружения ошибки во время выполнения любого из действий вся последовательность действий, составляющая транзакцию, повторяется снова. Таким образом, механизм транзакций обеспечивает защиту от аппаратных сбоев. Он также обеспечивает возможность многопользовательского доступа к данным. Разработка программы работы с удаленной базы данных – сложная и трудоемкая задача. Ее решение предполагает наличие у разработчика глубоких знаний и большого опыта разработки программного обеспечения. Поэтому в данной книге задача разработки удаленных баз данных не рассматривается. 1.3 Структура базы данных База данных – это набор однородной, как правило, упорядоченной по некоторому критерию, информации. База данных может быть представлена в «бумажном» или в компьютерном виде. Типичным примером «бумажной» базы данных является каталог библиотеки – набор бумажных карточек, содержащих информацию о книгах. Информация в этой базе однородная (содержит сведения только о книгах) и упорядоченная (карточки расставлены, например, в соответствии с алфавитным порядком фамилий авторов). Другими примерами «бумажной» базы данных являются телефонный справочник и расписание движения поездов. Компьютерная база данных представляет собой файл (или набор связанных файлов), содержащий информацию. База данных состоит из записей. Каждая запись содержит информацию об одном экземпляре. Записи состоят из полей. Каждое поле содержит информацию об одной характеристике экземпляра. Следует обратить внимание, что каждая запись состоит из одинаковых полей. Некоторые поля могут быть не заполнены, однако они все равно присутствуют в записи. На бумаге базу данных удобно представить в виде таблицы. Каждая строка таблицы соответствует записи, а ячейка таблицы – полю. При этом заголовок столбца таблицы – это имя поля, а номер строки таблицы – номер записи. 1.4 Модель базы данных в Delphi Каждая таблица физически хранится в отдельном файле. Однако отождествлять базу данных и таблицу нельзя, так как довольно часто поля одной записи распределены по нескольким таблицам и, следовательно, находятся в разных файлах. В простейшем случае источником информации для программы, работающей с базой данных, может быть вся таблица. Однако, как правило, пользователя интересует не вся информация, находящаяся в базе данных, а только какая-то ее часть. Он выбирает и просматривает только некоторые, удовлетворяющие его запросу записи. Поэтому в модель базы данных помимо таблицы, представляющей собой всю базу данных, было введено понятие запроса, являющегося выборкой, т.е. группой записей базы данных. Перед началом работы над курсовым проектом были исследованы различные информационные банки данных, на основе которых мы смогли создать более совершенный и мощный информационный банк данных. 2. Техническое задание 2.1 Цель и назначение подсистемы При помощи разрабатываемой программы станет возможным создавать и использовать базу данных в любом вузе. Структура базы данных составляется в виде реляционных таблиц. База данных будет способна работать практически в любых вузах, решая задачи со скоростью значительно превосходящей человеческие возможности. В настоящее время студентов в вузах стала намного больше и возникают проблемы при работе с информацией о всех студентах. Для упрощения было бы полезно разработать программный комплекс, который значительно облегчит процесс поиска нужной информации о студенте. 2.2 Требования к подсистеме Требования, предъявляемые к базе данных: программа должна устойчиво выполнять свои функции, программа должна быть понятной для пользователя, наличие удобного интерфейса. 2.3 Требования к информационному обеспечению В разделе информационного обеспечения необходимо тщательно разработать структуру информационных потоков, концептуальную и логическую модели данных. Представление данных в банке данных должно обладать основными свойствами информации: полнота, непротиворечивость, достоверность, адекватность, защищенность, эргономичность и т.д. Программа должна выполнять все базовые функции по работе с информацией в базе знаний: поиск информации, передача данных, хранение данных, удаление данных, просмотр данных. Перед работой программы должна быть осуществлена индексация БД с целью отслеживания уникальности данных, для осуществления фильтрации и сортировки данных по нужным полям, а также для ускорения поисковых функций. 2.4 Требования к лингвистическому обеспечению Лингвистическое обеспечение должно содержать описание языка программирования и среды проектирования, в которой будет создаваться оболочка базы данных, а также описание входных и выходных данных. Язык программирования должен быть языком высокого уровня. Входной язык должен: – обеспечивать удобочитаемость и компактность описаний; – должен быть простым в использовании. Выходной язык должен: – в наглядной форме предоставлять данные решения задач; – обеспечивать соответствие результатов проектирования требованиям задачи. 2.5 Требования к программному обеспечению Программное обеспечение должно содержать описание общесистемного, базового и прикладного ПО. В качестве операционных систем должны использоваться Windows, так как она является более распространенной в настоящее время. В качестве базового программного обеспечения необходимо выбрать и описать любой высокоразвитый распространенный язык программирования, позволяющий разрабатывать прикладные программные продукты, и работающий под Windows. 2.6 Требования к техническому обеспечению Техническое обеспечение должно быть выбрано на основе комплекса технических средств кафедры САПР. Комплекс технических средств должен быть построен на базе ПЭВМ IBM PC или совместимых с ней. В качестве запоминающего устройства, в котором реализуются преобразования данных и программное управление процессами, должна использоваться оперативная память. Ее объем должен позволять использовать базовую операционную систему, допускающую реализацию прикладных программ. 2.7 Требования к методическому обеспечению Методическое обеспечение автоматизированного проектирования должно отражать описание системы и подсистем, методику (технологию) автоматизированного проектирования отдельных исполняемых процедур и объекта в целом. 3. Информационное обеспечение 3.1 Структура информационных потоков Программа будет использоваться для поиска, изменение уже внесенной информации, внесения новой информации и простановки баллов. Разрабатываемый проект предназначен для упрощения работы пользователя с банком данных. При работе рекомендуется придерживаться последовательности действий, предлагаемой на рисунке 3.1. Пользователь (оператор), с помощью специальных запросов на поиск ищет определенную информацию. По результатам поиска он может уже вносить какие-либо нужные изменения. Весь этот процесс многократно повторяется. Рисунок. 3.1 – Структура информационных потоков банка данных 3.2 Физическая модель банка данных Физическая модель банка данных представлена в виде таблиц 3.1, 3.2, 3.3, 3.4, 3.5. Здесь указывается тип каждого поля, его размер. А так же первичные индексы (уникальность, сортировка) и вторичные индексы (связь 1 – ∞). Таблица 3.1 – СтруктуратаблицыФакультет.db
Таблица 3.2 –Структуратаблицы Группа.db
Таблица 3.3 – СтруктуратаблицыСтуденты.db
Таблица 3.4 – Структуратаблицы Успеваемость.db
Таблица 3.5 – СтруктуратаблицыПредметы.db
4. Лингвистическое обеспечение 4.1 Языки программирования Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень. Язык ObjectPascal является одним из высокоразвитых языков объектно-ориентированного программирования. И среди других, например, таких как VisualBasic или VisualC++, отличается простотой программного кода, достаточным количеством литературы по этому языку. Объектно-ориентированный язык программирования характеризуется тремя основными свойствами: 1) Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим. 2) Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов. 3) Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных – объект. Программист оперирует не просто процедурами и функциями, а целыми объектами. События– это те же процедуры и функции, которые вызываются при наступлении определённой ситуации. Например, если изменилось какое-то свойство объекта, может быть сгенерировано соответствующее событие и вызвана процедура для обработки реакции на это событие. Методы– это те же процедуры и функции, т.е. это то, что объект умеет делать (вычислять). Например, объект может иметь процедуру для вывода какого-то текста на экран. Эта процедура и есть метод объекта. Свойства– это простые переменные, которые влияют на состояние объекта. Например, ширина, высота – это свойства объекта. Из операций, развилок и слияний строятся базовые конструкции: следование, ветвление, цикл. Применяя только эти три конструкции, можно реализовать алгоритм решения любой задачи. Оператор является основной структурной единицей языка. Оператор задает полное описание некоторого действия, которое необходимо выполнить. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в составной оператор или блок. Конструкция, представляющая собой последовательное выполнение двух или более операций, называется следованием. Конструкция, состоящая из развилки, двух операций и слияния, называется ветвлением. Одна из операций может отсутствовать. Конструкция, имеющая линии управления, ведущие к предыдущим операциям или развилкам, называется циклом. Конструкции следование, ветвление и цикл можно представить как операции, так как они имеют единственный вход и единственный выход. Произвольную последовательность операций можно представить как одну операцию. Код между последними операторами begin и end программы управляет логикой программы. В очень простой программе в этой секции кода может содержаться все, что вам нужно. В более крупных и сложных программах размещение в этой секции всего программного кода может затруднить чтение и понимание программы. К тому же ее будет труднее разрабатывать. Процедуры и функции позволяют разделить логику программы на более мелкие и управляемые фрагменты, и аналогичны подпрограммам в других языках. Как и в основном блоке программы, все действия в процедурах и функциях заключаются в begin и end. Каждый из этих сегментов кода выполняет конкретную задачу. Если вы обнаружите, что в вашей диаграмме одни и те же действия выполняются многократно, такую логику желательно выделить в процедуру или функцию. Вы можете один раз записать этот код в процедуре или функции, а затем многократно вызывать его в программе. Программа на языке ObjectPascalможет использовать блоки кода в программных модулях. Модуль можно рассматривать как мини-программу, которую может использовать ваша прикладная программа. Как и программа, он имеет заголовок (который называется заголовком модуля) и основной блок, ограниченный begin и end. Модули являются основой модульного программирования. Они используются для создания библиотек, которые могут включаться в различные программы (при этом становится необязательным иметь в наличии исходный код), а большие программы могут подразделяться на логически связанные модули. 4.2 Входные данные Общение с базой данных осуществляется табличным диалогом в экранных формах. Входными данными являются: во-первых изменения, вносимые пользователем и простановка оценок, во-вторых, запросы пользователя на поиск информации о студенте. Данные сведения вводятся при помощи аппаратных средств ввода – клавиатуры и мыши (будут показаны на рисунке 4.1). Посредством монитора система информирует о своей работе и направляет дальнейшие действия пользователя. Рисунок 4.1 – Работа банка данных 4.3 Выходные данные Выходными данными являются: во-первых, обновленные базы данных и информация на мониторе, отображающая результаты изменений; во-вторых, информация на мониторе по результатам запроса на поиск. Посредством монитора система информирует о своей работе и направляет дальнейшие действия пользователя (см. рисунок 4.1) 4.4 Разработка сценария диалога Процесс общения пользователя с программой должен быть простым и понятным, чтобы практически любого ранга пользователь мог моментально освоиться без каких-либо дополнительных пояснений (рисунки 4.2, 4.3, 4.4, 4.5).
Рисунок 4.2 – Схема главного окна
Рисунок 4.3 – Схема окна поиска фамилии по всем группам
Рисунок 4.4 – Схема окна поиска
Рисунок 4.5 – Схема окна фильтрации 5. П рограммное обеспечение 5.1 Общесистемное программное обеспечени е На сегодняшний момент операционная система Windows фирмы Microsoft во всех ее проявлениях, бесспорно считается самой распространенной операционной системой на ПК: в мире более 150 млн. IBM PC-совместимых компьютеров, и система Windows установлена на 100 млн. из них. ОС Windows характеризуется тем, что предоставляет приложениям возможность создания пользовательского интерфейса на высоком уровне эргономичности и удобства. В то же время, для работы этой системы требуется от 16 до 128 Мб оперативной памяти в зависимости от версии ОС, что по современным техническим возможностям совсем не много. В качестве операционной системы выбрана ОС семейства Windows, а именно, WindowsXPProfessional. Этот выбор был сделан по ряду следующих причин. Во-первых, она является одной из наиболее распространенных на сегодняшний день. Во-вторых, в ОС Windows надежность компьютера повышается за счет применения новых мастеров, служебных программ и ресурсов, обеспечивающих бесперебойную работу системы. В-третьих, в состав Windows входит ряд программ, совместное применение которых повышает производительность компьютера. В-четвертых, на кафедре САПР установлена именно эта операционная система. 5.2 Базовое программное обеспечени е В качестве базового ПО принята среда Delphi 7.0 языка программирования ObjectPascal. Пакет Delphi 7.0 установлен на кафедре САПР и стабильно работает под системой WindowsXPProfessional. Среди наиболее распространенных объектно-ориентированных сред программирования, Delphi 7.0 является на данный момент единственной средой быстрой разработки приложений (RAD), полностью поддерживающей все ведущие индустриальные стандарты: XML, SOAP, WSDL и XSL, а также появляющиеся платформы – Microsoft.NET и BizTalk, Sun Microsystems ONE, обеспечивая необходимую гибкость, надежность и масштабируемость. Основной упор в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать. Библиотека визуальных компонент (объектов) включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE. Delphi использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с одной стороны выразительную мощь и простоту программирования, а с другой стороны эффективность языка. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Delphi полностью поддерживает передовые программные концепции, включая инкапсуляцию, наследование, полиморфизм и управление событиями. Основные причины выбора языка ObjectPascal: – Простота языка позволяет быстро его освоить и создавать сложные программы; – Развитые средства представления структур данных обеспечивают удобство работы, как с числовой, так и с символьной и битовой информацией; – Объектно-ориентированное программирование (ООП) в визуальной среде. Одним из наибольших преимуществ ООП является возможность многократного использования программного кода за счет применения классов наследования, инкапсуляции и полиморфизма. Также, на выбор Delphi 7.0 в качестве базового программного обеспечения, повлияли такие обстоятельства как, достаточное количество необходимой литературы по программированию в этой среде, распространенность этой среды и имеющийся достаточный опыт работы в ней. Для оформления документации дипломного проекта и пояснительной записки был использован текстовый редактор Microsoft Word, который является наиболее популярным и предназначен для подготовки простых и сложных текстовых документов, верстки газетных страниц, макетирования художественных книг с иллюстрациями и научных книг с формулами и таблицами, создания векторной графики, схем и диаграмм. 5.3 Прикладное программное обеспечени еДля работы с данной программой необходимо создать проект, который будет обеспечивать интерфейс пользователя (рисунок 5.1). Рисунок 5.1 – Структура прикладного ПО Структура модулей Модуль «UnitZastavka» проекта служит показательной формой при загрузке базы данных. Модуль «UnitMainForm» является главным в работе всей программы, он позволяет создавать новую базу данных, либо редактировать уже существующую. Модули «UnitPoisk» и «UnitPoGruppam» служат для поиска информации. Модуль «UnitFilter» предназначен для фильтрации данных. В таблице 5.1 приведены основные процедуры и функции, используемые в модулях программы. Листинг программного кода помещен в приложении А. Таблица 5.1 – Структура модулей проекта
6. Методическое обеспечение 6.1 Руководство для пользователя Для начала работы пользователя с данной базой достаточно запустить файл «Student.exe». Главное окно программы Работа начинается с главного окна программы (рисунок 6.1), где будут приведены уже существующие базы данных. Это является наиболее удобным, так как предполагается, что работа по редактированию существующих баз данных будет выполняться чаще, чем создание новой базы знаний. Рисунок 6.1 – Главное окно программы При открытии главного окна активизируются таблицы с данными о всех факультетах, группах и студентах вуза. Разработка меню Меню проекта располагается в верхней строке экрана. Своим присутствием оно создает значительные удобства пользователям для работы с базой данных. После открытия проекта пользователям необходимо запустить на выполнение меню и из него можно выбирать нужные команды. В меню программы имеются две вкладки: «Поиск» и «Фильтр». В вкладке меню «Поиск» находятся еще четыре команды: «Найти», «поиск вперед», «поиск назад», «по всем группам» (Рисунок 6.2). Рисунок 6.2 – Вкладка главного меню «Поиск» Команда «Найти» означает поиск данных определенного студента либо в определенной группе, либо какой-либо группы в определенном факультете (Рисунок 6.3). Рисунок 6.3 – Окно «Поиск» При поиске активизируются команды «поиск вперед», «поиск назад». При нажатии этих команд идет дальнейший поиск входных данных. При этом, если эти данные не найдены, выдается сообщение об этом (Рисунок 6.4). Рисунок 6.4 – Сообщение о результате поиска Команда «по всем группам» предназначена для поиска нужных фамилий студентов не в одной группе, а во всех группах всех факультетов (Рисунок 6.5). Рисунок 6.5 – Окно поиска по всем группам Во вкладке «Фильтр» имеется две команды: «Включить», «Отключить». При выборе комнады «Включить» открывается форма для фильтрации фамилий студентов. Здесь пользователь вводит фамилию студента, котрого он ищет (Рисунок 6.6). Рисунок 6.6 – Окно фильтрации При нажатии кнопки Пуск происходит фильтрация в нужной группе по введенной фамилии (Рисунок 6.7). Рисунок 6.7 – Фильтрация по фамилии Если пользователь выбирает команду «Отключить» из главного меню, то фильтрация отключается. Заключение Информационный банк данных «Успеваемость студентов», разработанный в ходе выполнения курсового проекта, является актуальным на сегодняшний день, так как все вузы нуждаются в автоматизации управления. Нами были приобретены навыки программирования на языке Object Pascal в среде Delphi 7.0. Также мы научились разрабатывать собственные алгоритмы для решения поставленных задач, овладели методами и средствами отладки и тестирования программ. Разработанная нами программа устойчиво выполняет все свои функции, но для использования ее в вузах, она требует некоторых доработок: программным путем обеспечить безопасность данных, расширить возможности поиска (поиск по двум и более полям), и т.д. Список используемой литературы 1. А.Я. Архангельский Программирование в Delphi 7 2. А. Микляев «Учебник пользователя IBMPC», Москва – 2000 Приложение А Программный код информационного банка данных 1 . Листинг модуля «UnitZastavka» Var Form5: TForm5; path:string; procedure TForm5. FormCreate (Sender: TObject); begin getDir (0, path); mediaplayer1. FileName:=path+'\BART.AVI'; mediaplayer1. Open; // проигрывается заставка mediaplayer1. Play; form5. Close; form1. Top:=50; end; end. 2. Листинг модуля «UnitMainForm» Var Form1: TForm1; Cond_of_search:TTable; Field_of_search, Require:string; CurrentRec1, CurrentM:string; CurrentRecord, CurrentRecord_S:variant; CurrentRec2:longint; // при возврате связи используются запомненные счетчики DataSource_On_Off:TDataSource; procedure TForm1. Table2CalcFields (DataSet: TDataSet); Var r:real; s_r:string; begin // Вычисляемое поле «Средний балл» r:=(Table2. FieldByName('1atest').AsInteger+ Table2. FieldByName('2atest').AsInteger+ Table2. FieldByName('3atest').AsInteger)/3; s_r:=floatToStr(r); Delete (s_r, 4, length (s_r)); Table2. FieldByName ('Sr_b').AsString:=s_r; end; procedure TForm1. Table2BeforeClose (DataSet: TDataSet); begin // если таблица до закрытия была в режиме withTable2 do // редактирования или вставки if ((State=dsInsert) or (State=dsEdit)) thenPost; // изменения сохраняются end; procedure TForm1. Table3BeforeClose (DataSet: TDataSet); begin // если таблица до закрытия была в режиме withTable3 do // редактирования или вставки if ((State=dsInsert) or (State=dsEdit)) and (FieldByName('Familiya').AsString>'') thenPost; // изменения сохраняются end; procedure TForm1. Table4BeforeClose (DataSet: TDataSet); begin // если таблица до закрытия была в режиме withTable4 do // редактирования или вставки if ((State=dsInsert) or (State=dsEdit)) thenPost; // изменения сохраняются end; procedure TForm1. Table5BeforeClose (DataSet: TDataSet); begin // если таблица до закрытия была в режиме withTable5 do // редактирования или вставки if ((State=dsInsert) or (State=dsEdit)) thenPost; // изменения сохраняются end; procedure TForm1.mnFindClick (Sender: TObject); begin // команда «Найти» в гл. меню if form3. ShowModal = mrOK then begin mnSearchForward. Enabled:=true; // делаем доступными пункты «вперед, назад» mnSearchBack. Enabled:=true; // до входа на Form3 они не доступны ifForm3. ComboBox1. ItemIndex<2 thenbegin // Выбраны группа или количество CurrentM:='Gruppa'; // первичный ключ, поиск в Table5 Cond_of_search:= TTable (FindComponent('Table5')); DataSource_On_Off:= TDataSource (FindComponent('DataSource5')); end else begin CurrentM:='N_stud'; // автоинкриментноеполе, поискв Table3 Cond_of_search:= TTable (FindComponent('Table3')); DataSource_On_Off:= TDataSource (FindComponent('DataSource3')); end; if Cond_of_search=Table2 then // рвем связь, чтобы встать Table2. MasterSource:=nil; // идет повторный запрос на разрыв связи Cond_of_search. First; CurrentRecord:=null; // если не находим, mnSearchForward. Click; // вызываем поиск вперед end; end; procedure TForm1.mnSearchForwardClick (Sender: TObject); begin // команда "Поиск вперед» if Cond_of_search=Table3 then Table3. MasterSource:=nil; // рвем связи with Cond_of_search do begin DataSource_On_Off. DataSet:=nil; // на время поиска // отключаемвизуальныекомпоненты CurrentRecord_S:=FieldValues[CurrentM]; // запоминаемкуда CurrentRec1:=table3. FieldByName('Gruppa2').AsString; CurrentRec2:=table3. FieldByName ('N_stud').AsInteger; if CurrentRecord=FieldValues[CurrentM] then next; // чтобы сойти с whilenotEofdo begin if FieldValues [Field_of_search]=Require then begin CurrentRecord:=FieldValues[CurrentM]; // запоминаем для // следующего схода if Table3. MasterSource=nil then begin // при «поиске вперед» CurrentRec1:=table3. FieldByName('Gruppa2').AsString; Table3. MasterSource:=DataSource5; // возвращаем связь таблиц Table5. Locate ('Gruppa', CurrentRec1, []); // и локализуемся // на найденную запись Table3. Locate ('N_stud', CurrentRecord, []); end; DataSource_On_Off. DataSet:=Cond_of_search; // возвращаем подключение визуальных компонентов exit end; Next end; if Table3. MasterSource=nil then Link_On else Locate (CurrentM, CurrentRecord_S, [loCaseInsensitive]); // возвращаемся по окончании поиска end; DataSource_On_Off. DataSet:=Cond_of_search; // возвращаем подключение визуальных компонентов showmessage ('не найдено'); end; procedure TForm1. Link_On; begin // возвращаем связь таблиц Table3. MasterSource:=DataSource5; Table5. Locate ('Gruppa', CurrentRec1, []); Table3. Locate ('N_stud', CurrentRec2, []); end; procedure TForm1. Link_Off; begin CurrentRec1:=table3. FieldByName('Gruppa2').AsString; CurrentRec2:=table3. FieldByName ('N_stud').AsInteger; Table3. MasterSource:=nil // рвем связь таблиц end; procedure TForm1.mnSearchBackClick (Sender: TObject); begin // Команда "Поиск назад» if Cond_of_search=Table3 then Table3. MasterSource:=nil; with Cond_of_search do begin DataSource_On_Off. DataSet:=nil; // навремяпоискаотключаем // визуальныекомпоненты CurrentRecord_S:=FieldValues[CurrentM]; // запоминаемкуда CurrentRec1:=table3. FieldByName('Gruppa2').AsString; CurrentRec2:=table3. FieldByName ('N_stud').AsInteger; if CurrentRecord=FieldValues[CurrentM] then prior; // чтобы сойти с whilenotBofdo begin if FieldValues [Field_of_search]=Require then begin CurrentRecord:=FieldValues[CurrentM]; // запоминаемдля if Table3. MasterSource=nil then begin CurrentRec1:=table3. FieldByName('Gruppa2').AsString; Table3. MasterSource:=DataSource5; // возвращаем связь таблиц Table5. Locate ('Gruppa', CurrentRec1, [loCaseInsensitive]); Table3. Locate ('N_stud', CurrentRecord, [loCaseInsensitive]); end; DataSource_On_Off. DataSet:=Cond_of_search; // возвращаем exit end; Prior end; if Table3. MasterSource=nil then Link_On else Locate (CurrentM, CurrentRecord_S, [loCaseInsensitive]); // возвращаемся по окончании поиска на последнюю найденную или стартовую запись end; DataSource_On_Off. DataSet:=Cond_of_search; // возвращаем подключение визуальных компонентов showmessage ('не найдено'); end; procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction); begin // При закрытии формы Table4BeforeClose(Table4); Table5BeforeClose(Table5); Table3BeforeClose(Table3); Table2BeforeClose(Table2); if Table5. Modified then Table5. Post; // если в таблицах ifTable4. Modified then Table4. Post; // были изменения if Table3. Modified then Table3. Post; // их сохраняем if Table2. Modified then Table2. Post; if Table1. Modified then Table1. Post; Table5. Close; Table4. Close; Table3. Close; Table2. Close; Table1. Close; end; procedure TForm1. Table4AfterOpen (DataSet: TDataSet); begin table4. Edit; // ставим в режим редактирования end; procedure TForm1. Table5AfterOpen (DataSet: TDataSet); begin table5. Edit; // ставим в режим редактирования end; procedure TForm1. Table3AfterOpen (DataSet: TDataSet); begin table3. Edit; // ставим в режим редактирования end; procedure TForm1. Table2AfterOpen (DataSet: TDataSet); begin table2. Edit; end; procedure TForm1.mnFilter_OnClick (Sender: TObject); begin // при выборе команды «Включить фильтр» form2.show; end; procedure TForm1.mnFilter_OffClick (Sender: TObject); begin // при выборе команды «Отключить фильтр» Table3. Filtered:=false; end; procedure TForm1.N4Click (Sender: TObject); begin // Команда «Поиск по всем группам» Form4.show; end; procedure TForm1. FormCreate (Sender: TObject); begin Table4. Open; // открываем таблицы Table5. Open; Table3. Open; Table1. Open; Table2. Open; Animate1. ResName:= 'bAvi'; // подключаем анимацию Animate1. Active:= True; end; procedure TForm1.DBGrid4MouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // к Table4 подключаем Navigator DbNavigator1. DataSource:=Datasource4; end; procedure TForm1.DBGrid5MouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // к Table5 подключаем Navigator DbNavigator1. DataSource:=Datasource5; end; procedure TForm1.DBGrid3MouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // к Table3 подключаем Navigator DbNavigator1. DataSource:=Datasource3; end; procedure TForm1.DBGrid2MouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // к Table2 подключаем Navigator DbNavigator1. DataSource:=Datasource2; end; procedure TForm1. Table4AfterInsert (DataSet: TDataSet); begin Table4. Post; end; procedure TForm1. Table2AfterInsert (DataSet: TDataSet); begin // после вставки сохраняем изменения Table2. Post; end; procedure TForm1. Table5AfterInsert (DataSet: TDataSet); begin // после вставки сохраняем изменения Table5. Post; end; procedure TForm1. Table3AfterInsert (DataSet: TDataSet); begin // после вставки сохраняем изменения Table3. Post; end; end. |