Построение базы данных 'Абитуриент' для учебного заведения

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,11 Mb
  • Опубликовано:
    2011-11-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Построение базы данных 'Абитуриент' для учебного заведения

Содержание

 

1. Объектно-ориентированные языки программирования

1.1 Среда разработки приложений Delphi

1.2 Компоненты Delphi

2. Разработка программного приложения

2.1 Разработка приложения

2.2 Описание работы системы "Абитуриент"

2.3 Описание программы

Заключение

Список источников

Приложения

Введение

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

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

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

база абитуриент delphi приложение

База данных - это организованная структура, предназначенная для хранения информации. С понятием базы данных тесно связано понятие системы управления базой данных. Это комплекс программных средств, предназначенных для создания структуры новой базы, наполнения ее содержимым, редактирования содержимого и визуализации информации. Под визуализацией информации базы понимается отбор отображаемых данных в соответствии с заданным критерием, их упорядочение, оформление и последующая выдача на устройство вывода или передача по каналам связи.

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

В курсовой работе решается задача построения БД для ЧГПУ, которая является хранилищем информации об абитуриентах, поступающих в данный ВУЗ.

Для автоматизации системы "Абитуриент" была выбрана систем управления базами данных на Delphi, который является общепризнанным лидером среди инструментов для создания приложений и систем, функционирующих на платформе Windows. Передовая объектно-ориентированная технология визуального проектирования позволяет отдельным программистам и коллективам разработчиков почувствовать уверенность в возможности полного удовлетворения запросов самых требовательных пользователей и устойчивость своего положения на рынке высоких технологий.

В курсовой работе рассматривается применение информационной системы, обеспечивающей полный спектр информационной поддержки деятельности Приёмной комиссии в ЧГПУ. Данная курсовая работа написана на основе наблюдений за работой приёмной комиссии.

Объектом данного исследования - языки и системы программирования.

Предметом разработки приложения в среде Delphi - является (учёт сведений об абитуриентах).

Цели создания системы - автоматизировать процесс поступления абитуриентов в ЧГПУ, т.е. обеспечить учёт абитуриентов подавших документы, обеспечить учёт результатов сдачи вступительных экзаменов, а также предоставить возможность сбора информации о претендентах на зачисление. Данная система позволила решать следующие задачи: формирование списка всех абитуриентов, ведение экзаменационного процесса, поиск по заданным критериям.

1. Объектно-ориентированные языки программирования


1.1 Среда разработки приложений Delphi


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

Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. [1] Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространённым утверждениям, признаваемым большинством разработчиков, относятся следующие: [источник не указан 817 дней]

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

Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение "языков программирования" - это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.

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

Возможно, начинающие думают, что для того чтобы создать свою первую программу на Delphi, нужно потратить много времени на изучение системы. Тем не менее, в Delphi это не сложнее простого щелчка мышкой!

Итак, запустим Delphi. Для этого нужно создать ярлык на рабочем столе, если, конечно, Вам не нравится каждый раз ходить по адресу Program Files - Borland - Delphi - Bin и отыскивать файл delphi32. exe. Гораздо проще один раз найти его ярлычок в меню ПУСК - ВСЕ ПРОГРАММЫ - BORLAND DELPHI - DELPHI, перетащить его отсюда на рабочий стол.

Перед нами четыре окна Delphi. Вверху во вcю ширину экрана окно управления проектом и средой разработки - главное окно Delphi. (рис.1)

Рисунок 1. Интегрированная среда разработки Delphi

При его сворачивании сворачиваются и все остальные. Слева - Инспектор объектов. В нём задаются свойства составляющих нашу программу компонентов. И наконец, в центре одно над другим два окна Delphi, окно формы будущей программы и окно программной начинки. Прямо перед нами - окно, которое в Delphi называется Форма. Именно Форма является визуальным прообразом нашей будущей программы. Теперь посмотрите, как легко получается программа в Delphi:

.        Наводим мышку на зелёный треугольник-стрелку на главном окне

2.      Смотрим - всплывает подсказка "Run (F9)"

.        Жмём на эту кнопку (или F9 на клавиатуре)

.        Получаем готовую Windows-программу!

Однако (как подсказывают в комментариях), не во всех версиях Delphi запуск программы производится кнопкой F9, для некоторых это CTRL+F9 - посмотрите сами, какую подсказку выдает Delphi при наведении на зелёную стрелку.

По умолчанию программа создаётся в папке C: \Program Files\Borland\Delphi7\Projects:

Рисунок 2. Так выглядит пиктограмма

Отсюда её можно скопировать и использовать так, как нам нужно. Например, для начала можно поставить ярлык на рабочий стол, чтобы при тестировании проверять её без использования Delphi. Мы получили программу, состоящую из одного пустого окна. Тем не менее наша программа имеет все атрибуты, присущие всем программам в Windows: заголовок, системное меню (кликните по левому краю заголовка!), кнопки свернуть, развернуть, закрыть, может менять свои размеры.

Закройте программу-Форму. Рассмотрим полезные для нас свойства Формы:

.        Надпись на заголовке - свойство Caption. Сейчас это Form1, и совпадает со свойством Name. В инспекторе объектов можно поменять их по своему усмотрению. Напишите в свойстве Caption, например, "Простейшая программа!"

2.      Цвет - свойство Color.

.        Размеры - ширина и высота в пикселах, свойства Width и Height. Изменяем их мышкой, двигая края Формы, затем устанавливаем более точные значения в Инспекторе.

.        Положение на экране - свойства Top и Let. Это расстояния в пикселах от левой и верхней границы экрана соответственно. Если необходимое положение Формы закрывает элементы управления Delphi, просто сверните её. Но есть очень полезное

.        свойство Position, с помощью которого можно настроить автоматическое появление Формы в нужном месте. Разверните выпадающий список:

­                При значении poDesigned Форма появится в том месте, где она находилась при проектировании. Это значение по умолчанию.

­                При значениях poDesktopCenter и poScreenCenter Форма появится в центре рабочего стола или центре экрана.

­                Форма может быть вызвана из другого окна-формы. Тогда при значениях

­                poMainFormCenter она появится в центре главного окна приложения,

­                poOwnerFormCenter - в центре вызывающего окна, так называемого "владельца".

Вы можете запрограммировать появление Формы в нормальном, минимизированном или максимизированном состоянии. За это отвечает

.        свойство WindowState - значения wsNormal, wsMinimized и wsMaximized соответственно.

7.      Не у всех окон в заголовке есть кнопки свернуть, развернуть, закрыть. Их наличием или отсутствием управляет

.        свойство BorderIcons. В Инспекторе слева от него маленький плюсик, открывающий признак наличия или отсутствия нужной кнопки. True - кнопка будет, False - нет. Смело экспериментируйте, но изменения будут видны только в работающей программе, а не в прототипе. А вот как вы будете закрывать Форму при biSystemMenu=False, ведь крестика закрытия не будет? Запомните сочетание ALT+F4. Это команда закрытия любых окон включая саму Windows!

.        Вы можете управлять также границами Формы. Для этого служит свойство BorderStyle. При значении

­                bsSizeable - обычная Форма, значение по умолчанию.

­                bsNone - Форма вообще не будет иметь границ, включая строку заголовка.

­                bsSingle - Форма не может менять размеры, но может свернуться или развернуться.

Таким образом, комбинируя свойства BorderIcons и BorderStyle можно, например, получить форму с неизменными размерами и без возможности свернуться и развернуться:

Рисунок 3. Форма

Теперь займёмся сохранением нашего проекта. Так как по умолчанию Delphi сохраняет новые проекты в папке C: \Program Files\Borland\Delphi7\Projects, то если мы не будем выделять под него место сами, все файлы данного и всех будущих проектов будут свалены в кучу. Поэтому сразу в начале работы над новым проектом командой меню File - " Save All (или соответствующей кнопкой на главном окне) сохраним проект в специально для него созданную папку. Создать её можно прямо в открывшемся окошке. Проект в целом сохраняется в файле с именем Project1. Форма функционирует вместе с программой, описывающей её работу, так называемым модулем. Если модулей в проекте несколько, для каждого из них Delphi создаст отдельный файл, и предложит его сохранить под именем Unit1, Unit2 и т.д. И для файла проекта, и файлов модулей можно дать и своё, более осмысленное название. Договоримся, что каждый новый проект сразу будем сохранять, и я не буду дополнительно напоминать об этом. Теперь выполните команду File - " Close All. Попробуйте открыть файл модуля командой Open. Модуль откроется вместе с нашей формой, мы сможем нормально работать, но кнопка запуска программы окажется неактивной. Поэтому сначала нужно открывать файл проекта. Для этого, кстати, есть специальная команда меню File - " Open Project. Ctrl F11, и соответствующая кнопка, прямо над кнопкой запуска. Теперь в окне выбора будет только один файл, файл проекта. При его открытии будет окрыт и первый модуль и первая форма проекта. Для нашего проекта этого достаточно. Если в проекте несколько форм, их модули и формы открываем командой Open. Можно открывать модули других проектов, например, для копирования кода. Теперь я предлагаю сделать следующее. Надеюсь, ваш жёсткий диск разбит хотя бы на две части, для размещения системы, и для документов. Поскольку систему приходится иногда переустанавливать, под проекты Delphi целесообразно отвести специальную папку на другом диске, например D: \Проекты Delphi\, и сохранять проекты туда, а в папку по умолчанию поставить на неё ярлык для быстрого перехода. Теперь, в случае переустановки системы, Вам не придётся дополнительно сохранять Ваши наработки

1.2 Компоненты Delphi


В пустой форме смысла нет. Наполнить её содержанием помогут компоненты. Они располагаются на соответствующих вкладках палитры компонентов на главном окне. Все основные компоненты Delphi находятся на первых четырёх вкладках (рис 4):

Рисунок 4. главное окно

Их названия всплывают в виде подсказок при наведении мышки на пиктограммы.

­                Standard - стандартные элементы управления оконного интерфейса Windows;

­                Additional - специализированные элементы управления интерфейса Windows;

­                System - специализированные системные элементы управления;

­                Data Access - компоненты, обеспечивающие доступ к информации, хранящейся в базах данных, и использующие процессор баз данных BDE (Borland Database Engine);

­                Data Controls - компоненты для отображения и редактирования информации, хранящейся в базах данных;

­                BDE - компоненты, обеспечивающие доступ к базам данных.

Чтобы перенести компонент на форму, нужно щёлкнуть его мышкой (при этом выбранный компонент выделяется), и затем щёлкнуть в том месте формы, где его предполагается разместить. В дальнейшем компоненты можно свободно перетаскивать по форме мышкой, "конструируя" нужный интерфейс. Если, щёлкнув по компоненту, вы захотите отказаться от его переноса на форму, щёлкните по стрелке, расположенной слева на вкладке. Выделение компонента снимется.

Инспектор объектов (Object Inspector) является одним из важнейших инструментов разработки приложения и используется для настройки опубликованных свойств компонента. Различные виды окна Object Inspector показаны на рис.5

Рисунок 5. Инспектор объектов (Object Inspector)

Окно инспектора объектов содержит выпадающий список и две вкладки - Properties и Events. На первой из них отображается список свойств выделенного объекта. На второй список событий, на которые реагирует объект. Выпадающий список содержит перечень всех компонентов, размещенных на активной в данный момент форме (включая и саму форму).

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

Событие (Event) - это то, что происходит во время работы программы. В Delphi каждому событию присвоено имя. Например, щелчок кнопкой мыши - это событие OnClick, двойной щелчок мышью событие OnDblClick.

В табл.1 приведены некоторые события Windows.

Реакцией на событие должно быть какое-либо действие. В Delphi реакция на событие реализуется как процедура обработки события. Таким образом, для того чтобы программа выполняла некоторую работу в ответ на действия пользователя, программист должен написать процедуру обработки соответствующего события. Следует обратить внимание на то, что значительную часть обработки событий берет на себя компонент. Поэтому программист должен разрабатывать процедуру обработки события только в том случае, если реакция на событие отличается от стандартной или не определена. Например, если по условию задачи ограничений на символы, вводимые в поле Edit, нет, то процедуру обработки события OnKeyPress писать не надо, т.к. во время работы программы будет использована стандартная (скрытая от программиста) процедура обработки этого события.

Методику создания процедур обработки событий рассмотрим на примере процедуры обработки события OnClick для командной кнопки "Запуск программы".

Таблица 1.

События

Событие

Происходит

OnClick

При щелчке кнопкой мыши

OnDblClick

При двойном щелчке кнопкой мыши

OnMouseDown

При нажатии кнопки мыши

OnMouseUp

При отпускании кнопки мыши

OnMouseMove

При перемещении мыши

OnKeyPress

При нажатии клавиши клавиатуры

OnKeyDown

При нажатии клавиши клавиатуры. События OnKeyDown и OnKeyPress - это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша (в этот момент происходит событие OnKeyUp)

OnKeyUp

При отпускании нажатой клавиши клавиатуры

OnCreate

При создании объекта (формы, элемента управления). Процедура обработки этого события обычно используется для инициализации переменных, выполнения подготовительных действий

OnPaint

При появлении окна на экране в начале работы программы, после появления части окна, которая, например, была закрыта другим окном, и в других случаях

OnEnter

При получении элементом управления фокуса

OnExit

При потере элементом управления фокуса


Чтобы приступить к созданию процедуры обработки события, надо сначала в окне Object Inspector выбрать компонент, для которого создается процедура обработки события. Затем в этом же окне нужно выбрать вкладку Events (События).

В левой колонке вкладки Events перечислены имена событий, которые может воспринимать выбранный компонент (объект). Если для события определена (написана) процедура обработки события, то в правой колонке рядом с именем события выводится имя этой процедуры.

Для того чтобы создать функцию обработки события, нужно сделать двойной щелчок мышью в поле имени процедуры обработки соответствующего события. В результате этого откроется окно редактора кода, в которое будет добавлен шаблон процедуры обработки события, а в окне Object Inspector рядом с именем события появится имя функции его обработки (рис.6).присваивает функции обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект (компонент), для которого создана процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы - Form1, имя командной кнопки - Button, а имя события - Click.

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

Рисунок 6.

Есть соответствующие справочники, где рассматриваются все компоненты Delphi. Но самые важные свойства компонентов Delphi и работу с ними мы рассмотрим.

Рассмотрим компоненты отображения текста. Создайте новый проект (File - " New - " Application), и перенесите на форму компоненты Label <#"518421.files/image007.gif">

При Щелчке по Кнопке ЗАПУСК ПРОГРАММЫ приложение отобразит главное окно программы по учету сведений об абитуриентах. На картинке снизу, можно увидеть, как выглядит окно приложения при первом его запуске, если файл с базой данных об абитуриентах существует (неважно есть данные или же он пустой) AbiturientsBase. Dat. По умолчанию приложение будет проверять его наличие, там же где и находится само.


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


При щелчке по кнопке “НОВАЯ ЗАПИСЬ” появится окно вот такого вида. Тут необходимо заполнить все поля и щелкнуть по кнопке СОХРАНИТЬ. Для быстрой очистки введённых данных служит кнопка ОЧИСТИТЬ. При щелчке по кнопке ЗАКРЫТЬ произойдет обычное закрытие данного окна, без какой либо записи в базу данных. Данные для удобства их отображения и по своему значению группируются по трем основным разделам ОСНОВНЫЕ СВЕДЕНИЯ, СВЕДЕНИЯ ПО ОБРАЗОВАНИЮ и ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ.


Проверку на вводимые значения происходит лишь в компонентах содержащих данные об оценках на внутренних экзаменах и о данных ЕГЭ, при выходе за диапазон [0.100] компонент автоматически выставит крайнее значение либо 0 либо 100, остальные значения будут записаны в неизмененном виде (Так требовали исходные условия поставленной задачи).

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


При щелчке мышкой по какой либо записи становится активной кнопка РЕДАКТИРОВАТЬ.

При щелчке по данной кнопке откроется форма для редактирования, аналогичная форме для ввода нового абитуриента. Выбранную запись можно изменить и произвести сохранение нажав во вновь открывшемся окне по кнопке СОХРАНИТЬ, в таком случае приложение выдаст следующее сообщение


При закрытии любого окна приложения происходит автоматическое обновление всех визуальных компонентов и данных, для своевременного контроля за производимыми изменениями, без дополнительных действий со стороны пользователя. Остается последняя кнопка в главном окне Приложения по учету поступающих абитуриентов, это кнопка ОЧИСТИТЬ БАЗУ. При щелчке по кнопке ОЧИСТИТЬ БАЗУ, произойдет уничтожение существующей базы данных и создание новой, чистой базы без каких либо записей. Приложение известит об этом пользователя данным сообщением.


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

С самом низу главной формы приложения, жирной строкой отображается

Если для поступления не важны результаты ЕГЭ или же наоборот Важны результаты ЕГЭ и не важны внутренние экзамены, сдаваемые в институте письменно, то необходимо просто установить значение проходного балла в данном компоненте (при необходимости в нескольких компонентах) “0” или же наоборот ввести требуемый проходной балл в оба компонента.

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


Заключение


В результате выполненной работы разработана модель базы данных для автоматизации учёта абитуриентов. Данная модель предназначена для реализации в СУБД Delphi 7.0. Созданная нами система отличается:

формируется список претендентов на зачисление после первого экзамена;

Создается экзаменационная ведомость по специальностям;

Предусмотрено редактирование;

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

информации;

Сетевой вариант;

Не критичность системы компьютеров;

Система "Разработка сведений об абитуриентах" является начальным этапом для создания общей системы ВУЗа.

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

При работе с программой осуществляется своевременная выдача информации.

Разработанная система готова к сдаче в эксплуатацию.

Список источников


1.      ГОСТ 19.505-79. Установление общих требований к содержанию документации процесса разработки, МНИЦ, ГНИИ ИТТ, ВНИИ, стандарт принят взамен ГОСТ 19.501-79 июль 2004г.

2.      ГОСТ Р ИСО 9127: 1994. Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.

.        ГОСТ Р ИСО/МЭК 12119-2000. Информационная технология. Пакеты программ. Требование к качеству и тестирование.

.        ГОСТ Р ИСО/МЭК 14764-2002. Информационная технология. Сопровождение программных средств.

.        ГОСТ Р ИСО/МЭК 9126: 1993. Информационная технология. Оценка программной продукции. Характеристики качества и руководство по их применению.

.        ГОСТ Р ИСО/МЭК ТО 9294: 1993. Информационная технология. Руководство по управлению документированием программного обеспечения.

.        Архангельский А.Я. Программирование в Delphi 6. - М.: "БИНОМ", 2003. - 1118 с.: ил.

.        Архангельский А.Я. Решение задач в Delphi 6. - М.: ЗАО Изд-во "БИНОМ", 2001.

.        Власов А.Я. Справочник по программированию на Object Pascal. - Киев, 2001.

.        Выпускная квалификационная работа: Методические рекомендации по выполнению и защите / Под ред.Н.С. Сельской, В.Н. Фокиной - М.: СГИ, 2002. - 75 с.

Приложения

 

Приложение А

Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, Buttons, Math, Spin, jpeg, ExtCtrls;

{Названия факультетов и их количество}: array [0.5] of string= ('050501 "Профессиональное обучение (информатика, вычислительная техника, и компьютерные технологии) ',

'050501 "Профессиональное обучение (дизайн)"',

'050706 "Психология и педагогика"',

'050708 "Педагогика и методика начального образования"',

'040101 "Социальная работа"',

'080507 "Менеджмент организации"');: array [0.5,0.2] of string= ( ('Математика','Русский язык','Информатика'),

('Математика','Русский язык','Физика'),

('Математика','Русский язык','Биология'),

('Математика','Русский язык','Обществознание'),

('Русский язык','История','Обществознание'),

('Математика','Русский язык','Обществознание'));: array [0.2] of string= ('Неполное среднее (9 классов) ','Полное среднее (11 классов) ','Средне специальное (ПТУ, Техникум) ');=record {Задаем тип хранимых данных в файле: Фамилия, Имя, Отчество, Пол, Дата рождения, Специальность, Оценка 1, Оценка 2, Оценка 3. }: string [30];: string [30];: string [30];: Byte;: TDate;: Byte;: Byte;: Byte;: Byte;: Byte;: Byte;: Byte;: string [100];: string [30];: Byte;;= class (TForm): TStringGrid;: TBitBtn;: TBitBtn;: TBitBtn;: TComboBox;: TLabel;: TLabel;: TBitBtn;: TLabel;: TLabel;: TSpinEdit;: TSpinEdit;: TBevel;: TImage;btn5Click (Sender: TObject);FormCreate (Sender: TObject);cbb1Change (Sender: TObject);btn1Click (Sender: TObject);btn2Click (Sender: TObject);StringGrid1MouseDown (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);BitBtn1Click (Sender: TObject);StringGrid1DrawCell (Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);SpinEdit1Change (Sender: TObject);SpinEdit3Change (Sender: TObject);

{ Private declarations }SortTable; {сортировка данных по сумме баллов}RefreshTable; {обновление данных в таблице}

{ Public declarations };: TForm1;: file of TAbiturientRecord; {Глобальная файловая переменная, для работы с базой данных абитуриентов}: TAbiturientRecord; {Глобальная переменная, которая хранит текущую запись из списка абитуриентов}: String; {Глобальная переменная, содержит путь к файлу и его имя}: Integer; {Глобальная переменная, содержит индекс записи}: array of TAbiturientRecord; {Массив в котором будет храниться все записи нашей базы данных абитуриентов для быстрой обработки хи программой}: array of Integer; {Массив в котором будет храниться порядковый номер записи в файле}: array of TPoint; {Массив в котором будет храниться порядковый номер записей отображаемых в таблице}: Boolean; {Флаг (переменная) отвечающий за редактирование либо новвый ввод записи в базу данных об абитуриентах}: Integer; {переменная в которой будет храниться выделенный индекс строки таблицы}Unit2, Unit3;

{$R *. dfm}TForm1. SortTable; {Сортировка данных по Сумме баллов методом пузырька, абитуриенты с наиболее высокой суммой постепенно перемещаются в начало таблицы}i,TempIndex: Integer;: Boolean;: TAbiturientRecord;Length (FTableRecords) >1 then: =True;a do: =False;i: =0 to Length (FTableRecords) - 2 do(FTableRecords [i]. AScore1+FTableRecords [i]. AScore2+FTableRecords [i]. AScore3) < (FTableRecords [i+1]. AScore1+FTableRecords [i+1]. AScore2+FTableRecords [i+1]. AScore3) then: =FTableRecords [i];[i]: =FTableRecords [i+1];[i+1]: =Temp;: =FRecordIndexs [i];[i]: =FRecordIndexs [i+1];[i+1]: =TempIndex;: =True;;;;;TForm1. RefreshTable; {Обновление информации в таблице абитуриентов, прописываем название столбцов в таблице и заполняем строки с учётом выбранного факультета}i,a,b,c: Integer;. Enabled: =FEdit;;(FTempIndexs,0);. Cells [0,0]: ='№ п/п';. Cells [1,0]: ='Фио абитуриента';. Cells [2,0]: ='Пол';. Cells [3,0]: ='Дата рождения';. Cells [4,0]: ='Специальность (факультет) ';. Cells [5,0]: =APredmetName [cbb1. ItemIndex,0];. Cells [6,0]: =APredmetName [cbb1. ItemIndex,1];. Cells [7,0]: =APredmetName [cbb1. ItemIndex,2];. Cells [8,0]: ='Сумма балов';. Cells [9,0]: ='ЕГЭ '+APredmetName [cbb1. ItemIndex,0];. Cells [10,0]: ='ЕГЭ '+APredmetName [cbb1. ItemIndex,1];. Cells [11,0]: ='ЕГЭ '+APredmetName [cbb1. ItemIndex,2];. Cells [12,0]: ='Телефон';. Cells [13,0]: ='Домашний адрес';. Cells [14,0]: ='Имеющееся образование';: =0;: =0;Length (FTableRecords) >0 theni: =0 to Length (FTableRecords) - 1 doFTableRecords [i]. ASpecialnost=cbb1. ItemIndex then(a);. Cells [0,a]: =IntToStr (a) +'. ';. Cells [1,a]: =FTableRecords [i]. AName+' '+FTableRecords [i]. AFamilia+' '+FTableRecords [i]. AOtchestvo;FTableRecords [i]. ASex=0 then StringGrid1. Cells [2,a]: ='М' else StringGrid1. Cells [2,a]: ='Ж';. Cells [3,a]: =DateToStr (FTableRecords [i]. ABirsday);. Cells [4,a]: =ASpecialnost [FTableRecords [i]. ASpecialnost];. Cells [5,a]: =IntToStr (FTableRecords [i]. AScore1);. Cells [6,a]: =IntToStr (FTableRecords [i]. AScore2);. Cells [7,a]: =IntToStr (FTableRecords [i]. AScore3);. Cells [8,a]: =FloatToStr (FTableRecords [i]. AScore1+FTableRecords [i]. AScore2+FTableRecords [i]. AScore3);. Cells [9,a]: =IntToStr (FTableRecords [i]. AScoreEGE1);. Cells [10,a]: =IntToStr (FTableRecords [i]. AScoreEGE2);. Cells [11,a]: =IntToStr (FTableRecords [i]. AScoreEGE3);. Cells [12,a]: =FTableRecords [i]. ATelefon;. Cells [13,a]: =FTableRecords [i]. AAdres;. Cells [14,a]: =AObrazovanie [FTableRecords [i]. AAttestat];( (FTableRecords [i]. AScore1+FTableRecords [i]. AScore2+FTableRecords [i]. AScore3) >=SpinEdit3. Value) and ( (FTableRecords [i]. AScoreEGE1+FTableRecords [i]. AScoreEGE2+FTableRecords [i]. AScoreEGE3) >=SpinEdit1. Value) then: =1 else b: =0;b=1 then inc (c);(FTempIndexs,a);[a-1]: =Point (i,b);;a=0 then. RowCount: =2;i: =0 to StringGrid1. ColCount-1 do StringGrid1. Cells [i,1]: ='';else StringGrid1. RowCount: =a+1;. Caption: ='Всего абитуриентов поступающих на выбранный факультет: '+Inttostr (a) +' из них прошли на бюджет: '+Inttostr (c);;TForm1. btn5Click (Sender: TObject);; {Закрываем приложение};TForm1. FormCreate (Sender: TObject); {Действия при создании формы}i: Integer;: =Tform3. Create (Self); {Создаем и отображаем титульный экран с названием курсовой работы}. Showmodal;. Free;

{устанавливаем значения глобальным переменным}: ='AbiturientsBase. dat';(F,FFileName);: =-1;: =False;: =-1;not FileExists (FFileName) then {Проверяем существование файла с базой данных}

{Выводим предупреждение и создаем чистую базу}('Файла с базой данных абитуриентов не существует, Будет создана чистая база');(F,FFileName);(F);; {В случае ошибки создания закрываем файл и прекращаем работу программы};else Reset (F);(FTableRecords,FileSize (F)); {Создание Массива который будет хранить все записи об абитуриентах}(FRecordIndexs,FileSize (F)); {Создание Массива который будет порядковый номер записи в файле об абитуриентах}Length (FTableRecords) >0 then {Заполнение массива данными из файла с базой данных}i: =0 to Length (FTableRecords) - 1 do(F, i);(F,FTableRecords [i]);[i]: =i;;;(F);i: =0 to 5 do cbb1. Items. Add (ASpecialnost [i]); {Заполняем список факультетов}. ItemIndex: =0; {выбираем первый факультет из списка}; {Заполняем таблицу};TForm1. cbb1Change (Sender: TObject);; {Обновляем таблицу с учетом вновь выбранного факультета};TForm1. btn1Click (Sender: TObject);: =False; {Меняем атрибут редактирования записи в состояние Неактивен, т. к мы будем обавлять новую запись, а не редактировать старую}: =TForm2. Create (Self); {Создаем форму для добавления новой записи}. Showmodal; {показываем форму}. Free; {уничтожаем после её закрытия}; {Обновляем таблицу с абитуриентами};TForm1. btn2Click (Sender: TObject);FilePosition<>-1 then {если индекс редактируемой записи существует, то меняем атрибут редактирования на активно и создаем форму редактирования и показываем её,

а потом уничтожаем и обновляем таблицу абитуриентов}: =True;: =TForm2. Create (Self);. Showmodal;. Free;;;: =-1;: =False;;TForm1. StringGrid1MouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);a,b: Integer;: =-1;. MouseToCell (X,Y,A,B);(B>0) and (Length (FTempIndexs) >B-1) then {получаем индекс строки в таблице, если он существует, то присваеваем его глобальной переменной FilePosition, делаем доступной кнопку редактировать}: =FTempIndexs [B-1]. X;. Enabled: =True;: =B;else btn2. Enabled: =False;. Repaint;;TForm1. BitBtn1Click (Sender: TObject);FileExists (FFileName) then {Проверяем существование файла с базой данных}(f); {удаляем файл, потом создаем новый, закрываем файл и запускаем процедуру FormCreate (Self), которая происходит при запуске программы, чтобы обновить все переменные и тд}(f);(f);(Self);('База абитуриентов очищена! '); {выводим сообщение, что база очищена };;TForm1. StringGrid1DrawCell (Sender: TObject; ACol, ARow: Integer; ARect: TRect; State: TGridDrawState); {отрисовываем таблицу вручную, чтобы}ARow of {в зависимости от номера строки выбираем нужный нам цвет, серый, белый}

: StringGrid1. Canvas. Brush. Color: =clBtnFace;StringGrid1. Canvas. Brush. Color: =clWhite;;(Length (FTempIndexs) >=ARow) and (ARow>0) then {отрисовываем поступивших на Бюджет, зеленым}FTempIndexs [ARow-1]. Y=1 then StringGrid1. Canvas. Brush. Color: =$0000BF00;(ARow=SelectROW) and (SelectROW>0) then StringGrid1. Canvas. Brush. Color: =$00FFCCCC;. Canvas. FillRect (Arect); {закрашиваем ячейку таблицы в ранее определенный цвет}(Acol=0) or (Acol=1) or (Acol=4) or (Acol=13) or (Acol=14) then {выводим текст в таблицу, в зависимости от столбца либо по центру либо слева на право}. Canvas. TextOut (ARect. Left+1,ARect. Top+ ( ( (ARect. Bottom-ARect. Top) - StringGrid1. Canvas. TextHeight (StringGrid1. Cells [Acol,ARow])) div 2),StringGrid1. Cells [Acol,ARow]) else. Canvas. TextOut (ARect. Left+ ( ( (ARect. Right-ARect. Left) - StringGrid1. Canvas. TextWidth (StringGrid1. Cells [Acol,ARow])) div 2),ARect. Top+ ( ( (ARect. Bottom-ARect. Top) - StringGrid1. Canvas. TextHeight (StringGrid1. Cells [Acol,ARow])) div 2),StringGrid1. Cells [Acol,ARow]);Arow=0 then StringGrid1. Canvas. Brush. Color: =clblackStringGrid1. Canvas. Brush. Color: =clGray;. Canvas. FrameRect (Rect (ARect. Left-1,ARect. Top-1,ARect. Right+1,ARect. Bottom+1)); {очерчиваем прямоугольник, каждой ячейки};TForm1. SpinEdit1Change (Sender: TObject);SpinEdit1. Text<>'' then; {Обновляем таблицу с учетом проходного бала по ЕГЭ};TForm1. SpinEdit3Change (Sender: TObject);SpinEdit3. Text<>'' then; {Обновляем таблицу с учетом проходного бала по внутренним экзаменам};.Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, ExtCtrls, Spin, ComCtrls;= class (TForm): TBitBtn;: TBitBtn;: TBitBtn;: TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;: TLabel;: TLabel;: TBevel;: TBevel;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TDateTimePicker;: TComboBox;: TLabel;: TLabel;: TLabel;: TSpinEdit;: TSpinEdit;: TSpinEdit;: TBevel;: TLabel;: TLabel;: TLabel;: TSpinEdit;: TSpinEdit;: TSpinEdit;: TBevel;: TLabel;: TComboBox;: TLabeledEdit;: TLabeledEdit;: TBevel;: TComboBox;: TLabel;: TBevel;btn5Click (Sender: TObject);FormCreate (Sender: TObject);btn2Click (Sender: TObject);btn1Click (Sender: TObject);LoadRecord;

{ Private declarations }

{ Public declarations };: TForm2;;

{$R *. dfm}TForm2. LoadRecord; {Отображение в визуальные компоненты редактируемой записи}: =FTableRecords [FilePosition];. Text: =FRecord. AName;. Text: =FRecord. AFamilia;. Text: =FRecord. AOtchestvo;. DateTime: =FRecord. ABirsday;. ItemIndex: =FRecord. ASpecialnost;. ItemIndex: =FRecord. ASex;. Value: =FRecord. AScore1;. Value: =FRecord. AScore2;. Value: =FRecord. AScore3;. Value: =FRecord. AScoreEGE1;. Value: =FRecord. AScoreEGE2;. Value: =FRecord. AScoreEGE3;. Text: =FRecord. AAdres;. Text: =FRecord. ATelefon;. ItemIndex: =FRecord. AAttestat;;TForm2. btn5Click (Sender: TObject);. Close; {закрыть форму};TForm2. FormCreate (Sender: TObject); {действия при создании формы}i: Integer;i: =0 to 5 do ComboBox1. Items. Add (ASpecialnost [i]); {Заполняем список факультетов}. ItemIndex: =0;. Caption: =APredmetName [cbb1. ItemIndex,0] +' письменно';. Caption: =APredmetName [cbb1. ItemIndex,1] +' письменно';. Caption: =APredmetName [cbb1. ItemIndex,2] +' письменно';. Caption: ='Оценка ЕГЭ ('+APredmetName [cbb1. ItemIndex,0] +') ';. Caption: ='Оценка ЕГЭ ('+APredmetName [cbb1. ItemIndex,1] +') ';. Caption: ='Оценка ЕГЭ ('+APredmetName [cbb1. ItemIndex,2] +') ';FEdit then LoadRecord else btn2Click (nil); {если редактируем запись, то отображаем редактируемые данные в визуалььные компоненты,

если просто добавляем нового абитуриента, то очищаем компоненты и готовимся к вводу данных};TForm2. btn2Click (Sender: TObject); {очищаем визуальные компоненты от введённых данных}. Text: ='';. Text: ='';. Text: ='';. DateTime: =Date;. ItemIndex: =0;. ItemIndex: =0;. Value: =0;. Value: =0;. Value: =0;. Value: =0;. Value: =0;. Value: =0;. Text: ='';. Text: ='';. ItemIndex: =0;;TForm2. btn1Click (Sender: TObject);

{Заполняем временную переменную введенными данными из компонентов}. AName: =LabeledEdit1. Text;. AFamilia: =LabeledEdit2. Text;. AOtchestvo: =LabeledEdit3. Text;. ABirsday: =dtp1. DateTime;. ASpecialnost: =ComboBox1. ItemIndex;. ASex: =cbb1. ItemIndex;. AScore1: =se1. Value;. AScore2: =SpinEdit1. Value;. AScore3: =SpinEdit2. Value;. AScoreEGE1: =SpinEdit3. Value;. AScoreEGE2: =SpinEdit4. Value;. AScoreEGE3: =SpinEdit5. Value;. AAdres: =LabeledEdit4. Text;. ATelefon: =LabeledEdit5. Text;. AAttestat: =ComboBox2. ItemIndex;Fedit then {если Атрибут редактирования активен то записываем данные в файл с учетом ранее запомненного индекса из таблицы абитуриентов}(F);(F,FRecordIndexs [FilePosition]);(F,FRecord);(F);[FilePosition]: =FRecord;('Изменения записаны! ');; {прерываем процедуру, т. к при редактироании записи остальное не имеет смысла};

{если создаем новую запись, добавляем абитуриента, то расширяем массив данных в памяти и запоминаем его индекс}(FTableRecords,Length (FTableRecords) +1);[Length (FTableRecords) - 1]: =FRecord;(FRecordIndexs,Length (FRecordIndexs) +1);[Length (FTableRecords) - 1]: =Length (FTableRecords) - 1;FileExists (FFileName) then {Проверяем существование файла с базой данных, если существует, то записываем данные в конец файла}(F);(F,FileSize (f));(F,FRecord);(F);else('Файл с базой данных не найден, запись не произведена! '); {если база с абитуриентами не найдена, то просто выходим и оповещаем пользователя};;Click (nil); {очищаем компоненты для нового ввода данных};.Unit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, jpeg, ExtCtrls;= class (TForm): TBitBtn;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TImage;btn1Click (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm3;Unit1;

{$R *. dfm}TForm3. btn1Click (Sender: TObject);;;.

Похожие работы на - Построение базы данных 'Абитуриент' для учебного заведения

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!