Построение базы данных «Абитуриент» для учебного заведения
Для автоматизации системы «Абитуриент» была выбрана систем управления базами данных на Delphi, который является общепризнанным лидером среди инструментов для создания приложений и систем, функционирующих на платформе Windows. Передовая объектно-ориентированная технология визуального проектирования позволяет отдельным программистам и коллективам разработчиков почувствовать уверенность… Читать ещё >
Построение базы данных «Абитуриент» для учебного заведения (реферат, курсовая, диплом, контрольная)
- 1. Объектно-ориентированные языки программирования
- 1.1 Среда разработки приложений Delphi
- 1.2 Компоненты Delphi
- 2. Разработка программного приложения
- 2.1 Разработка приложения
- 2.2 Описание работы системы «Абитуриент»
- 2.3 Описание программы
- Заключение
- Список источников
- Приложения
Перемены нашего времени обусловили возрастающий интерес разного рода коммерческих и некоммерческих организаций к применению компьютерной техники для обеспечения информационной поддержки своей деятельности. Это является следствием относительной стабилизации экономики, прекращения падения производства, а в некоторых областях и заметного его роста; что позволяет успешным организациям инвестировать определенные средства в облегчение каждодневной рутинной работы.
В условиях рыночной экономики информация выступает как один из основных товаров. Без информации практически невозможно принять объективного управленческого решения, которое выступает в современных условиях как один из важнейших факторов функционирования и развития различных организаций. Изменения условий деятельности организации сказываются на её совершенствовании. Все это требует от организации адаптации к новым условиям, преодоления возникающих противоречий в экономическом и научно-техническом процессах.
Подходя к современным требованиям нельзя не отметить, что эффективная работа всецело зависит от уровня оснащения электронным оборудованием, таким, как компьютеры, средства связи, копировальные устройства, а также соответствующего программного обеспечения. Ни одна современная организация не обходится без систем сбора и обработки информации. Чем больше стадий, тем этот процесс сложнее, чем больше и разнообразнее спектр информации, тем больше потребность в автоматизированном сборе, обработке и хранении информации в электронном виде. Поиск информации в бумажном виде занимает от минуты до нескольких дней, в зависимости от того, когда информация была собрана, поиск в электронном хранилище данных выполняется за доли и единицы секунд.
база абитуриент delphi приложение База данных — это организованная структура, предназначенная для хранения информации. С понятием базы данных тесно связано понятие системы управления базой данных. Это комплекс программных средств, предназначенных для создания структуры новой базы, наполнения ее содержимым, редактирования содержимого и визуализации информации. Под визуализацией информации базы понимается отбор отображаемых данных в соответствии с заданным критерием, их упорядочение, оформление и последующая выдача на устройство вывода или передача по каналам связи.
В мире существует множество систем управления базами данных. Они могут по-разному работать с разными объектами и предоставляют пользователю различные функции и средства.
В курсовой работе решается задача построения БД для ЧГПУ, которая является хранилищем информации об абитуриентах, поступающих в данный ВУЗ.
Для автоматизации системы «Абитуриент» была выбрана систем управления базами данных на Delphi, который является общепризнанным лидером среди инструментов для создания приложений и систем, функционирующих на платформе Windows. Передовая объектно-ориентированная технология визуального проектирования позволяет отдельным программистам и коллективам разработчиков почувствовать уверенность в возможности полного удовлетворения запросов самых требовательных пользователей и устойчивость своего положения на рынке высоких технологий.
В курсовой работе рассматривается применение информационной системы, обеспечивающей полный спектр информационной поддержки деятельности Приёмной комиссии в ЧГПУ. Данная курсовая работа написана на основе наблюдений за работой приёмной комиссии.
Объектом данного исследования - языки и системы программирования.
Предметом разработки приложения в среде Delphi — является (учёт сведений об абитуриентах).
Цели создания системы — автоматизировать процесс поступления абитуриентов в ЧГПУ, т. е. обеспечить учёт абитуриентов подавших документы, обеспечить учёт результатов сдачи вступительных экзаменов, а также предоставить возможность сбора информации о претендентах на зачисление. Данная система позволила решать следующие задачи: формирование списка всех абитуриентов, ведение экзаменационного процесса, поиск по заданным критериям.
1. Объектно-ориентированные языки программирования
1.1 Среда разработки приложений Delphi
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространённым утверждениям, признаваемым большинством разработчиков, относятся следующие: [источник не указан 817 дней]
Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Возможно, начинающие думают, что для того чтобы создать свою первую программу на Delphi, нужно потратить много времени на изучение системы. Тем не менее, в Delphi это не сложнее простого щелчка мышкой!
Итак, запустим Delphi. Для этого нужно создать ярлык на рабочем столе, если, конечно, Вам не нравится каждый раз ходить по адресу Program Files — Borland — Delphi — Bin и отыскивать файл delphi32. exe. Гораздо проще один раз найти его ярлычок в меню ПУСК — ВСЕ ПРОГРАММЫ — BORLAND DELPHI — DELPHI, перетащить его отсюда на рабочий стол.
Перед нами четыре окна Delphi. Вверху во вcю ширину экрана окно управления проектом и средой разработки — главное окно Delphi. (рис.1)
Рисунок 1. Интегрированная среда разработки Delphi
При его сворачивании сворачиваются и все остальные. Слева — Инспектор объектов. В нём задаются свойства составляющих нашу программу компонентов. И наконец, в центре одно над другим два окна Delphi, окно формы будущей программы и окно программной начинки. Прямо перед нами — окно, которое в Delphi называется Форма. Именно Форма является визуальным прообразом нашей будущей программы. Теперь посмотрите, как легко получается программа в Delphi:
1. Наводим мышку на зелёный треугольник-стрелку на главном окне
2. Смотрим — всплывает подсказка «Run (F9)»
3. Жмём на эту кнопку (или F9 на клавиатуре)
4. Получаем готовую Windows-программу!
Однако (как подсказывают в комментариях), не во всех версиях Delphi запуск программы производится кнопкой F9, для некоторых это CTRL+F9 — посмотрите сами, какую подсказку выдает Delphi при наведении на зелёную стрелку.
По умолчанию программа создаётся в папке C: Program FilesBorlandDelphi7Projects:
Рисунок 2. Так выглядит пиктограмма
Отсюда её можно скопировать и использовать так, как нам нужно. Например, для начала можно поставить ярлык на рабочий стол, чтобы при тестировании проверять её без использования Delphi. Мы получили программу, состоящую из одного пустого окна. Тем не менее наша программа имеет все атрибуты, присущие всем программам в Windows: заголовок, системное меню (кликните по левому краю заголовка!), кнопки свернуть, развернуть, закрыть, может менять свои размеры.
Закройте программу-Форму. Рассмотрим полезные для нас свойства Формы:
1. Надпись на заголовке — свойство Caption. Сейчас это Form1, и совпадает со свойством Name. В инспекторе объектов можно поменять их по своему усмотрению. Напишите в свойстве Caption, например, «Простейшая программа!»
2. Цвет — свойство Color.
3. Размеры — ширина и высота в пикселах, свойства Width и Height. Изменяем их мышкой, двигая края Формы, затем устанавливаем более точные значения в Инспекторе.
4. Положение на экране — свойства Top и Let. Это расстояния в пикселах от левой и верхней границы экрана соответственно. Если необходимое положение Формы закрывает элементы управления Delphi, просто сверните её. Но есть очень полезное
5. свойство Position, с помощью которого можно настроить автоматическое появление Формы в нужном месте. Разверните выпадающий список:
При значении poDesigned Форма появится в том месте, где она находилась при проектировании. Это значение по умолчанию.
При значениях poDesktopCenter и poScreenCenter Форма появится в центре рабочего стола или центре экрана.
Форма может быть вызвана из другого окна-формы. Тогда при значениях
poMainFormCenter она появится в центре главного окна приложения,
poOwnerFormCenter — в центре вызывающего окна, так называемого «владельца» .
Вы можете запрограммировать появление Формы в нормальном, минимизированном или максимизированном состоянии. За это отвечает
6. свойство WindowState — значения wsNormal, wsMinimized и wsMaximized соответственно.
7. Не у всех окон в заголовке есть кнопки свернуть, развернуть, закрыть. Их наличием или отсутствием управляет
8. свойство BorderIcons. В Инспекторе слева от него маленький плюсик, открывающий признак наличия или отсутствия нужной кнопки. True — кнопка будет, False — нет. Смело экспериментируйте, но изменения будут видны только в работающей программе, а не в прототипе. А вот как вы будете закрывать Форму при biSystemMenu=False, ведь крестика закрытия не будет? Запомните сочетание ALT+F4. Это команда закрытия любых окон включая саму Windows!
9. Вы можете управлять также границами Формы. Для этого служит свойство BorderStyle. При значении
bsSizeable — обычная Форма, значение по умолчанию.
bsNone — Форма вообще не будет иметь границ, включая строку заголовка.
bsSingle — Форма не может менять размеры, но может свернуться или развернуться.
Таким образом, комбинируя свойства BorderIcons и BorderStyle можно, например, получить форму с неизменными размерами и без возможности свернуться и развернуться:
Рисунок 3. Форма
Теперь займёмся сохранением нашего проекта. Так как по умолчанию Delphi сохраняет новые проекты в папке C: Program FilesBorlandDelphi7Projects, то если мы не будем выделять под него место сами, все файлы данного и всех будущих проектов будут свалены в кучу. Поэтому сразу в начале работы над новым проектом командой меню File — «Save All (или соответствующей кнопкой на главном окне) сохраним проект в специально для него созданную папку. Создать её можно прямо в открывшемся окошке. Проект в целом сохраняется в файле с именем Project1. Форма функционирует вместе с программой, описывающей её работу, так называемым модулем. Если модулей в проекте несколько, для каждого из них Delphi создаст отдельный файл, и предложит его сохранить под именем Unit1, Unit2 и т. д. И для файла проекта, и файлов модулей можно дать и своё, более осмысленное название. Договоримся, что каждый новый проект сразу будем сохранять, и я не буду дополнительно напоминать об этом. Теперь выполните команду File — «Close All. Попробуйте открыть файл модуля командой Open. Модуль откроется вместе с нашей формой, мы сможем нормально работать, но кнопка запуска программы окажется неактивной. Поэтому сначала нужно открывать файл проекта. Для этого, кстати, есть специальная команда меню File — «Open Project. Ctrl F11, и соответствующая кнопка, прямо над кнопкой запуска. Теперь в окне выбора будет только один файл, файл проекта. При его открытии будет окрыт и первый модуль и первая форма проекта. Для нашего проекта этого достаточно. Если в проекте несколько форм, их модули и формы открываем командой Open. Можно открывать модули других проектов, например, для копирования кода. Теперь я предлагаю сделать следующее. Надеюсь, ваш жёсткий диск разбит хотя бы на две части, для размещения системы, и для документов. Поскольку систему приходится иногда переустанавливать, под проекты Delphi целесообразно отвести специальную папку на другом диске, например D: Проекты Delphi, и сохранять проекты туда, а в папку по умолчанию поставить на неё ярлык для быстрого перехода. Теперь, в случае переустановки системы, Вам не придётся дополнительно сохранять Ваши наработки
1.2 Компоненты Delphi
В пустой форме смысла нет. Наполнить её содержанием помогут компоненты
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).
Delphi присваивает функции обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект (компонент), для которого создана процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы — Form1, имя командной кнопки — Button, а имя события — Click.
В окне редактора кода между словами begin и end можно печатать инструкции, реализующие функцию обработки события.
Рисунок 6.
Есть соответствующие справочники, где рассматриваются все компоненты Delphi. Но самые важные свойства компонентов Delphi и работу с ними мы рассмотрим.
Рассмотрим компоненты отображения текста. Создайте новый проект (File — «New — «Application), и перенесите на форму компоненты Label, Edit, Memo и Button. Выбирая одним щелчком мышки или клавишей Tab нужный компонент, в Инспекторе Объектов мы можем получить доступ к его свойствам.
Прежде всего, у визуальных компонентов есть свойства, определяющие их положение на Форме:
· Ширина компонента, Width
· Высота компонента, Height
· Расстояние до левого края формы, Left
· Расстояние до верхнего края формы, Top
Эти свойства получают значения в тот момент, когда компоненты попадают на форму. Примерно разместив на форме компоненты с помощью мышки, в Инспекторе объектов устанавливаем их точные размеры и координаты. В дальнейшем мы увидим, что их можно устанавливать и программно!
За визуальное представление отвечают для компонентов:
· Label и Button — свойство Caption,
· Edit — свойство Text,
· Memo — свойство Lines.
При «конструировании» формы в Инспекторе объектов можно придать свойствам компонентов любые значения. Случайно можно задать такие размеры или координаты, что компонент «исчезнет» — сделается невидимым или спрячется за другими компонентами. Его легко найти с помощью того же Инспектора объектов — все компоненты, находящиеся на Форме, перечислены в его выпадающем списке. Достаточно выбрать нужный компонент, и он или его контуры (если он заслонён" другими компонентами) появятся на Форме, а в Инспекторе объектов — его свойства.
Теперь «запустите» программу (зелёная стрелка или F9). Видим, что компоненты «работают». Label является надписью (меткой) на форме, Button — кнопка нажимается, Edit — строка ввода и Memo — многострочный текстовый редактор позволяет вводить текст.
2. Разработка программного приложения
2.1 Разработка приложения
Автоматизация документооборота при работе приемной комиссии.
Создание и ведение базы данных по абитуриентам.
Подготовка информации к заседанию приемной комиссии (протоколы допуска к экзаменам, протоколы на зачисление).
Основное назначения разрабатываемой системы состоит в повышении эффективности проведения анализа абитуриентов поступающих в ВУЗ во время проведения вступительных экзаменов.
Диаграмма последовательностей
Сдано положительно 3 экзамена
Рисунок 7 — Процесс зачисления абитуриентов
т.е. разработки детального учёта абитуриентов, привязка требуемых данных во временном интервале, а также осуществления оперативного получения информации по текущему состоянию дел, контроля и положения по учёту абитуриентов.
Содержание работы
1. Анализ существующих и проектирование новых технологических процессов приемной комиссии
2. Разработка пользовательского интерфейса
3. Разработка программного обеспечения
Требования к системе
Модуль должен соответствовать следующим требованиям:
Для хранения информационной базы системы должна использоваться СУБД
Delphi 7.0, установленная в приемной комиссии.
В качестве инструментального средства разработки должно использоваться Delphi 7.0
Состав и структура системы
Система должна состоять из единой базы данных, хранящейся на сервере БД
функции при вводе редактировании и просмотре информации в БД.
Целью разработки программного продукта, выполненного в результате данной курсовой работы является автоматизация процесса поступления абитуриентов в ЧГПУ:
обеспечение учёта абитуриентов подавших документы, обеспечение учёта результатов сдачи вступительных экзаменов и ЕГЭ, а также предоставление возможности сбора информации о претендентах на зачисление бюджет.
Необходимость разработки поставленной задачи обусловлена необходимостью обработки больших массивов данных, что связано со снижением производительности труда сотрудников.
В курсовой работе решается задача построения БД для Челябинского Государственного Педагогического Университета. ВУЗу необходимо найти наиболее эффективный способ ведения информации о поступлении абитуриентов, о зачисленных и переведённых абитуриентах. ЧГПУ необходимо решать задачи регистрации данных об абитуриентах, получения данных о проведении экзаменов, анализа информации о зачисленных абитуриентах и др.
Разработанная система позволила решать следующие задачи:
формирование списка всех абитуриентов,
поиск по заданным критериям,
получения данных о проведении экзаменов
анализа результатов о зачисленных абитуриентах
Для получения подробных сведений об абитуриенте используется анкета абитуриента, которая заполняется строго по документам, содержит сведения об образовании абитуриента, основных сведений, результатов ЕГЭ и др.
2.2 Описание работы системы «Абитуриент»
Итак, абитуриент, руководствуясь инструкцией по заполнению, вносит данные в анкету. Представитель приёмной комиссии передаёт заранее проверенную на правильность заполнения анкету на ВЦ, где происходит непосредственное занесение данных на машинные носители. Приёмная комиссия также собирает информацию о дальнейших действиях абитуриента, который может забрать или переложить документы, а ВЦ в свою очередь заносит эти изменения и результаты экзаменов в базу данных.
Процесс зачисления абитуриентов происходит следующим образом:
Зачисление в университет проводится по утвержденному приемной комиссией графику, который вывешивается на видном месте. Явка абитуриентов на зачисление обязательна.
Зачисление в университет проводится по количеству баллов, набранных
поступающими на всех вступительных экзаменах.
2.3 Описание программы
При Щелчке по Кнопке ЗАПУСК ПРОГРАММЫ приложение отобразит главное окно программы по учету сведений об абитуриентах. На картинке снизу, можно увидеть, как выглядит окно приложения при первом его запуске, если файл с базой данных об абитуриентах существует (неважно есть данные или же он пустой) AbiturientsBase. Dat. По умолчанию приложение будет проверять его наличие, там же где и находится само.
Если файл с базой данных удален, перемещен или просто не существует, то вы увидите данное предупреждение и приложение автоматически создаст новую, чистую базу данных.
При щелчке по кнопке «НОВАЯ ЗАПИСЬ» появится окно вот такого вида. Тут необходимо заполнить все поля и щелкнуть по кнопке СОХРАНИТЬ. Для быстрой очистки введённых данных служит кнопка ОЧИСТИТЬ. При щелчке по кнопке ЗАКРЫТЬ произойдет обычное закрытие данного окна, без какой либо записи в базу данных. Данные для удобства их отображения и по своему значению группируются по трем основным разделам ОСНОВНЫЕ СВЕДЕНИЯ, СВЕДЕНИЯ ПО ОБРАЗОВАНИЮ и ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ.
Проверку на вводимые значения происходит лишь в компонентах содержащих данные об оценках на внутренних экзаменах и о данных ЕГЭ, при выходе за диапазон [0.100] компонент автоматически выставит крайнее значение либо 0 либо 100, остальные значения будут записаны в неизмененном виде (Так требовали исходные условия поставленной задачи).
Приложение автоматически сортирует абитуриентов по сумме оценок по трем предметам, подсчитывая сумму их баллов и ранжируя их в порядке убывания суммы (от Большего к меньшему, используя так называемый алгоритм Пузырька, абитуриенты с наибольшим числом баллов, как бы всплывают, как пузырьки в начало списка). Выбор факультета (специальность) происходит при смене переключателя сверху формы, остальные абитуриенты не подходящие по фильтру в таблице не отображаются.
При щелчке мышкой по какой либо записи становится активной кнопка РЕДАКТИРОВАТЬ.
При щелчке по данной кнопке откроется форма для редактирования, аналогичная форме для ввода нового абитуриента. Выбранную запись можно изменить и произвести сохранение нажав во вновь открывшемся окне по кнопке СОХРАНИТЬ, в таком случае приложение выдаст следующее сообщение
При закрытии любого окна приложения происходит автоматическое обновление всех визуальных компонентов и данных, для своевременного контроля за производимыми изменениями, без дополнительных действий со стороны пользователя. Остается последняя кнопка в главном окне Приложения по учету поступающих абитуриентов, это кнопка ОЧИСТИТЬ БАЗУ. При щелчке по кнопке ОЧИСТИТЬ БАЗУ, произойдет уничтожение существующей базы данных и создание новой, чистой базы без каких либо записей. Приложение известит об этом пользователя данным сообщением.
Для автоматического контроля за абитуриентами набравшими необходимый проходной балл, для поступления на Бюджетную основу в программе предусмотрен фильтр, в котором пользователь может установить требуемый проходной уровень или границу (сумму балов). Абитуриенты набравшие в сумме больше баллов, чем введено в фильтре отображаются в таблице зеленым цветом, остальные строки остаются без изменения.
С самом низу главной формы приложения, жирной строкой отображается
общее количество абитуриентов поступающих на данную специальность, а также в том числе и тех, кто сдал экзамены (удовлетворяет установленному проходному баллу) на Бюджетную основу.
Если для поступления не важны результаты ЕГЭ или же наоборот Важны результаты ЕГЭ и не важны внутренние экзамены, сдаваемые в институте письменно, то необходимо просто установить значение проходного балла в данном компоненте (при необходимости в нескольких компонентах) «0» или же наоборот ввести требуемый проходной балл в оба компонента.
Выделенная строка в таблице подсвечивается светло-сиреневым цветом, что визуально облегчает выбор необходимой записи в базе данных.
Заключение
В результате выполненной работы разработана модель базы данных для автоматизации учёта абитуриентов. Данная модель предназначена для реализации в СУБД Delphi 7.0. Созданная нами система отличается:
формируется список претендентов на зачисление после первого экзамена;
Создается экзаменационная ведомость по специальностям;
Предусмотрено редактирование;
Два вида поиска: по критериям и упрощенный для выдачи оперативной
информации;
Сетевой вариант;
Не критичность системы компьютеров;
Система «Разработка сведений об абитуриентах» является начальным этапом для создания общей системы ВУЗа.
В отличии от других систем, данная система направлена на повышение качества информации по организации работы ПК, и на уменьшение времени, требуемого для обработки информации.
При работе с программой осуществляется своевременная выдача информации.
Разработанная система готова к сдаче в эксплуатацию.
Список источников
1. ГОСТ 19.505−79. Установление общих требований к содержанию документации процесса разработки, МНИЦ, ГНИИ ИТТ, ВНИИ, стандарт принят взамен ГОСТ 19.501−79 июль 2004 г.
2. ГОСТ Р ИСО 9127: 1994. Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.
3. ГОСТ Р ИСО/МЭК 12 119−2000. Информационная технология. Пакеты программ. Требование к качеству и тестирование.
4. ГОСТ Р ИСО/МЭК 14 764−2002. Информационная технология. Сопровождение программных средств.
5. ГОСТ Р ИСО/МЭК 9126: 1993. Информационная технология. Оценка программной продукции. Характеристики качества и руководство по их применению.
6. ГОСТ Р ИСО/МЭК ТО 9294: 1993. Информационная технология. Руководство по управлению документированием программного обеспечения.
7. Архангельский А. Я. Программирование в Delphi 6. — М.: «БИНОМ», 2003. — 1118 с.: ил.
8. Архангельский А. Я. Решение задач в Delphi 6. — М.: ЗАО Изд-во «БИНОМ», 2001.
9. Власов А. Я. Справочник по программированию на Object Pascal. — Киев, 2001.
10. Выпускная квалификационная работа: Методические рекомендации по выполнению и защите / Под ред.Н. С. Сельской, В. Н. Фокиной — М.: СГИ, 2002. — 75 с.
Приложения
Приложение А
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Buttons, Math, Spin, jpeg, ExtCtrls;
const
{Названия факультетов и их количество}
ASpecialnost: array [0.5] of string= ('50 501 «Профессиональное обучение (информатика, вычислительная техника, и компьютерные технологии) ',
'50 501 «Профессиональное обучение (дизайн)» ',
'50 706 «Психология и педагогика» ',
'50 708 «Педагогика и методика начального образования» ',
'40 101 «Социальная работа» ',
'80 507 «Менеджмент организации» ');
APredmetName: array [0.5,0.2] of string= (('Математика','Русский язык','Информатика'),
('Математика','Русский язык','Физика'),
('Математика','Русский язык','Биология'),
('Математика','Русский язык','Обществознание'),
('Русский язык','История','Обществознание'),
('Математика','Русский язык','Обществознание'));
AObrazovanie: array [0.2] of string= ('Неполное среднее (9 классов) ','Полное среднее (11 классов) ','Средне специальное (ПТУ, Техникум) ');
type
TAbiturientRecord=record {Задаем тип хранимых данных в файле: Фамилия, Имя, Отчество, Пол, Дата рождения, Специальность, Оценка 1, Оценка 2, Оценка 3. }
AName: string [30];
AFamilia: string [30];
AOtchestvo: string [30];
ASex: Byte;
ABirsday: TDate;
ASpecialnost: Byte;
AScore1: Byte;
AScore2: Byte;
AScore3: Byte;
AScoreEGE1: Byte;
AScoreEGE2: Byte;
AScoreEGE3: Byte;
AAdres: string [100];
ATelefon: string [30];
AAttestat: Byte;
end;
TForm1 = class (TForm)
StringGrid1: TStringGrid;
btn1: TBitBtn;
btn2: TBitBtn;
btn5: TBitBtn;
cbb1: TComboBox;
lbl1: TLabel;
lbl2: TLabel;
BitBtn1: TBitBtn;
lbl3: TLabel;
Label1: TLabel;
SpinEdit3: TSpinEdit;
SpinEdit1: TSpinEdit;
bvl1: TBevel;
img1: TImage;
procedure btn5Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure cbb1Change (Sender: TObject);
procedure btn1Click (Sender: TObject);
procedure btn2Click (Sender: TObject);
procedure StringGrid1MouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn1Click (Sender: TObject);
procedure StringGrid1DrawCell (Sender: TObject; ACol, ARow: Integer;
ARect: TRect; State: TGridDrawState);
procedure SpinEdit1Change (Sender: TObject);
procedure SpinEdit3Change (Sender: TObject);
private
{ Private declarations }
public
procedure SortTable; {сортировка данных по сумме баллов}
procedure RefreshTable; {обновление данных в таблице}
{ Public declarations }
end;
var
Form1: TForm1;
F: file of TAbiturientRecord; {Глобальная файловая переменная, для работы с базой данных абитуриентов}
FRecord: TAbiturientRecord; {Глобальная переменная, которая хранит текущую запись из списка абитуриентов}
FFileName: String; {Глобальная переменная, содержит путь к файлу и его имя}
FilePosition: Integer; {Глобальная переменная, содержит индекс записи}
FTableRecords: array of TAbiturientRecord; {Массив в котором будет храниться все записи нашей базы данных абитуриентов для быстрой обработки хи программой}
FRecordIndexs: array of Integer; {Массив в котором будет храниться порядковый номер записи в файле}
FTempIndexs: array of TPoint; {Массив в котором будет храниться порядковый номер записей отображаемых в таблице}
FEdit: Boolean; {Флаг (переменная) отвечающий за редактирование либо новвый ввод записи в базу данных об абитуриентах}
SelectROW: Integer; {переменная в которой будет храниться выделенный индекс строки таблицы}
implementation
uses Unit2, Unit3;
{$R *. dfm}
procedure TForm1. SortTable; {Сортировка данных по Сумме баллов методом пузырька, абитуриенты с наиболее высокой суммой постепенно перемещаются в начало таблицы}
var i, TempIndex: Integer;
a: Boolean;
Temp: TAbiturientRecord;
begin
if Length (FTableRecords) >1 then
begin
a: =True;
while a do
begin
a: =False;
for i: =0 to Length (FTableRecords) — 2 do
if (FTableRecords [i]. AScore1+FTableRecords [i]. AScore2+FTableRecords [i]. AScore3) < (FTableRecords [i+1]. AScore1+FTableRecords [i+1]. AScore2+FTableRecords [i+1]. AScore3) then
begin
Temp: =FTableRecords [i];
FTableRecords [i]: =FTableRecords [i+1];
FTableRecords [i+1]: =Temp;
TempIndex: =FRecordIndexs [i];
FRecordIndexs [i]: =FRecordIndexs [i+1];
FRecordIndexs [i+1]: =TempIndex;
a: =True;
end;
end;
end;
end;
procedure TForm1. RefreshTable; {Обновление информации в таблице абитуриентов, прописываем название столбцов в таблице и заполняем строки с учётом выбранного факультета}
var i, a, b, c: Integer;
begin
btn2. Enabled: =FEdit;
SortTable;
SetLength (FTempIndexs, 0);
StringGrid1. Cells [0,0]: ='№ п/п';
StringGrid1. Cells [1,0]: ='Фио абитуриента';
StringGrid1. Cells [2,0]: ='Пол';
StringGrid1. Cells [3,0]: ='Дата рождения';
StringGrid1. Cells [4,0]: ='Специальность (факультет) ';
StringGrid1. Cells [5,0]: =APredmetName [cbb1. ItemIndex, 0];
StringGrid1. Cells [6,0]: =APredmetName [cbb1. ItemIndex, 1];
StringGrid1. Cells [7,0]: =APredmetName [cbb1. ItemIndex, 2];
StringGrid1. Cells [8,0]: ='Сумма балов';
StringGrid1. Cells [9,0]: ='ЕГЭ '+APredmetName [cbb1. ItemIndex, 0];
StringGrid1. Cells [10,0]: ='ЕГЭ '+APredmetName [cbb1. ItemIndex, 1];
StringGrid1. Cells [11,0]: ='ЕГЭ '+APredmetName [cbb1. ItemIndex, 2];
StringGrid1. Cells [12,0]: ='Телефон';
StringGrid1. Cells [13,0]: ='Домашний адрес';
StringGrid1. Cells [14,0]: ='Имеющееся образование';
a: =0;
c: =0;
if Length (FTableRecords) >0 then
for i: =0 to Length (FTableRecords) — 1 do
if FTableRecords [i]. ASpecialnost=cbb1. ItemIndex then
begin
inc (a);
StringGrid1. Cells [0,a]: =IntToStr (a) +'. ';
StringGrid1. Cells [1,a]: =FTableRecords [i]. AName+' '+FTableRecords [i]. AFamilia+' '+FTableRecords [i]. AOtchestvo;
if FTableRecords [i]. ASex=0 then StringGrid1. Cells [2,a]: ='М' else StringGrid1. Cells [2,a]: ='Ж';
StringGrid1. Cells [3,a]: =DateToStr (FTableRecords [i]. ABirsday);
StringGrid1. Cells [4,a]: =ASpecialnost [FTableRecords [i]. ASpecialnost];
StringGrid1. Cells [5,a]: =IntToStr (FTableRecords [i]. AScore1);
StringGrid1. Cells [6,a]: =IntToStr (FTableRecords [i]. AScore2);
StringGrid1. Cells [7,a]: =IntToStr (FTableRecords [i]. AScore3);
StringGrid1. Cells [8,a]: =FloatToStr (FTableRecords [i]. AScore1+FTableRecords [i]. AScore2+FTableRecords [i]. AScore3);
StringGrid1. Cells [9,a]: =IntToStr (FTableRecords [i]. AScoreEGE1);
StringGrid1. Cells [10,a]: =IntToStr (FTableRecords [i]. AScoreEGE2);
StringGrid1. Cells [11,a]: =IntToStr (FTableRecords [i]. AScoreEGE3);
StringGrid1. Cells [12,a]: =FTableRecords [i]. ATelefon;
StringGrid1. Cells [13,a]: =FTableRecords [i]. AAdres;
StringGrid1. Cells [14,a]: =AObrazovanie [FTableRecords [i]. AAttestat];
if ((FTableRecords [i]. AScore1+FTableRecords [i]. AScore2+FTableRecords [i]. AScore3) >=SpinEdit3. Value) and ((FTableRecords [i]. AScoreEGE1+FTableRecords [i]. AScoreEGE2+FTableRecords [i]. AScoreEGE3) >=SpinEdit1. Value) then
b: =1 else b: =0;
if b=1 then inc (c);
SetLength (FTempIndexs, a);
FTempIndexs [a-1]: =Point (i, b);
end;
if a=0 then
begin
StringGrid1. RowCount: =2;
for i: =0 to StringGrid1. ColCount-1 do StringGrid1. Cells [i, 1]: ='';
end else StringGrid1. RowCount: =a+1;
lbl2. Caption: ='Всего абитуриентов поступающих на выбранный факультет: '+Inttostr (a) +' из них прошли на бюджет: '+Inttostr (c);
end;
procedure TForm1. btn5Click (Sender: TObject);
begin
Close; {Закрываем приложение}
end;
procedure TForm1. FormCreate (Sender: TObject); {Действия при создании формы}
var i: Integer;
begin
form3: =Tform3. Create (Self); {Создаем и отображаем титульный экран с названием курсовой работы}
Form3. Showmodal;
Form3. Free;
{устанавливаем значения глобальным переменным}
FFileName: ='AbiturientsBase. dat';
AssignFile (F, FFileName);
FilePosition: =-1;
FEdit: =False;
SelectROW: =-1;
if not FileExists (FFileName) then {Проверяем существование файла с базой данных}
begin
{Выводим предупреждение и создаем чистую базу}
Showmessage ('Файла с базой данных абитуриентов не существует, Будет создана чистая база');
try
Rewrite (F, FFileName);
except
CloseFile (F);
Halt; {В случае ошибки создания закрываем файл и прекращаем работу программы}
end;
end else Reset (F);
SetLength (FTableRecords, FileSize (F)); {Создание Массива который будет хранить все записи об абитуриентах}
SetLength (FRecordIndexs, FileSize (F)); {Создание Массива который будет порядковый номер записи в файле об абитуриентах}
if Length (FTableRecords) >0 then {Заполнение массива данными из файла с базой данных}
begin
for i: =0 to Length (FTableRecords) — 1 do
begin
Seek (F, i);
read (F, FTableRecords [i]);
FRecordIndexs [i]: =i;
end;
end;
CloseFile (F);
for i: =0 to 5 do cbb1. Items. Add (ASpecialnost [i]); {Заполняем список факультетов}
cbb1. ItemIndex: =0; {выбираем первый факультет из списка}
RefreshTable; {Заполняем таблицу}
end;
procedure TForm1. cbb1Change (Sender: TObject);
begin
RefreshTable; {Обновляем таблицу с учетом вновь выбранного факультета}
end;
procedure TForm1. btn1Click (Sender: TObject);
begin
FEdit: =False; {Меняем атрибут редактирования записи в состояние Неактивен, т. к мы будем обавлять новую запись, а не редактировать старую}
Form2: =TForm2. Create (Self); {Создаем форму для добавления новой записи}
form2. Showmodal; {показываем форму}
Form2. Free; {уничтожаем после её закрытия}
RefreshTable; {Обновляем таблицу с абитуриентами}
end;
procedure TForm1. btn2Click (Sender: TObject);
begin
if FilePosition<>-1 then {если индекс редактируемой записи существует, то меняем атрибут редактирования на активно и создаем форму редактирования и показываем её,
а потом уничтожаем и обновляем таблицу абитуриентов}
begin
FEdit: =True;
Form2: =TForm2. Create (Self);
form2. Showmodal;
Form2. Free;
RefreshTable;
end;
FilePosition: =-1;
FEdit: =False;
end;
procedure TForm1. StringGrid1MouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var a, b: Integer;
begin
SelectROW: =-1;
StringGrid1. MouseToCell (X, Y, A, B);
if (B>0) and (Length (FTempIndexs) >B-1) then {получаем индекс строки в таблице, если он существует, то присваеваем его глобальной переменной FilePosition, делаем доступной кнопку редактировать}
begin
FilePosition: =FTempIndexs [B-1]. X;
btn2. Enabled: =True;
SelectROW: =B;
end else btn2. Enabled: =False;
StringGrid1. Repaint;
end;
procedure TForm1. BitBtn1Click (Sender: TObject);
begin
if FileExists (FFileName) then {Проверяем существование файла с базой данных}
begin
Erase (f); {удаляем файл, потом создаем новый, закрываем файл и запускаем процедуру FormCreate (Self), которая происходит при запуске программы, чтобы обновить все переменные и тд}
Rewrite (f);
CloseFile (f);
FormCreate (Self);
ShowMessage ('База абитуриентов очищена! '); {выводим сообщение, что база очищена }
end;
end;
procedure TForm1. StringGrid1DrawCell (Sender: TObject; ACol, ARow: Integer; ARect: TRect; State: TGridDrawState); {отрисовываем таблицу вручную, чтобы}
begin
case ARow of {в зависимости от номера строки выбираем нужный нам цвет, серый, белый}
0: StringGrid1. Canvas. Brush. Color: =clBtnFace;
else StringGrid1. Canvas. Brush. Color: =clWhite;
end;
if (Length (FTempIndexs) >=ARow) and (ARow>0) then {отрисовываем поступивших на Бюджет, зеленым}
if FTempIndexs [ARow-1]. Y=1 then StringGrid1. Canvas. Brush. Color: =$ 0000BF00;
if (ARow=SelectROW) and (SelectROW>0) then StringGrid1. Canvas. Brush. Color: =$ 00FFCCCC;
StringGrid1. Canvas. FillRect (Arect); {закрашиваем ячейку таблицы в ранее определенный цвет}
if (Acol=0) or (Acol=1) or (Acol=4) or (Acol=13) or (Acol=14) then {выводим текст в таблицу, в зависимости от столбца либо по центру либо слева на право}
StringGrid1. 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
StringGrid1. 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]);
if Arow=0 then StringGrid1. Canvas. Brush. Color: =clblack
else StringGrid1. Canvas. Brush. Color: =clGray;
StringGrid1. Canvas. FrameRect (Rect (ARect. Left-1,ARect. Top-1,ARect. Right+1,ARect. Bottom+1)); {очерчиваем прямоугольник, каждой ячейки}
end;
procedure TForm1. SpinEdit1Change (Sender: TObject);
begin
if SpinEdit1. Text<>'' then
RefreshTable; {Обновляем таблицу с учетом проходного бала по ЕГЭ}
end;
procedure TForm1. SpinEdit3Change (Sender: TObject);
begin
if SpinEdit3. Text<>'' then
RefreshTable; {Обновляем таблицу с учетом проходного бала по внутренним экзаменам}
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Spin, ComCtrls;
type
TForm2 = class (TForm)
btn5: TBitBtn;
btn1: TBitBtn;
btn2: TBitBtn;
pgc1: TPageControl;
ts1: TTabSheet;
ts2: TTabSheet;
ts3: TTabSheet;
lbl1: TLabel;
lbl2: TLabel;
bvl2: TBevel;
bvl3: TBevel;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
dtp1: TDateTimePicker;
cbb1: TComboBox;
lbl3: TLabel;
Label2: TLabel;
Label3: TLabel;
se1: TSpinEdit;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
bvl1: TBevel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
SpinEdit5: TSpinEdit;
Bevel1: TBevel;
Label1: TLabel;
ComboBox1: TComboBox;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
Bevel2: TBevel;
ComboBox2: TComboBox;
Label7: TLabel;
Bevel3: TBevel;
procedure btn5Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure btn2Click (Sender: TObject);
procedure btn1Click (Sender: TObject);
private
procedure LoadRecord;
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses
Unit1;
{$R *. dfm}
procedure TForm2. LoadRecord; {Отображение в визуальные компоненты редактируемой записи}
begin
FRecord: =FTableRecords [FilePosition];
LabeledEdit1. Text: =FRecord. AName;
LabeledEdit2. Text: =FRecord. AFamilia;
LabeledEdit3. Text: =FRecord. AOtchestvo;
dtp1. DateTime: =FRecord. ABirsday;
ComboBox1. ItemIndex: =FRecord. ASpecialnost;
cbb1. ItemIndex: =FRecord. ASex;
se1. Value: =FRecord. AScore1;
SpinEdit1. Value: =FRecord. AScore2;
SpinEdit2. Value: =FRecord. AScore3;
SpinEdit3. Value: =FRecord. AScoreEGE1;
SpinEdit4. Value: =FRecord. AScoreEGE2;
SpinEdit5. Value: =FRecord. AScoreEGE3;
LabeledEdit4. Text: =FRecord. AAdres;
LabeledEdit5. Text: =FRecord. ATelefon;
ComboBox2. ItemIndex: =FRecord. AAttestat;
end;
procedure TForm2. btn5Click (Sender: TObject);
begin
Form2. Close; {закрыть форму}
end;
procedure TForm2. FormCreate (Sender: TObject); {действия при создании формы}
var i: Integer;
begin
for i: =0 to 5 do ComboBox1. Items. Add (ASpecialnost [i]); {Заполняем список факультетов}
ComboBox1. ItemIndex: =0;
Label3. Caption: =APredmetName [cbb1. ItemIndex, 0] +' письменно';
Label2. Caption: =APredmetName [cbb1. ItemIndex, 1] +' письменно';
lbl3. Caption: =APredmetName [cbb1. ItemIndex, 2] +' письменно';
Label4. Caption: ='Оценка ЕГЭ ('+APredmetName [cbb1. ItemIndex, 0] +') ';
Label5. Caption: ='Оценка ЕГЭ ('+APredmetName [cbb1. ItemIndex, 1] +') ';
Label6. Caption: ='Оценка ЕГЭ ('+APredmetName [cbb1. ItemIndex, 2] +') ';
if FEdit then LoadRecord else btn2Click (nil); {если редактируем запись, то отображаем редактируемые данные в визуалььные компоненты, если просто добавляем нового абитуриента, то очищаем компоненты и готовимся к вводу данных}
end;
procedure TForm2. btn2Click (Sender: TObject); {очищаем визуальные компоненты от введённых данных}
begin
LabeledEdit1. Text: ='';
LabeledEdit2. Text: ='';
LabeledEdit3. Text: ='';
dtp1. DateTime: =Date;
ComboBox1. ItemIndex: =0;
cbb1. ItemIndex: =0;
se1. Value: =0;
SpinEdit1. Value: =0;
SpinEdit2. Value: =0;
SpinEdit3. Value: =0;
SpinEdit4. Value: =0;
SpinEdit5. Value: =0;
LabeledEdit4. Text: ='';
LabeledEdit5. Text: ='';
ComboBox2. ItemIndex: =0;
end;
procedure TForm2. btn1Click (Sender: TObject);
begin
{Заполняем временную переменную введенными данными из компонентов}
FRecord. AName: =LabeledEdit1. Text;
FRecord. AFamilia: =LabeledEdit2. Text;
FRecord. AOtchestvo: =LabeledEdit3. Text;
FRecord. ABirsday: =dtp1. DateTime;
FRecord. ASpecialnost: =ComboBox1. ItemIndex;
FRecord. ASex: =cbb1. ItemIndex;
FRecord. AScore1: =se1. Value;
FRecord. AScore2: =SpinEdit1. Value;
FRecord. AScore3: =SpinEdit2. Value;
FRecord. AScoreEGE1: =SpinEdit3. Value;
FRecord. AScoreEGE2: =SpinEdit4. Value;
FRecord. AScoreEGE3: =SpinEdit5. Value;
FRecord. AAdres: =LabeledEdit4. Text;
FRecord. ATelefon: =LabeledEdit5. Text;
FRecord. AAttestat: =ComboBox2. ItemIndex;
if Fedit then {если Атрибут редактирования активен то записываем данные в файл с учетом ранее запомненного индекса из таблицы абитуриентов}
begin
Reset (F);
Seek (F, FRecordIndexs [FilePosition]);
Write (F, FRecord);
CloseFile (F);
FTableRecords [FilePosition]: =FRecord;
ShowMessage ('Изменения записаны! ');
Exit; {прерываем процедуру, т. к при редактироании записи остальное не имеет смысла}
end;
{если создаем новую запись, добавляем абитуриента, то расширяем массив данных в памяти и запоминаем его индекс}
SetLength (FTableRecords, Length (FTableRecords) +1);
FTableRecords [Length (FTableRecords) — 1]: =FRecord;
SetLength (FRecordIndexs, Length (FRecordIndexs) +1);
FRecordIndexs [Length (FTableRecords) — 1]: =Length (FTableRecords) — 1;
if FileExists (FFileName) then {Проверяем существование файла с базой данных, если существует, то записываем данные в конец файла}
begin
Reset (F);
Seek (F, FileSize (f));
Write (F, FRecord);
CloseFile (F);
end else
begin
ShowMessage ('Файл с базой данных не найден, запись не произведена! '); {если база с абитуриентами не найдена, то просто выходим и оповещаем пользователя}
Exit;
end;
btn2Click (nil); {очищаем компоненты для нового ввода данных}
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls;
type
TForm3 = class (TForm)
btn1: TBitBtn;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl5: TLabel;
lbl6: TLabel;
img1: TImage;
procedure btn1Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *. dfm}
procedure TForm3. btn1Click (Sender: TObject);
begin
Close;
end;
end.