САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени акад. С.П. КОРОЛЕВА Кафедра информационных систем и технологий ОТЧЕТ по лабораторной работе по дисциплине "Технологии программирования" на тему "Автоматизированная система отправки СМС сообщений SmsXpress" Выполнили: студенты гр.631 Кириллов Р. Кушпель А. Лившиц Н. Руководитель проекта: доцент каф. ИСТ Зеленко Л.С. Дата сдачи: Оценка: Самара 2003 г. Кафедра информационных систем и технологий " «Утверждаю» Руководитель проекта _________________ " _________ г. ЗАДАНИЕ на разработку ПС в рамках лабораторного практикума по дисциплине «Технологии программирования» студентам гр. 631 Кириллову Р., Кушпелю А., Лившиц Н. Тема проекта: "Автоматизированная система отправки СМС сообщений SmsXpress" 1 Содержание задания 1.1 Произвести анализ предметной области и разработать логический проект АИС 1.2 Реализовать программное и информационное обеспечение АИС в соответствии с проектом, подготовить контрольный пример и провести тестирование. 1.3 Оформить документацию курсового проекта. 2 Исходные данные 2.1 Характеристика объекта автоматизации: 1) объект автоматизации: процесс отсылки СМС сообщений абонентам сотовых телефонов стандарта GSM; 2) Количество абонентов неограниченно; 3) Количество сообщений неограниченно; 2.2 Требования к информационному обеспечению: 1) В системе должен вестись учет информации об абонентах – адресная книга. 2) Предусмотреть сохранение очереди неотправленных сообщений; 3) Организовать автоматическую транслитерацию сообщений; 4) Предусмотреть разбивку большого сообщения на части по 160 символов (стандартный размер сообщения для сотовых телефонов); 5) Организовать отсылку сообщения нескольким абонентам; 6) Поддерживать автоматическую транслитерацию сообщений; 2.3 Требования к техническому обеспечению: 1) тип ЭВМ - IBM PC совместимый; 2) конфигурация комплекса определяется в процессе выполнения курсового проекта. 3) Наличие доступа в Интернет 2.4 Требования к программному обеспечению: 1) тип операционной системы - Windows 95 и выше; 2) среда программирования – Microsoft Visual C++ 6.0. 2.5 Общие требования к проектируемой системе. 2.5.1 Функции, реализуемые системой: 2 1) Добавление, модификация и удаление записей адресной книги. 2) Создание и редактирование сообщения; 3) Отображение очереди сообщений; 4) Отправка сообщения; 5) Отправка очереди сообщений; 6) Приостановка процесса отправки сообщений; 7) Постановка сообщения в очередь; 8) Автоматическое обновление программы; 2.5.2 Технические требования к системе: 1) время реакции не более 20 секунд (зависит от параметров Интернет доступа). 2) режим работы - диалоговый; 3) система должна удовлетворять санитарным правилам и нормам СанПин 2.2.2.542-96; 4) условия работы средств вычислительной техники должны соответствовать группе 1 п.1.3.1 ГОСТ 21552-84. 3 Календарный план выполнения работ Содержание работы по этапам 1 Оформление задания и его утверждение Объем этапа в Срок % к общему окончания объему проекта 5 25.02 2 Разработка логического проекта системы и 2 его предъявление руководителю. Сдача отчета. 30 10.04 3 Реализация проекта и разработка 3 контрольного примера. Предъявление реализации руководителю. 4 Корректировка проекта и оформление 4 документации проекта. Защита проекта. 50 28.04 15 27.05 1 3 Фактическое выполнение РЕФЕРАТ Отчет Пояснительная записка: 23 с., 3 рис., 5 схемы, 4 библиограф. источника. СМС СООБЩЕНИЕ, АДРЕСНАЯ КНИГА, ПОТОКИ ЗАДАЧ, ОЧЕРЕДЬ СООБЩЕНИЙ, XML-ФАЙЛ, ВЕБ-СЕРВЕР В лабораторной работе разработан алгоритм и соответствующая ему программа, позволяющая выполнять автоматическую отправку СМС сообщений на сотовые телефоны стандарта GSM при наличии доступа в Интернет. Информация об абонентах хранится в xml-файлах, модифицируется программно. Пользователь может создать сообщение любого размера, выбрать абонента из адресной книги, затем отправить сообщение. Есть возможность сначала создать очередь сообщений для одного и более абонентов, а затем отправить всю очередь. Отправку можно Приостановить/Продолжить. Программа написана на языке C++ в среде Microsoft Visual C++ v.6.0 4 Содержание Введение……………………………………………………………..……….6 1 Системотехническая часть………………………………………………...7 1.1 Анализ предметной области..…………………………………….7 1.2 Функциональная спецификация ПС……………..………….........7 1.3 Структуры данных и классы объектов…………………….…....11 1.4 Выбор и обоснования алгоритмов обработки данных………..14 1.5 Обоснования выбора системных программных средств……...14 1.6 Ресурсные расчеты………………………………………………14 Заключение…………………………………………………………………...15 Приложение А Пример интерфейса программы…………………………..16 Приложение Б Листинг основных модулей……………………………….17 Список использованных источников…………………..……………….......23 5 Введение В рамках лабораторного практикума разработана сложная система, получившая название SmsXpress. К настоящему моменту появилась уже версия 2.0. Alpha. Версия 2.0 имеет более гибкий интерфейс, некоторые новые функции, например разбивку сообщения на части. Разработанная система достаточно актуальна в данный момент. СМС - сообщение является быстрым и информативным способом общения. Основное его достоинство – это доступность и быстрота реакции, т.к. каждый владелец сотового телефона может послать такое сообщение любому абонента (имеется ввиду на сотовый телефон стандарта GSM). Сообщение доходит до абонента практически мгновенно. Нельзя не упомянуть и о дешевизне данного способа обмена информацией. Стоимость СМС сообщения в зависимости от разных компаний колеблется от 0,7 до 1,5 рубля за сообщение. Единственный недостаток такого общения – это форма набора с помощью сотового телефона. Последний в принципе плохо приспособлен для ввода большого объема текста. Это долгий и сложный процесс. Естественно использовать для решения этой проблемы ЭВМ, как универсальное средство ввода текстовой информации. Данный программный продукт позволяет быстро и просто создать сообщений неограниченного объема, содержащие любые символы, отсутствующие на сотовом телефоне. Процесс отправки реализован проще и надежнее при условии наличия доступа в Интернет. Проектирование системы (подсистемы) производится по технологии быстрой разработки приложений (RAD), которая поддерживается методологией структурного проектирования и включает элементы объектно-ориентированного проектирования и анализа предметной области. 6 1. Системотехническая часть 1.1 Анализ предметной области При проектировании системы используется принцип концептуализации предметной области, т.е. система состоит из компонентов, под которыми понимают некоторую абстрактную единицу, обладающую функциональностью (способностью выполнять функции). Схема 1 – Концептуальная схема Для начала определим объекты системы и их взаимосвязи: Объект СМС – сообщение формируется из объектов Абонент (имя и телефон) и Текст сообщения; Очередь сообщений хранит список СМС – сообщений и передает их WEB – серверу. WEB – сервер отправляет сообщения на сотовые телефоны. 1.2 Функциональная спецификация ПС. Проектирование любой системы начинается с формулировки спецификаций и требований или с внешнего описания. Внешнее описание – это совокупность функциональных спецификаций и спецификации качества. Перед формулировкой спецификаций проводится системный анализ предметной области, и определяются все основные функции, которые должна выполнять система. Спецификация качества предшествует разработке функциональной спецификации. При определении спецификаций определяются, какие задачи будут, но не определяется, как они будут решены. Любая спецификация включает в себя части на естественном языке – таблицы, диаграммы и т.д. Для каждой единицы строится карточка. Название компонента Определение обязанностей, функций. Список всех взаимосвязанных компонент Рисунок 1 – Пример карточки 7 Концептуальная схема I/O Компонент Ввода/Вывода 18.05.2003 GUI Выполняет функции хранения и модификации информации об абонен- CSMSMesaтах в xml-файле. ge CSMSMessage Компонент Сообщение Хранит информацию о тексте сообщения и его абонентах; формирует запрос к веб-серверу. 18.05.2003 GUI I/O CMsgQueue CMsgQueue Компонент Очередь Выполняет функции по модификации сообщения и его отправки. Формирует очередь сообщений, а также потоки текущих и выполненных задач. 18.05.2003 GUI CSMSMesage GUI Компонент Визуализация 18.05.2003 Визуализирует работу всех перечисленных компонент. I/O CSMSMesage CMsgQueue Схема 2 – Функциональная спецификация. Систему можно подразделить на 4 основных компонента. Главным из них будет компонент Визуализации, который реализует взаимодействие остальных компонент с пользователем. Компонент ввода/вывода реализует обработку адресной книги и формирования объектов СМС – сообщения. Компонент очередь состоит из одного или нескольких объектов СМС - сообщения и производит их поочередную отсылку. Далее осуществляется детальная проработка системы, на которой определяются классы, их свойства и методы. Функциональная схема строится в виде графа, вершинами которого является текущее состояние, а дуги определяют выполнение той или иной функции в текущий момент времени. Граф будет ориентированным. Результатом системного анализа является построение модели системы. Под моделью будем понимать некоторое представление о системе, отражающее наиболее существенные закономерности ее структуры и процесса функционирования, зафиксированное на некотором языке или в 8 другой форме. Общим свойством всех моделей является подобие оригинальной системе. Процесс построения систем и их моделирования получил название моделирования. Сложность системы и модели рассматривается с различных точек зрения: 1. Сложность структуры, которая определяется количеством элементов системы и сложностью взаимосвязей между этими элементами. 2. Сложность процесса функционирования, которая определяется количеством функций, предписывающихся каждому компоненту, а также сложностью ориентированного графа, переводящего систему из одного состояния в другое. № состояния Название состояния 1 2 3 4 5 6 7 8 Главное меню (готов к работе) Активна п/с Сообщение Сообщение создано Активна п/с Отправка Сообщения Сообщение не было отправлено (ожидание) Сообщение успешно послано (ожидание) Активна п/с Очередь Сообщений Определена непустая очередь (отображается именами адресатов) Процесс отправки всей очереди Приостановлена отправка (ожидание) Активна п/с Контакты Процесс создания нового абонента для адресной книги Процесс изменения параметров абонента из адресной книги Активна п/с Помощь Процесс проверки обновления версии. 9 10 11 12 13 14 15 Таблица 1 – Таблица состояний системы 9 1 23 21 21 34 2 71 141 1112 111 17 1211 107 78 4 12 11 7 45 64 114 1113 13 14 89 54 5 1311 10 8 3 910 46 6 1415 9 15 Схема 3 – Функциональная схема № Функции Название функции 12 23 34 45 46 64,54 17 78 89 910 107 111 1113 1112 1211, 1311 114 1415 21,71,141,111 Вызов п/с Сообщение Создание сообщения (ввод текста, выбор адресата) Вызов п/с Отправка сообщения Сообщение не было послано Сообщение успешно послано Возврат в п/с Отправка сообщения Вызов п/с очередь сообщений Создание очереди сообщений Отправка очереди Отправка отложена Возврат в п/с Очередь сообщений Вызов п/с Контакты Модификация информации об абоненте Добавление нового абонента Возврат в п/с Контакты Вызов п/с Помощь Выход на сайт http://roman.triadesign.ru Возврат в главное меню. Таблица 2 – Таблица функций системы. 10 Система – это совокупность объектов, компонентов или элементов произвольной природы, образующих некоторую целостность. Структура системы – это устойчивая во времени совокупность взаимосвязей между ее элементами или компонентами. Структура системы предполагает вложенностьсхема элементов Структурная ПС одной системы в другую. Более мелкая система – это подсистема, более крупная – метасистема. Подсистема управления П/С Абоненты П/С Сообщение Создать сообщение Открыть список абонентов Добавить абонента Изменить абонента Удалить абонента Найти Ввести текст Выбрать абонента Сохранить сообщение Изменить сообщение Отправить немедленно Поставить в очередь Прервать отправку Переадресовать П/С Очередь Создать очередь Сохранить очередь Отправить Отправить выборочно Очистить Редактировать П/С Справка О программе Help Об авторе Схема 4 – Структурная схема. Основной функцией подсистемы управления является организация взаимодействия подсистем. Подсистема Абоненты обеспечивает необходимые функции для работы со списком абонентов. Подсистема Сообщение формирует готовое СМС сообщение на основе данных, предоставленных подсистемой Абоненты. Результат передается подсистеме очередь, задача которой обеспечить отправку сообщений абоненту. Отдельно реализована подсистема Справки, предоставляющая полную структурированную информацию для работы с системой. 1.3 Структуры данных и классы объектов. На данном этапе выполняется разработка структур данных и классов объектов, выбор или разработка алгоритмов обработки данных, результат – диаграмма классов (иерархия классов). 11 Выделим следующие основные классы: CcontactList Основные методы: IsContactExists – проверяет пуст ли контактный лист; DeleteCotact – очищает контактный лист; GetRecords – возвращает структуру записи; AddRecords – добавляет новую запись. CSmsMessage Основные методы: IsSent – проверяет отправлено ли сообщение; GetUrl – возвращает URL; UrlEncode – преобразует URL; CheckPhone – проверка номера телефона; SetOperator – определения оператора; GetMethod – получение метода GetFlatMessage - получить структуру Flat –сообщения. CMessageQueue Основные методы: GetSuspendState – проверяет остановлена ли очередь; SuspendSend – приостанавливает отсылку; ResumeSend – продолжает отправку; GetSize – получить размер сообщения; GetTopMsg – получить первое сообщение в очереди; AddMsg – добавить сообщение. CmessageQueueDlg Основные методы: OnHide – спрятать очередь сообщений; RefillTree – обновить дерево очереди; OnResume – показать очередь. 12 CSmsXPressDlg Основные методы: RefreshRecepients – обновить список получателей; RefreshContactList - обновить лист контактов. Перечисленные 5 базовых классов образуют основу информационной модели системы. Их взаимодействие можно показать с помощью иерархии классов. Схема 5 – Иерархия классов. Далее рассмотрим основные структуры данных системы. Их две – первая описывает запись адресной книги, а вторая представляет собой Flat – сообщение. Это более информативное сообщение, содержащее минимум информации, необходимый для отправки. 1. AdressField : Name: String; Имя абонента; Phone: String; Телефон абонента. 2. FlatMessage: 13 Запись адресной книги; Flat – сообщение; Name: String; Имя абонента; Phone: String; Телефон абонента; Text: String; Текст сообщения. 1.4 Выбор и обоснования алгоритмов обработки данных. Данная система основана на классических линейных и циклических алгоритмах. Это связано с тем, что они обеспечивают простоту проектирования и отладки системы, а также высокую скорость ее работы. Детальная разработанная информационная система дает возможность обойтись без сложных математических моделей, т.е. решить задачу напрямую. При этом качество работы и скорость моделирования системы только повышаются. 1.5 Обоснования выбора системных программных средств. Особенностью реализации системы является использование xml-файлов. Они имеют древовидную структуру. Очень удобны и надежны для хранения записей адресной книги. Встроенный практически во все операционные системы Microsoft XML Parcer позволяет получить доступ к xml – файлам, что обеспечивает удобство использования системы, а также ее переносимость на другие программно-аппаратные ОС – платформы. Программа разработана на языке С++. Выбор именно этого языка объясняется тем, что он обеспечивает высокую скорость файлового ввода/вывода, оптимизирует работу с памятью. Наконец, С++ является родным для многих операционных систем (Windows, Unix, Mac OS), что намного упрощает отладку программы. Компилятор языка обеспечивает удобство разработки, а также высокое качество и надежность исполняемого кода. 1.6 Ресурсные расчеты. Минимальные требования к ресурсам: 32 МВ оперативной памяти; 1 МВ внешней памяти; скорость Интернет - соединения не менее 9600 Кбит/с (возможность использование программы при меньшей скорости возможно, но не эффективно). Быстродействие системы линейно зависит от тактовой частоты процессора и параметров Интернет – доступа. 14 Заключение Программный продукт «SmsXpess» успешно миновал стадию тестирования и к настоящему моменту активно используется значительным количеством пользователей. Статистику, касающуюся этого вопроса можно просмотреть на сайте http://roman.triadesign.ru Данная программа в случае коммерческой разработки может реально начать приносить прибыль. Однако в планах разработчиков распространять ее пока бесплатно в рамках концепции FreeSoft. В дальнейшем планируется значительное усовершенствование программных функций, а именно: Обеспечение работоспособности программы в случае использования Проксисервера; Поддержка форматов Beeline классический и Beeline GSM; Организация многопользовательского режима работы программы (только для Windows NT,2000,XP). 15 Приложение А Рисунок 2 - Интерфейс программы Рисунок 3 – Отображение очереди сообщений 16 Приложении Б Листинг основных модулей: // ContactList.h: interface for the CContactList class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_CONTACTLIST_H__B5B57CC7_9291_4C7A_BFAC_623B1D066915__INCLUDED_ ) #define AFX_CONTACTLIST_H__B5B57CC7_9291_4C7A_BFAC_623B1D066915__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #pragma warning (disable:4786) #include <string> #include <vector> using namespace std; #import "msxml3.dll" using namespace MSXML2; //Класс, предоставляющий возможности сериализации //контакт-листа //##ModelId=3E646B460060 class CContactList { public: //##ModelId=3E646B460061 bool EditRecord(const string& phone, const string& newName, const string& newPhone); //##ModelId=3E646B460092 struct phbe { //##ModelId=3E646B46009D string name; //##ModelId=3E646B4600A7 string phone; //##ModelId=3E646B4600AB bool operator == (const phbe& phb) { return ( name == phb.name && phone == phb.phone ); } //##ModelId=3E646B4600B0 bool operator == (const string& rName) { return (name == rName); } }; //##ModelId=3E646B4600BA typedef vector<phbe> PhonebookRecords; //##ModelId=3E646B46006D bool IsContactExists(const string& phone, bool& result); //##ModelId=3E646B460074 bool DeleteContact(const string& phone); 17 //##ModelId=3E646B460076 bool GetRecords(PhonebookRecords& phbrs); //##ModelId=3E646B460078 bool AddContact(const string& name, const string& phone); //##ModelId=3E646B460080 CContactList(const string& name); //##ModelId=3E646B460082 CContactList(); //##ModelId=3E646B460083 virtual ~CContactList(); protected: //##ModelId=3E646B460089 string m_FileName; }; #endif // !defined(AFX_CONTACTLIST_H__B5B57CC7_9291_4C7A_BFAC_623B1D066915__INCLUDED_ ) // MessageQueue.h: interface for the CMessageQueue class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_MESSAGEQUEUE_H__EEB01900_362B_475F_B7A3_0177515211DD__INCLUDED _) #define AFX_MESSAGEQUEUE_H__EEB01900_362B_475F_B7A3_0177515211DD__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #pragma warning(disable:4786) #include <vector> #include "afxmt.h" #include "SmsMessage.h" using namespace SmsMessage; const OutOfRange = 0; //##ModelId=3E646B4503BC class CMessageQueue { public: friend class CMessageQueueDlg; //##ModelId=3E646B4503C6 bool m_bIsModified; //##ModelId=3E646B4503C7 CSmsMessage::FlatMessage GetMessage(const UINT& nIndex); //##ModelId=3E646B460042 friend UINT AfxSendQueueProc( LPVOID pParam ); //##ModelId=3E646B4503D0 bool GetSuspendState(); //##ModelId=3E646B4503D1 bool Abort(); //##ModelId=3E646B4503D2 18 bool SuspendSend(); //##ModelId=3E646B4503D3 bool ResumeSend(); //##ModelId=3E646B4503DA UINT GetSize(); //##ModelId=3E646B4503DB CSmsMessage::FlatMessage GetTopMsg(); //##ModelId=3E646B4503DC void AddMessage(CSmsMessage& msg); //##ModelId=3E646B4503E5 CMessageQueue(); //##ModelId=3E646B4503E6 virtual ~CMessageQueue(); protected: //##ModelId=3E646B4503E8 bool m_bKillThread; //##ModelId=3E646B460006 bool m_bSuspended; //##ModelId=3E646B460008 CWinThread* m_pSendThread; //##ModelId=3E646B460030 std::vector<CSmsMessage> m_Messages; //##ModelId=3E646B460039 CCriticalSection m_Lock; }; #endif // !defined(AFX_MESSAGEQUEUE_H__EEB01900_362B_475F_B7A3_0177515211DD__INCLUDED _) // SmsMessage.h: interface for the CSmsMessage class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_SMSMESSAGE_H__C81AE17C_8FD0_4388_9EEC_FCD030FF00A7__INCLUDED_) #define AFX_SMSMESSAGE_H__C81AE17C_8FD0_4388_9EEC_FCD030FF00A7__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 namespace SmsMessage { const CString SmartsURL = "http://www.samaragsm.ru/scripts/smsgate.exe/send?phone="; const CString MegafonURL = "http://www.mgsm.ru/cgibin/main_exp.cgi?sms=1&filial_id=1&Addr="; const CString BeelineURL = ""; //Класс, представляющий СМС - сообщение //##ModelId=3E646B44036A class CSmsMessage { public: //##ModelId=3E646B44036B bool IsSent(const CString& rText); // отправлено ли сообщение? //##ModelId=3E646B440375 CString GetPostData(); // заглушка //##ModelId=3E646B440376 bool operator == (const CString& rPhone) // перегружаем оператор проверки на равенство, чтобы можно было искать 19 // только по номеру телефона { return (m_Phone == rPhone); } //##ModelId=3E646B4403E3 enum SmsException // возможные ошибки { //##ModelId=3E646B4403E5 IncorrectOperator = 0, //##ModelId=3E646B450005 BlankPhone, //##ModelId=3E646B45011D NoGET, //##ModelId=3E646B450131 IncorrectNumber }; //Оператор //##ModelId=3E646B45014F enum MobileOperator // операторы { //##ModelId=3E646B45015A Smarts = 0, //##ModelId=3E646B45015B Megafon, //##ModelId=3E646B450163 Beeline }; //##ModelId=3E646B45016D enum SendMethod // тип отправки данных на сервер { //##ModelId=3E646B450177 GET = 0, //##ModelId=3E646B450178 POST, //##ModelId=3E646B450179 UNDEF }; //"Плоская" форма смс - сообщение //##ModelId=3E646B450181 struct FlatMessage { //##ModelId=3E646B45018C CString Name; //##ModelId=3E646B45018D CString Phone; //##ModelId=3E646B45018E CString Text; }; - только информативная //##ModelId=3E646B440378 short GetMethod(); //##ModelId=3E646B44037E CSmsMessage::FlatMessage GetFlattenMessage(); // делает из "тяжелого" класса CSmsMessage маленькую структуру FlatMessage //##ModelId=3E646B44037F CString GetURL(); // формирует URL с которым надо будет работать //##ModelId=3E646B440380 CSmsMessage(CString &rPhone, CString &rText, CString &rName); // конструктор обьекта //##ModelId=3E646B44038B 20 CSmsMessage(FlatMessage& Sms); // еще один //##ModelId=3E646B44038D CSmsMessage(); // и еще - уже совсем без инициализации переменных. //##ModelId=3E646B4403A6 virtual ~CSmsMessage(); protected: //##ModelId=3E646B4403A8 CString URLEncode(const CString& rString); //##ModelId=3E646B4403C5 bool CheckPhone(); //##ModelId=3E646B4403C6 bool SetOperator(); //##ModelId=3E646B4403CF CString m_Text; // Текст SMS сообщения //##ModelId=3E646B4403D0 CString m_Phone; // Номер телефона //##ModelId=3E646B4403D9 CString m_Name; // Имя получателя //##ModelId=3E646B4403DA unsigned short m_Operator; // Оператор - перечисляемый тип }; } #endif // !defined(AFX_SMSMESSAGE_H__C81AE17C_8FD0_4388_9EEC_FCD030FF00A7__INCLUDED_) // SmsXPress.h : main header file for the SMSXPRESS application // #if !defined(AFX_SMSXPRESS_H__A6F1D370_90D5_479A_B8E5_A579EED06AC2__INCLUDED_) #define AFX_SMSXPRESS_H__A6F1D370_90D5_479A_B8E5_A579EED06AC2__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols /////////////////////////////////////////////////////////////////////////// // // CSmsXPressApp: // See SmsXPress.cpp for the implementation of this class // //##ModelId=3E646B440338 class CSmsXPressApp : public CWinApp { public: //##ModelId=3E646B440343 CSmsXPressApp(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CSmsXPressApp) public: //##ModelId=3E646B44034C 21 virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation //{{AFX_MSG(CSmsXPressApp) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() }; /////////////////////////////////////////////////////////////////////////// // //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_SMSXPRESS_H__A6F1D370_90D5_479A_B8E5_A579EED06AC2__INCLUDED_) 22 Список использованных источников 1. Зеленко Л.С. Лекции по курсу «Технологии программирования». Самара, СГАУ, 2003. 2. СТП СГАУ 6.1.4-97. Общие требования к оформлению учебных текстовых документов: Методические указания. - Самара, Самар. аэрокосм. ун-т, 1997. - 16 с. 3. Смит Дж., Смит Д. Принципы концептуального проектирования баз данных / В кн.: Требования и спецификации в разработке программ. - М.: Мир, 1984. С.165 - 198. 4. Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы: (Сборник): ГОСТ 34.003-90, РД 50-680-88, РД 50-682-89, ГОСТ 34.201-89 - ГОСТ 34.602.89. - М.: Изд-во стандартов, 1992. -150 с. 23