Министерство образования и науки Республики Казахстан
Карагандинский Государственный Технический Университет
КУРСОВАЯ РАБОТА
По дисциплине:
«Разработка программного обеспечения»
Тема:
«Создание информационного банка данных «Успеваемость студентов»
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
Имя поля |
Тип |
Данные |
Индекс 1 |
Индекс 2 |
Fakultet |
Alpha [10] |
Факультет |
* |
№Fakulteta |
autoincrement |
счётчик |
Таблица 3.2 –Структуратаблицы Группа.db
Имя поля |
Тип |
Данные |
Индекс 1 |
Индекс 2 |
Gruppa |
Alpha [10] |
Группа |
* |
№ grupp |
autoincrement |
счетчик |
№ fakulteta |
integer |
№ факультета |
* |
* |
Kol |
short |
Количество |
Таблица 3.3 – СтруктуратаблицыСтуденты.db
Имя поля |
Тип |
Данные |
Индекс 1 |
Индекс 2 |
№ stud |
autoincrement |
счетчик |
№ grupp |
integer |
№группы |
* |
* |
Familiya |
Alpha [20] |
Фамилия |
* |
Name |
Alpha [20] |
Имя |
* |
Otchestvo |
Alpha [20] |
Отчество |
* |
Data rozhd |
data |
Дата рождения |
Таблица 3.4 – Структуратаблицы Успеваемость.db
Имя поля |
Тип |
Данные |
Индекс 1 |
Индекс 2 |
№ stud |
autoincrement |
счетчик |
№ predmeta |
integer |
№ предмета |
* |
* |
1 attest |
short |
1 Аттестация |
2 attest |
short |
2 Аттестация |
3 attest |
short |
3 Аттестация |
Таблица 3.5 – СтруктуратаблицыПредметы.db
Имя поля |
Тип |
Данные |
Индекс 1 |
Индекс 2 |
Predmet |
Alpha [20] |
Предмет |
№Predmeta |
autoincrement |
счётчик |
* |
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 – Структура модулей проекта
Наименование процедуры (функции)
|
Краткое описание |
Модуль «UnitZastavka» |
procedure FormCreate (Sender: TObject); |
Проигрывается заставка |
Модуль «UnitMainForm» |
procedure Table2CalcFields (DataSet: TDataSet); |
Создание вычисляемого поля |
procedure Table2BeforeClose (DataSet: TDataSet); |
До закрытия таблицы «Успеваемость» сохраняем изменения |
procedure Table3BeforeClose (DataSet: TDataSet); |
До закрытия таблицы «Студенты» сохраняем изменения |
procedure Table4BeforeClose (DataSet: TDataSet); |
До закрытия таблицы «Факультеты» сохраняем изменения |
procedure Table5BeforeClose (DataSet: TDataSet); |
До закрытия таблицы «Группы» сохраняем изменения |
procedure mnFindClick (Sender: TObject); |
Поиск студентов в определенной группе |
procedure mnSearchForwardClick (Sender: TObject); |
Активизация «Поиска вперед» |
procedure mnSearchBackClick (Sender: TObject); |
Активизация «Поиска назад» |
procedure FormClose (Sender: TObject; var Action: TCloseAction); |
При закрытии формы сохраняем все изменения и закрываем таблицы |
procedure Table4AfterOpen (DataSet: TDataSet); |
После открытия таблицы ставим ее в режим редактирования |
procedure Table5AfterOpen (DataSet: TDataSet); |
После открытия таблицы ставим ее в режим редактирования |
procedure Table3AfterOpen (DataSet: TDataSet); |
После открытия таблицы ставим ее в режим редактирования |
Продолжение таблицы 5.1 |
procedure Table2AfterOpen (DataSet: TDataSet); |
После открытия таблицы ставим ее в режим редактирования |
procedure mnFilter_OnClick (Sender: TObject); |
Фильтрация по фамилии |
procedure mnFilter_OffClick (Sender: TObject); |
Отключение фильтрации |
procedure N4Click (Sender: TObject); |
Поиск по всем группам |
procedure FormCreate (Sender: TObject); |
Открытие таблиц |
procedure DBGrid4MouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
|
Активизация навигатора |
procedure DBGrid5MouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
|
Активизация навигатора |
procedure DBGrid3MouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
|
Активизация навигатора |
procedure DBGrid2MouseUp (Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); |
Активизация навигатора |
procedure Table4AfterInsert (DataSet: TDataSet); |
Сохранение изменений |
procedure Table2AfterInsert (DataSet: TDataSet); |
Сохранение изменений |
procedure Table5AfterInsert (DataSet: TDataSet); |
Сохранение изменений |
procedure Table3AfterInsert (DataSet: TDataSet); |
Сохранение изменений |
Окончание таблицы 5.1 |
procedure Link_On; |
Возвращаем связи |
procedure Link_Off; |
Рвем связи |
Модуль «UnitFilter» |
procedure BitBtn1Click (Sender: TObject); |
Фильтрация по фамилии |
Модуль «UnitPoisk» |
procedure FormShow (Sender: TObject); |
Настройки состояний RadioButton, где видна активная группа |
procedure ComboBox1Click (Sender: TObject); |
Если выбрана группа или количество, то RadioButton не активен |
procedure Button1Click (Sender: TObject); |
Ввод запроса пользователя |
procedure Button2Click (Sender: TObject); |
Поиск данных |
Модуль «UnitPoGruppam» |
procedure BitBtn1Click (Sender: TObject); |
Связываемся с таблицей Stud и фильтруем по фамилии |
procedure StudAfterScroll (DataSet: TDataSet); |
Локализуем поиск |
procedure FormShow (Sender: TObject); |
Очищаем поле для ввода данных |
procedure FormClose (Sender: TObject; var Action: TCloseAction); |
Закрываем таблицы |
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.
|