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

СОДЕРЖАНИЕ



	Список принятых обозначений и сокращений

	ВВЕДЕНИЕ

		ГЛАВА 1.ПРЕДПРОЕКТНЫЕ ИССЛЕДОВАНИЯ

		1.1Предметная область

		1.2Проблемная область

		ГЛАВА 2.ТЕХНИЧЕСКОЕ ЗАДАНИЕ

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

		2.2Порядок контроля и приема

		ГЛАВА 3.ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

		3.1Назначение и область применения

		3.2Технические характеристики

		3.3Выбор критериев отбора технических средств

		3.4Выбор операционной среды и средств разработки

		ГЛАВА 4.ОПИСАНИЕ ПРОГРАММЫ

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

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

		4.3Структура хранения данных

		4.4Алгоритм

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

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

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

		4.8.Выходные данные

		ГЛАВА 5.ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ

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

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

		5.3Технические требования

		5.4Порядок проведения испытаний

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

	ЗАКЛЮЧЕНИЕ

	СПИСОК ЛИТЕРАТУРЫ

	ПРИЛОЖЕНИЕ 1

	ПРИЛОЖЕНИЕ 2




Список принятых обозначений и сокращений



БД – База данных;

MS – Microsoft®;

Электронный журнал – файл формата MS Excel 2003, заполненный согласно правилам, см. глава Описание программы, пункт Входные данные;

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

Школа – условное обозначение учебного заведения среднего или среднего специального профиля, в котором используется автоматизированная система оповещения родителей;

Э-оператор – сотрудник Школы, ответственный за заполнение Электронного журнала;

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

SMS(СМС) – Short Message Service – служба коротких сообщений;

ПО – Программное обеспечение;

ОС – Операционная система;

GSM – Global Systems for Mobile Communications – глобальный цифровой стандарт для мобильной связи.




ВВЕДЕНИЕ



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

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

В данной дипломной работе представлена автоматизированная система передачи данных на примере работы программы "Оповещение родителей".

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

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

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

После тщательно анализа выявились следующие несогласованности в целях решаемой задачи:

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

Высокая стоимость

Неиспользуемые функции

Цели создания системы:

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

Внедрение современных технологий в воспитательный процесс.

Формирование у родителей более полной картины успеваемости ученика

При ограничениях:

Возможность работы с несколькими школами

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

Отправка сообщений через GSM -модем

Минимизация стоимости разработки и затрат на эксплуатацию по

Задачи.

Реализовать выполнение следующих пунктов:

преобразование школьного журнала в электронный вид

формирование и администрирование баз данных

создание множества SMS сообщений

реализация процесса передачи SMS родителям

осуществление обратной связи

Результаты:

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




ПРЕДПРОЕКТНЫЕ ИССЛЕДОВАНИЯ



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

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

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

На сегодняшний день рынок ПО стал разнообразнее в плане предоставления автоматизированных систем. Рассмотрим несколько используемых программных продуктов.



Предметная область



Модель "как есть".

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





Оценки,

посещаемость

Классный руководитель

Дневник

Ученик

Дневник

Учителя профильных предметов

Родители 

Рисунок 1.



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

СМС дневник для родителей 2.17

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

Основные возможности программы:

Создание базы данных по классам

Создание базы данных по ученикам

Формирование сообщения путем занесения оценок

Формирование текстовых сообщений

Возможность отправки сообщений через систему e-mail2sms одному или группе абонентов

Возможность ввода оценок ученику за определенный день вручную или из электронного журнала

Возможность просмотра введенных оценок и сообщений

Недостатки

Работа программы ограничена только одной школой

Необходимость наличия Интернета

Поддержка сотовым оператором функции e-mail2sms

XL Рассылка SMS Mobile 1.3.14

XL Рассылка SMS Mobile - Программа предназначена для массовой и выборочной рассылки SMS сообщений на мобильные телефоны абонентов. Программа работает через мобильный телефон (или терминал) подключенный к последовательному порту компьютера.

Основные возможности программы XL Рассылка SMS Mobile:

создание иерархического справочника абонентов с подробной информацией об абонентах;

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

создание иерархического справочника рубрик;

создание шаблонов сообщений;

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

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

настройка списка подписанных рубрик для каждого абонента;

настройка транслита;

рассылка сообщения на определенную рубрику;

возможность отправки SMS сообщения одному абоненту;

автоматическое добавление подписи к рассылаемым сообщениям;

автоматическая кодировка сообщений в транслите;

автоматическая разбивка сообщений по 160 знаков (в транслите) и по 70 знаков (в кириллице);

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

отсроченная доставка сообщений;

автоматическая рассылка поздравлений с Днём Рождения и напоминаний об оплате;

архивирование информации;

работа с различными адресными базами;

гибкая настройка программы;

Недостатки

Нет реализации модульности ПО

Не адаптирована для работы с учебными заведениями

Иерархическая структура ведения справочника абонентов не соответствует школьной системе

	Из n-функций заказчику необходимы только k.

GTG SMS-дневник

GTG SMS-дневник - это сервис предоставления школьной информации в любое время и в любом месте посредством SMS-рассылки. Сервис позволяет ученикам и родителям оперативно получать информацию обо всех значимых событиях школы, об оценках и поведении ученика путем SMS-сообщений. Сервис "SMS-дневник" представляет собой электронную версию обычного дневника - базу данных, в которой хранятся все оценки и сообщения учителей.

Основные возможности программы:

Создание базы данных по ученикам и их родителям

Возможность просмотра базы

Обработка статистических данных

Рассылка сообщений

Информирование родителей об отсутствии ученика на уроках.

Информирование об изменении расписания уроков.

Информирование о родительских собраниях.

Приглашение родителей в школу.

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

Информирование об успехах ученика.

Рассылка общих объявлений (например, об отмене учебного дня).

Информирование о культурных мероприятиях.

Возможность отправки сообщений немедленно или в заданное время.

Учет абонентской платы

Недостатки

Стоимость

Нет возможности использования журнала формата MS Excel 2003



Проблемная область



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

Высокая стоимость

Неиспользуемые функции

Цели создания системы:

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

Внедрение современных технологий в воспитательный процесс.

Формирование у родителей более полной картины успеваемости ученика

При ограничениях:

Возможность работы с несколькими школами

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

Отправка сообщений через GSM -модем

Минимизация стоимости разработки и затрат на эксплуатацию по

Задачи.

Реализовать выполнение следующих пунктов:

преобразование школьного журнала в электронный вид

формирование и администрирование баз данных

создание множества SMS сообщений

реализация процесса передачи SMS родителям

осуществление обратной связи

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

Модель "как будет".

На рисунке 2 представлена модель информационной системы "Оповещение родителей".

Школа предоставляет школьные журналы Э-оператору, который в свою очередь производит заполнение Электронных журналов средствами MS Excel 2003 по установленным правилам. После заполнения Э-оператор передает Электронные журналы С-оператору (посредством электронной почты или съемного носителя). С-оператор создает БД Ученики и БД Сообщения на основе полученных журналов и производит отправку коротких сообщений (СМС) Родителям. Также в обязанности С-оператора входит осуществление технической поддержки Родителей (ошибки в полученных сообщениях и/или недоставки сообщения, формирование отчета).






СОТОВЫЙ ОПЕРАТОР

СИСТЕМНЫЙ ОПЕРАТОР

ЭЛЕКТРОННЫЕ

ЖУРНАЛЫ

ШКОЛЫ

РОДИТЕЛИ

БД УЧЕНИКИ

БД СООБЩЕНИЯ

Рисунок 2.



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

Цели:

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

Обеспечить процесс создания Электронных журналов на основе школьных.

Описать способы передачи Электронного журнала от Э-оператора Системному оператору.

Обеспечить системного оператора методами и средствами для создания и заполнения БД "Ученики"





СИСТЕМНЫЙ ОПЕРАТОР

ЭЛЕКТРОННЫЕ

ЖУРНАЛЫ

ШКОЛЫ

БД УЧЕНИКИ

Э-ОПЕРАТОР

ЖУРНАЛЫ 

Рисунок 3.


ТЕХНИЧЕСКОЕ ЗАДАНИЕ



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

Формирование на основе Э-журналов БД учеников

Формирование БД сообщений на основе БД учеников

Отправка СМС из БД сообщений абонентам с использованием GSM модема

Просмотр БД



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



Требования к функциональным характеристикам

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

Создание баз данных "Ученики" на основе Электронных журналов.

Требования к составу и параметрам технических средств

Программа функционирует при следующем составе и параметрах технических средств. Компьютер типа IBM PC с процессором не менее чем 300 МГц, с оперативной памятью не менее 256 Мб и не менее 4Гб свободного дискового пространства.

Требования к информационной и программной совместимости

Программа "Оповещение родителей" должна функционировать под управлением ОС Microsoft Windows XP.

Требования к маркировке и упаковке

Файлы, необходимые для инсталляции программы находиться на CD-диске. Наличие файла Readme.doc содержащего информацию об инсталляции необходимо.


2.2 Порядок контроля и приема



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




ПОЯСНИТЕЛЬНАЯ ЗАПИСКА



Наименование программы: Оповещение родителей.



Назначение и область применения



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



Формирование на основе Э-журналов БД учеников

Формирование БД сообщений на основе БД учеников

Отправка СМС из БД сообщений абонентам с использованием GSM модема

Просмотр БД



Технические характеристики



Алг Заполнение_Электронного_журнала

Начало

С-оператор передаёт Э-операторам пустые Электронные журналы на следующую четверть с выставленными датами.

Э-оператор заполняет Электронные журнал(ы) из Классного журнала

Э-операторы передают С-оператору Электронные журналы согласно регламенту

Конец алг Заполнение_Электронного_журнала

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

Классные журналы с оценками и отметками об успеваемости

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

Электронные журналы

Алг Формирование_БД_Ученики

Начало

С-оператор вводит данные в БД Ученики из Электронных журналов

Если Данные вносятся без ошибок

Тогда

Алг Формирование_Сообщений

иначе

С-оператор звонит Э-оператору для уточнения данных

Все Если

Конец алг Формирование_БД_Ученики

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

Э-журналы

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

БД Ученики

Алг Просмотр_БД_Ученики

Начало

С-оператор посматривает БД для уточнения данных

Конец алг Просмотр_БД_Ученики

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

БД Ученики, Год, Четверть, №Школы, Класс, Фамилия и Имя Ученика

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

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



Выбор критериев отбора технических средств



Среди всего множества критериев отбора технических средств нас интересуют:

достаточный объем оперативного запоминающего устройства;

достаточный объем накопителя на жестком магнитном диске;

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

достаточная производительность центрального процессора;

возможность использования GSM-модема;

возможность передачи данных (Э-журнала);

приемлемая стоимость составляющих комплекса технических средств.

Расчет необходимых ресурсов для функционирования системы, выбор технических средств.

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

Для функционирования рабочих станций выбрана Windows XP для работы которой нужно 128 Мбайт. Необходимые компоненты MS Office 2003 требуют 16 Мбайт и сама программа занимает 16 Мбайт.

Учитывая все вышеперечисленное приходим к тому, что для нормального функционирования системы необходимо минимум 160 Мбайт + 96 Мбайт запаса. Итого 256 Мбайт.

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

ОС Windows XP в среднем занимает 2 Гбайт свободного места на жестком диске.

Учитывая все вышеизложенное, приходим к выводу, что для нормального функционирования необходимо 2,5 Гбайт свободного дискового пространства, однако желательно иметь некоторый резерв свободного места, поэтому рекомендуемый объем свободного места на жестком диске – 4 Гбайта.

Для работы рабочих станций, в связи с большим количеством отображаемых данных и используемой OS необходима видеокарта и монитор с поддержкой Super VGA и разрешением не менее 800*600.

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

Передавать данные (Э-журналы) можно через оптический диск, USB-flash накопитель или с помощью электронной почты. Последний способ является наиболее быстрым и удобным, но требует возможности выхода в Интернет. Для оптического диска и USB-flash накопителя достаточно иметь соответствующие накопители.

Учитывая большой объем обрабатываемой информации необходимо использовать процессор Intel Pentium/Celeron, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц, аналогичные или более быстрые.

Использование GSM-модема подразумевает наличие сетевого адаптера и COM-порта;

Сохранность информации в случае неисправности ЭВМ -- один из важный аспектов. Самый простой способ – выполнение регулярного резервного копирования базы данных на внешний носитель. Это может быть оптический , жесткий,flash или иной накопитель размер которого определяется размерами самой базы. Рекомендуется носитель не менее чем на 4 Гб.

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

Для работы рабочих станции системы необходимо:

ПЭВМ на базе Intel Pentium/Celeron, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц с ОЗУ равным 256Мб, оснащённая SVGA-видеоадаптером и монитором 15", сетевым адаптером, свободным COM портом, со свободным дисковым пространством равным 4 Гб.

Доступ в Internet, если Э-журналы передаются с помощью электронной почты

Свободный USB-порт, если Э-журналы передаются с помощью USB-flash-носителя

CD/DVD-RW если Э-журналы передаются с помощью CD/DVD диска

Внешний носитель для резервного копирования данных.

Замечание. В случае если использование стационарного ЭВМ по каким-либо причинам невозможно разрешается использовать ноутбук, отвечающий вышеперечисленным требованиям.

Поскольку на сегодняшний день в магазинах уже не найти ЭВМ с указанной минимальной конфигурацией рекомендуется приобрести одну из следующих ЭВМ:

Компьютер DNS Office [0107708]

Процессор Intel Celeron E1200 /1,6 Ггц

Память DDR II SDRAM 1Gb

Жесткий диск 160 Gb

Привод DVD+-RW

Компьютер DNS Office [0110979]

Процессор Intel Celeron E1400 /2,0 Ггц

Память DDR II SDRAM 1Gb

Жесткий диск 160 Gb

Привод DVD-RW

НЭТА-Старт 1

Системная плата Intel BLKD945GCLF, socket 775

Процессор Intel Atom 230 1.6GHz/533Mhz Socket 775

Память DDR II SDRAM 1Gb PC6400 Hynix

Жесткий диск 160 Gb WD SATA 8Mb (7200)

Привод DVD-RW NEC AD-7200S-0B, int. SATA черный

Ориентировочная стоимость составляет 8000 руб. Без учета стоимости операционной системы и программного обеспечения.

Магазины компьютерной техники "НЭТА", "DNS".



Выбор операционной среды и средств разработки



Выбор в качестве операционной среды для функционирования Автоматизированного Рабочего Места платформы win32 (ей соответствуют операционные системы Windows95, Windows98, Windows NT, Windows XP) обусловлен следующими ее особенностями:

ориентация заказчика на эту платформу;

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

достаточная масштабируемость, т.е. способность работать на широком диапазоне компьютерного оборудования, начиная от машин уровня 486DX4100 до многопроцессорных систем;

наличие драйверов для поддержки широкого спектра периферийных устройств (видеоадаптеров, сетевых адаптеров, принтеров, дисководов CD-ROM и пр.);

чрезвычайно широкое распространение этой платформы;

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

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

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

Выбор в качестве среды разработки пакета Borland Delphi 7 обусловлен следующими его особенностями:

политика предприятия в области разработки ПО;

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

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

возможность генерации кода под платформу win32;

поддержка ActiveX;

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

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

перспективность, популярность и широкая распространённость данной среды разработки в мире.

Выбор в качестве средства для работы с БД библиотеки ADO обусловлен следующими его особенностями:

вхождение его в состав Delphi 7

разработчик – Microsoft Corp. что является гарантом возможности просмотра базы данных через иные программные продукты этой компании (MS Access);

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

Библиотека nrComm разработчика DeepSoftware для работы с GSM модемом.

Для подготовки документации и демонстрационной версии программ использовались программы, входящие в комплект Microsoft Office 2003.




ОПИСАНИЕ ПРОГРАММЫ



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



Название программы:

Оповещение родителей

Программное обеспечение, необходимое для функционирования программы:

MS Office 2003 (MS Excel, MS Access);

Язык программирования:

Borland Delphi 7



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







Выбор порта: позволяет оператору выбрать COM-порт, к которому присоединено предающее устройство – GSM-модем.

Выход: осуществляется выход в операционную систему (Windows XP).

Обзор: позволяет оператору указать папку с журналами, на основе которых создавать базу.

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








Отправить SMS: происходит отправка сообщений об успеваемости и посещении родителям учеников.







Просмотр баз данных: позволяет просмотреть содержимое базы данных "Ученики" и базы данных "Сообщения"

Рассмотрим подробнее работу программы.

Описываемая программа состоит из трех основных подпрограмм (Внести оценки в базу, Отправить сообщения, Просмотр баз данных).

Рассмотрим алгоритмы работы этих подпрограмм и всей программы в целом. При загрузке программы выводится окно-запрос на выбор COM-порта, к которому подключено передающее устройство (GSM-модем), затем на экране отображается главное окно. В главном окне программы оператор может просмотреть уже существующие базы, нажав на "Просмотр баз данных" или загрузить новую, выбирая папку, содержащую журналы с оценками, нажав при этом кнопку "Обзор". Затем нажимаем кнопку "Внести оценки в базу". Об успешном окончании процесса сообщит специальное окно. После этого можно посмотреть созданную базу, либо отправить сообщения, нажав на соответствующие кнопки. Режим просмотра базы осуществляется в двух вариантах: выборка по ученикам – "Ученики" и выборка по сообщениям – "Сообщения".







Структура хранения данных



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






ШКОЛА 1

DB_ч_г.mdb

DATA BASES

КЛАСС 1

DB_ч_г.mdb

ШКОЛА 2

ШКОЛА n

КЛАСС 2

КЛАСС n

DB_ч_г.mdb

MAINDB.mdb

ч- номер четверти (1,2,3,4);

г-год 

* – таблица для каждого ученика

ШКОЛЫ

СООБЩЕНИЯ

УЧЕНИКИ

ФАМИЛИЯ ИМЯ - ТЕЛ *



Рисунок 4.



Алгоритм



Алгоритм представлен в виде блок-схемы на Рисунке 5.






да

нет

да

Цикл3

x от первого до последнего ученика класса

Цикл2

j от первого до последнего листа i-ого журнала

Цикл1

нет

да

Цикл1

i от начала до конца массива FileList

Внесение оценок в БД Начало

Поиск электронных журналов по указанному пути

FileList:= Список_электронных_журналов

Создание файла DB_ч_год.mdb

Открытие файла DB_ч_год.mdb

Открытие i-ого электронного журнала

Ученик x существует в таблице «Ученики»?

нет

Создание таблицы Фамилия_Имя - Телефон

Открытие таблицы Фамилия_Имя - Телефон

Внесение оценок в таблицу

Цикл3

Цикл2

Внесение оценок в БД Конец

Создание сообщений

Файл DB _ч_год.mdb существует?

Папка «Школа\Класс» существует?

Создание папки «Школа\Класс»

Добавление записи в таблице «Школы» в MainDB.mdb

Открытие таблицы «Ученики» в DB_ч_год.mdb

Добавление записи в таблице «Ученики» в DB_ч_год.mdb

Рисунок 5.



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



Для функционирования программного продукта требуется ЭВМ типа персональный компьютер. Конкретные характеристики указаны в пункте 5.3. Технические требования. Количество ЭВМ ведется из расчета – один для Системного оператора и по одному для каждого из Э-операторов.

Программный продукт устанавливается на жесткий диск ЭВМ.



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



Вызов программы осуществляется по мере требования. Для облегчения поиска помещаются ярлыки на Рабочий стол. По умолчанию, программа устанавливается в каталог

C:\Program Files\Оповещение Родителей.



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



Школьный журнал с оценками и отметками об успеваемости;

Заполненный Электронный журнал;

Электронный журнал – документ формата MS Office Excel 2003 (.xls), обязательными параметрами которого являются:

Название. Строго регламентированный формат: [Номер Школы]_[код класса]_[код четверти].xls . В названии используются только цифры, знак нижнего подчеркивания и буквы русского алфавита; код четверти – 1,2,3,4. Например: 25_10А_2.xls (см. рисунок 6)





Рисунок 6




Колонки данных. Строка под номером 1 ("шапка") заполняется следующим образом:

ячейка А1 – "Телефонный номер". Чтобы номер не был виден, столбец с телефонными номерами можно скрыть средствами MS Excel.

ячейка B1 – "Фамилия, Имя" ученика.

ячейки C1-*1 – даты. Формат [день]/[месяц]. Например: 1/11 соответствует 1 ноября. Формат ячеек – "Общий". ВАЖНО! Должны быть проставлены все даты четверти, указанной в названии файла.

См. рисунок 6

Начиная со 2 строки вводятся данные, соответственно "шапке". Телефонный номер должен быть записан в двенадцатизначном формате, начиная с +7. Например: +71234567890. Формат ячеек установить как "Текстовый" (См. рисунок 7)





Рисунок 7



В ячейках С2-** отмечаются полученные учеником оценки и отметки об отсутствии на уроке.

Листы MS Excel должны содержать только название предметов без кавычек. Например: Литература, Математика и др. Иных листов не должно быть. См. рисунок 8




Рисунок 8



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



База данных "Ученики";

Созданная база данных представляет собой набор таблиц, расположение которых подробно представлено в пункте 4.3. главы "Описание программы".

Просмотр базы осуществляется в соответствии с пунктом 4.2. главы "Описание программы".




ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ



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



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



Формирование на основе Э-журналов БД учеников

Формирование БД сообщений на основе БД учеников

Отправка СМС из БД сообщений абонентам с использованием GSM модема

Просмотр БД



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



Создание Электронных журналов на основе классных журналов;

Создание баз данных "Ученики" на основе Электронных журналов.



Технические требования



Учебное заведение желающее предоставлять Родителям информацию об успеваемости и посещаемости учеников, используя программный продукт "Оповещение Родителей" должно быть оборудовано хотя бы одной ЭВМ для

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

Рабочее место Э-оператора, в случае передачи Э-журнала на оптическом носителе:

ЭВМ с минимальными техническими характеристиками: MS Windows XP, пакет MS Office 2003 (MS Excel), процессор Intel Celeron, Intel Pentium, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 4 Гб , привод DVD/CD-RW;

Рабочее место Э-оператора, в случае передачи Э-журнала на USB-flash-носителе:

ЭВМ с минимальными техническими характеристиками: MS Windows XP, пакет MS Office 2003 (MS Excel), процессор Intel Celeron, Intel Pentium, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 4 Гб , привод DVD/CD-ROM, свободный USB порт;

Рабочее место Э-оператора, в случае передачи Э-журнала по электронной почте:

ЭВМ с минимальными техническими характеристиками: MS Windows XP, пакет MS Office 2003 (MS Excel), процессор Intel Celeron, Intel Pentium, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 4 Гб , привод DVD/CD-ROM, Интернет;

Рабочее место С-оператора должно быть оборудовано следующим набором технических средств:

ЭВМ с минимальными техническими характеристиками: MS Windows XP, пакет MS Office 2003 (MS Excel, MS Access),программный продут "Оповещение родителей", процессор Intel Celeron, Intel Pentium, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 3 Гб , привод DVD/CD-ROM, свободный COM порт;

GSM-модем;

Телефон для обратной связи.

Также С-оператор должен иметь:

Доступ в Internet, если Э-журналы передаются с помощью электронной почты

Свободный USB-порт, если Э-журналы передаются с помощью USB-flash-носителя

CD-ROM или DVD-ROM, если Э-журналы передаются с помощью CD/DVD диска



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



Этапы проведения испытаний

Заполнение журнала учителем.

Передача журнала Э-оператору.

Заполнение Э-оператором Электронного журнала.

Передача Э-оператором заполненного Электронного журнала С-оператору.

Сохранение С-оператором журнала на жестком диске.

Запуск программы "Оповещение родителей" С-оператором.

Формирование и загрузка базы данных "Ученики".

Просмотр готовых базы "Ученики".

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

Процессор Intel Core 2 с тактовой частотой 2*2,4 Ггц, 2 Гб ОЗУ, HDD 2 Гбайт, монитор с диагональю 15,4", видеоадаптер WSXGA+ (максимальное расширение 1680*1050), ОС Windows XP SP 2, MS Office 2003 (MS Excel, MS Access), передающее устройство Nokia 6120.

Процессор Intel Pentium 4 с тактовой частотой 2,4 Ггц, 1Гб ОЗУ, монитор с диагональю 17", видеоадаптер SVGA (максимальное расширение – 1280*1024), ОС Windows XP SP 3, MS Office 2003 (MS Excel, MS Access), передающее устройство Nokia 6120.




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



Учитель заполняет классный журнал отметками об успеваемости и посещаемости учеников.

Учитель передает заполненный журнал Э-оператору.

Э-оператор переносит отметки об успеваемости и посещаемости в Электронный журнал согласно регламенту (см главу Описание программы, пункт Входные данные)

Э-оператор передает С-оператору Электронные журналы.

С-оператор сохраняет журнал на жесткий диск компьютера.

Запускает программу "Оповещение родителей".

Нажимает кнопку "Обзор" и указывает папку с Электронными журналами.

Нажимает кнопку "Внести оценки в Базу Данных".

Ожидает окно подтверждения окончания операции.

Чтобы удостовериться в загрузке данных в базу нажимает кнопку "Просмотр баз данных". Нажимает кнопку "Ученики". Вводит в соответствующие поля год и четверть а также выбирает из предложенных школу класс и ученика. Если данные отсутствуют перейти на пт.7 данного списка.




ЗАКЛЮЧЕНИЕ



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

Внедрение данной системы позволило:

ускорить процесс информирования родителей;

внедрить современные технологии в воспитательный процесс и, тем самым, улучшить надежность передачи информации;

сформировать у родителей более полной картины успеваемости ученика.

Мной был написан модуль программного продукта "Оповещение родителей", который реализует следующие функции:

Формирование на основе Э-журналов БД учеников

Просмотр БД

Программный продукт "Оповещение родителей", и система в целом, успешно прошли тестовые испытания, и находятся в эксплуатации в г. Зеленогорске, ЧП Жукова Е.А.




СПИСОК ЛИТЕРАТУРЫ



Фленов М. Библия для программиста в среде Delphi/ M. Фленов - БХВ- Петербург, 2005 г.

Фаронов В.В. Программирование баз данных в Delphi 7. Учебный курс./ В.В. Фаронов - СПб.: Питер, 2006

Фурсенко А.А. / Интервью Фурсенко А.А 2008-2009г: Сб. тезисов. / Интернет/ http://mon.gov.ru




ПРИЛОЖЕНИЕ 1



Рекомендации по установке

Запустите установочный файл setup.exe. Следуйте подсказкам Мастера Установок.

Минимальные системные требования:

IBM PC: MS Windows XP, пакет MS Office 2003 (MS Excel, MS Access), процессор Intel Celeron, Intel Pentium, AMD K6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 3 Гб , CD-ROM, свободный COM порт, телефон.

Описание работы программы.

Создайте электронный журнал.

Запустить установленное приложение SMS.exe

Укажите номер COM-порта к которому подключено устройство отправления SMS (GSM модем).

Нажав кнопку "Обзор" укажите папку, содержащие электронные журналы (Важно: помимо файлов электронных папка не должна содержать других файлов формата MS Excel 2003).

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

Нажмите кнопку "Отправить SMS"

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

SMS будут высланы абонентам с указанными номерами телефонов.

ВАЖНО:

Директория, в которую установлена программа, будет содержать папку DataBases, удаление которой запрещено.

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

Помощь в случае возникновения ошибок

4.1. Э-оператор

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

При передаче Э-жураналов от Э-оператора к С-оператора следует соблюдать требования техники безопасности.

В случае, если компьютер Э-оператора будет неисправен следует использовать другой (временный или новый) эквивалентным набором технических средств см пт. 5.3.Технические требования.

4.2. С-оператор

В случае, если компьютер С-оператора будет неисправен следует установить программный продукт "Оповещение родителей" на другой (временный или новый) и продолжить работу. Информацию для формирования БД следует скопировать из резервного съемного носителя (папка DataBases).

В случае возникновения ошибок при загрузке данных из журналов и формировании БД следует проверить содержание и оформление Электронных журналов. Требования к Электронному журналу содержатся в пт.4.7 главы Описание программы.

Если сообщения не отправляются или отправляются некорректно рекомендуется проверить настройки передающего устройства (GSM модема). Если GSM модем работает исправно значит, проблема заключается в сотовом операторе.

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

СФУ, Институт математики, кафедра Вычислительных и информационных технологий, Лаборатория программной инженерии.

660041, г. Красноярск пр. Свободный 79, каб. 34-12

4.3. Родители

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

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

Более подробно все права и обязанности рассмотрены в Договоре

Рекомендации по удалению

Запустите установочный файл uninstall.exe. Следуйте подсказкам Мастера Удаления .




ПРИЛОЖЕНИЕ 2



Главное окно (листинг)



unit MainWindow;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExcelXP, OleServer, Buttons, ADODB, FileCtrl, Gauges, DB,

ShellAPI, XPMan, nrclasses, nratcmd, nrgsm, nrcomm, nrcommbox, ExtCtrls;

type

TMainForm = class(TForm)

DirPath: TEdit;

Browse: TBitBtn;

LogBtn: TBitBtn;

XL: TExcelApplication;

WB: TExcelWorkbook;

WS: TExcelWorksheet;

StaticText1: TStaticText;

ADOConnection1: TADOConnection;

ADOCommand1: TADOCommand;

ADOTable1: TADOTable;

SendBtn: TBitBtn;

ADOTable2: TADOTable;

ADOConnection2: TADOConnection;

ADOTable3: TADOTable;

XPManifest1: TXPManifest;

nrComm1: TnrComm;

nrGsm1: TnrGsm;

OpenHideBtn: TSpeedButton;

PupilsBtn: TButton;

MsgBtn: TButton;

procedure BrowseClick(Sender: TObject);

procedure LogBtnClick(Sender: TObject);

procedure SendBtnClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure OpenHideBtnClick(Sender: TObject);

procedure PupilsBtnClick(Sender: TObject);

procedure MsgBtnClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

Path:string;

FileList:array of string;

T:TDateTime;

Year:word;

SchoolList:array of string;

FormList: array of array of string;

implementation

uses DateUtils, ComUnit, StrUtils, DBWindow;

{$R *.dfm}

//Процедура задержки времени на dwMilliseconds милисекунд

//между отправками сообщений

procedure Delay(dwMilliseconds: word);

var

iStart, iStop: DWORD;

begin

iStart := GetTickCount;

repeat

iStop := GetTickCount;

Application.ProcessMessages;

until (iStop - iStart) >= dwMilliseconds;

end;

procedure TMainForm.BrowseClick(Sender: TObject);

begin

SelectDirectory('Выберите папку, содержащую электронные журналы',' ',Path);

DirPath.Text:=Path;

end;

{-------Создание сообщений--------}

procedure CreateMessages;

var

i, ID, n, j, x:integer;

S:string;

MyChar:char;

begin

//Открытие таблицы "Школы" в БД MainDB.mdb

MainForm.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\MainDB.mdb;Persist Security Info=False';

MainForm.ADOConnection1.Open;

MainForm.ADOConnection1.BeginTrans;

MainForm.ADOTable1.TableName:='Школы';

MainForm.ADOTable1.Open;

MainForm.ADOTable1.First;

SetLength(FileList,0);

//Поиск БД учеников согласно таблице "Школы"

While not MainForm.ADOTable1.Eof do

begin

T:=Today;

for i:=1 to 4 do

begin

Year:=YearOf(T);

if i>2

then

Dec(Year);

S:=GetCurrentDir+'\DataBases\'+MainForm.ADOTable1.FieldByName('Школа').Value+'\'+MainForm.ADOTable1.FieldByName('Класс').Value+'\DB_'+IntToStr(i)+'_'+IntToStr(Year)+'.mdb';

if FileExists(S)

then

begin

SetLength(FileList,Length(FileList)+1);

//FileList:= Список_БД_учеников

FileList[High(FileList)]:=S;

end;

end;

MainForm.ADOTable1.Next;

end;

MainForm.ADOTable1.Close;

//Открытие таблицы "Сообщения" в БД MainDB.mdb

MainForm.ADOTable1.TableName:='Сообщения';

MainForm.ADOTable1.Open;

//Цикл1

for i:=0 to High(FileList)do

begin

MainForm.ADOConnection2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+FileList[i]+';Persist Security Info=False';

MainForm.ADOConnection2.Open;

MainForm.ADOConnection2.BeginTrans;

//Открытие таблицы "Ученики" в i-той БД учеников

MainForm.ADOTable2.TableName:='Ученики';

MainForm.ADOTable2.Open;

MainForm.ADOTable2.First;

//Цикл2

While not MainForm.ADOTable2.Eof do

begin

if MainForm.ADOTable1.IsEmpty

then

begin

MainForm.ADOTable1.Append;

MainForm.ADOTable1.FieldByName('ID').Value:=1;

end

else

begin

MainForm.ADOTable1.Last;

ID:=MainForm.ADOTable1.FieldByName('ID').Value;

Inc(ID);

MainForm.ADOTable1.Append;

MainForm.ADOTable1.FieldByName('ID').Value:=ID;

end;

//Формирование текста сообщения

MainForm.ADOTable1.FieldByName('Номер абонента').Value:=MainForm.ADOTable2.FieldByName('Телефон').Value;

S:=MainForm.ADOTable2.FieldByName('Имя').Value+#10;

MainForm.ADOTable3.TableName:=MainForm.ADOTable2.FieldByName('Фамилия').Value+' '+MainForm.ADOTable2.FieldByName('Имя').Value+' - '+MainForm.ADOTable2.FieldByName('Телефон').Value;

MainForm.ADOTable3.Open;

n:=0;

for j:=2 to MainForm.ADOTable3.FieldCount do

begin

S:=S+AnsiReplaceStr(MainForm.ADOTable3.Fields.FieldByNumber(j).FieldName,'/','.')+#10;

x:=0;

MainForm.ADOTable3.First;

While not MainForm.ADOTable3.Eof do

begin

MyChar:=#0;

if (Length(MainForm.ADOTable3.Fields.FieldByNumber(j).AsString)=2)

then

begin

MyChar:=MainForm.ADOTable3.Fields.FieldByNumber(j).AsString[2];

end;

if (MainForm.ADOTable3.Fields.FieldByNumber(j).Value<>null)and(MainForm.ADOTable3.Fields.FieldByNumber(j).Value<>'')

and(MyChar=#14)

then

begin

S:=S+MainForm.ADOTable3.FieldByName('Предмет').Value+'-'+MainForm.ADOTable3.Fields.FieldByNumber(j).AsString[1]+#10;

Inc(n);

Inc(x);

MainForm.ADOTable3.Edit;

MainForm.ADOTable3.Fields.FieldByNumber(j).Value:=MainForm.ADOTable3.Fields.FieldByNumber(j).AsString[1];

MainForm.ADOTable3.Post;

end;

MainForm.ADOTable3.Next;

end;

if x=0

then

S:=copy(S,1,Length(S)-Length(MainForm.ADOTable3.Fields.FieldByNumber(j).FieldName+#10));

end;

MainForm.ADOTable3.Close;

j:=Length(S);

While (S[j]=' ')or(S[j]=#10) do

begin

S:=copy(S,1,Length(S)-1);

Dec(j);

end;

MainForm.ADOTable1.FieldByName('Текст сообщения').Value:=S;

//есть новые оценки?

if n=0

then

MainForm.ADOTable1.Cancel

else

//Добавление записи в таблице "Сообщения"

MainForm.ADOTable1.Post;

MainForm.ADOTable2.Next;

end;

//конец Цикл2

MainForm.ADOTable2.Close;

MainForm.ADOConnection2.CommitTrans;

MainForm.ADOConnection2.Close;

end;

//конец Цикл1

MainForm.ADOTable1.Close;

MainForm.ADOConnection1.CommitTrans;

MainForm.ADOConnection1.Close;

end;

//Внесение оценок в БД

procedure TMainForm.LogBtnClick(Sender: TObject);

var

SR: TSearchRec;

i, j, r, c, x, y, ID:integer;

Range: ExcelRange;

Matrix: array of array of string;

School, Form, Term:string;

Existing:boolean;

Progress: TGauge;

StaticText: TStaticText;

Label1_: TLabel;

Label2_: TLabel;

begin

//---Изменение размера окна

i:=ClientHeight;

Constraints.MaxHeight:=311;

ClientHeight:=i+111;

StaticText:=TStaticText.Create(MainForm);

with StaticText do

begin

Font.Size:=10;

Font.Style:=[fsBold];

Caption:='Подождите, идёт добавленние данных. Это может занять несколько минут';

Top:=i+8;

Left:=7;

Height:=33;

Width:=321;

Alignment:=taCenter;

AutoSize:=true;

Parent:=MainForm;

end;

Label1_:=TLabel.Create(Self);

with Label1_ do

begin

Font.Size:=10;

Top:=i+48;

Left:=24;

Caption:='Добавляется файл';

AutoSize:=true;

Parent:=Self;

end;

Label2_:=TLabel.Create(Self);

with Label2_ do

begin

Font.Size:=10;

Top:=i+48;

Left:=152;

AutoSize:=true;

Parent:=Self;

end;

Progress:=TGauge.Create(Self);

with Progress do

begin

Top:=i+72;

Left:=16;

Height:=25;

Width:=MainForm.ClientWidth-32;

ForeColor:=$66cc66;

Parent:=Self;

end;

Progress.PercentDone;

Progress.AddProgress(0);

MainForm.Refresh;

//---

//---Поиск электронных журналов по указанному пути

Path:=DirPath.Text;

if Path[Length(Path)]='\'

then

Path:=Path

else

Path:=Path+'\';

SetLength(FileList,0);

if FindFirst(Path + '*.xls', faAnyFile, SR) = 0 then

begin

repeat

if (SR.Attr <> faDirectory) then

begin

SetLength(FileList,Length(FileList)+1);

//FileList:=Список_электронных_журналов

FileList[High(FileList)]:=SR.Name;

end;

until FindNext(SR) <> 0;

FindClose(SR);

end;

//Цикл1

for i:=0 to High(FileList)do

begin

T:=Today;

Label2_.Caption:=FileList[i];

MainForm.Refresh;

Term:=FileList[i];

School:=copy(Term,1,pos('_',Term)-1);

Term:=copy(Term,pos('_',Term)+1,Length(Term)-pos('_',Term));

Form:=copy(Term,1,pos('_',Term)-1);

Term:=copy(Term,pos('_',Term)+1,pos('.',Term)-pos('_',Term)-1);

Year:=YearOf(T);

if (Term='3')or(Term='4')

then

Dec(Year);

//Папка "Школа\Класс" существует?

if not

FileExists(GetCurrentDir+'\DataBases\'+School+'\'+Form+'\DB_'+Term+'_'+IntToStr(Year)+'.mdb')

then

begin

if not DirectoryExists(GetCurrentDir+'\DataBases\'+School+'\'+Form)

then

begin

if not FileExists(GetCurrentDir+'\DataBases\MainDB.mdb')

then

CopyFile(PChar(GetCurrentDir+'\DataBases\Base\MainDB.mdb'),PChar(GetCurrentDir+'\DataBases\MainDB.mdb'),false);

//Создание папки "Школа\Класс"

CreateDir(GetCurrentDir+'\DataBases\'+School);

CreateDir(GetCurrentDir+'\DataBases\'+School+'\'+Form);

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\MainDB.mdb;Persist Security Info=False';

ADOConnection1.Open;

ADOConnection1.BeginTrans;

//Добавление записи в таблице "Школы" в MainDB.mdb

ADOTable1.TableName:='Школы';

ADOTable1.Open;

ADOTable1.Append;

ADOTable1.FieldByName('Школа').Value:=School;

ADOTable1.FieldByName('Класс').Value:=Form;

ADOTable1.Post;

ADOTable1.Close;

ADOConnection1.CommitTrans;

ADOConnection1.Close;

end;

CopyFile(PChar(GetCurrentDir+'\DataBases\Base\DataBase.mdb'),PChar(GetCurrentDir+'\DataBases\'+School+'\'+Form+'\DB_'+Term+'_'+IntToStr(Year)+'.mdb'),false);

end;

//Открытие файла DB_ч_год.mdb

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\'+School+'\'+Form+'\DB_'+Term+'_'+IntToStr(Year)+'.mdb;Persist Security Info=False';

ADOConnection1.Open;

ADOConnection1.BeginTrans;

//Открытие i-ого электронного журнала

WB.ConnectTo(XL.Workbooks.Open(

Path+FileList[i],

2,

False,;

EmptyParam,

EmptyParam,

EmptyParam,

EmptyParam,

EmptyParam,

EmptyParam,

EmptyParam,

EmptyParam,

EmptyParam,

False,

EmptyParam,

EmptyParam,

0));

//Цикл2

for j:=1 to WB.Sheets.Count do

begin

SetLength(Matrix,0,0);

WS.ConnectTo(WB.Worksheets[j] as _WorkSheet);

Range := WS.Range['A1', EmptyParam].SpecialCells(xlCellTypeLastCell, EmptyParam);

SetLength(Matrix,Range.Row,Range.Column);

for r:=0 to High(Matrix)do

for c:=0 to High(Matrix[r])do

Matrix[r,c]:=WS.Cells.Item[r+1,c+1];

y:=0;

for r:=High(Matrix) downto 0 do

begin

x:=0;

for c:=0 to High(Matrix[r])do

if Matrix[r,c]=''

then

Inc(x);

if x=Length(Matrix[r])

then

Inc(y)

else

break;

end;

x:=0;

for r:=High(Matrix[0])downto 0 do

if Matrix[0,r]=''

then

Inc(x)

else

break;

SetLength(Matrix,Length(Matrix)-y,Length(Matrix[0])-x);

for r:=1 to High(Matrix)do

begin

x:=0;

for c:=High(Matrix[r])downto 0 do

if Matrix[r,c]=''

then

Inc(x)

else

break;

SetLength(Matrix[r],Length(Matrix[r])-x);

end;

//Цикл3

for x:=1 to High(Matrix)do

begin

try

ADOTable1.TableName:=Matrix[x,1]+' - '+Matrix[x,0];

ADOTable1.Open;

except

ADOTable1.TableName:='Ученики';

ADOTable1.Open;

if ADOTable1.IsEmpty

then

begin

ADOTable1.Append;

ADOTable1.FieldByName('ID').Value:=1;

end

else

begin

ADOTable1.Last;

ID:=ADOTable1.FieldByName('ID').Value;

Inc(ID);

ADOTable1.Append;

ADOTable1.FieldByName('ID').Value:=ID;

end;

//Добавление записи в таблицу "Ученики"

ADOTable1.FieldByName('Фамилия').Value:=copy(Matrix[x,1],1,pos(' ',Matrix[x,1])-1);

ADOTable1.FieldByName('Имя').Value:=copy(Matrix[x,1],pos(' ',Matrix[x,1])+1,Length(Matrix[x,1])-pos(' ',Matrix[x,1]));

ADOTable1.FieldByName('Телефон').Value:=Matrix[x,0];

ADOTable1.Post;

ADOTable1.Close;

//Создание таблицы "Фамилия_Имя - Телефон"

ADOCommand1.CommandText:='Create Table ['+

Matrix[x,1]+' - '+Matrix[x,0]+'] ([Предмет] varchar(30), ';

for y:=2 to High(Matrix[0])-1 do

ADOCommand1.CommandText:=ADOCommand1.CommandText+

'['+Matrix[0,y]+'] varchar(2), ';

ADOCommand1.CommandText:=ADOCommand1.CommandText+

'['+Matrix[0,High(Matrix[0])]+'] varchar(2))';

ADOCommand1.Execute;

//Открытие таблицы "Фамилия_Имя - Телефон"

ADOTable1.TableName:=Matrix[x,1]+' - '+Matrix[x,0];

ADOTable1.Open;

end;

ADOTable1.First;

Existing:=false;

//---Внесение оценок в таблицу

While not ADOTable1.Eof do

begin

if ADOTable1.FieldByName('Предмет').Value=WS.Name

then

begin

Existing:=true;

break;

end;

ADOTable1.Next;

end;

if Existing

then

begin

ADOTable1.Edit;

for y:=2 to High(Matrix[x]) do

if (ADOTable1.FieldByName(Matrix[0,y]).Value<>Matrix[x,y])

and(Matrix[x,y]<>'')

then

ADOTable1.FieldByName(Matrix[0,y]).Value:=Matrix[x,y]+#14;

ADOTable1.Post;

end

else

begin

ADOTable1.Append;

ADOTable1.FieldByName('Предмет').Value:=WS.Name;

for y:=2 to High(Matrix[x]) do

if Matrix[x,y]<>''

then

ADOTable1.FieldByName(Matrix[0,y]).Value:=Matrix[x,y]+#14;

ADOTable1.Post;

end;

ADOTable1.Close;

//---

end;

//конец Цикл3

Progress.AddProgress(Round(100/(Length(FileList)*WB.Sheets.Count)));

end;

//конец Цикл2

WB.Close;

ADOConnection1.CommitTrans;

ADOConnection1.Close;

end;

//конец Цикл1

//Изменение размера окна

Progress.AddProgress(100);

Progress.Destroy;

Label1_.Destroy;

Label2_.Destroy;

StaticText.Destroy;

ClientHeight:=ClientHeight-111;

Constraints.MaxHeight:=200;

CreateMessages; //Создание сообщений

MessageDlg('Данные успешно внесены',mtInformation,[mbOK],0);

end;

{-------Отправка сообщений--------}

procedure TMainForm.SendBtnClick(Sender: TObject);

var

S1,S2:string;

S:WideString;

start,n,i:integer;

begin

MainForm.nrComm1.Active:=true;

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\MainDB.mdb;Persist Security Info=False';

ADOConnection1.Open;

ADOConnection1.BeginTrans;

//Открытие таблицы "Сообщения" в MainDB.mdb

ADOTable1.TableName:='Сообщения';

ADOTable1.Open;

ADOTable1.First;

start:=0;

//Цикл1

While not ADOTable1.Eof do

begin

//Сообщение отправлено?

if not ADOTable1.FieldByName('Статус отправки').AsBoolean

then

begin

if (ADOTable1.FieldByName('Номер абонента').Value<>'')or(ADOTable1.FieldByName('Номер абонента').Value<>null)

then

begin

S1:=ADOTable1.FieldByName('Номер абонента').Value;

S:=ADOTable1.FieldByName('Текст сообщения').Value;

n:=1;

if Length(S)>69

then

n:=(Length(S) div 69)+1;

if ((Length(S)+n*4)div 69)>(n-1)

then

Inc(n);

if n>1

then

for i:=1 to n do

begin

S:=IntToStr(i)+'/'+IntToStr(n)+#10+S;

S2:=copy(S,1,69);

S:=copy(S,70,Length(S)-69);

//Отправка сообщения абоненту

nrGsm1.SmsSend(S1,S2,false);

//Ожидание 15 секунд для отправки сообщения

Delay(15000);

end

else

begin

//Отправка сообщения абоненту

nrGsm1.SmsSend(S1,S,false);

//Ожидание 15 секунд для отправки сообщения

Delay(15000);

end;

ADOTable1.Edit;

ADOTable1.FieldValues['Статус отправки']:=true;

ADOTable1.FieldByName('Дата отправки').Value:=DateToStr(Today);

ADOTable1.UpdateRecord;

ADOTable1.Post;

end;

Inc(Start);

end;

ADOTable1.Next;

end;

//конец Цикл1

ADOTable1.Close;

ADOConnection1.CommitTrans;

ADOConnection1.Close;

//N сообщений отправлено

MessageDlg('Отправлено сообщений:'+IntToStr(start)+'.',mtInformation,[mbOK],0);

end;

procedure TMainForm.FormShow(Sender: TObject);

begin

Form1.ShowModal;

OpenHideBtn.Caption:=#134;

end;

procedure TMainForm.OpenHideBtnClick(Sender: TObject);

var

i:integer;

begin

i:=Width;

if OpenHideBtn.Left=320 then

begin

Constraints.MaxWidth:=474;

Width:=i+100;

OpenHideBtn.Left:=420;

OpenHideBtn.Layout:=blGlyphRight;

OpenHideBtn.Caption:=#133;

PupilsBtn.Visible:=true;

MsgBtn.Visible:=true;

end

else

begin

Constraints.MaxWidth:=374;

OpenHideBtn.Left:=320;

OpenHideBtn.Top:=0;

Width:=i-100;

OpenHideBtn.Layout:=blGlyphLeft;

OpenHideBtn.Caption:=#134;

PupilsBtn.Visible:=false;

MsgBtn.Visible:=false;

end;

end;

procedure TMainForm.PupilsBtnClick(Sender: TObject);

var

i,j:integer;

Exist:boolean;

begin

DBForm.Caption:='База данных Ученики';

DBForm.HeaderLbl.Caption:='Введите необходимую информацию';

DBForm.HeaderLbl.Visible:=true;

DBForm.YearEdit.Visible:=true;

DBForm.YearLbl.Visible:=true;

DBForm.TermEdit.Visible:=true;

DBForm.TermLbl.Visible:=true;

DBForm.SchoolCBox.Visible:=true;

DBForm.SchoolLbl.Visible:=true;

DBForm.FormCBox.Visible:=true;

DBForm.FormLbl.Visible:=true;

DBForm.PupilCBox.Visible:=true;

DBForm.PupilLbl.Visible:=true;

DBForm.TermEdit.Enabled:=false;

DBForm.SchoolCBox.Enabled:=false;

DBForm.FormCBox.Enabled:=false;

DBForm.PupilCBox.Enabled:=false;

DBForm.YearEdit.Text:='';

DBForm.TermEdit.Text:='';

DBForm.SchoolCBox.Clear;

DBForm.FormCBox.Clear;

DBForm.PupilCBox.Clear;

DBForm.Width:=672;

DBForm.Constraints.MaxWidth:=672;

DBForm.TextMsg.Visible:=false;

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\MainDB.mdb;Persist Security Info=False';

ADOTable1.TableName:='Школы';

SetLength(SchoolList,0);

SetLength(FormList,0,0);

ADOTable1.Open;

ADOTable1.First;

While not ADOTable1.Eof do

begin

SetLength(SchoolList,Length(SchoolList)+1);

SetLength(FormList,Length(FormList)+1);

SchoolList[High(SchoolList)]:=ADOTable1.FieldByName('Школа').AsString;

While (ADOTable1.FieldByName('Школа').AsString=SchoolList[High(SchoolList)])and(not ADOTable1.Eof) do

begin SetLength(FormList[High(FormList)],Length(FormList[High(FormList)])+1); FormList[High(FormList),High(FormList[High(FormList)])]:=ADOTable1.FieldByName('Класс').AsString;

ADOTable1.Next;

end;

end;

ADOTable1.Close;

DBForm.SchoolCBox.Clear;

for i:=0 to High(SchoolList)do

DBForm.SchoolCBox.Items.Add(SchoolList[i]);

DBForm.DBGrid1.ReadOnly:=true;

DBForm.DBGrid1.OnDrawDataCell:=DBForm.DBGrid1DrawDataCell1;

DBForm.ShowModal;

end;

procedure TMainForm.MsgBtnClick(Sender: TObject);

begin

DBForm.Caption:='База данных Сообщения';

DBForm.HeaderLbl.Caption:='Нажмите сообщение, текст которого хотите посмотреть';

DBForm.YearEdit.Visible:=false;

DBForm.YearLbl.Visible:=false;

DBForm.TermEdit.Visible:=false;

DBForm.TermLbl.Visible:=false;

DBForm.SchoolCBox.Visible:=false;

DBForm.SchoolLbl.Visible:=false;

DBForm.FormCBox.Visible:=false;

DBForm.FormLbl.Visible:=false;

DBForm.PupilCBox.Visible:=false;

DBForm.PupilLbl.Visible:=false;

DBForm.Width:=672;

DBForm.Constraints.MaxWidth:=672;

DBForm.TextMsg.Visible:=false;

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\MainDB.mdb;Persist Security Info=False';

ADOTable1.TableName:='Сообщения';

ADOTable1.Active:=true;

DBForm.DBGrid1.ReadOnly:=false;

DBForm.DBGrid1.OnDrawDataCell:=DBForm.DBGrid1DrawDataCell;

DBForm.ShowModal;

end;

end.

Окно отображения БД (листинг)

unit DBWindow;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, MainWindow, Grids, DBGrids, DB, DBTables, StdCtrls;

type

TDBForm = class(TForm)

DBGrid1: TDBGrid;

DataSource1: TDataSource;

YearEdit: TEdit;

TermEdit: TEdit;

SchoolCBox: TComboBox;

FormCBox: TComboBox;

PupilCBox: TComboBox;

TextMsg: TMemo;

YearLbl: TLabel;

TermLbl: TLabel;

SchoolLbl: TLabel;

FormLbl: TLabel;

PupilLbl: TLabel;

HeaderLbl: TLabel;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;

Field: TField; State: TGridDrawState);

procedure DBGrid1DrawDataCell1(Sender: TObject; const Rect: TRect;

Field: TField; State: TGridDrawState);

procedure SchoolCBoxChange(Sender: TObject);

procedure FormCBoxChange(Sender: TObject);

procedure PupilCBoxChange(Sender: TObject);

procedure YearEditChange(Sender: TObject);

procedure TermEditChange(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure FormCreate(Sender: TObject);

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

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DBForm: TDBForm;

implementation

{$R *.dfm}

procedure TDBForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

MainForm.ADOTable1.Active:=false;

MainForm.ADOConnection1.Close;

FormCBox.Enabled:=false;

PupilCBox.Enabled:=false;

//MainForm.ADOTable1.Close;

end;

procedure TDBForm.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;

Field: TField; State: TGridDrawState);

var

S: string;

begin

if Field is TMemoField then

with (Sender as TDBGrid).Canvas do

begin

S := MainForm.ADOTable1.FieldValues['Текст сообщения'];

{ remove carriage returns & line feeds }

while Pos(#13, S) > 0 do S[Pos(#13, S)] := ' ';

while Pos(#10, S) > 0 do S[Pos(#10, S)] := ' ';

{ clear the cell }

FillRect(Rect);

{ fill cell with memo data }

TextOut(Rect.Left, Rect.Top, S);

end;

end;

procedure TDBForm.SchoolCBoxChange(Sender: TObject);

var

i:integer;

begin

FormCBox.Enabled:=true;

PupilCBox.Enabled:=false;

FormCBox.Clear;

for i:=0 to High(FormList[SchoolCBox.ItemIndex])do

DBForm.FormCBox.Items.Add(FormList[SchoolCBox.ItemIndex,i]);

end;

procedure TDBForm.FormCBoxChange(Sender: TObject);

begin

PupilCBox.Enabled:=true;

PupilCBox.Clear;

if FileExists(GetCurrentDir+'\DataBases\'+SchoolCBox.Items.Strings[SchoolCBox.ItemIndex]+'\'+FormCBox.Items.Strings[FormCBox.ItemIndex]+'\'+'DB_'+TermEdit.Text+'_'+YearEdit.Text+'.mdb')

then

begin

MainForm.ADOConnection1.Close;

MainForm.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\'+SchoolCBox.Items.Strings[SchoolCBox.ItemIndex]+'\'+FormCBox.Items.Strings[FormCBox.ItemIndex]+'\'+'DB_'+TermEdit.Text+'_'+YearEdit.Text+'.mdb;Persist Security Info=False';

MainForm.ADOTable1.TableName:='Ученики';

MainForm.ADOTable1.Open;

MainForm.ADOTable1.First;

While not MainForm.ADOTable1.Eof do

begin

PupilCBox.Items.Add(MainForm.ADOTable1.FieldValues['Фамилия']+' '+MainForm.ADOTable1.FieldValues['Имя']+' - '+MainForm.ADOTable1.FieldValues['Телефон']);

MainForm.ADOTable1.Next;

end;

MainForm.ADOTable1.Close;

end

else

begin

PupilCBox.Items.Add('Нет такой БД');

PupilCBox.ItemIndex:=0;

PupilCBox.Enabled:=false;

end;

end;

procedure TDBForm.PupilCBoxChange(Sender: TObject);

begin

MainForm.ADOConnection1.Close; MainForm.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\'+SchoolCBox.Items.Strings[SchoolCBox.ItemIndex]+'\'+FormCBox.Items.Strings[FormCBox.ItemIndex]+'\'+'DB_'+TermEdit.Text+'_'+YearEdit.Text+'.mdb;Persist Security Info=False';

MainForm.ADOTable1.TableName:=PupilCBox.Items.Strings[PupilCBox.ItemIndex];

MainForm.ADOTable1.Active:=true;

end;

procedure TDBForm.YearEditChange(Sender: TObject);

begin

MainForm.ADOTable1.Active:=false;

MainForm.ADOConnection1.Close;

TermEdit.Text:='';

SchoolCBox.ItemIndex:=-1;

FormCBox.ItemIndex:=-1;

PupilCBox.ItemIndex:=-1;

TermEdit.Enabled:=true;

SchoolCBox.Enabled:=false;

FormCBox.Enabled:=false;

PupilCBox.Enabled:=false;

end;

procedure TDBForm.TermEditChange(Sender: TObject);

begin

MainForm.ADOTable1.Active:=false;

MainForm.ADOConnection1.Close;

SchoolCBox.ItemIndex:=-1;

FormCBox.ItemIndex:=-1;

PupilCBox.ItemIndex:=-1;

SchoolCBox.Enabled:=true;

FormCBox.Enabled:=false;

PupilCBox.Enabled:=false;

end;

procedure TDBForm.DBGrid1CellClick(Column: TColumn);

var

S1,S2:string;

begin

TextMsg.Clear;

if Column.FieldName='Текст сообщения'

then

begin

Constraints.MaxWidth:=856;

Width:=856;

TextMsg.Visible:=true;

S1:=DBGrid1.SelectedField.AsString;

while pos(#10,S1)>1 do

begin

S2:=copy(S1,1,pos(#10,S1)-1);

S1:=copy(S1,pos(#10,S1)+1,Length(S1)-pos(#10,S1));

TextMsg.Lines.Add(S2);

end;

end

else

begin

Width:=672;

Constraints.MaxWidth:=672;

TextMsg.Visible:=false;

end;

end;

procedure TDBForm.FormCreate(Sender: TObject);

begin

YearEdit.Text:='';

TermEdit.Text:='';

SchoolCBox.Clear;

FormCBox.Clear;

PupilCBox.Clear;

end;

procedure TDBForm.DBGrid1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if (key=vk_left)or(key=vk_up)or(key=vk_right)or(key=vk_down)

then

DBGrid1CellClick(DBGrid1.Columns.Items[DBGrid1.SelectedIndex]);

end;

end.