Учебная работа. Реферат: Учет общественной активности студентов академической группы
АВТОНОМАЯ НЕКОМЕРЧЕСКАЯ ОРГАНИЗАЦИЯ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЦЕНТРОСОЮЗА РОССИЙСКОЙ ФЕДЕРАЦИИ
“РОССИЙСКИЙ УНИВЕРСИТЕТ КООПЕРАЦИИ’’
Кафедра информационно-вычислительных систем
КУРСОВОЙ ПРОЕКТ
По дисциплине:
Высокоуровневые способы информатики и
программирования
Учет публичной активности студентов академической группы
Выполнил:
студент группы ПИ-21
специальности : «Прикладная
информатика в экономике»
Кленин Александр Александрович
Управляющий :
к.ф.м.н. доцент
Смолкин Жора Александрович
Саранск 2011
Содержание
Введение…………………………………………………………………………………………3
1. Среда программирования Delphi…………………………………………………..6
1.1. структура баз данных……………………………………………..6
1.2. Составляющие Delphi для работы с базами данных…………………….8
2. Постановка задачки и главные функции приложения
«Учет публичной активности студентов академической группы»..11
3. Описание технологии решения задачки и её реализация…………………14
3.1. Организация доступа к данным……………………………………………..14
3.2. Организация работы с данными……………………………………………..17
3.3. Создание запроса «Ведомость»………………………………………………21
Заключение..,………………………………………………………………………………….23
Перечень применяемых источников…………………………………………………..24
приложение……………………………………………………………………………………25
Введение
В истинное время задачка обработки статистических данных является одной из самых фаворитных задач требуемых как в производстве , так и в сферах обслуживания, потребительской кооперации, образования, здравоохранения и остальных областях людской деятель. Скопление и автоматическая обработка этих данных дозволяет сберегать довольно много времени при построении даже не весьма сложных отчетов и таблиц.
В крайние десятилетия размер инфы возрастает за год в пару раз, по данной для нас причине возникает неувязка её оптимального хранения. В каждой организации есть особые программки, в каких хранятся сведения о личном составе, документации, о всей деятель организации в целом и т.д.
Создание программных товаров — довольно трудозатратный процесс основанный на определенной технологии и инструментарии ее разработки.
Проектирование алгоритмов и программ — более ответственный шаг актуального цикла программных товаров, определяющий, как создаваемая программка соответствует спецификациям и требованиям со стороны конечных юзеров. Издержки на создание, сопровождение и эксплуатацию программных товаров, научно-технический уровень разработки, время морального устаревания и почти все другое — все это также зависит от проектных решений.
Проектирование алгоритмов и программ может основываться на разных подходах, посреди которых более всераспространены:
— структурное проектирование программных товаров;
— информационное моделирование предметной области и связанных с ней приложений;
— объектно-ориентированное проектирование программных товаров.
В базе структурного проектирования лежит поочередная декомпозиция, целенаправленное структурирование на отдельные составляющие. Обычными способами структурного проектирования являются:
— нисходящее проектирование, кодирование и тестирование программ;
— модульное программирование;
— структурное проектирование (программирование) и др. Объектно-ориентированный подход к проектированию программных
товаров основан на:
— выделении классов объектов;
— установлении соответствующих параметров объектов и способов их обработки;
— разработке иерархии классов, наследовании параметров объектов и способов их обработки
Любой объект соединяет воединыжды как данные, так и программку обработки этих данных и относится к определенному классу. При помощи класса один и этот же программный код можно применять для относящихся к нему разных объектов.
Объектный подход при разработке алгоритмов и программ подразумевает:
— объектно-ориентированный анализ предметной области;
— объектно-ориентированное проектирование.
Для проектирования программных товаров разработаны объектно-ориентированные технологии, которые содержат в себе спец языки программирования и инструментальные средства разработки пользовательского интерфейса.
Объектно-ориентированная разработка разработки программных товаров соединяет воединыжды данные и процессы в логические сути — объекты, которые имеют способность наследовать свойства 1-го и наиболее объектов, обеспечивая тем повторное внедрение программного кода. Это приводит к значительному уменьшению издержек на создание программных товаров, увеличивает эффективность актуального цикла программных товаров. При выполнении программки объекту посылается сообщение, которое инициирует обработку данных объекта.
Задание курсового проекта сделать приложение «Учет публичной активности студентов академической группы» в среде программирования Delphi, который содержит особые объекты для работы с базами данных.
Это маленькая и легкая в воззвании программка может значительно облегчить работу деканата.
Базы данных числятся главным козырем Delphi. Это вправду так. Хотя этот язык не создавался специально под эту сферу, но реализация работы с данными тут просто поражает. Даже спец языки для работы с базами данных (такие, как MSVisualFoxPro) очевидно уступают по простоте и мощи программирования этого типа приложений.
Delphi прячет все трудности и в то же время даёт величайшую мощь. Это довольно мощная и насыщенная программка для сотворения с ее помощью приложений с внедрением приемов программирования. А основное, что всё это реализовывается весьма комфортно и просто для осознания.
В Delphi можно создавать обыкновенные приложения даже со сложными базами без единой строки кода.
В курсовом проекте применены базы Access и современный формат xml. Лучше применять эти базы в качестве локальных, поэтому что они поддерживаются большинством систем и различаются высочайшей надёжностью.
1. Среда программирования
Delphi
1.1. структура баз данных
Цель хоть какой информационной системы — обработка данных о объектах настоящего мира, база данных — это совокупа сведений о определенных объектах настоящего мира в которой или предметной области.
Базы данных делятся на локальные (установленные на компе клиента, там же где и работает программка) и удалённые (установленные на сервере, удалённом компе). Серверные базы данных размещаются на удалённом компе и работают под управлением серверного программного обеспечения. К их основным преимуществам можно отнести возможность работы с одной базой данных сразу несколькими юзерами, и при всем этом осуществляется малая перегрузка на сеть.
Есть ещё и сетевые базы данных, которые делают очень огромную нагрузку на сеть и неудобны в работе, как для программера, так и для конечного юзера.
При клиент-серверной технологии программка клиент отправляет обычный текстовый запрос на сервер на получение каких-то данных. обрабатывает его и возвращает лишь нужную порцию данных. Когда необходимо поменять какие-то данные, снова посылается запрос к серверу на их изменение и сервер изменяет данные в собственной базе. Таковым образом, по сети происходит перекачка в главном лишь текстовых запросов, которые в главном занимают меньше кб. Все данные обрабатывает , а означает, машинка клиента загружается намного меньше и не так очень требовательна к ресурсам. отсылает клиенту лишь самые нужные данные, а означает, отсутствует излишняя перекачка копии все базы.
Благодаря всему этому, сетевые базы данных уже устарели и фактически не употребляются. Их фактически на сто процентов теснит разработка клиент-сервер. А вот локальные базы данных будут жить постоянно. Может поменяться формат их хранения либо добавиться какие-то новейшие функции, но сами базы данных будут существовать.
Из локальных баз данных мы будем разглядывать реляционные, как самые распространённые. Что такое реляционная база данных? Это таблица, в какой в качестве столбцов выступают имена хранимых в ней данных, а любая строчка хранит сами данные. Таблица базы данных похожа на электрическую таблицу Excel. Локальные таблицы баз данных могут храниться на локальном жёстком диске либо централизовано сохраняться на сетевой диск файлового сервера. Эти файлы можно копировать при помощи обычных средств как хоть какой иной файл, поэтому что сами таблицы базы данных не привязаны к определённому месту расположения. основное, чтоб программка могла отыскать твою таблицу.
В каждой таблице обязано быть одно неповторимое поле, которое совершенно точно будет идентифицировать строчку. Это поле именуется главным. Эти поля весьма нередко употребляются для связывания нескольких таблиц меж собой. Но даже если связывания таблиц нет, ключевое поле всё равно непременно. В качестве ключа лучше применять численный тип и если дозволяет база данных, то будет лучше, если он будет типа «autoincrement» (автоматом увеличивающееся/уменьшающееся число либо счётчик).
Имена столбцов в таблице базе данных, также должны быть неповторимыми, но в этом случае не непременно числовыми.
Любой столбец (поле базы данных) непременно должен иметь определённый тип. Количество типов и их разновидности зависит от типа базы данных, к примеру формат dBASE (файлы с расширением DBF) поддерживает лишь 6 типов, aParadox уже до 15. база данных может храниться в одном файле (Access) либо в нескольких (Paradox, dBase). Поточнее сказать, данные таблицы постоянно хранятся в одном файле, а вот доборная информация может размещаться в отдельных файлах. В качестве доборной инфы могут быть индексы, ограничения либо перечень значений по дефлоту для определенных полей. Если хотя бы один из файлов запортиться либо будет удалён, то данные могут стать труднодоступными для редактирования.
Что такое
Весьма нередко данные из таблиц подвергаются каким-то изменениям, потому до этого чем произвести редактирование над какой-нибудь строчкой, нужно её отыскать. Даже статические таблицы, использующиеся в качестве справочников, тоже подвергаются операциям поиска перед выводом запрашиваемых данных. Поиск довольно трудоёмкая операция, в особенности если таблица содержит весьма много строк. Индексы ориентированы на убыстрение данной для нас процедуры, а так же могут употребляться в качестве отправной точки при сортировке. На данном шаге для тебя довольно знать, что не проиндексированное поле нереально упорядочить.
Если для тебя нужно, чтоб какая-то таблица была упорядочена по полю
то это поле нужно поначалу проиндексировать. Потом необходимо лишь указать, что таблица обязана работать на данный момент с таким-то индексом, и она сортируется автоматом.
1.2.
Составляющие
Delphi
для работы с базами данных
Для работы с базами в Delphi есть несколько наборов компонент. Любой набор весьма отлично подступает для решения определённого круга задач. Почему такое обилие компонент? Они все употребляют различные технологии доступа к данным и различаются по способностям. В отличие от Microsoft, которая встроила в свои продукты разработки лишь технологию доступа к данным ADO своей разработки, КомпанияBorland отдала обилие средств работающих через различные технологии и не ограничивает лишь своими разработками. Такое положение вещей даёт большенные достоинства перед иными программерами. Кроме этого есть группы, которые могут употребляться в любом случае, вот лаконичный обзор доступных нам средств. На закладке
размещены главные составляющие доступа к данным. Эти составляющие общие для всех и могут употребляться вместе с иными группами компонент.
На закладке
размещены составляющие для отображения и редактирования данных в таблицах. Эти составляющие так же употребляются в не зависимости от применяемой технологии доступа к данным.
Закладка
содержит составляющие, дозволяющие получить доступ к базам данных по технологии, разработанной компанией Borland под заглавием BorlandDatabaseEngine. Эта разработка очень устарела и поставляется лишь для сопоставимости со старенькыми версиями. Не глядя на это, она отлично работает со старенькыми типами баз данных, таковыми как Paradox и dBase
— это новенькая разработка доступа к данным конторы Borland. Она различается большей гибкостью и отлично подступает для программирования клиент серверных приложений, использующих базы данных. Составляющие с одноимённой закладки я советую применять с базами данных построенных по серверной технологии, к примеру, Oracle, DB2 либо MySQL.
ADO
— разработка доступа к данным, разработанная компанией Microsoft. Весьма отменная библиотека, но я рекомендую её применять лишь с базами данных Microsoft, а конкретно MSAccess либо MSSQLServer. Её так же можно применять, если у тебя специфичный баз данных, который может работать лишь через ODBC
Работа с базами данных Access идет через специальную надстройку DAO, которая может устанавливаться на комп совместно с программкой Office либо идти как отдельная установка. Так что если программка не будет работать на компе клиента, то нужно позаботиться о установке DAO на этот комп. В данном курсовом проекте мы разглядим технологию доступа к данным ADO
2. Постановка задачки и главные функции приложения «Учет публичной активности студентов академической группы»
Задание курсового проекта — создать приложение, позволяющее вести учет публичной активности студентов академической группы. Создать систему автоматического поиска и отчетности.
На начальном шаге создается в MSAccess таблица, в которую заполняются данные студентов:
• код студента;
• фамилия;
• имя;
• год рождения;
• пространство жительства;
• группа;
• спорт
• КВН;
• предводитель.
Крайние три поля определяют активность студентов в этих сферах деятель. Зависимо от того, в котором виде деятель участвует студент, ему начисляется прибавка к стипендии. Если студент участвует в одном виде деятель, то начислить ему 100 руб. если в 2-ух, но не предводитель, то 150 руб. если в 2-ух, при этом предводитель — 200 руб. в 3-х — 300 руб. По другому начисления нет.
Эта маленькая программка значительно упрощает работу деканата и бухгалтерии хоть какого учебного заведения. В деканате в хоть какой момент могут потребоваться данные о каком-либо студенте, и они просто сумеют отыскать эти данные в базе.
Принципиальное
Бесспорным «плюсом» использования автоматических программ будет то, что применение компьютерных технологий не только лишь дозволяет избежать не подходящих картонных проволочек, да и увеличивает надежность работы, обеспечивает соответствующую наглядность, и, как уже говорилось выше, сберегает не маленькое количество времени.
В хоть какой момент времени в создаваемую по ходу процесса решения задачки базу данных можно заносить нужные конфигурации. В обыденных документах и ведомостях, написанных от руки и на картонном носителе, созодать такое еще проблематичнее, а иногда и просто неприемлимо.
информация для формирования БД сначало вносится в экранные формы. Простота их структуры подразумевает удобство работы с ними.
Есть определенные правила построения таблиц баз данных:
1. Каждое поле хоть какой таблицы обязано быть неповторимым.
2. Любая таблица обязана иметь неповторимый идентификатор (первичный ключ), который может состоять из 1-го либо нескольких полей таблицы.
3. Для всякого значения первичного ключа обязано быть одно и лишь одно
4. Обязана иметься возможность изменять значения хоть какого поля (не входящего в первичный ключ), и это не обязано повлечь за собой изменение другого поля.
В собственной базе данных сотворена одна таблица под заглавием «Студенты», со последующими полями: КодСтудента (тип поля: счетчик, оно является главным полем), Фамилия (тип поля: текстовый), Фамилия(тип поля: текстовый), имя (тип поля: текстовый), ГодРождения (тип поля: дата/время), Местожительства (тип поля: текстовый), Группа (тип поля: текстовый), Спорт(тип поля: текстовый), КВН (тип поля: текстовый), Предводитель (тип поля: текстовый).
приложение «Учет публичной активности студентов академической группы» реализует последующие функции:
1 Просмотр всех студентов;
2 Редактирование данных студента;
3 Добавление новейшего и удаление старенького студента;
4 Поиск данных по фамилии и по группе студента;
5 Сортировка по фамилии студента и по группе (по возрастанию);
6 Получение перечня студентов, занимающихся определенным видом деятель (спорт, КВН либо предводитель);
7 Получение перечня активных студентов;
8 Получение перечня неактивных студентов;
приложение создано для облегчения выявления активных и неактивных студентов и в следующем доплаты к базисной части стипендии по степени активности студентов, зависимо от видов деятель.
3. Описание технологии решения задачки и её реализация
3.1. Организация доступа к данным
Составляющие работы с данными являются не зрительными и потому их комфортно располагать в особом модуле типа DataModule. Для этого опосля сотворения (открытия) новейшего проекта данный модуль создается командой File/New/DataModule, при всем этом Delphi откроет особое окно (DataModule2), в которое и помещаются составляющие доступа к данным. При работе с данными MSAccess нужно применять составляющие вкладки ADO.
Сначала располагается компонент ADOConnection и настраивается соединение, которое обязано быть обозначено в свойстве connectionstring. Для этого нужно два раза щелкнуть клавишей мыши по строке connectionstring (либо два раза щелкнуть по самому компоненту).
тут необходимо тормознуть на варианте, предлагаемом по дефлоту (применять строчку подключения — UseConnectionString). Щелчком по кнопочке Build раскрывается окно характеристики связи с данными (Рис. 3.1.2.).
В нем на вкладке Поставщик данных (Provider) перечислены все доступные ADO драйверы доступа к данным. В данном случае необходимо применять драйвер MicrosoftJet 4.0 OLEDBProvider (устанавливается с Windows по дефлоту). Опосля этого надавить клавишу Дальше (Next), либо перейти на вкладку Подключение (Connection).
В строке Выберете либо введите имя базы данных (Selectorenteradatabasename), вводится имя базы данных и путь. Потому что существующая база данных Студенты.mdb размещается в той же директории, что и исполняемый файл приложения путь указывать не надо. значения остальных полей можно бросить по дефлоту.
Дальше нажатием клавиши Проверить подключение (TestConnection), тестируется соединение. Если все обозначено верно, то обязано показаться сообщение Тестирование соединения прошло успешно (Testconnectionsucceeded). Все окна опций запираются нажатием клавиш ОК. Дальше в свойствах компонента ADOConnection необходимо отключить свойство LoginPrompt, выставив его в false. Это необходимо для того, чтоб при любом воззвании к базе не происходил вызов окна ввода пароля. Дальше выставим свойство Connected в true, чтоб вышло соединение с базой. На этом соединение можно считать оконченным.
сейчас нужно получить доступ к таблице «Студенты». Для этого необходимо поместить на форму компонент ADOTable (вкладка ADO). У компонента ADOTable в свойстве Name необходимо задать имя LichDan, в свойстве connection указать сделанный ранее компонент соединения с базой данных методом выбора из выпадающего перечня единственного пт ADOConnection1. В свойстве TableName избрать имя таблицы (Студенты). Дальше можно активизировать данные (подключаться) методом выставления характеристики Active в true.
Для отображения данных из таблицы устанавливается компонент DataSource (в данном случае DataSourseLD) вкладки DataAccess. Этому компоненту указывается, какую конкретно таблицу он должен показывать, методом выбора из выпадающего перечня характеристики DataSet компонента LichDan, который связан с таблицей Студенты. Изготовления в окне DataModule2 модуля данных Unit2 на этом заканчиваются и можно приступать реальному отображению данных.
На первом шаге нужно найти связь компонент главной формы (модуль Unitl) с модулем данных Unit2. Это можно создать вручную либо командой File/UseUnit (в этот момент обязано быть выделено окно кода главной формы, потому что модуль подключается конкретно к ней). В разделе implementation модуля Unitl покажется запись usesUnit2;. Потом устанавливается на форме компонент-сетка — DBGrid с вкладки DataControls. Он может показывать данные в виде таблицы, добавлять, удалять и редактировать строчки таблицы. Компонент сетка DBGrid1 методом указания в свойстве DataSource сделанного ранее компонента DataSourseLD связывается с компонентом отображения таблицы.
Дальше можно запускать данное приложение и потом сделать несколько строк, отредактировать уже имеющиеся либо удалить чего-нибудть. Для вставки строчки употребляется кнопка <Ins>, а для удаления — сочетание кнопок <Ctrl>+<Del>.
Для простоты редактирования данных можно добавить компонент DBNavigator и задать свойство DataSource-DataModule2.DataSourseLD (из перечня) конкретно так и изготовлено на форме «Студенты».
3.2. Организация работы с данными
Для редактирования данных и управления приложением комфортно сделать основное меню. В моем приложении основное меню содержит последующие подпункты:
1. файл;
2. Редактирование;
3. Сортировка;
4. Поиск;
5. Активность студентов;
6. Ведомость;
7. О программке.
Разглядим работу неких из их.
В пт Редактирование создаем три подпункта: Добавить запись, Редактировать запись, Удалить запись. Для этого сделаем новейшую форму, которую подключим к модулю DataModule2.
Напротив надписей (Label) сделаем составляющие DBEdit с вкладки DataControls. Эти составляющие представляют собой обыкновенные строчки ввода для поля в базе данных. Чтоб компонент лицезрел данные из подходящего поля, следует указать для него в свойстве DataSource нужную таблицу, а в свойстве DataField указать поле, которое нужно редактировать.
Для обработчика клавиши «Сохранить» код последующий:
ifDataModule2.ADOTablel.ModifiedthenDataModule2.ADOTablel.Post; Для клавиши «Отмена» необходимо применять способ Cancel, отменяющий конфигурации текущей строчки, если они не были сохранены еще при помощи способа Post, т.е. написать последующий код:
DataModule1.ADOTable1.Cancel.
Опосля разработки формы редактирования, ее можно применять в обработчике пт меню Добавить запись, написав код:
DataModule2.ADOTable1.Insert; // вставка строчки в таблицу EditForm.ShowModal; // вызов формы редактирования
Обработчик меню Удалить запись может воплотить последующий код: ifApplication.MessageBox (РСhаr(‘Вы вправду желаете удалить запись?’ +DataModule2.ADOTablei1.DesignerData), ‘внимание!!!’, MB OKCANCEL)=id_ OK
then DataModule2.ADOTablel .Delete;
В хоть какой базе данных существует понятие индексного поля. Индексы наращивают скорость поиска данных и разрешают сортировать все записи. Неотклонимым является лишь основной индекс (ключевое поле) и существует постоянно. Можно создавать хоть какое количество доп индексированных полей, но индексирование отбирает доп пространство на диске, и если таковых полей будет много, то можно понизить быстродействие программки.
Для обеспечения сортировки данных по любому полю довольно написать обработчики событий. В собственном приложении сортировка
делается по полям: «По фамилии», «По группе».
Дальше приведен пример кода для выполнения сортировки по фамилии:
procedure TForml.N9Click(Sender: TObject);
begin
DataModule2.ADOTable1.IndexFieldNames:=’Фамилия’; DataModule2.ADOTable2.IndexFieldNames:=’Фамилия’;
end;
В данном случае сортировка будет выполняться по возрастанию. Для отмены сортировки нужно указать пустую строчку.
Следует держать в голове о том, что, если вы желаете созодать сортировку по какому-либо полю, то при объявлении наименования поля в MSAccess оно обязано состоять из 1-го слова.
Одним из действенных и нужных инструментов обработки данных является организация их фильтрации. Для организации фильтрации в компоненте TADOTable есть характеристики Filter и Filtered. Свойство Filtered описывает является ли таблица фильтруемой и лишь если оно имеет текст условия определяемого в виде:
Поле [Оператор сравнения] ‘
В приложении «Учет публичной активности студентов академической группы» реализована функция фильтрации данных для пт головного меню Активность студентов.
Данный пункт содержит последующие подпункты :
1. По видам деятель:
1.1. Спортсмены;
Код:
procedure TForml.N19Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTablel.Filter:=’Cпopт=»+»‘;
DataModule2.ADOTable2.Filter:=’Cпopт=»+'»;
end;
1.2. КВНщики;
1.3. Старосты.
2. АктивКод:
procedure TForml.N17Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTablel.Filter:=’Cпopт=»+» and КВН =»+» and Предводитель =»+'»;
DataModule2.ADOTable2.Filter:=’Cпopт=»+» and КВН =»+» and Предводитель =»+'»;
end;
3. Неактивные студенты
4. Отменить отбор
Код:
procedure
TForml.N25Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false; DataModule2.ADOTable2.Filtered:=false;
end;
необходимо направить внимание на то, что значения необходимо указывать в одинарных кавычках. Но потому что одинарные кавычки употребляются для ограничения строк, то чтоб снутри строчки поставить одинарную кавычку, ее необходимо поставить два раза. Конкретно таковым методом ставиться одинарная кавычка перед значением. Опосля значения необходимо поставить одинарную кавычку и закрыть строчку, потому ставиться три одинарных кавычки (две для того, чтоб поставить кавычку для значения и одна для конца строчки).
В данном приложении организован поиск по фамилии, по группе, и по обоим характеристикам. Он организован в виде формы
Дальше приведен пример кода для выполнения поиска по фамилии: procedureTForm4.Button1Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:= ‘Фaмилия='»+Edit1.Text+»»;
DataModule2.ADOTable2.Filter:= ‘Фaмилия='»+Edit1.Text+»»;
end;
Дляотменыпоискаиспользуетсякод:
procedure TForml.N14Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false;
DataModule2.ADOTable2.Filtered:=false;
end;
3.3. Создание запроса «Ведомость»
Для реализации данного запроса сделаем еще один ADOTable и DataSourse, которые подсоединяются к той же таблице Студенты, но делают чуток остальные функции.
Данный запрос содержит поля КодСтудента, Фамилия, Год рождения, Группа и Стипендия. Крайнее поле является вычисляемым. Для его сотворения необходимо щелкнуть правой клавишей на элементе ADOTable2 и избрать пункт NewField. В показавшемся окне параметров новейшего поля заполнить последующие поля: Name — именовать поле Summa: Type — тип Float: FieldType (тип поля) — избрать calculated, чтоб сделать вычисляемое поле.
сейчас сделаем обработчик действия OnCalcFields. Это событие вызывается всякий раз, когда нужно перечесть вычисляемые поля.
Для этого выделим компонент ADOTable2 и выберем в Инспекторе объектов вкладку «Действия». Потом создадим двойной щелчок в пустой строке, справа от пт OnCalcFields. Покажется окно кода. В этом обработчике для нахождения стипендии всякого студента пишем код (см. приложение).
Для отображения данных в элементе DBGrid1 по компоненту ADOTable2 в код включаем последующие строчки:
procedure TForm1.N23Click(Sender: TObject);
begin
DBGrid1.DataSource:=DataModule2.DataSource2;
end;
При выбирании пт меню Ведомость — Ведомость по стипендии выходит отчет, который содержит информацию о стипендии всякого студента. Данный показатель зависит от степени активности всякого студента. При всем этом базисная стипендия = 500 руб.
Для данного запроса также реализованы функции сортировки, поиска, отбора студентов по видам деятель, но добавить и редактировать запись тут не может быть.
Заключение
Внедрение компьютерных технологий, при использовании автоматических программ дозволяет избежать ненадобных картонных проволочек и увеличивает надежность работы, обеспечивает соответствующую наглядность, сберегает большое количество времени.
В хоть какой момент времени в создаваемую по ходу процесса решения задачки базу данных можно заносить нужные конфигурации. В обыденных документах и ведомостях, написанных от руки и на картонном носителе, созодать такое еще проблематичнее, а иногда и просто неприемлимо.
Ещё 10 лет вспять, программирование баз данных было весьма сложным занятием. За какие-либо заслуги в данной для нас области почти все программеры получили в своё время докторские степени. на данный момент уже такое тяжело для себя представить, поэтому что благодаря Delphi, процесс написания программ упростился, а количество разновидностей баз данных уже исчисляется десятками.
В данном курсовом проекте разработана архитектура базы «Студенты» и показана реализация связи данной базы данных с программкой Delphi через компонент ADOConnection.
Разработанное приложение может значительно облегчить работу деканата хоть какого учебного заведения.
Работа базы на контрольных данных (измышленных) показала ее работоспособность и эффективность.
Перечень применяемых источников
1. Архангельский А.Я. Программирование в Delphi7 — М.: ООО «Двучлен-Пресс», 2005 г., 1150 стр.
2. база данных: методы модернизации // Журнальчик «Справочник по управлению персоналом» № 9, сентябрь 2003.
3. Барановская Т.П., Лойко В.И. Информационные системы и технологии в экономике: Учебник. — 2-е изд.,доп. и перераб./. — М.: деньги и статистика, 2003.
4. Компьютерные программки для службы кадров // журнальчик «Справочник кадровика» №2, февраль 2002.
5. Теоретическое учебное пособие РГТК «Тантал» по дисциплине «Разработка разработки программного обеспечения».
6. Титоренко Г.А. Информационные технологии управления: Учеб. Пособие для вузов /- 2-е изд., доп. — М.:ЮНИТИ-ДАНА, 2003.
7. Фленов М.Е. Библия Delphi. — СПб.: БХВ-Петербург, 2004. — 880 с: ил.
электрические учебники:
8. Иллюстрированный самоучитель по Delphi 7 для начинающих
9. Иллюстрированный самоучитель по Delphi 7 для экспертов
приложение
unit Unit 1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Grids, DBGrids, StdCtrls;
Type
TForm1 = class(TForm)
DBGridUTDBGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
Button1:TButton;
N25: TMenuItem;
N26: TMenuItem;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure N26Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Forml: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5;
{$R *.dfm}
procedure TForm1.N2Click(Sender: TObject);
begin
if DataModule2.ADOTablel .Modified then DataModule2.ADOTablel .Post;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
DataModule2.ADOTable1.Insert;
Form3.ShowModal;
end;
procedure TForml.N6Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
if application.MessageBox(PChar(‘Выдействительнохотитеудалитьзапись’+ DataModule2.ADOTable1.DesignerData), ‘внимание!!!’,MB_OKCANCEL)=id_OK
then DataModule2.ADOTablel .Delete;
end;
procedure TForml.N9Click(Sender: TObject);
begin
DataModule2.ADOTable1.IndexFieldNames:=’Фамилия’;
DataModule2.ADOTable2.IndexFieldNames:=’Фамилия’;
end;
procedure TForml.N10Click(Sender: TObject);
begin
DataModule2.ADOTable1.IndexFieldNames:= ‘Гpyппa’;
DataModule2.ADOTable2.IndexFieldNames:= ‘Гpyппa’;
end;
procedure TForml.N11Click(Sender: TObject);
begin
DataModule2.ADOTable1.IndexFieldNames:=»;
DataModule2.ADOTable2.IndexFieldNames:=»;
end;
procedure TForml.N13Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForml.N14Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false;
DataModule2.ADOTable2.Filtered:=false;
end;
procedure TForml.N19Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’Cпopт=»+'»;
DataModule2.ADOTable2.Filter:=’Cпopт=»+'»;
end;
procedure TForm1.N20Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’KBH=»+'»;
DataModule2.ADOTable2.Filter:=’KBH=»+'»;
end;
procedure TForml.N21Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’Cтароста=»+'»;
DataModule2.ADOTable2.Filter:=’Предводитель=»+'»;
end;
procedure TForml.N17Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’Cпopт=»+» and KBH=»+» and Предводитель=»+'»;
DataModule2.ADOTable2.Filter:=’Cпopт=»+» and KBH=»+» and Предводитель=»+'»;
end;
procedure TForml.N18Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’Cпopт=»-» and KBH=»-» and Предводитель=»-‘»;
DataModule2.ADOTable2.Filter:=’Cпopт=»-» and KBH=»-» and Предводитель=»-‘»;
end;
procedure TForml.N23Click(Sender: TObject);
begin
DBGrid1.DataSource:=datamodule2.DataSource2;
end;
procedure TForm1.N24Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForml.N25Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false;
DataModule2.ADOTable2.Filtered:=false;
end;
procedure TForm1.N26Click(Sender: TObject);
begin
DBGrid1.DataSource:=datamodule2.DataSource1;
end;
end.
unit Unit2;
interface
uses
SysUtils, Messages, Classes, DB, ADODB;
type
TDataModule2 = class(TDataModule)
ADOConnection1: TADOConnection;
ADOTablel:TADOTable;
DataSourcel: TDataSource;
ADOTablelDSDesigner: TAutoIncField;
ADOTable1DSDesigner2: TWideStringField;
ADOTable1DSDesigner3: TWideStringField;
ADOTable1DSDesigner4: TDateTimeField;
ADOTable1DSDesigner5: TWideStringField;
ADOTable1DSDesigner6: TWideStringField;
ADOTable1DSDesigner7: TWideStringField;
ADOTable1DSDesigner8: TWideStringField;
ADOTable1DSDesigner9: TWideStringField;
ADOTable2: TADOTable;
DataSource2: TDataSource;
ADOTable2DSDesigner: TWideStringField;
ADOTable2DSDesigner2: TWideStringField;
ADOTable2DSDesigner3: TDateTimeField;
ADOTable2DSDesigner4: TWideStringField;
ADOTable2DSDesigner5: TWideStringField;
ADOTable2DSDesigner6: TWideStringField;
ADOTable2DSDesigner7: TWideStringField;
ADOTable2Summa: TFloatField;
ADOTable2DSDesigner8: TAutoIncField;
procedure ADOTable2CalcFields(DataSet: TDataSet);
procedure ADOTable2AfterOpen(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule2: TDataModule2;
implementation
uses Unit1, Unit3, Unit4;
{$R *.dfm}
procedure TDataModule2.ADOTable2CalcFields(DataSet: TDataSet);
var
stip: Real;
const
bazstip: Integer=500;
profsous: Real= 0.01;
begin
//—Проверканаактивиста
if (ADOTable2DSDesigner4.ValueactiveXOR
(ADOTable2DSDesigner5.Value=’+’)OR
(ADOTable2DSDesigner6.ValueactiveXthen
begin
//—Студент буквально активист,
//—проверка на старосту.
if (ADOTable2DSDesigner6.ValueactiveXAND
((ADOTable2DSDesigner4.Value=’+’) OR (ADOTable2DSDesigner5.ValueactiveXthen
begin
//—Студент предводитель,
//—проверка занимается ли он к тому же всем остальным
if (ADOTable2DSDesigner4.ValueactiveXAND
(ADOTable2DSDesigner5.Value=’+’)then
//—Студент предводитель и занимается еще 2 видами деятель
//стипендия базисная +300
begin
stip:=(bazstip+300)*(1-profsous);
ADOTable2Summa.Value:=stip;
end
else
//—Студент предводитель, и занимается еще 1 видом деятель
//—стипендия базисная +200
begin
stip:=(bazstip+200)*(l-profsous);
ADOTable2Summa.Value:=stip;
end;
end
else
//—Студент активист, но не предводитель
//—проверка на 2 вида деятель
begin
if (ADOTable2DSDesigner4.ValueactiveXAND
(ADOTable2DSDesigner5.ValueactiveXthen
//—Студент занимается 2 видами деятель
//—стипендия базисная +150
begin
stip:= (bazstip+150)*(1-profsous);
ADOTable2Summa.Value:=stip;
end
else
//—Студент занимается лишь 1 видом деятель
//—стипендиябазовая +100
begin
stip:=(bazstip+100)*(1-profsous);
ADOTable2Summa.Value:=stip;
end;
end;
end
else
begin
//—Студентнеактивист, базисная
stip:= bazstip;
ADOTable2Summa.Value:=stip;
end;
end;
procedure TDataModule2.ADOTable2AfterOpen(DataSet: TDataSet);
begin
ADOTable2.First;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask;
type
TForm3 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEditl: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBNavigator1: TDBNavigator;
Buttonl: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1, Unit2;
{$R *.dfm}
procedure TForm3.Button2Click(Sender: TObject);
begin
if DataModule2.ADOTablel .Modified then DataModule2.ADOTablel .Post;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
DataModule2.ADOTable1.Cancel;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm4 = class(TForm)
Label 1: TLabel;
Label2: TLabel;
Edit1:TEdit;
Edit2:TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1, Unit2, Unit3;
{$R*.dfm}
procedure TForm4.ButtonlClick(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’Фамилия='»+Edit1.Text+»»;
DataModme2.ADOTable2.Filter:=’Фамилия='»+Edit1.Text+»»;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:= ‘Группа=»’+Edit2.Text+»»;
DataModule2.ADOTable2.Filter:= ‘Группа=»’+Edit2.Text+»»;
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:=’Фамилия='»+Edit1.Text+'» or Группа='»+Edit2.Text+»»;
DataModule2.ADOTable2.Filter:=’Фамилия='»+Edit1.Text+'» or Группа='»+Edit2.Text+»»;
end;
procedure TForm4.Button5Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false;
DataModule2.ADOTable2.Filtered:=false;
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
Form4.close;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;
type
TForm5 = class(TForm)
Image 1: TImage;
Label 1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var Form5: TForm5;
implementation
{$R *.dfm}
end.
]]>