Автоматизация рабочего места сотрудника учебного отдела образовательного учреждения

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

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык русский
Дата добавления 26.11.2014
Размер файла 934,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

АННОТАЦИЯ

Квалификационная практика (стажировка) пройдена студентом IV курса, группы ПР-061 КемГППК, Левановым Александром в Кемеровском Государственном Профессионально-Педагогическом Колледже. Стажировка является составной частью основной образовательной программы по специальности «Программное обеспечение вычислительной техника и автоматизированных систем» среднего профессионального образования.

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

При ее прохождении были поставлены и достигнуты следующие цели:

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

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

- теоретическая подготовка к итоговой государственной аттестации.

- сбор материалов и исходных данных для разработки, анализа и экономической интерпретации решений профессиональных задач в период подготовки к ИГА.

СОДЕРЖАНИЕ

1. Техническое задание

1.1 Введение

1.2 Основание для разработки

1.3 Назначение разработки

1.4 Требования к программному изделию

1.5 Технико-экономические показатели

1.6 Стадии и этапы разработки

2. Основная часть

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

2.1.1 Характеристика задачи

2.1.2 Входная информация

2.1.3 Выходная информация

2.2 Выбор и обоснование метода решения

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

2.3.1 Система классификации и кодирования

2.3.2 Входная информация

2.3.3 Выходная информация

3. Рабочая часть

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

3.1.1 Общие сведения

3.1.2 Функциональное назначение

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

3.1.4 Используемые технические средства

3.1.5 Вызов и загрузка

3.1.6 Входные данные

3.1.7 Выходные данные

3.2 Программа и методика испытаний

3.2.1 Объект испытаний

3.2.2 Цель испытаний

3.2.3 Требования, подлежащие проверке

3.2.4 Средства и порядок испытаний

3.2.5 Методы испытаний

4. Анализ решения задачи

Заключение

Литература

Приложение А Входная информация

Приложение Б Выходная информация

Приложение В Блок-схема алгоритма решения

Приложение Г Текст программы

1. техническое задание

1.1 Введение

Наименование программного продукта - «Загруженность аудиторий КемГППК». Данная программа может применяться в качестве вспомогательного программного обеспечения, устанавливаемого в учебном отделе колледжа в целях автоматизации его деятельности. Системой программирования для данного продукта была выбрана Borland Delphi 7. А так же встроенный в Borland Delphi 7 редактор баз данных Database Desktop.

1.2 Основание для разработки

Основанием для данной разработки служит индивидуальное задание, выданное руководителем квалификационной практики и утвержденное ГОУ СПО «Кемеровский Государственный Профессионально-Педагогический Колледж».

1.3 Назначение разработки

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

1.4 Требования к программному изделию

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

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

- ввод и редактирование изменений к расписанию занятий;

- заполнения сведений о группах, учителях, дисциплинах и аудиториях;

- просмотр и печать расписания занятий и изменений к нему;

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

А также отвечать следующим требованиям к надежности:

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

- необходимо прослеживать состояние дополнительных устройств (принтер) и расходных материалов: аварийные ситуации должны быть предвидены и сопровождаться сообщениями об ошибке, при этом функционирование программы должно продолжаться без сбоев;

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

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

- устройства визуального отображения данных - монитор, типа SVGA с разрешающей способностью не ниже 1280х1024 пикселей;

- IBM-совместимый компьютер класса Pentium или лучше, обладающий тактовой частотой процессора не ниже 300 MHz;

- оперативная память с объёмом не менее 320 MB;

- размер свободного дискового пространства на винчестере около 10 MB.

- наличие манипулятора - мыши или тачпада;

- устройство ввода данных и управления - клавиатура;

- устройство вывода данных на печать - принтер;

Минимальное требование к программной совместимости предполагают наличие следующего предустановленного программного обеспечения:

- операционная система семейства Microsoft Windows XP;

- среда программирования Delphi 7 c BDE;

- текстовый процессор Microsoft Word;

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

1.5 Технико-экономические показатели

Для данной задачи технико-экономические показатели не требуются.

1.6 Стадии и этапы разработки

В рамках стажировки предусматривается разделение работы на 5 основных этапов.

Первый этап заключается в составлении технического задания.

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

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

Четвертый этап заключается в отладке и тестировании программного продукта.

Пятый этап - составление программной и эксплуатационной документации.

2. основная часть

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

2.1.1 Характеристика задачи

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

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

2.1.2 Входная информация

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

2.1.3 Выходная информация

Выходная информация является результатом обработки входных данных, поэтому частично её можно видеть прямо в окне работающей программы (Рисунок 2.1). К такому роду выходной информации можно отнести, например, список свободных кабинетов, динамически формирующийся в результате поиска по заданным параметрам. Другим видом выходной информацией являются отчеты: «Основное расписание» и «Изменения на день» (Приложение Б).

Рисунок 2.1 - Выходная информация

2.2 Выбор и обоснование метода решения

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

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

По модели представления данных БД классифицируются:

- картотеки,

- иерархические,

- сетевые,

- реляционные,

- объектно-ориентированные.

В настоящее время наибольшее распространение получили реляционные базы данных. Картотеками пользовались до появления электронных баз данных. Сетевые и иерархические базы данных считаются устаревшими, хотя некоторое возрождение получили иерархические базы данных в связи с появлением и распространением XML. Объектно-ориентированные БД пока никак не стандартизированы и не получили широкого распространения.

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

программный обеспечение колледж автоматизация

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

2.3.1 Система классификации и кодирования

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

1 - Главный корпус;

2 - Мастерские;

3 - Спорткомплекс;

4 - Общежитие.

Вторая - номер этажа (1, 2, 3, 4), третья и четвертая - номер кабинета. Пример: 1209 - Главный корпус, 2 этаж, кабинет номер 9.

2.3.2 Входная информация

Объектами входной информации являются: ГРУППЫ, ПРЕПОДАВАТЕЛИ, ДИСЦИПЛИНЫ, АУДИТОРИИ, УЧ_РАСПИСАНИЕ. Каждый из этих объектов описывается соответствующими атрибутами:

ГРУППЫ (№ группы, Количество студентов, Смена);

ПРЕПОДАВАТЕЛИ (ФИО преподавателя);

ДИСЦИПЛИНЫ (Наименование дисциплины);

АУДИТОРИИ (№ аудитории, Наличие компьютеров, Количество мест);

УЧ_РАСПИСАНИЕ (№ группы, День недели, № пары, Четность недели, № кабинета, Наименование дисциплины, № подгруппы, ФИО преподавателя).

2.3.3 Выходная информация

Объектом выходной информации является ИЗМЕНЕНИЯ (Дата, № группы, № пары, № подгруппы, Наименование дисциплины, ФИО преподавателя, № кабинета), а также вышеописанный объект УЧ_РАСПИСАНИЕ.

3. рабочая часть

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

3.1.1 Общие сведения

Наименование программного продукта - «Загруженность аудиторий КемГППК». Данная программа может применяться только на территории Кемеровского Государственного Профессионально-Педагогического Колледжа, т.к. написана под существующую на данный момент структуру учебного процесса. Она рассчитана на применение сотрудниками учебного отдела.

3.1.2 Функциональное назначение

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

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

Данная программа имеет простую структуру: состоит из основного модуля «MAIN» и модуля реализующего пункт меню «О программе» (Рисунок 3.1).

Размещено на http://www.allbest.ru/

Рисунок 3.1 - Структура программы

Основной модуль содержит следующие процедуры:

Процедура FormActivate производит начальную инициализацию всех подключаемых к программе таблиц. Для этого она динамически создает псевдоним для базы данных Paradox, хранящейся в папке Tables.

Процедура FormCreate задает содержание заголовков объектов формы.

Процедура DataChange рассчитывает признак чётности недели по выбранной дате, а также показывает изменения к расписанию на эту дату.

Процедура ControlChange выводит на экран расписание занятий для выбранной учебной группы.

Процедура DeleteClick выполняет удаление строк в основном расписании либо в изменениях к нему.

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

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

Программа разрабатывалась в среде программирования Borland Delphi 7. Delphi -- язык программирования, который используется в одноимённой среде разработки. Название используется, начиная с 7 версии среды разработки, ранее это был Object Pascal, разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. Delphi -- результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а Delphi -- объектно-ориентированный язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов) в компилируемом коде.

3.1.4 Используемые технические средства

Программа предусматривает использование следующих технических средств: IBM-соместимый ПК, оснащенный дисплеем, клавиатурой и мышью; принтер; привод CD-ROM или порт USB, для установки программы.

3.1.5 Вызов и загрузка

Вызов и загрузка программы осуществляется путем запуска ярлыка «Учебный отдел» на рабочем столе операционной системы.

3.1.6 Входные данные

В качестве входной информации в программу заносятся следующие данные: учебное расписание - в файл базы данных «raspisanie.db» (Таблица 3.1), список аудиторий - «cabinets.db» (Таблица 3.2), список групп - «groups.db» (Таблица 3.3), список преподавателей - «prepods.db» (Таблица 3.4), список дисциплин - «disciplins.db» (Таблица 3.5).

Таблица 3.1 - Структура файла raspisanie.db

Поле

Тип

Размер

Содержание

Groupp

Символьное

10

№ группы

Dayy

Числовое

День недели

Pari

Числовое

Номер пары

Week

Числовое

Четность недели

Cabinet

Числовое

Номер кабинета

Disciplin

Символьное

50

Наименование дисциплины

Subgroup

Числовое

Номер подгруппы

Prepod

Символьное

25

ФИО преподавателя

Таблица 3.2 - Структура файла cabinets.db

Поле

Тип

Размер

Содержание

Cabinet

Числовое

№ кабинета

Computers

Числовое

Наличие компьютеров

Mesta

Числовое

Количество мест

Name

Символьное

50

Наименование кабинета

Zavcab

Символьное

25

Заведующий кабинетом

Таблица 3.3 - Структура файла groups.db

Поле

Тип

Размер

Содержание

Group

Символьное

10

№ группы

Students

Числовое

Количество студентов

Smena

Числовое

Номер смены

Таблица 3.4 - Структура файла prepods.db

Поле

Тип

Размер

Содержание

Prepod

Символьное

25

ФИО преподавателя

Таблица 3.5 - Структура файла disciplins.db

Поле

Тип

Размер

Содержание

Disciplin

Символьное

50

Наименование дисциплины

3.1.7 Выходные данные

Выходная информация, по которой формируются отчеты и заполняются экранные формы, хранится в файле базы данных «izmenenies.db» (Таблица 3.6).

Таблица 3.6 - Структура файла izmenenies.db

Поле

Тип

Размер

Содержание

Data

Дата

Дата

Grouppp

Символьный

10

№ группы

Pari

Числовой

Номер пары

Subgroup

Числовой

Номер подгруппы

Disciplin

Символьный

50

Наименование дисциплины

Prepod

Символьный

25

ФИО преподавателя

Cabinet

Числовой

Номер кабинета

3.2 Программа и методика испытаний

3.2.1 Объект испытаний

Объектом испытаний является программный продукт «Загруженность аудиторий КемГППК».

3.2.2 Цель испытаний

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

3.2.3 Требования, подлежащие проверке

Следующие требования подлежат проверке:

- надежность расчетов;

- стабильное функционирование программы;

- корректность отображения и вывода исходной информации.

3.2.4 Средства и порядок испытаний

В качестве средства для проверки ошибок ввода/вывода, динамических и ошибок времени выполнения использовался встроенный в среду разработки программ Delphi 7 отладчик. Логические ошибки устранялись вручную.

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

- поиск и отладка синтаксических ошибок и ошибок времени выполнения программы;

- корректность расчетов проводимых в программе;

- проверка входной информации;

- корректность отображения выходной информации;

- проверка программы на устойчивость к сбоям в работе.

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

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

Второй функцией в меню является «Изменения к расписанию». После перехода к данной функции, становится возможным редактирование списка изменений. Выбрав необходимую дату из календаря в верхнем левом углу, и заполнив необходимые поля в области «Добавить изменение» следует нажать кнопку «Добавить изменение». Что бы удалить одно из изменений следует мышью выбрать необходимое изменение из списка и нажать кнопку «Удалить изменение» или, нажав правой кнопкой мыши на соответствующее изменение в списке, выбрать из контекстного меню пункт «Удалить».

Выбор в меню «Файл» пункта «База данных» ведет к открытию формы со списками. Под каждым списком находятся соответствующие названию списка области с полями, заполнив которые, внесется соответствующая информация. Удалить информацию в любом списке можно нажав на кнопку «Удалить».

3.2.5 Методы испытаний

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

Каждая операция с числами или датами анализировалась, проверялась на правильность результата при различных условиях и значениях. Таким образом, были расставлены информирующие сообщения (Рисунок 3.2).

Корректность отображения выходной информации проводилась на тестирующих примерах, в которых выявлялись ошибки и неточности при отображении на экране (Рисунок 3.3).

Рисунок 3.2 - Сообщение

Рисунок 3.3 - Корректное отображение данных

4. Анализ решения задачи

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

- контроль поступающих в программу данных;

- контроль заполнения всех необходимых полей;

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

На стадии проектирования в соответствии с требованиями разработки, были проведены действия:

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

- для контроля заполнения полей для них были установлены соответствующие типы данных;

- были изучены возможности языка системы Borland Delphi 7 для легкости доступа к базам данных.

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

ЗАКЛЮЧЕНИЕ

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

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

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

ЛИТЕРАТУРА

Основная литература

1. Бондарев В.М., Рублинецкий В.И. Основы программирования. - Харьков: Фолио, Ростов-на-Дону: Феникс, 1997.

2. В.А. Благодатских, В.А. Волнин, К.Ф. Поскакалов «Стандартизация разработки программных средств». - М.: «Финансы и статистика», 2003.

3. Ваи-Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. - М.: Мир, 1981.

4. Вендров А.М. Практикум по проектированию программного обеспечения экономических информационных систем. - М.: Финансы и статистика, 2002.

5. Вирт Н. Алгоритмы и структуры данных / Пер. с англ. -- М.: Мир, 1989. - 360 с., ил.

6. Голицына О.Л., Максимов Н.В., Попов И.И. Базы Данных - М.: Форум Инфра-М, 2004.

7. Орлов В.В. Технологии разработки программных продуктов. - СПб.: Питер, 2003.

8. Партыка Т.Л., Попов Ц.И. Информационная безопасность. - М.: Форум Инфра-М, 2002.

9. Справочники и учебники по системам программирования.

Нормативная литература

1. ГОСТ 19.201-78- ЕСПД (Единая система программной документации).

2. ГОСТ 19.301-79- ЕСПД (Единая система программной документации).

ПРИЛОЖЕНИЕ А

Входная информация

Рисунок А.1 - Учебный график занятий

Рисунок А.2 - Состав педагогического коллектива

Рисунок А.3 - Наличие учебных аудиторий

ПРИЛОЖЕНИЕ Б

Выходная информация

Рисунок Б.1 - Отчет «Основное расписание»

Рисунок Б.2 - Отчет «Изменения на день»

ПРИЛОЖЕНИЕ В

Блок-схема программы

Размещено на http://www.allbest.ru/

Рисунок В.1 - Блок-схема программы

Размещено на http://www.allbest.ru/

Рисунок В.2 - Блок-схема «Основное расписание»

Размещено на http://www.allbest.ru/

Рисунок В.3 - Блок-схема «Изменения к расписанию»

ПРИЛОЖЕНИЕ Г

Текст программы

unit MAIN;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, DateUtils,

StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns, ComObj,

ActnList, ToolWin, ImgList, Grids, DB, DBTables, DBCtrls, Math, Variants,

Spin, IBServices, RpBase, RpSystem, RpDefine, RpRave, XPMan, About;

type

TMainForm = class(TForm)

Table1: TTable;

Table2: TTable;

Table3: TTable;

Table4: TTable;

Table5: TTable;

Table6: TTable;

Table7: TTable;

Table8: TTable;

Table9: TTable;

Table0: TTable;

Query1: TQuery;

DataSource1: TDataSource;

DataSource2: TDataSource;

DataSource3: TDataSource;

DataSource4: TDataSource;

Продолжение приложения Г

MainMenu: TMainMenu;

MainFile: TMenuItem;

FileNewItem: TMenuItem;

FileOpenItem: TMenuItem;

FileCloseItem: TMenuItem;

FileExitItem: TMenuItem;

OpenDialog: TOpenDialog;

FileSaveItem: TMenuItem;

FileSaveAsItem: TMenuItem;

Edit: TMenuItem;

CutItem: TMenuItem;

CopyItem: TMenuItem;

PasteItem: TMenuItem;

StatusBar: TStatusBar;

ActionList1: TActionList;

EditCut1: TEditCut;

EditCopy1: TEditCopy;

EditPaste1: TEditPaste;

FileNew1: TAction;

FileSave1: TAction;

FileExit1: TAction;

FileOpen1: TAction;

FileSaveAs1: TAction;

WindowCascade1: TWindowCascade;

WindowTileHorizontal1: TWindowTileHorizontal;

WindowArrangeAll1: TWindowArrange;

WindowMinimizeAll1: TWindowMinimizeAll;

HelpAbout1: TAction;

Продолжение приложения Г

FileClose1: TWindowClose;

WindowTileVertical1: TWindowTileVertical;

ImageList: TImageList;

N1: TMenuItem;

Delete: TMenuItem;

ToolBar: TToolBar;

ToolButton: TToolButton;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

RvSystem: TRvSystem;

RvProject1: TRvProject;

RvProject2: TRvProject;

PopupMenu: TPopupMenu;

XPManifest1: TXPManifest;

Help: TMenuItem;

SOS: TMenuItem;

About: TMenuItem;

N2: TMenuItem;

TabControl1: TTabControl;

Bevel1: TBevel;

RadioGroup1: TRadioGroup;

StaticText4: TStaticText;

StringGrid1: TStringGrid;

StaticText6: TStaticText;

StaticText5: TStaticText;

StaticText3: TStaticText;

StaticText2: TStaticText;

StaticText1: TStaticText;

RadioGroup2: TRadioGroup;

GroupBox1: TGroupBox;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

DBComboBox1: TDBComboBox;

DBComboBox2: TDBComboBox;

DBComboBox3: TDBComboBox;

Button2: TButton;

Button1: TButton;

Button6: TButton;

TabControl2: TTabControl;

Label7: TLabel;

Data: TDateTimePicker;

GroupBox2: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

DBComboBox4: TDBComboBox;

ComboBox4: TComboBox;

DBComboBox5: TDBComboBox;

Продолжение приложения Г

DBComboBox6: TDBComboBox;

Button3: TButton;

ComboBox5: TComboBox;

DBComboBox7: TDBComboBox;

Button4: TButton;

Button5: TButton;

GroupBox3: TGroupBox;

ListBox1: TListBox;

CheckBox2: TCheckBox;

GroupBox4: TGroupBox;

StringGrid2: TStringGrid;

StringGrid: TStringGrid;

TabControl3: TTabControl;

Bevel2: TBevel;

Bevel3: TBevel;

Bevel4: TBevel;

Bevel5: TBevel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label8: TLabel;

Label9: TLabel;

StringGrid6: TStringGrid;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

Продолжение приложения Г

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

BitBtn8: TBitBtn;

CheckBox1: TCheckBox;

LabeledEdit1: TLabeledEdit;

LabeledEdit2: TLabeledEdit;

LabeledEdit3: TLabeledEdit;

LabeledEdit4: TLabeledEdit;

LabeledEdit5: TLabeledEdit;

LabeledEdit6: TLabeledEdit;

RadioGroup3: TRadioGroup;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

StringGrid3: TStringGrid;

StringGrid4: TStringGrid;

StringGrid5: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure FileNew1Execute(Sender: TObject);

procedure FileOpen1Execute(Sender: TObject);

procedure FileExit1Execute(Sender: TObject);

procedure FileCloseItemClick(Sender: TObject);

procedure ControlChange(Sender: TObject);

procedure DataChange(Sender: TObject);

procedure DeleteClick(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

Продолжение приложения Г

procedure ComboBox5Change(Sender: TObject);

procedure DBComboBox6Change(Sender: TObject);

procedure DBComboBox7Change(Sender: TObject);

procedure DBComboBox4KeyPress(Sender: TObject; var Key: Char);

procedure DBComboBox5KeyPress(Sender: TObject; var Key: Char);

procedure DBComboBox6KeyPress(Sender: TObject; var Key: Char);

procedure DBComboBox7KeyPress(Sender: TObject; var Key: Char);

procedure ComboBox4KeyPress(Sender: TObject; var Key: Char);

procedure ComboBox5KeyPress(Sender: TObject; var Key: Char);

procedure StringGrid1Click(Sender: TObject);

procedure StringGrid3Click(Sender: TObject);

procedure StringGrid4Click(Sender: TObject);

procedure StringGrid5Click(Sender: TObject);

procedure StringGrid6Click(Sender: TObject);

procedure RadioGroup2Click(Sender: TObject);

procedure RadioGroup3Click(Sender: TObject);

procedure StringGridClick(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure BitBtn6Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

procedure BitBtn8Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

Продолжение приложения Г

procedure AboutClick(Sender: TObject);

procedure SOSClick(Sender: TObject);

procedure StringGridMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure StringGrid1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure StringGrid2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var i, j, r, c: integer;

MainForm: TMainForm; s,d,a,q,w,e: string; f,g: boolean;

Maincap: string = 'Основное расписание'; //заголовок главной формы

IzmCap: string = 'Изменения к расписанию'; //заголовок изменения

Perv: string = ' (Первая смена)';

Vtor: string = ' (Вторая смена)';

Chet: string = ' - чётная неделя';

Nech: string = ' - нечётная неделя';

implementation

{$R *.dfm}

procedure TMainForm.FileNew1Execute(Sender: TObject);

begin RadioGroup2.OnClick(Sender);

TabControl3.Visible:=false;

TabControl2.Visible:=false;

TabControl1.Visible:=true end;

procedure TMainForm.FileOpen1Execute(Sender: TObject);

begin DataChange(Sender);

TabControl3.Visible:=false;

TabControl1.Visible:=false;

TabControl2.Visible:=true end;

procedure TMainForm.FileExit1Execute(Sender: TObject);

bein Close end;

procedure TMainForm.FormActivate(Sender: TObject);

begin with Session do if not g then begin ConfigMode:=cmSession;

try AddStandardAlias('My', ExtractFilePath(ParamStr(0))+'Tables\', 'PARADOX');

with Table1 do begin DatabaseName:='My';

TableName:='Groups';

Active:=true;

DBComboBox6.DataField:='Group';

while not Eof do begin

DBComboBox6.Items.Add(FieldByName('Group').AsString);

Продолжение приложения Г

Next end; First end;

with Table2 do begin DatabaseName:='My';

TableName:='Disciplins';

Active:=true;

DBComboBox1.DataField:='Disciplin';

DBComboBox4.DataField:='Disciplin';

while not Eof do begin

DBComboBox1.Items.Add(FieldByName('Disciplin').AsString);

DBComboBox4.Items.Add(FieldByName('Disciplin').AsString);

Next end; First end;

with Table3 do begin DatabaseName:='My';

TableName:='Prepods';

Active:=true;

DBComboBox2.DataField:='Prepod';

DBComboBox5.DataField:='Prepod';

while not Eof do begin

DBComboBox2.Items.Add(FieldByName('Prepod').AsString);

DBComboBox5.Items.Add(FieldByName('Prepod').AsString);

Next end; First end;

with Table4 do begin DatabaseName:='My';

TableName:='Cabinets';

Active:=true;

DBComboBox3.DataField:='Cabinet';

DBComboBox7.DataField:='Cabinet';

while not Eof do begin

DBComboBox3.Items.Add(FieldByName('Cabinet').AsString);

DBComboBox7.Items.Add(FieldByName('Cabinet').AsString);

Next end; First end;

Продолжение приложения Г

with Table5 do begin DatabaseName:='My';

TableName:='Raspisanie';

Active:=true end;

with Table6 do begin DatabaseName:='My';

TableName:='Groups';

Active:=true end;

with Table7 do begin DatabaseName:='My';

TableName:='Izmenenies';

Active:=true end;

with Table8 do begin DatabaseName:='My';

TableName:='Cabinets';

Active:=true end;

with Table9 do begin DatabaseName:='My';

TableName:='Disciplins';

Active:=true end;

with Table0 do begin DatabaseName:='My';

TableName:='Prepods';

Active:=true end;

finally ConfigMode:=cmAll;

Session.Databases[0].TransIsolation:=tiDirtyRead; end; g:=true end;

DBComboBox6.OnChange(Sender) end;

procedure TMainForm.FormCreate(Sender: TObject);

begin MainForm.WindowState:=wsMaximized;

StaticText1.Caption:=#13#13#13'П'#13'н';

StaticText2.Caption:=#13#13'В'#13'т';

StaticText3.Caption:=#13#13'С'#13'р';

StaticText4.Caption:=#13#13'Ч'#13'т';

StaticText5.Caption:=#13#13'П'#13'т';

StaticText6.Caption:=#13#13'С'#13'б';

with StringGrid4 do begin Cells[0, 0]:=' № каб.';

Cells[1, 0]:=' Наименование кабинета';

Cells[2, 0]:=' Ответственный';

Cells[3, 0]:='Мест';

Cells[4, 0]:='ПК' end;

Mainform.Caption:=MainCap;

Data.Date:=Date;

with StringGrid2 do begin

Cells[1,0]:=' Пн'; Cells[0,1]:=' 1';

Cells[2,0]:=' Вт'; Cells[0,2]:=' 2';

Cells[3,0]:=' Ср'; Cells[0,3]:=' 3';

Cells[4,0]:=' Чт'; Cells[0,4]:=' 4';

Cells[5,0]:=' Пт'; Cells[0,5]:=' 5';

Cells[6,0]:=' Сб'; Cells[0,6]:=' 6' end;

with StringGrid1 do begin Cells[0, 0]:='№ пары';

Cells[1, 0]:=' Дисциплина';

Cells[2, 0]:=' Преподаватель';

Cells[3, 0]:=' № каб.' end;

with StringGrid do begin Cells[0,0]:=' Группа';

Cells[1,0]:='№ Пары';

Cells[2,0]:=' Дисциплина';

Cells[3,0]:=' Преподаватель';

Cells[4,0]:=' № каб.' end end;

procedure TMainForm.RadioGroup2Click(Sender: TObject);

begin ComboBox2.Clear;

if RadioGroup2.ItemIndex=0 then begin

ComboBox2.AddItem('1', Sender);

ComboBox2.AddItem('2', Sender);

ComboBox2.AddItem('3', Sender);

ComboBox2.AddItem('4', Sender);

for i:=0 to 5 do begin

StringGrid1.Cells[0, 1+i*4]:='1';

StringGrid1.Cells[0, 2+i*4]:='2';

StringGrid1.Cells[0, 3+i*4]:='3';

StringGrid1.Cells[0, 4+i*4]:='4' end end else begin

ComboBox2.AddItem('0', Sender);

ComboBox2.AddItem('1', Sender);

ComboBox2.AddItem('2', Sender);

ComboBox2.AddItem('3', Sender);

for i:=0 to 5 do begin

StringGrid1.Cells[0, 1+i*4]:='0';

StringGrid1.Cells[0, 2+i*4]:='1';

StringGrid1.Cells[0, 3+i*4]:='2';

StringGrid1.Cells[0, 4+i*4]:='3' end end;

ComboBox2.ItemIndex:=0;

Table1.First;

TabControl1.Tabs.Clear;

for i:=1 to Table1.RecordCount do begin

if Table1.FieldByName('Smena').AsInteger=RadioGroup2.ItemIndex then

TabControl1.Tabs.Add(Table1.FieldByName('Group').AsString);

Table1.Next end;

ControlChange(Sender) end;

procedure TMainForm.ControlChange(Sender: TObject);

begin with Query1 do begin Close;

SQL.Clear;

SQL.Add('SELECT Groupp, Disciplin, Prepod, Cabinet, Dayy, Pari, Week');

SQL.Add('FROM ":My:raspisanie.db"');

SQL.Add('WHERE');

SQL.Add('(Groupp = ''' + TabControl1.Tabs[TabControl1.TabIndex] + ''')');

Open;

case RadioGroup2.ItemIndex of

0: MainForm.Caption:=MainCap+perv;

1: Mainform.Caption:=MainCap+vtor end;

with StringGrid1 do begin for i:=1 to 24 do begin Cells[1, i]:='';

Cells[2, i]:='';

Cells[3, i]:='' end;

j:=RadioGroup2.ItemIndex; First;

for i:=1 to RecordCount do begin if RadioGroup1.ItemIndex=0 then begin case FieldByName('Week').AsInteger of

0: Cells[1, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=FieldByName('Disciplin').AsString+'; ';

1: Cells[1, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=

Cells[1, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]+'ч.н.:'+FieldByName('Disciplin').AsString+'; ';

2: Cells[1, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=

Cells[1, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]+'н.н.:'+FieldByName('Disciplin').AsString+'; ' end;

Cells[2, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=

Cells[2, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]+FieldByName('Prepod').AsString+'; ';

Cells[3, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=

Cells[3, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]+FieldByName('Cabinet').AsString+'; ' end else

if RadioGroup1.ItemIndex=FieldByName('Week').AsInteger then begin

Cells[1, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=FieldByName('Disciplin').AsString;

Cells[2, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=FieldByName('Prepod').AsString;

Cells[3, FieldByName('Pari').AsInteger+j+4*(FieldByName('Dayy').AsInteger-1)]:=FieldByName('Cabinet').AsString end;

Next end end end end;

procedure TMainForm.DeleteClick(Sender: TObject);

begin if TabControl1.Visible then with StringGrid1 do

if not((Cells[1 , Row]='')or((Cells[1 , Row][2]='.')and(

(Cells[1 , Row][1]='ч')or(Cells[1 , Row][1]='н')))) then begin

if Table5.Locate('Groupp;Dayy;Pari;Week', VarArrayOf ([TabControl1.Tabs[TabControl1. TabIndex], ceil(Row/4), Cells[0 , Row], RadioGroup1.ItemIndex]), []) then Table5.Delete;

ControlChange(Sender) end else else begin

if Table7.Locate('Data;Grouppp;Pari;Subgroup', VarArrayOf([Data.Date, DBComboBox6.Text, ComboBox5.Text, ComboBox4.ItemIndex]), []) then Table7.Delete;

DataChange(Sender);

if not f then StringGridClick(Sender) end end;

procedure TMainForm.StringGrid1MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin StringGrid1.MouseToCell(X, Y, r, r);

if r>0 then StringGrid1.Row:=r end;

procedure TMainForm.Button1Click(Sender: TObject);

begin DeleteClick(Sender);

Table5.InsertRecord([TabControl1.Tabs[TabControl1.TabIndex], ComboBox1.ItemIndex+1, ComboBox2.Text, RadioGroup1.ItemIndex, DBComboBox3.Text, DBComboBox1.Text, ComboBox3.ItemIndex, DBComboBox2.Text]);

ControlChange(Sender) end;

procedure TMainForm.StringGrid1Click(Sender: TObject);

begin with StringGrid1 do begin if RadioGroup2.ItemIndex=0 then

ComboBox2.ItemIndex:=strtoint(Cells[0 , Row])-1 else

ComboBox2.ItemIndex:=strtoint(Cells[0 , Row]);

ComboBox1.ItemIndex:=ceil(Row/4)-1 end end;

procedure TMainForm.DBComboBox6Change(Sender: TObject);

begin with ComboBox5 do begin

if Text='' then i:=1 else i:=strtoint(Text);

Clear; Table6.Locate('Group', DBComboBox6.Text, []);

if Table6.FieldByName('Smena').AsInteger=0 then begin

AddItem('1', Sender);

AddItem('2', Sender);

AddItem('3', Sender);

AddItem('4', Sender);

AddItem('5', Sender);

if i<1 then i:=1;

ItemIndex:=i-1 end else begin

AddItem('-1', Sender);

AddItem('0', Sender);

AddItem('1', Sender);

Продолжение приложения Г

AddItem('2', Sender);

AddItem('3', Sender);

if i>3 then i:=3;

ItemIndex:=i+1 end end end;

procedure TMainForm.ComboBox1Change(Sender: TObject);

begin StringGrid1.Row:=ComboBox1.ItemIndex*4+ComboBox2.ItemIndex+1 end;

procedure TMainForm.Button3Click(Sender: TObject);

begin f:=true; DeleteClick(Sender); f:=false;

Table7.InsertRecord([Data.Date, DBComboBox6.Text, ComboBox5.Text, ComboBox4.ItemIndex, DBComboBox4.Text, DBComboBox5.Text, DBComboBox7.Text]);

DataChange(Sender) end;

procedure TMainForm.StringGrid1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin if Key=VK_DELETE then Button2.Click end;

procedure TMainForm.DataChange(Sender: TObject);

begin with Query1 do begin Close; SQL.Clear;

SQL.Add('SELECT Data, Grouppp, Pari, Subgroup, Disciplin, Prepod, Cabinet');

SQL.Add('FROM ":My:izmenenies.db"');

SQL.Add('WHERE');

SQL.Add('Data = ''' + datetostr(Data.Date) + '''');

SQL.Add('ORDER BY Grouppp');

Open; First;

if RecordCount>0 then StringGrid.RowCount:=RecordCount+1 else StringGrid.RowCount:=2;

for i:=0 to 4 do StringGrid.Cells[i, 1]:='';

for i:=1 to RecordCount do begin

StringGrid.Cells[0, i]:=FieldByName('Grouppp').AsString;

StringGrid.Cells[1, i]:=FieldByName('Pari').AsString;

StringGrid.Cells[2, i]:=FieldByName('Disciplin').AsString;

StringGrid.Cells[3, i]:=FieldByName('Prepod').AsString;

StringGrid.Cells[4, i]:=FieldByName('Cabinet').AsString;

if FieldByName('Subgroup').AsInteger=1 then StringGrid.Cells[2, i]:='1-подгр.: '+StringGrid.Cells[2, i];

if FieldByName('Subgroup').AsInteger=2 then StringGrid.Cells[2, i]:='2-подгр.: '+StringGrid.Cells[2, i];

Next end end;

s:=formatdatetime('dddd', Data.Date);

s[1]:=chr(ord(s[1])-32);

j:=DayOfWeek(Data.Date);

i:=WeekOfTheYear(Data.Date);

if strtoint(formatdatetime('m', Data.Date))>8 then

i:=i-WeekOfTheYear(StrToDate('01.09.'+formatdatetime('yyyy', j))) else

i:=i+(52-WeekOfTheYear(StrToDate('01.09.'+inttostr(strtoint(formatdatetime('yyyy', j))-1))));

if i mod 2 = 0 then s:=s+chet else s:=s+nech;

Label7.Caption:=s;

DBComboBox7Change(Sender);

ComboBox5Change(Sender) end;

procedure TMainForm.DBComboBox6KeyPress(Sender: TObject; var Key: Char);

begin if Key=#13 then ComboBox5.SetFocus end;

Продолжение приложения Г

procedure TMainForm.ComboBox5KeyPress(Sender: TObject; var Key: Char);

begin if Key=#13 then DBComboBox4.SetFocus end;

procedure TMainForm.DBComboBox4KeyPress(Sender: TObject; var Key: Char);

begin if Key=#13 then ComboBox4.SetFocus end;

procedure TMainForm.ComboBox4KeyPress(Sender: TObject; var Key: Char);

begin if Key=#13 then DBComboBox5.SetFocus end;

procedure TMainForm.DBComboBox5KeyPress(Sender: TObject; var Key: Char);

begin if Key=#13 then DBComboBox7.SetFocus end;

procedure TMainForm.DBComboBox7KeyPress(Sender: TObject; var Key: Char);

begin Button3.SetFocus end;

procedure TMainForm.StringGridMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin StringGrid.MouseToCell(X, Y, r, r);

if r>0 then StringGrid.Row:=r end;

procedure TMainForm.StringGridClick(Sender: TObject);

begin with StringGrid do begin if Cells[0, Row]='' then begin

ComboBox4.ItemIndex:=0;

ComboBox5.ItemIndex:=0;

DBComboBox6.ItemIndex:=0;

DBComboBox7.ItemIndex:=0 end else begin if Cells[2, Row][2]='-' then

ComboBox4.ItemIndex:=strtoint(Cells[2, Row][1]) else ComboBox4.ItemIndex:=0;

DBComboBox6.Text:=Cells[0, Row];

ComboBox5.Text:=Cells[1, Row];

DBComboBox7.Text:=Cells[4, Row] end;

DBComboBox7Change(Sender);

DBComboBox6Change(Sender) end end;

procedure TMainForm.DBComboBox7Change(Sender: TObject);

begin for i:=1 to 6 do for j:=1 to 6 do

if Table5.Locate('Dayy;Pari;Cabinet', VarArrayOf([inttostr(i), inttostr(j), DBComboBox7.Text]), [])

then StringGrid2.Cells[i, j]:=' x' else StringGrid2.Cells[i, j]:='' end;

procedure TMainForm.ComboBox5Change(Sender: TObject);

begin s:=ComboBox5.Text;

for i:=1 to StringGrid.RowCount-1 do if (StringGrid.Cells[0, i]=DBComboBox6.Text)

and(StringGrid.Cells[1, i]=s) then StringGrid.Row:=i;

Table6.Locate('Group', DBComboBox6.Text, []);

with ComboBox5 do begin if Table6.FieldByName('Smena').AsInteger=0 then begin

StringGrid2.Row:=ItemIndex+1;

ItemIndex:=strtoint(s)-1 end else begin

if Text<>'4' then StringGrid2.Row:=ItemIndex+2;

ItemIndex:=strtoint(s)+1 end end;

if DayOfTheWeek(Data.Date)<>7 then StringGrid2.Col:=DayOfTheWeek(Data.Date);

ListBox1.Clear;

Table8.First;

for i:=1 to Table8.RecordCount do begin

if (not(Table5.Locate('Dayy;Pari;Cabinet', VarArrayOf([inttostr(DayOfWeek(Data.Date)-1), ComboBox5.Text, Table8.FieldByName('Cabinet').AsString]), [])))

and((Table8.FieldByName('Computers').AsBoolean=CheckBox2.Checked)or(not CheckBox2.Checked)) then ListBox1.AddItem(Table8.FieldByName('Cabinet').AsString, Sender);

Table8.Next end end;

procedure TMainForm.StringGrid2MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

var Row, Col: integer;

begin StringGrid2.MouseToCell(X, Y, Col, Row);

if ((Row<>r)or(Col<>c)) then begin

R:=row; C:=col; Application.CancelHint;

with Table5 do if Locate('Dayy;Pari;Cabinet', VarArrayOf([inttostr(c), inttostr(r), DBComboBox7.Text]), [])

then StringGrid2.Hint:=FieldByName('Groupp').AsString+': '+FieldByName('Disciplin').AsString+' ('+FieldByName('Prepod').AsString+')'

else StringGrid2.Hint:='' end end;

procedure TMainForm.StringGrid2DrawCell(Sender: TObject; ACol,

ARow: Integer; Rect: TRect; State: TGridDrawState);

begin if (ACol=0)and(ARow=0) then begin with StringGrid2.Canvas do begin

TextOut(Rect.Left, Rect.Top, ' №');

TextOut(Rect.Left, Rect.Top-StringGrid2.Font.Height, 'пары') end end end;

procedure TMainForm.FileCloseItemClick(Sender: TObject);

begin RadioGroup3.OnClick(Sender);

TabControl1.Visible:=false;

TabControl2.Visible:=false;

TabControl3.Visible:=true;

StringGrid3Click(Sender);

StringGrid4Click(Sender);

StringGrid6Click(Sender) end;

procedure TMainForm.RadioGroup3Click(Sender: TObject);

begin f:=false;

StringGrid5.RowCount:=1;

with Table1 do begin First;

for i:=1 to RecordCount do begin

if FieldByName('Smena').AsInteger=RadioGroup3.ItemIndex then begin

if f then StringGrid5.RowCount:=StringGrid5.RowCount+1;

StringGrid5.Cells[0, StringGrid5.RowCount-1]:=FieldByName('Group').AsString;

StringGrid5.Cells[1, StringGrid5.RowCount-1]:=FieldByName('Students').AsString;

f:=true end;

Next end end;

StringGrid5.OnClick(Sender) end;

procedure TMainForm.BitBtn1Click(Sender: TObject);

begin if Table1.Locate('Group', LabeledEdit1.Text, []) then begin Table1.Delete;

DBComboBox6.Items.Delete(DBComboBox6.Items.IndexOf(LabeledEdit1.Text)) end;

Table1.InsertRecord([LabeledEdit1.Text, SpinEdit1.Value, RadioGroup3.ItemIndex]);

DBComboBox6.Items.Add(LabeledEdit1.Text);

Session.Databases[0].StartTransaction;

try Table1.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table1.CommitUpdates;

RadioGroup3.OnClick(Sender) end;

Продолжение приложения Г

procedure TMainForm.BitBtn2Click(Sender: TObject);

begin if Table1.Locate('Group', LabeledEdit1.Text, []) then begin Table1.Delete;

DBComboBox6.Items.Delete(DBComboBox6.Items.IndexOf(LabeledEdit1.Text)) end;

Session.Databases[0].StartTransaction;

try Table1.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table1.CommitUpdates;

RadioGroup3.OnClick(Sender) end;

procedure TMainForm.BitBtn3Click(Sender: TObject);

begin if not Table9.Locate('Disciplin', LabeledEdit2.Text, []) then begin

Table9.InsertRecord([LabeledEdit2.Text]);

DBComboBox1.Items.Add(LabeledEdit2.Text);

DBComboBox4.Items.Add(LabeledEdit2.Text);

Session.Databases[0].StartTransaction;

try Table9.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table9.CommitUpdates end;

StringGrid6.OnClick(Sender) end;

procedure TMainForm.BitBtn4Click(Sender: TObject);

begin if Table9.Locate('Disciplin', LabeledEdit2.Text, []) then begin Table9.Delete;

DBComboBox1.Items.Delete(DBComboBox1.Items.IndexOf(LabeledEdit2.Text));

DBComboBox4.Items.Delete(DBComboBox4.Items.IndexOf(LabeledEdit2.Text)) end;

Session.Databases[0].StartTransaction;

try Table9.ApplyUpdates;

Продолжение приложения Г

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table9.CommitUpdates;

StringGrid6.OnClick(Sender) end;

procedure TMainForm.BitBtn5Click(Sender: TObject);

begin if not Table0.Locate('Prepod', LabeledEdit3.Text, []) then begin

Table0.InsertRecord([LabeledEdit3.Text]);

DBComboBox2.Items.Add(LabeledEdit3.Text);

DBComboBox5.Items.Add(LabeledEdit3.Text);

Session.Databases[0].StartTransaction;

try Table0.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table0.CommitUpdates end;

StringGrid3.OnClick(Sender) end;

procedure TMainForm.BitBtn6Click(Sender: TObject);

begin if Table0.Locate('Prepod', LabeledEdit3.Text, []) then begin Table0.Delete;

DBComboBox2.Items.Delete(DBComboBox2.Items.IndexOf(LabeledEdit3.Text));

DBComboBox5.Items.Delete(DBComboBox5.Items.IndexOf(LabeledEdit3.Text)) end;

Session.Databases[0].StartTransaction;

try Table0.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table0.CommitUpdates;

StringGrid3Click(Sender) end;

procedure TMainForm.BitBtn7Click(Sender: TObject);

begin if Table8.Locate('Cabinet', LabeledEdit4.Text, []) then begin Table8.Delete;

DBComboBox3.Items.Delete(DBComboBox3.Items.IndexOf(LabeledEdit4.Text));

DBComboBox7.Items.Delete(DBComboBox7.Items.IndexOf(LabeledEdit4.Text)) end;

Table8.InsertRecord([LabeledEdit4.Text, CheckBox1.Checked, SpinEdit2.Text, LabeledEdit5.Text, LabeledEdit6.Text]);

DBComboBox3.Items.Add(LabeledEdit4.Text);

DBComboBox7.Items.Add(LabeledEdit4.Text);

Session.Databases[0].StartTransaction;

try Table8.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table8.CommitUpdates;

StringGrid4.OnClick(Sender) end;

procedure TMainForm.BitBtn8Click(Sender: TObject);

begin if Table8.Locate('Cabinet', LabeledEdit4.Text, []) then begin Table8.Delete;

DBComboBox3.Items.Delete(DBComboBox3.Items.IndexOf(LabeledEdit4.Text));

DBComboBox7.Items.Delete(DBComboBox7.Items.IndexOf(LabeledEdit4.Text)) end;

Session.Databases[0].StartTransaction;

try Table8.ApplyUpdates;

Session.Databases[0].Commit except Session.Databases[0].Rollback;

raise end;

Table8.CommitUpdates;

StringGrid4.OnClick(Sender) end;

procedure TMainForm.StringGrid3Click(Sender: TObject);

begin try with Table0 do begin First;

StringGrid3.RowCount:=RecordCount;

for i:=0 to RecordCount do begin

StringGrid3.Cells[0, i]:=FieldByName('Prepod').AsString; Next end end;

LabeledEdit3.Text:=StringGrid3.Cells[0, StringGrid3.Row] except end end;

procedure TMainForm.StringGrid4Click(Sender: TObject);

begin with Table8 do begin First;

StringGrid4.RowCount:=RecordCount+1;

for i:=1 to RecordCount do with StringGrid4 do begin

Cells[0, i]:=FieldByName('Cabinet').AsString;

Cells[1, i]:=FieldByName('Name').AsString;

Cells[2, i]:=FieldByName('Zavcab').AsString;

Cells[3, i]:=FieldByName('Mesta').AsString;

if FieldByName('Computers').AsBoolean then begin Cells[4, i]:=' X';

if Row=i then CheckBox1.Checked:=true end else begin Cells[4, i]:='';

if Row=i then CheckBox1.Checked:=false end; Next end end;

LabeledEdit4.Text:=StringGrid4.Cells[0, StringGrid4.Row];

LabeledEdit5.Text:=StringGrid4.Cells[1, StringGrid4.Row];

LabeledEdit6.Text:=StringGrid4.Cells[2, StringGrid4.Row];

SpinEdit2.Text:=StringGrid4.Cells[3, StringGrid4.Row] end;

procedure TMainForm.StringGrid5Click(Sender: TObject);

begin LabeledEdit1.Text:=StringGrid5.Cells[0, StringGrid5.Row];

Table1.Locate('Group', LabeledEdit1.Text, []);

SpinEdit1.Value:=Table1.FieldByName('Students').AsInteger end;

procedure TMainForm.StringGrid6Click(Sender: TObject);

begin try with Table9 do begin First;

StringGrid6.RowCount:=RecordCount;

for i:=0 to RecordCount do begin

StringGrid6.Cells[0, i]:=FieldByName('Disciplin').AsString;Next end end;

LabeledEdit2.Text:=StringGrid6.Cells[0, StringGrid6.Row] except end end;

procedure TMainForm.ListBox1Click(Sender: TObject);

begin DBComboBox7.Text:=ListBox1.Items[ListBox1.ItemIndex];

DBComboBox7.OnChange(Sender) end;

procedure TMainForm.AboutClick(Sender: TObject);

begin Application.CreateForm(TAboutForm, AboutForm);

AboutForm.ShowModal;

AboutForm.Free end;

procedure TMainForm.SOSClick(Sender: TObject);

var MsWord: variant;

begin try MsWord:=CreateOleObject('Word.Application') except end;

MsWord.Visible:=true;

MsWord.Documents.Open(ExtractFilePath(ParamStr(0))+'/Help/help.doc') end;

procedure TMainForm.Button5Click(Sender: TObject);

begin RvProject1.SetParam('God', formatdatetime('y', Data.Date));

RvProject1.SetParam('Den', formatdatetime('dddd', Data.Date));

RvProject1.SetParam('Chislo', formatdatetime('d', Data.Date));

RvProject1.SetParam('Mes', formatdatetime('mmmm', Data.Date));

for i:=1 to 140 do RvProject1.SetParam(inttostr(i), '');

for i:=1 to StringGrid.RowCount-1 do begin

RvProject1.SetParam(inttostr(i), StringGrid.Cells[0, i]);

Окончание приложения Г

RvProject1.SetParam(inttostr(i+35), StringGrid.Cells[1, i]);

RvProject1.SetParam(inttostr(i+70), StringGrid.Cells[2, i]);

RvProject1.SetParam(inttostr(i+105), StringGrid.Cells[4, i]) end;

RvProject1.Execute end;

procedure TMainForm.Button6Click(Sender: TObject);

begin

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.