Информационно-справочная система 'Обработка результатов сдачи сессии'

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

Информационно-справочная система 'Обработка результатов сдачи сессии'

Аннотация

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

Документ содержит описание входных и выходных данных и может быть использован в качестве инструкции по применению рассматриваемого программного средства.

Программа написана на языке программирования Object Pascal в среде "Delphi 6.0".

Содержание

Введение

1. Анализ предметной области и постановка задачи

1.1 Описание предметной области

1.2 Постановка задачи

2. Разработка структуры данных

3. Описание логической структуры

3.1 Обоснование выбора программных средств

3.2 Описание используемых методов и обоснование принятых решений

3.3 Описание алгоритма сортировки

3.4 Описание алгоритма поиска

4. Экспериментальная часть

5. Описание входных данных

6. Описание выходных данных

Заключение

Список использованных источников

Приложение

Введение

Компьютер быстро вошел в нашу жизнь. Еще несколько лет назад было редкостью увидеть какой-нибудь персональный компьютер - они были, но были очень дорогие, и даже не каждая фирма могла иметь у себя в офисе компьютер. Теперь в каждом втором доме есть компьютер, который уже глубоко вошел в жизнь человека.

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

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

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

Именно справочные системы решают все поставленные задачи по обеспечению потребителей нормативной информацией. Справочные системы имеют целый ряд уникальных достоинств и возможностей.

В первую очередь это:

возможность компактно хранить большие объемы информации;

возможность структурировано отображать хранимую информацию;

возможность быстрого поиска нужных документов или даже их фрагментов в огромных массивах данных.

язык программирование справочная система

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

Информационно-справочная система "Обработка результатов сдачи сессии" предназначена для поиска информации о студентах. Поиск осуществляется на основе запроса составляемого пользователем. Результатом поиска является список студентов, удовлетворяющих запросу, с подробной и достоверной информацией о каждом из них.

Разработанная система позволяет пользователям экономить время по сравнению с обычным поиском в ведомостях.

1. Анализ предметной области и постановка задачи

 

.1 Описание предметной области


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

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

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

1.2 Постановка задачи


Требуется разработать информационно-справочную систему, способную обрабатывать данные о студентах, а также вносить корректировки. Эта система должна содержать следующую информацию:

фамилия студента;

его порядковый номер по журналу;

результаты сдачи сессии;

признак участия или неучастия в научно-исследовательской работе.

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

Система должна:

) обладать возможностью просмотра хранящейся информации о студентах.

Информация о студентах должна выводиться в таблицу, которая должна содержать поля:

для вывода фамилии студента;

для вывода его порядкового номера по журналу;

для вывода результатов сдачи сессии;

для вывода признака участия в НИР;

) обладать возможностью сортировать данные о студентах по различным столбцам. Сортировка может быть выполнена сразу, а можно производить по шагам. Сортировка необходима:

для отображения информации в более удобном виде;

для реализации поиска в информационно-справочной системе.

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

идентификатор;

фамилия.

Поиск осуществляется по следующим критериям:

отличники;

хорошисты;

имеют тройки;

имеют двойки.

) обладать возможностью добавления, редактирования и удаления хранящейся информации;

) предоставлять пользователю возможность корректировать ранее введенные данные;

) обладать удобным и понятным интерфейсом;

) реагировать на действия пользователя с задержкой не более 1 секунды.

2. Разработка структуры данных


В соответствии с поставленной задачей вся информация, которую предоставляет данная система, может храниться в виде трех файлов, а именно:

)        файл, содержащий информацию о студентах.

При открытии таблицы "Студенты" не требуется вводить данные вручную. Необходимо нажать Файл, Загрузить данные и в таблице появится информация о студентах, а именно: его идентификатор, фамилия, номер по журналу, участие в НИР.

)        файл, содержащий информацию о результатах.

)        файл, содержащий информацию об оценках.

Принцип заполнения таблицы "Оценки" будет аналогичным. Информация, которая содержится в ней, будет следующей: идентификатор записи, идентификатор студента, идентификатор предмета, оценка.

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

Для хранения информации о фамилии студента подойдет строка длиной в двадцать символов (в соответствии с вариантом задания информация об имени и отчестве студента нас не интересует), так как эта длина позволяет уместить информацию о фамилии с наибольшей экономией памяти [1].

Так как порядковый номер студента по журналу - целое число, которое не превышает максимальное значение типа Integer [1], то в разрабатываемой системе поле "Порядковый номер по журналу" выбирается типа Integer.

Определение признака участия студента в НИР подразумевает два исхода: ложь, истина. Поэтому поле для признака участия выбрано типа Boolean.

Структура записи данных о студентах приведена в таблице 1.

 

Таблица 1 - Структура записи данных о студентах.

Наименование поля

Наименование сокращенное

Тип

Длина

Идентификатор Студента

ID

Integer

4

Фамилия студента

FSTU

String

20

Порядковый номер по журналу

NUMBER

Integer

4

Признак участия в НИР

YCHASTIE

Boolean

1


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

Для хранения информации о наименовании предмета подойдет строка длиной в двадцать символов, так как эта длина позволяет уместить информацию о наименовании с наибольшей экономией памяти.

Для хранения информации о проценте сдачи выберем строку длиной в 3 символа, так как эта длина позволяет уместить информацию о наименовании с наибольшей экономией памяти (процент сдачи находится в пределе от 1 до 100 + символ (%)).

Структура записи данных о результатах приведена в таблице 2.

 

Таблица 2 - Структура записи данных о результатах.

Наименование поля

Наименование сокращенное

Тип

Длина

Идентификатор предмета

ID

Integer

4

Предмет

NAME

String

20

Процент сдачи

RESULT

Integer

3


Поле "Идентификатор записи" обеспечивает связь между файлами. Количество записей в файлах ограничено максимальным значением типа Integer, именно поэтому поле "Идентификатор записи" выбран типа Integer. Это означает, что для обеспечения однозначной связи между файлами не потребуется код, выходящий за пределы типа Integer. Для хранения информации об идентификаторе предмета, идентификаторе студента и оценке также используем тип Integer. Структура записи данных об оценках приведена в таблице 3.

Таблица 3 - Структура записи данных об оценках.

Наименование поля

Наименование сокращенное

Тип

Длина

Идентификатор записи

ID

Integer

4

Идентификатор студента

StudentID

Integer

4

Идентификатор предмета

ResultsID

Integer

4

Оценки

Integer

2

 

Каждый файл содержит в себе определенную информацию. Для информационно-справочных систем характерно то, что вся информация в ней взаимосвязана. Система, разработанная в данной работе, не является исключением. Структура связей между файлами, представлена на рисунке 1.

Рисунок 1 - Структура связей между файлами.

3. Описание логической структуры


3.1 Обоснование выбора программных средств


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

Для реализации "такой-то программы" была выбрана система программирования Delphi версии 6.- это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочее.

Прежде всего Delphi предназначен для профессиональных разработчиков, желающих очень быстро разрабатывать приложения в архитектуре клиент-сервер. Delphi производит небольшие по размерам (до 15-30 Кбайт) высокоэффективные исполняемые модули (. exe и. dll). С другой стороны небольшие по размерам и быстро исполняемые модули означают, что требования к клиентским рабочим местам существенно снижаются - это имеет немаловажное значение и для конечных пользователей.

Преимущества Delphi по сравнению с аналогичными программными продуктами.

быстрота разработки приложения;

высокая производительность разработанного приложения;

низкие требования разработанного приложения к ресурсам

компьютера;

наращиваемость за счет встраивания новых компонент и

инструментов в среду Delphi;

возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

удачная проработка иерархии объектов.

Система программирования Delphi рассчитана на программирование различных приложений и предоставляет большое количество компонентов для этого [2].

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

 

3.2 Описание используемых методов и обоснование принятых решений


При разработке данной системы использовалась стратегия структурного программирования "сверху вниз". Это модульное пошаговое нисходящее проектирование алгоритма и структур данных. Оно включает в себя составляющие:

1. Нисходящая разработка.

Это подход к разработке программного обеспечения, при котором оно разбивается на программные модули, образующие многоуровневую структуру. Каждый модуль - это короткая программа, решающая отдельную задачу. В процессе разработки модули нижележащих уровней заменяются заглушками. Таким образом, в любой момент разработки есть действующий вариант программного обеспечения [3].

Основной принцип нисходящей разработки заключен в следующем: сначала проектируют модуль основной программы, далее подпрограммы, вызываемые основным модулем, далее подпрограммы, вызываемые этими подпрограммами и т.д., двигаясь от блоков высшего уровня к блокам низшего [3].

2. Структурное программирование.

Этот метод программирования, предусматривающий создание понятных и простых программных модулей на требуемом языке.

 

3.3 Описание алгоритма сортировки


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

Метод просеивания работает до тех пор, пока не надо выполнять перестановку. Сравниваемая запись с меньшим ключом перемещается насколько это возможно к началу списка. Если ее ключ меньше, чем у предшественника, то выполняется обмен и начинается очередное сравнение.

Рассмотрим этот метод на примере. Осуществим сортировку студентов по столбцу Идентификатор. Имеем следующие данные: 1221 2212 3434 3245 5657 6565 2235 6576 8756 2345

Первоначально сравниваются 1-й и 2-й элементы. Их порядок правильный, поэтому они не меняются местами.

Затем сравниваются 2-й и 3-й элементы. Их порядок правильный, ничего не происходит.

Далее 3-й элемент сравнивается с 4-м. Их порядок неправильный, происходит перестановка. Данные будут иметь вид: 1221 2212 3245 3434 5657 6565 2235 6576 8756 2345

Теперь необходимо сравнить 3-й элемент сначала со 2-м, потом с 1-м. В данном примере их порядок правильный, поэтому перестановок не будет. Если порядок неправильный, происходит перестановка.

По такому же принципу происходит сортировка остальных элементов. В итоге получим желаемый результат: 1221 2212 2235 2345 3245 3434 5657 6565 6576 8756

Для ускорения работы алгоритма при каждом возврате регистрируется факт наличия или отсутствия обмена. Возврат, в результате которого не было произведено ни одного обмена, заканчивает просмотр [4]. Структурограмма алгоритма сортировки представлена на рисунке 2.

Рисунок 2 - Просеивание ("челночная" сортировка).

Сортировка осуществляется после добавления новой записи в файл или после редактирования существующей.

3.4 Описание алгоритма поиска


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

Бинарный (двоичный, дихотомический, половинного деления) поиск относится к наиболее эффективным методам поиска в упорядоченной последовательности записей. Идея этого метода состоит в том, чтобы искать ключ А в интервале, крайними точками которого являются два указателя - Q и P, соответствующие нижней и верхней границам поиска. Вначале А сравнивается со средним ключом в последовательности. Результат сравнения позволит определить, в какой половине последовательности продолжить поиск, применив к ней ту же процедуру, и т.д. После определенного числа сравнений либо ключ будет найден, либо будет установлено его отсутствие [4]. Структурограмма алгоритм бинарного поиска представлена на рисунке 3.

Рисунок 3 - Бинарный поиск.

4. Экспериментальная часть


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

При нажатии на кнопку "Добавить" перед пользователем откроется окно с пустыми полями, которые необходимо заполнить (рисунок 7).

При нажатии на кнопку "Изменить" откроется окно "Изменение данных". В нем пользователь может редактировать необходимую информацию (рисунок 8).

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

Рисунок 4 - Основное окно программы.

 

Рисунок 5 - Таблица "Результаты".

 

Рисунок 6 - Таблица "Оценки".

 

Рисунок 7 - Окно "Добавление данных".

 

Рисунок 8 - Изменение данных.

 

Рисунок 9 - Запрос на подтверждение удаления.

5. Описание входных данных


Разработанная программа предусматривает следующие режимы запуска:

·        Запуск программы в первый раз. В этом режиме используемые для хранения информации файлы создадутся и будут пустыми.

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

Файл студентов состоит из записей, которые включают в себя следующие поля: идентификатор студента, фамилия студента, номер по журналу, участие в НИР. Файл результатов является совокупностью записей, которые состоят из следующих полей: идентификатор, предмет, процент сдачи. Запись в файле оценок состоит из следующих полей: идентификатор записи, идентификатор студента, идентификатор предмета, оценка.

К входным данным относится аргумент поиска, передаваемый в процедуру поиска. В конкретном примере это оценка.

 

6. Описание выходных данных


Для данного программного продукта выходными данными является таблица с информацией о фамилии студента и его идентификаторе.

Выходные данные могут быть сгруппированы по следующим критериям:

отличники;

хорошисты;

имеют двойки.

Заключение


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

добавление записи;

редактирование записи;

удаление записи;

сортировка данных по различным столбцам;

поиск информации по оценкам.

Программа имеет простой и удобный интерфейс. Для использования разработанной системы не требуется специальная подготовка.

Возможно усовершенствование разработанной информационно-справочной системы.

Список использованных источников


1.       Фаронов В.В. Система программирования в DELPHI. СПб.: БХВ-Петербург, 2004.888 c.

2.       Милов А.В. Основы программирования в задачах и примерах: Учебный курс. Харьков: Фолио, 2003.397 c.

.        Белов В.В., Чистякова В.И. Программирование в Delphi: Учебное пособие для вузов. М.: Горячая линия - Телеком, 2009.240с.

.        Маркин А.В. Технология программирования: Методические указания к лабораторным работам / Рязан. гос. радиотехн. акад. Рязань, 2005.48 c.

Приложение


unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Menus, Grids, TabNotBk, XPMan, ExtCtrls;= (TypeString, TypeInteger);= class (TStringGrid)MoveRow (FromIndex, ToIndex: Longint);;= record: integer;: string [20];: integer;: boolean;;= record: integer;: string [20];: string [3];;= record: integer;: integer;: integer;: integer;;= class (TForm): TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TPanel;: TGroupBox;: TButton;: TButton;: TButton;: TRadioGroup;: TTabbedNotebook;: TStringGrid;: TStringGrid;: TStringGrid;: TGroupBox;: TButton;: TButton;: TStringGrid;: TRadioGroup;: TGroupBox;: TButton;: TXPManifest;Button4Click (Sender: TObject);N3Click (Sender: TObject);FormCreate (Sender: TObject);N2Click (Sender: TObject);N5Click (Sender: TObject);Button15Click (Sender: TObject);Button14Click (Sender: TObject);Button1Click (Sender: TObject);StringGrid1MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);StringGrid2MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);StringGrid3MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);Button3Click (Sender: TObject);StringGrid4MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);Button2Click (Sender: TObject);BinaryFind (aStart: integer; aVal: string; aCol: integer;: TStringGrid): integer;SortDelayString (tabl: TStringGrid; aCol: integer; SorType: TType);

{ Private declarations }SortString (tabl: TStringGrid; aCol: integer; SorType: TType);;: TForm1;: file of TStudent;: file of TResults;: file of TMark;: integer = 1;: integer = 0;: integer = 0;;

{$R *. dfm}TStringGridX. MoveRow (FromIndex, ToIndex: Integer);;;TForm1. Button14Click (Sender: TObject);: integer;. Caption: = 'Изменение данных';TabbedNotebook1. PageIndex of

: begin: = StringGrid1. Row;form6 do. EditLabel. Caption: = 'Идентификатор';. EditLabel. Caption: = 'Фамилия';. EditLabel. Caption: = 'Номер по журналу';. EditLabel. Caption: = 'Участие в НИР';. Text: = StringGrid1. Cells [0, RowIndex];. Text: = StringGrid1. Cells [1, RowIndex];. Text: = StringGrid1. Cells [2, RowIndex];. Text: = StringGrid1. Cells [3, RowIndex];. Visible: = true;Form6. ShowModal = mrOk thenStringGrid1, Form6 do[0, RowIndex]: = LabeledEdit1. Text;[1, RowIndex]: = LabeledEdit2. Text;[2, RowIndex]: = LabeledEdit3. Text;[3, RowIndex]: = LabeledEdit4. Text;;;;

: begin: = StringGrid2. Row;form6 do. EditLabel. Caption: = 'Идентификатор';. EditLabel. Caption: = 'Предмет';. EditLabel. Caption: = 'Процент сдачи';. Visible: = false;. Text: = StringGrid2. Cells [0, RowIndex];. Text: = StringGrid2. Cells [1, RowIndex];. Text: = StringGrid2. Cells [2, RowIndex];. Visible: = false;;Form6. ShowModal = mrOk thenStringGrid2, Form6 do[0, RowIndex]: = LabeledEdit1. Text;[1, RowIndex]: = LabeledEdit2. Text;[2, RowIndex]: = LabeledEdit3. Text;;;

: begin: = StringGrid3. Row;form6 do. EditLabel. Caption: = 'Идентификатор записи';. EditLabel. Caption: = 'Идентификатор студента';. EditLabel. Caption: = 'Идентификатор предмета';. EditLabel. Caption: = 'Оценка';. Visible: = true;. Text: = StringGrid3. Cells [0, RowIndex];. Text: = StringGrid3. Cells [1, RowIndex];. Text: = StringGrid3. Cells [2, RowIndex];. Text: = StringGrid3. Cells [3, RowIndex];;Form6. ShowModal = mrOk thenStringGrid3, Form6 do[0, RowIndex]: = LabeledEdit1. Text;[1, RowIndex]: = LabeledEdit2. Text;[2, RowIndex]: = LabeledEdit3. Text;[3, RowIndex]: = LabeledEdit4. Text;;;;;TForm1. Button15Click (Sender: TObject);, j: integer;. Caption: = 'Добавление данных';. LabeledEdit1. Text: = '';. LabeledEdit2. Text: = '';. LabeledEdit3. Text: = '';. LabeledEdit4. Text: = '';TabbedNotebook1. PageIndex of

: beginform6 do. EditLabel. Caption: = 'Идентификатор';. EditLabel. Caption: = 'Фамилия';. EditLabel. Caption: = 'Номер по журналу';. EditLabel. Caption: = 'Участие в НИР';. Visible: = true;;: = 0;StringGrid1. Cells [0, i] <> '' do(i);i > StringGrid1. RowCount then. RowCount: = StringGrid1. RowCount + 1;: = StringGrid1. RowCount;;;;Form6. ShowModal = mrOk thenStringGrid1, Form6 do[0, i]: = LabeledEdit1. Text;[1, i]: = LabeledEdit2. Text;[2, i]: = LabeledEdit3. Text;[3, i]: = LabeledEdit4. Text;;;

: begin. LabeledEdit1. EditLabel. Caption: = 'Идентификатор';. LabeledEdit2. EditLabel. Caption: = 'Предмет';. LabeledEdit3. EditLabel. Caption: = 'Процент сдачи';. LabeledEdit4. Visible: = false;: = 0;StringGrid2. Cells [0, i] <> '' do(i);i > StringGrid2. RowCount then. RowCount: = StringGrid2. RowCount + 1;: = StringGrid2. RowCount;;;;Form6. ShowModal = mrOk thenStringGrid2, Form6 do[0, i]: = LabeledEdit1. Text;[1, i]: = LabeledEdit2. Text;[2, i]: = LabeledEdit3. Text;;;

: begin. LabeledEdit1. EditLabel. Caption: = 'Идентификатор записи';. LabeledEdit2. EditLabel. Caption: = 'Идентификатор студента';. LabeledEdit3. EditLabel. Caption: = 'Идентификатор предмета';. LabeledEdit4. EditLabel. Caption: = 'Оценка';. LabeledEdit4. Visible: = true;: = 0;StringGrid3. Cells [0, i] <> '' do(i);i > StringGrid3. RowCount then. RowCount: = StringGrid3. RowCount + 1;: = StringGrid3. RowCount;;;;Form6. ShowModal = mrOk thenStringGrid3, Form6 do[0, i]: = LabeledEdit1. Text;[1, i]: = LabeledEdit2. Text;[2, i]: = LabeledEdit3. Text;[3, i]: = LabeledEdit4. Text;;;;;GridDeleteRow (RowNumber: Integer; Grid: TstringGrid);: Integer;. Row: = RowNumber;(Grid. Row = Grid. RowCount - 1) then

{ On the last row}. RowCount: = Grid. RowCount - 1

{ Not the last row}i: = RowNumber to Grid. RowCount - 1 do. Rows [i]: = Grid. Rows [i + 1];. RowCount: = Grid. RowCount - 1;;;TForm1. Button1Click (Sender: TObject);: TStrings;: array of TStrings;, j: integer;: boolean;: = false;TabbedNotebook1. PageIndex of

: if StringGrid1. Cells [0, 1] = '' then: = true;

: if StringGrid2. Cells [0, 1] = '' then: = true;

: if StringGrid3. Cells [0, 1] = '' then: = true;;flag then('Все записи удалены', mtInformation, [mbOk], 0)(MessageDlg ('Удалить запись? ', mtConfirmation, [mbOk, mbCancel], 0) = mrOk) thenTabbedNotebook1. PageIndex of

: GridDeleteRow (StringGrid1. Row, StringGrid1);

: GridDeleteRow (StringGrid2. Row, StringGrid3);

: GridDeleteRow (StringGrid3. Row, StringGrid3);;;TForm1. SortDelayString;, n, i: integer;: integer;: boolean;: integer;: array [1.50] of string;

// FindCount: = 0;: = 0;I: = 1 to tabl. RowCount doTabl. Cells [aCol, i] <> '' then(n);: = n;

// for j: = 1 to n - 1 do: = cIndex;: = j;: = 0;SorType of: res: = (Tabl. Cells [aCol, i] > Tabl. Cells [aCol, i + 1]);: res: = (strtoint (Tabl. Cells [aCol, i]) > strtoint (Tabl. Cells [aCol, i + 1]));;res then(Tabl). MoveRow (i, i+1);: = 1;(i);(FindCount, 1);;(flag = 0) or (i = 0);;('Неверные данные! ', mtWarning, [mbOk], 0);;(cIndex);cIndex > cCount - 1 then: = 1;FindCount > 0 then('Сортировка закончена! Шагов: ' + inttostr (FindCount), mtWarning, [mbOk], 0);;;TForm1. Button2Click (Sender: TObject);: integer;: = RadioGroup1. ItemIndex;TabbedNotebook1. PageIndex of

: beginARow in [1, 3] then(StringGrid1, aRow, TypeString);Arow in [0, 2] then(StringGrid1, aRow, TypeInteger);;

: beginArow = 1 then(StringGrid2, aRow, TypeString);Arow in [0, 2] then(StringGrid2, aRow, TypeInteger);;

: begin(StringGrid3, aRow, TypeInteger);;

: begin(ARow = 0) then(StringGrid4, aRow, TypeInteger);(ARow = 1) then(StringGrid4, aRow, TypeString);;;;TForm1. Button3Click (Sender: TObject);: integer;: = RadioGroup1. ItemIndex;TabbedNotebook1. PageIndex of

: beginARow in [1, 3] then(StringGrid1, aRow, TypeString);Arow in [0, 2] then(StringGrid1, aRow, TypeInteger);;

: beginArow = 1 then(StringGrid2, aRow, TypeString);Arow in [0, 2] then(StringGrid2, aRow, TypeInteger);;

: begin(StringGrid3, aRow, TypeInteger);;

: begin(ARow = 0) then(StringGrid3, aRow, TypeInteger);(ARow = 1) then(StringGrid3, aRow, TypeString);;;;TForm1. Button4Click (Sender: TObject);: string;, k, old, cnt, i: integer;: string;i: = 1 to stringgrid4. rowcount do. Rows [i]. Clear;

// StringGrid4. Cells [0, 1]: = '';

// StringGrid4. Cells [1, 1]: = '';: = 0;: = 0;: = 0;: = IntToStr (5 - RadioGroup2. ItemIndex);: = 1;r >= 0 do: = BinaryFind (k, s, 3, StringGrid3);: = r;r >= 0 then: = StringGrid3. Cells [1, r];. Rows [cnt]. Add (stId);: = BinaryFind (1, stId, 0, StringGrid1);r >= 0 then. Rows [cnt]. Append (StringGrid1. Cells [1, r]). Rows [cnt]. Append ('Фамилия отсутствует');(cnt, 1);: = 0;;;;TForm1. FormCreate (Sender: TObject);StringGrid1 do[0, 0]: = 'Идентификатор';[1, 0]: = 'Фамилия';[2, 0]: = 'Номер по журналу';[3, 0]: = 'Участие в НИР';;StringGrid2 do[0, 0]: = 'Идентификатор';[1, 0]: = 'Предмет';[2, 0]: = 'Процент сдачи';;StringGrid3 do[0, 0]: = 'Идентификатор записи';[1, 0]: = 'Идентификатор студента';[2, 0]: = 'Идентификатор предмета';[3, 0]: = 'Оценка';;StringGrid4 do[0, 0]: = 'Идентификатор';[1, 0]: = 'Фамилия';;;TForm1. N2Click (Sender: TObject);, j: integer;: TStudent;: TResults;: TMark;TabbedNotebook1. PageIndex of

: begin(StudentFile, 'students. std');(StudentFile);: = 0;: = 1; repeatStudentRecord, StringGrid1 do(StudentFile, StudentRecord);[0, j]: = IntToStr (ID);[1, j]: = FSTU;[2, j]: = IntToStr (NUMBER);YCHASTIE then[3, j]: = 'Да'[3, j]: = 'Нет';(j);;Eof (StudentFile);(StudentFile);;

: begin(ResultsFile, 'results. rsl');(ResultsFile);: = 0;: = 1;ResultRecord, StringGrid2 do(ResultsFile, ResultRecord);[0, j]: = IntToStr (ID);[1, j]: = ResultRecord. NAME;[2, j]: = RESULT;(j);;Eof (ResultsFile);(ResultsFile);;

: begin(MarksFile, 'mark. mrk');(MarksFile);: = 0;: = 1;MarkRecord, StringGrid3 do(MarksFile, MarkRecord);[0, j]: = IntToStr (ID);[1, j]: = IntToStr (StudentID);[2, j]: = IntToStr (ResultsID);[3, j]: = IntToStr (Mark);(j);;Eof (MarksFile);(MarksFile);;;('Неверное содержимое файла! ', mtWarning, [mbOk], 0);;;TForm1. N3Click (Sender: TObject);: integer;: TStudent;: TResults;: TMark;TabbedNotebook1. PageIndex of

: begin(StudentFile, 'students. std');(StudentFile);J: = 1 to StringGrid1. RowCount - 1 doStringGrid1. Cells [0, j] <> '' thenStudentRecord, StringGrid1 do: = StrToIntDef (Cells [0, j], - 1);: = Cells [1, j];: = StrToIntDef (Cells [2, j], - 1);: = ( (Cells [3, j]) = 'Да') or ( (Cells [3, j]) = 'ДА') or

( (Cells [3, j]) = 'да');(StudentFile, StudentRecord);;(StudentFile);;

: begin(ResultsFile, 'results. rsl');(ResultsFile);J: = 1 to StringGrid2. RowCount - 1 doStringGrid2. Cells [0, j] <> '' thenResultRecord, StringGrid2 do: = StrToIntDef (Cells [0, j], - 1);. NAME: = Cells [1, j];: = Cells [2, j];(ResultsFile, ResultRecord);;(ResultsFile);;

: begin(MarksFile, 'mark. mrk');(MarksFile);J: = 1 to StringGrid1. RowCount - 1 doStringGrid3. Cells [0, j] <> '' thenMarkRecord, StringGrid3 do: = StrToIntDef (Cells [0, j], - 1);: = StrToIntDef (Cells [1, j], - 1);: = StrToIntDef (Cells [2, j], - 1);: = StrToIntDef (Cells [3, j], - 1);(MarksFile, MarkRecord);;(MarksFile);;;('Неверные данные! ', mtWarning, [mbOk], 0);;;TForm1. N5Click (Sender: TObject);;TForm1. SortString;, n, i: integer;: integer;: boolean;: array [1.50] of string;: = 0;: = 0;I: = 1 to tabl. RowCount doTabl. Cells [aCol, i] <> '' then(n);j: = 1 to n - 1 do: = j;: = 0;SorType of: res: = (Tabl. Cells [aCol, i] > Tabl. Cells [aCol, i + 1]);: res: = (strtoint (Tabl. Cells [aCol, i]) > strtoint (Tabl. Cells [aCol, i + 1]));;res then(Tabl). MoveRow (i, i+1);: = 1;(i);(FindCount, 1);;(flag = 0) or (i = 0);;FindCount > 0 then('Сортировка закончена! Шагов: ' + inttostr (FindCount), mtWarning, [mbOk], 0);('Неверные данные! ', mtWarning, [mbOk], 0);;: = 0;;TForm1. StringGrid1MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);: TGridCoord;, Acol: integer;: = StringGrid1. MouseCoord (x, y);: = Coord. Y;: = Coord. X;(Acol >= 0) and (ARow >= 0) then(ACol = 0) thenArow in [1, 3] then(StringGrid1, aRow, TypeString);Arow in [0, 2] then(StringGrid1, aRow, TypeInteger);;;;TForm1. StringGrid2MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);: TGridCoord;, Acol: integer;: = StringGrid2. MouseCoord (x, y);: = Coord. Y;: = Coord. X;(Acol >= 0) and (ARow >= 0) then(ACol = 0) thenArow = 1 then(StringGrid2, aRow, TypeString);Arow in [0, 2] then(StringGrid2, aRow, TypeInteger);;;;TForm1. StringGrid3MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);: TGridCoord;, Acol: integer;: = StringGrid3. MouseCoord (x, y);: = Coord. Y;: = Coord. X;(Acol >= 0) and (ARow >= 0) then(ACol = 0) then(StringGrid3, aRow, TypeInteger);;;TForm1. StringGrid4MouseUp (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);: TGridCoord;, Acol: integer;: = StringGrid4. MouseCoord (x, y);: = Coord. Y;: = Coord. X;(Acol >= 0) and (ARow >= 0) then(ARow = 0) then(StringGrid4, aRow, TypeInteger);(ARow = 1) then(StringGrid4, aRow, TypeString);;;TForm1. BinaryFind (aStart: integer; aVal: string; aCol: integer; Tabl: TStringGrid): integer;, p, i, flag: integer;: string;: = aStart + 1; // начало диапазона: = 0; // конец диапазона;: = - 1;i: = 1 to tabl. RowCount - 1 doTabl. Cells [0, i] <> '' then(p);

// q: = 1; // Start;

{ if (p = 0) then; }p < q then: = 1;: = - 1;: = trunc ( (q + p) /2);: = Tabl. Cells [aCol, i];(aVal < Tabl. Cells [aCol, i]) then: = i - 1if True then(aVal > Tabl. Cells [aCol, i]) then: = q + 1: = 1;: = i;;;flag = 1;;.

Похожие работы на - Информационно-справочная система 'Обработка результатов сдачи сессии'

 

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