СОДЕРЖАНИЕ
Список принятых обозначений и сокращений
ВВЕДЕНИЕ
ГЛАВА 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®;
Электронный журнал – файл формата MSExcel 2003, заполненный согласно правилам, см. глава Описание программы, пункт Входные данные;
Родители – лица, ответственные за учеников в рамках учебного процесса; конечный абонент;
Школа – условное обозначение учебного заведения среднего или среднего специального профиля, в котором используется автоматизированная система оповещения родителей;
Э-оператор – сотрудник Школы, ответственный за заполнение Электронного журнала;
С-оператор (Системный оператор) – лицо, в чьи обязанности входит работа с программным продуктом "Оповещение родителей": формирование БД, отправка сообщений, техническая поддержка;
SMS(СМС) – ShortMessageService – служба коротких сообщений;
ПО – Программное обеспечение;
ОС – Операционная система;
GSM – GlobalSystemsforMobileCommunications – глобальный цифровой стандарт для мобильной связи.
Повышение качества образования – одна из наиболее важных целей России на сегодняшний день и национальный проект "Образование" тому яркий пример. Создаются новые методики, увеличивается количество учебных заведений среднего и среднего специального профиля, улучшается оснащенность кабинетов,
Благодаря стремительному развитию технологий и внедрению электронных автоматизированных систем во все сферы человеческой деятельности, образование, как одна из наиболее важных жизненных ценностей, не может остаться в стороне. Инновации затронули не только методы и формы обучения, но и работу с родителями. Своевременная осведомленность родителей об успеваемости и посещаемости ученика позволят нарисовать полную картину о прогрессе и поможет обнаружить проблемы на ранних этапах.
В данной дипломной работе представлена автоматизированная система передачи данных на примере работы программы "Оповещение родителей".
Актуальность создания программного обеспечения диктуется не отсутствием на рынке образцов с параметрами, удовлетворяющими заданным, но ценовыми и частными требованиями заказчика.
Научная проблема. Современный рынок программного обеспечения предлагает широкий спектр услуг потребителям во многих сферах деятельности, в том числе и образовании, в разных ценовых категориях и с различными наборами функций.
Поставщики программного обеспечения, пытаясь решать задачи, с которыми они сталкиваются на практике, усложняют программный продукт. Это приводит к дополнительным сложностям при его внедрении и, соответственно, увеличивает стоимость проекта.
После тщательно анализа выявились следующие несогласованности в целях решаемой задачи:
1. Несоответствие требований заказчика и уже имеющихся программных продуктов.
2. Высокая стоимость
3. Неиспользуемые функции
Цели создания системы:
- Автоматизация процесса информирования родителей об успеваемости учеников.
- Внедрение современных технологий в воспитательный процесс.
- Формирование у родителей более полной картины успеваемости ученика
При ограничениях:
- Возможность работы с несколькими школами
- Интуитивно понятная структура размещения данных
- Отправка сообщений через GSM -модем
- Минимизация стоимости разработки и затрат на эксплуатацию по
Задачи.
Реализовать выполнение следующих пунктов:
- преобразование школьного журнала в электронный вид
- формирование и администрирование баз данных
- создание множества SMS сообщений
- реализация процесса передачи SMS родителям
- осуществление обратной связи
Результаты:
Поставленные цели достигнуты. Программное обеспечение создано и находится в эксплуатации в г. Зеленогорске.
ГЛАВА 1. ПРЕДПРОЕКТНЫЕ ИССЛЕДОВАНИЯ
За последнее десятилетие Россия сделала огромный шаг вперед во многих сферах, в том числе в информационных технологиях. Сотовая связь заняла позиции основного средства связи, а снижающаяся стоимость, доступность и качество обслуживания сделали её неотъемлемой частью жизни современного человека.
Разумно использовать эту возможность в образовательной сфере, а именно предоставить возможность родителям получать сведения об успеваемости своего ребенка прямо на сотовый телефон в виде коротких сообщений – SMS. Тем самым ускорить процесс информирования родителей.
Из-за отсутствия сотовой связи, раньше процесс оповещения представлял собой длинную цепочку от выставления учителями оценок до родителей, на некоторых этапах которой информация могла быть потеряна или искажена.
На сегодняшний день рынок ПО стал разнообразнее в плане предоставления автоматизированных систем. Рассмотрим несколько используемых программных продуктов.
Модель "как есть".
На рисунке 1. Представлена модель текущей ситуации в области оповещения родителей. Сначала учителя профильных предметов выставляют полученные учеником оценки и отметки о посещаемости в классный журнал, затем классный руководитель переносит все оценки и отметки в дневник ученика. Ученик обязан еженедельно предоставлять дневник на подпись родителям, а последующие проверки дневника позволяют классному руководителю контролировать процесс оповещения. В реальности же родители не всегда получают своевременные и полные данные о текущем положении своего ребенка. Дело тут не только в несвоевременном заполнении дневника учеником или в нежелании рассказывать родителям о своей успеваемости, но и в случайном факторе (утрата дневника, ошибка учителя при переносе данных из журнала в дневник и др.)
Рисунок 1.
В данном разделе рассматриваются несколько наиболее популярных продуктов автоматизированных систем передачи данных, используемых в школах в нашей стране.
- СМС дневник для родителей 2.17
Программа "SMS– дневник для родителей" предназначена выполнять функции скоростной передачи данных об успеваемости, посещаемости, любой другой информации о каждом школьнике, отдельном классе или об учениках всей школы одновременно.
Основные возможности программы:
o Создание базы данных по классам
o Создание базы данных по ученикам
o Формирование сообщения путем занесения оценок
o Формирование текстовых сообщений
o Возможность отправки сообщений через систему e-mail2sms одному или группе абонентов
o Возможность ввода оценок ученику за определенный день вручную или из электронного журнала
o Возможность просмотра введенных оценок и сообщений
Недостатки
Работа программы ограничена только одной школой
Необходимость наличия Интернета
Поддержка сотовым оператором функции e-mail2sms
- XL Рассылка SMSMobile 1.3.14
XL Рассылка SMS Mobile - Программа предназначена для массовой и выборочной рассылки SMS сообщений на мобильные телефоны абонентов. Программа работает через мобильный телефон (или терминал) подключенный к последовательному порту компьютера.
Основные возможности программы XL Рассылка SMS Mobile:
o создание иерархического справочника абонентов с подробной информацией об абонентах;
o поиск по базе абонентов;
o создание иерархического справочника рубрик;
o создание шаблонов сообщений;
o ведется контроль отплаты абонентов;
o возможность отключения контроля отплаты абонентов;
o настройка списка подписанных рубрик для каждого абонента;
o настройка транслита;
o рассылка сообщения на определенную рубрику;
o возможность отправки SMS сообщения одному абоненту;
o автоматическое добавление подписи к рассылаемым сообщениям;
o автоматическая кодировка сообщений в транслите;
o автоматическая разбивка сообщений по 160 знаков (в транслите) и по 70 знаков (в кириллице);
o автоматическая отправка сообщений для одной рубрики в кириллице и транслите (в зависимости от индивидуальных настроек абонента);
o отсроченная доставка сообщений;
o автоматическая рассылка поздравлений с Днём Рождения и напоминаний об оплате;
o архивирование информации;
o работа с различными адресными базами;
o гибкая настройка программы;
Недостатки
Нет реализации модульности ПО
Не адаптирована для работы с учебными заведениями
Иерархическая структура ведения справочника абонентов не соответствует школьной системе
Из n-функций заказчику необходимы только k.
GTGSMS-дневник
GTGSMS-дневник - это сервис предоставления школьной информации в любое время и в любом месте посредством SMS-рассылки. Сервис позволяет ученикам и родителям оперативно получать информацию обо всех значимых событиях школы, об оценках и поведении ученика путем SMS-сообщений. Сервис "SMS-дневник" представляет собой электронную версию обычного дневника - базу данных, в которой хранятся все оценки и сообщения учителей.
Основные возможности программы:
o Создание базы данных по ученикам и их родителям
o Возможность просмотра базы
o Обработка статистических данных
o Рассылка сообщений
o Информирование родителей об отсутствии ученика на уроках.
o Информирование об изменении расписания уроков.
o Информирование о родительских собраниях.
o Приглашение родителей в школу.
o Рассылка домашнего задания на электронную почту родителя или ученика.
o Информирование об успехах ученика.
o Рассылка общих объявлений (например, об отмене учебного дня).
o Информирование о культурных мероприятиях.
o Возможность отправки сообщений немедленно или в заданное время.
o Учет абонентской платы
Недостатки
Стоимость
Нет возможности использования журнала формата MSExcel 2003
1.2 Проблемная область
1. Несоответствие требований заказчика и уже имеющихся программных продуктов.
2. Высокая стоимость
3. Неиспользуемые функции
Цели создания системы:
- Автоматизация процесса информирования родителей об успеваемости учеников.
- Внедрение современных технологий в воспитательный процесс.
- Формирование у родителей более полной картины успеваемости ученика
При ограничениях:
- Возможность работы с несколькими школами
- Интуитивно понятная структура размещения данных
- Отправка сообщений через GSM -модем
- Минимизация стоимости разработки и затрат на эксплуатацию по
Задачи.
Реализовать выполнение следующих пунктов:
- преобразование школьного журнала в электронный вид
- формирование и администрирование баз данных
- создание множества SMS сообщений
- реализация процесса передачи SMS родителям
- осуществление обратной связи
Предполагается, что система может быть использована в средних, средних специальных и общеобразовательных учебных заведениях, в которых возможно использование электронных журналов.
Модель "как будет".
На рисунке 2 представлена модель информационной системы "Оповещение родителей".
Школа предоставляет школьные журналы Э-оператору, который в свою очередь производит заполнение Электронных журналов средствами MSExcel 2003 по установленным правилам. После заполнения Э-оператор передает Электронные журналы С-оператору (посредством электронной почты или съемного носителя). С-оператор создает БД Ученики и БД Сообщения на основе полученных журналов и производит отправку коротких сообщений (СМС) Родителям. Также в обязанности С-оператора входит осуществление технической поддержки Родителей (ошибки в полученных сообщениях и/или недоставки сообщения, формирование отчета).
Рисунок 2.
Поскольку реализация всей системы сложна и требует большого количества времени было предложено разбить её на два раздела. Мой раздел представлен на рисунке 3.
Цели:
- Обеспечить реализацию процесса предоставления школьных журналов С-оператору.
- Обеспечить процесс создания Электронных журналов на основе школьных.
- Описать способы передачи Электронного журнала от Э-оператора Системному оператору.
- Обеспечить системного оператора методами и средствами для создания и заполнения БД "Ученики"
Рисунок 3.
ГЛАВА 2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Программа "Оповещение родителей" представляет собой модуль автоматизированной системы передачи данных "Школа", который реализует следующие функции:
- Формирование на основе Э-журналов БД учеников
- Формирование БД сообщений на основе БД учеников
- Отправка СМС из БД сообщений абонентам с использованием GSM модема
- Просмотр БД
2.1 Требования к программе или программному изделию
Требования к функциональным характеристикам
В программе должны быть реализованы следующие функции.
- Создание баз данных "Ученики" на основе Электронных журналов.
Требования к составу и параметрам технических средств
Программа функционирует при следующем составе и параметрах технических средств. Компьютер типа IBMPC с процессором не менее чем 300 МГц, с оперативной памятью не менее 256 Мб и не менее 4Гб свободного дискового пространства.
Требования к информационной и программной совместимости
Программа "Оповещение родителей" должна функционировать под управлением ОС MicrosoftWindowsXP.
Требования к маркировке и упаковке
Файлы, необходимые для инсталляции программы находиться на CD-диске. Наличие файла Readme.doc содержащего информацию об инсталляции необходимо.
2.2 Порядок контроля и приема
Порядок контроля и приема осуществляется в соответствии с документом "Программа и методика испытаний".
ГЛАВА 3. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Наименование программы: Оповещение родителей.
Программа "Оповещение родителей" представляет собой модуль автоматизированной системы передачи данных "Школа", который реализует следующие функции:
Формирование на основе Э-журналов БД учеников
Формирование БД сообщений на основе БД учеников
Отправка СМС из БД сообщений абонентам с использованием 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, AMDK6/Athlon/Duronс тактовой частотой не менее 300 МГц, аналогичные или более быстрые.
Использование GSM-модема подразумевает наличие сетевого адаптера и COM-порта;
Сохранность информации в случае неисправности ЭВМ -- один из важный аспектов. Самый простой способ – выполнение регулярного резервного копирования базы данных на внешний носитель. Это может быть оптический , жесткий,flash или иной накопитель размер которого определяется размерами самой базы. Рекомендуется носитель не менее чем на 4 Гб.
Итак, подведем итоги выше приведенных рассуждений и выдвинем комплексные требования к составу технических средств, необходимых для функционирования системы.
Для работы рабочих станции системы необходимо:
ПЭВМ на базе Intel Pentium/Celeron, AMDK6/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
) обусловлен следующими ее особенностями:
- ориентация заказчика на эту платформу;
- развитые средства создания пользовательского интерфейса;
- достаточная масштабируемость, т.е. способность работать на широком диапазоне компьютерного оборудования, начиная от машин уровня 486DX4‑100 до многопроцессорных систем;
- наличие драйверов для поддержки широкого спектра периферийных устройств (видеоадаптеров, сетевых адаптеров, принтеров, дисководов CD-ROM и пр.);
- чрезвычайно широкое распространение этой платформы;
- приемлемая для задач такого уровня надежность и производительность программ, работающих с использованием механизма вытесняющей многозадачности.
Из недостатков данной платформы, существенных для предлагаемой разработки, стоит отметить следующий:
- высокая требовательность к аппаратным ресурсам компьютера, что вынуждает использовать более мощные аппаратные платформы.
Выбор в качестве среды разработки пакета Borland Delphi 7 обусловлен следующими его особенностями:
- политика предприятия в области разработки ПО;
- возможность повторного использования готовых программных компонент;
- наличие большого количества стандартных компонент, а также достаточное количество библиотек компонент от сторонних фирм, расширяющих и дополняющих возможности стандартных;
- возможность генерации кода под платформу win32;
- поддержка ActiveX;
- достаточно высокая скорость и надежность работы скомпилированных программ в сравнении с интерпретирующими системами;
- ориентация на "визуальные" методы разработки программ, что позволяет быстро и качественно спроектировать и реализовать стандартный пользовательский интерфейс;
- перспективность, популярность и широкая распространённость данной среды разработки в мире.
Выбор в качестве средства для работы с БД библиотеки ADO обусловлен следующими его особенностями:
- вхождение его в состав Delphi 7
- разработчик – MicrosoftCorp. что является гарантом возможности просмотра базы данных через иные программные продукты этой компании (MSAccess);
Дополнительно в процессе разработки применялись следующие программные библиотеки и инструментальные средства:
- Библиотека nrComm разработчика DeepSoftware для работы с GSM модемом.
Для подготовки документации и демонстрационной версии программ использовались программы, входящие в комплект Microsoft Office 2003.
ГЛАВА 4. ОПИСАНИЕ ПРОГРАММЫ
4.1 Общие сведения
Название программы:
Оповещение родителей
Программное обеспечение, необходимое для функционирования программы:
MS Office 2003 (MS Excel, MS Access);
Язык программирования:
BorlandDelphi 7
4.2 Описание логической структуры
Выбор порта:
позволяет оператору выбрать COM-порт, к которому присоединено предающее устройство – GSM-модем.
Выход:
осуществляется выход в операционную систему (WindowsXP).
Обзор:
позволяет оператору указать папку с журналами, на основе которых создавать базу.
Внести оценки в базу:
происходит формирование базы данных на основе указанных папок с журналами.
Отправить
SMS
:
происходит отправка сообщений об успеваемости и посещении родителям учеников.
Просмотр баз данных:
позволяет просмотреть содержимое базы данных "Ученики" и базы данных "Сообщения"
Рассмотрим подробнее работу программы.
Описываемая программа состоит из трех основных подпрограмм (Внести оценки в базу, Отправить сообщения, Просмотр баз данных).
Рассмотрим алгоритмы работы этих подпрограмм и всей программы в целом. При загрузке программы выводится окно-запрос на выбор COM-порта, к которому подключено передающее устройство (GSM-модем), затем на экране отображается главное окно. В главном окне программы оператор может просмотреть уже существующие базы, нажав на "Просмотр баз данных" или загрузить новую, выбирая папку, содержащую журналы с оценками, нажав при этом кнопку "Обзор". Затем нажимаем кнопку "Внести оценки в базу". Об успешном окончании процесса сообщит специальное окно. После этого можно посмотреть созданную базу, либо отправить сообщения, нажав на соответствующие кнопки. Режим просмотра базы осуществляется в двух вариантах: выборка по ученикам – "Ученики" и выборка по сообщениям – "Сообщения".
4.3 Структура хранения данных
Представленная ниже модель отображает структуру размещения и хранения файлов программы.
Рисунок 4.
4.4 Алгоритм
Алгоритм представлен в виде блок-схемы на Рисунке 5.
4.5 Используемые технические средства
Для функционирования программного продукта требуется ЭВМ типа персональный компьютер. Конкретные характеристики указаны в пункте 5.3. Технические требования. Количество ЭВМ ведется из расчета – один для Системного оператора и по одному для каждого из Э-операторов.
Программный продукт устанавливается на жесткий диск ЭВМ.
4.6 Вызов и загрузка
Вызов программы осуществляется по мере требования. Для облегчения поиска помещаются ярлыки на Рабочий стол. По умолчанию, программа устанавливается в каталог
C:\Program Files\Оповещение Родителей.
4.7 Входные данные
- Школьный журнал с оценками и отметками об успеваемости;
- Заполненный Электронный журнал;
Электронный журнал – документ формата MSOfficeExcel 2003 (.xls), обязательными параметрами которого являются:
- Название. Строго регламентированный формат: [Номер Школы]_[код класса]_[код четверти].xls . В названии используются только цифры, знак нижнего подчеркивания и буквы русского алфавита; код четверти – 1,2,3,4. Например: 25_10А_2.xls (см. рисунок 6)
Рисунок 6
- Колонки данных. Строка под номером 1 ("шапка") заполняется следующим образом:
o ячейка А1 – "Телефонный номер". Чтобы номер не был виден, столбец с телефонными номерами можно скрыть средствами MSExcel.
o ячейка B1 – "Фамилия, Имя" ученика.
o ячейки C1-*1 – даты. Формат [день]/[месяц]. Например: 1/11 соответствует 1 ноября. Формат ячеек – "Общий". ВАЖНО! Должны быть проставлены все
даты четверти, указанной в названии файла.
См. рисунок 6
Начиная со 2 строки вводятся данные, соответственно "шапке". Телефонный номер должен быть записан в двенадцатизначном формате, начиная с +7. Например: +71234567890.Формат ячеек установить как "Текстовый" (См. рисунок 7)
Рисунок 7
В ячейках С2-** отмечаются полученные учеником оценки и отметки об отсутствии на уроке.
- Листы MSExcel должны содержать только название предметов без кавычек. Например: Литература, Математика и др. Иных листов не должно быть. См. рисунок 8
Рисунок 8
4.8 Выходные данные
База данных "Ученики";
Созданная база данных представляет собой набор таблиц, расположение которых подробно представлено в пункте 4.3. главы "Описание программы".
Просмотр базы осуществляется в соответствии с пунктом 4.2. главы "Описание программы".
ГЛАВА 5. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ
5.1 Объект испытании
Программа "Оповещение родителей" представляет собой модуль автоматизированной системы передачи данных "Школа", который реализует следующие функции:
- Формирование на основе Э-журналов БД учеников
- Формирование БД сообщений на основе БД учеников
- Отправка СМС из БД сообщений абонентам с использованием GSM модема
- Просмотр БД
5.2 Цель испытаний
Создание Электронных журналов на основе классных журналов;
Создание баз данных "Ученики" на основе Электронных журналов.
5.3 Технические требования
Учебное заведение желающее предоставлять Родителям информацию об успеваемости и посещаемости учеников, используя программный продукт "Оповещение Родителей" должно быть оборудовано хотя бы одной ЭВМ для
Э-оператора, чтобы обеспечить процесс заполнения Электронного журнала. В случае, если использование стационарного ЭВМ по каким-либо причинам не возможно разрешается использовать ноутбук с эквивалентным набором технических средств.
Рабочее место Э-оператора, в случае передачи Э-журнала на оптическом носителе
:
ЭВМ с минимальными техническими характеристиками: MSWindowsXP, пакет MSOffice 2003 (MSExcel), процессор IntelCeleron, IntelPentium, AMDK6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 4 Гб , привод DVD/CD-RW;
Рабочее место Э-оператора, в случае передачи Э-журнала на USB
-
flash
-носителе
:
ЭВМ с минимальными техническими характеристиками: MSWindowsXP, пакет MSOffice 2003 (MSExcel), процессор IntelCeleron, IntelPentium, AMDK6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 4 Гб , привод DVD/CD-ROM, свободный USB порт;
Рабочее место Э-оператора, в случае передачи Э-журнала по электронной почте
:
ЭВМ с минимальными техническими характеристиками: MSWindowsXP, пакет MSOffice 2003 (MSExcel), процессор IntelCeleron, IntelPentium, AMDK6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 4 Гб , привод DVD/CD-ROM, Интернет;
Рабочее место С-оператора должно быть оборудовано следующим набором технических средств:
- ЭВМ с минимальными техническими характеристиками: MSWindowsXP, пакет MSOffice 2003 (MSExcel, MSAccess),программный продут "Оповещение родителей", процессор IntelCeleron, IntelPentium, AMDK6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 3 Гб , привод DVD/CD-ROM, свободный COM порт;
- GSM-модем;
- Телефон для обратной связи.
Также С-оператор должен иметь:
- Доступ в Internet, если Э-журналы передаются с помощью электронной почты
- Свободный USB-порт, если Э-журналы передаются с помощью USB-flash-носителя
- CD-ROM или DVD-ROM, если Э-журналы передаются с помощью CD/DVD диска
5.4 Порядок проведения испытаний
Этапы проведения испытаний
1. Заполнение журнала учителем.
2. Передача журнала Э-оператору.
3. Заполнение Э-оператором Электронного журнала.
4. Передача Э-оператором заполненного Электронного журнала С-оператору.
5. Сохранение С-оператором журнала на жестком диске.
6. Запуск программы "Оповещение родителей" С-оператором.
7. Формирование и загрузка базы данных "Ученики".
8. Просмотр готовых базы "Ученики".
Испытания проводились компьютере со следующими требованиями и установленным ПО:
1) Процессор IntelCore 2 с тактовой частотой 2*2,4 Ггц, 2 Гб ОЗУ, HDD 2 Гбайт, монитор с диагональю 15,4", видеоадаптер WSXGA+ (максимальное расширение 1680*1050), ОС WindowsXPSP 2, MSOffice 2003 (MSExcel, MSAccess), передающее устройство Nokia 6120.
2) Процессор IntelPentium 4 с тактовой частотой 2,4 Ггц, 1Гб ОЗУ, монитор с диагональю 17", видеоадаптер SVGA (максимальное расширение – 1280*1024), ОС WindowsXPSP 3, MSOffice 2003 (MSExcel, MSAccess), передающее устройство Nokia 6120.
5.5 Методы испытаний
1. Учитель заполняет классный журнал отметками об успеваемости и посещаемости учеников.
2. Учитель передает заполненный журнал Э-оператору.
3. Э-оператор переносит отметки об успеваемости и посещаемости в Электронный журнал согласно регламенту (см главу Описание программы, пункт Входные данные)
4. Э-оператор передает С-оператору Электронные журналы.
5. С-оператор сохраняет журнал на жесткий диск компьютера.
6. Запускает программу "Оповещение родителей".
7. Нажимает кнопку "Обзор" и указывает папку с Электронными журналами.
8. Нажимает кнопку "Внести оценки в Базу Данных".
9. Ожидает окно подтверждения окончания операции.
10. Чтобы удостовериться в загрузке данных в базу нажимает кнопку "Просмотр баз данных". Нажимает кнопку "Ученики". Вводит в соответствующие поля год и четверть а также выбирает из предложенных школу класс и ученика. Если данные отсутствуют перейти на пт.7 данного списка.
ЗАКЛЮЧЕНИЕ
В результате проделанной работы была разработана система, которая автоматизирует процесс информирования родителей об успеваемости учеников.
Внедрение данной системы позволило:
· ускорить процесс информирования родителей;
· внедрить современные технологии в воспитательный процесс и, тем самым, улучшить надежность передачи информации;
· сформировать у родителей более полной картины успеваемости ученика.
Мной был написан модуль программного продукта "Оповещение родителей", который реализует следующие функции:
· Формирование на основе Э-журналов БД учеников
· Просмотр БД
Программный продукт "Оповещение родителей", и система в целом, успешно прошли тестовые испытания, и находятся в эксплуатации в г. Зеленогорске, ЧП Жукова Е.А.
СПИСОК ЛИТЕРАТУРЫ
1. Фленов М. Библия для программиста в среде Delphi/ M. Фленов - БХВ- Петербург, 2005 г.
2. Фаронов В.В. Программирование баз данных в Delphi 7. Учебный курс./ В.В. Фаронов - СПб.: Питер, 2006
3. Фурсенко А.А. / Интервью Фурсенко А.А 2008-2009г: Сб. тезисов. / Интернет/ http://mon.gov.ru
ПРИЛОЖЕНИЕ 1
1) Рекомендации по установке
Запустите установочный файл setup.exe. Следуйте подсказкам Мастера Установок.
2) Минимальные системные требования:
IBMPC: MSWindowsXP, пакет MSOffice 2003 (MSExcel, MSAccess), процессор IntelCeleron, IntelPentium, AMDK6/Athlon/Duron с тактовой частотой не менее 300 МГц, 256 Мбайт ОЗУ, жестким диском не менее 3 Гб , CD-ROM, свободный COM порт, телефон.
3) Описание работы программы.
1. Создайте электронный журнал.
2. Запустить установленное приложение SMS.exe
3. Укажите номер COM-порта к которому подключено устройство отправления SMS (GSM модем).
4. Нажав кнопку "Обзор" укажите папку, содержащие электронные журналы (Важно: помимо файлов электронных папка не должна содержать других файлов формата MSExcel 2003).
5. Нажмите кнопку "Внести оценки в базу данных" и дождитесь конца выполнения операций. Специальное окно подтвердит успешное окончание процесса.
6. Нажмите кнопку "Отправить SMS"
7. Просмотреть сформированные сообщения и статус отправки можно нажав кнопку "Просмотр баз данных" и выбрав интересующую базу.
SMS будут высланы абонентам с указанными номерами телефонов.
ВАЖНО:
Директория, в которую установлена программа, будет содержать папку DataBases, удаление которой запрещено.
Настоятельно рекомендуется регулярно делать резервное копирование папки DataBases на съемный носитель информации.
4) Помощь в случае возникновения ошибок
4.1. Э-оператор
Ошибки возможны в случае невнимательного заполнения Э-журнала. Э-журнал должен соответствовать требованиям, которые содержатся в пт.4.7 главы Описание программы.
При передаче Э-жураналов от Э-оператора к С-оператора следует соблюдать требования техники безопасности.
В случае, если компьютер Э-оператора будет неисправен следует использовать другой (временный или новый) эквивалентным набором технических средств см пт. 5.3.Технические требования.
4.2. С-оператор
В случае, если компьютер С-оператора будет неисправен следует установить программный продукт "Оповещение родителей" на другой (временный или новый) и продолжить работу. Информацию для формирования БД следует скопировать из резервного съемного носителя (папка DataBases).
В случае возникновения ошибок при загрузке данных из журналов и формировании БД следует проверить содержание и оформление Электронных журналов. Требования к Электронному журналу содержатся в пт.4.7 главы Описание программы.
Если сообщения не отправляются или отправляются некорректно рекомендуется проверить настройки передающего устройства (GSM модема). Если GSM модем работает исправно значит, проблема заключается в сотовом операторе.
В случае возникновения иных ошибок следует обратиться к разработчикам программного продукта по указанным ниже координатам:
СФУ, Институт математики, кафедра Вычислительных и информационных технологий, Лаборатория программной инженерии.
660041, г. Красноярск пр. Свободный 79, каб. 34-12
4.3. Родители
Родители, заключившие договор на предоставление услуг посредством программного продукта "Оповещение родителей" оговаривают частоту получения сообщений (ежедневно, еженедельно, ежемесячно и т.д.). В случае если сообщения не доставляются в указанные сроки, доставляются, но не полностью или с ошибками Родители должны связаться с С-оператором по телефону, указанному в договоре и потребовать повторной отправки или распечатки отчета.
Следует отметить, что в случае неисправности сотового телефона Родителей, проблем с обслуживанием Сотовым оператором Родителей и иных проблем С-оператор ответственности не несет. Если Родители не желают больше получать сообщения об успеваемости Ученика, следует расторгнуть договор.
Более подробно все права и обязанности рассмотрены в Договоре
5) Рекомендации по удалению
Запустите установочный файл uninstall.exe. Следуйте подсказкам Мастера Удаления .
ПРИЛОЖЕНИЕ 2
Главное окно (листинг)
unitMainWindow;
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;
//есть новые оценки?
ifn=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.
|