Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Раздел 5. Модель реализации ⇐ ПредыдущаяСтр 4 из 4
Примем, что в разрабатываемом проекте ведется регистрация 3 основных типов звонков: 1) Звонки внутри собственной сети; 2) Звонки и прием с номеров других операторов 3) Предоставление услуги связи на звонки между разными операторами На базе предположения о типах звонках, разработаем соответствующие тарифы. Также предположим, что основной задачей проекта не ставится механизм определения типа оператора, и все звонки, не занесенные вручную, записываются в базу как Абонент Икс. Рассмотрим структуру разработанной базы данных (рисунке 13). Рисунок 13 – Схема базы данных компании «Поговорим»
Назначение таблиц: - «tTarif» - сведения о тарифах компании: название, цена; - «tStattusCall» - статус звонка. Стоит отметить, что не все статусы эмулированы в программе, но в реальной системе они существуют; - «tCompany» - описание операторов связи; - «tAbonent» - информация об абонентах, звонивших через компанию «Поговорим». Информация содержит личные данные абонента и к какой компании абонент относится; - «tPhoneNumber» - телефоны абонентов, может быть больше одного в сети; - «tCall» - таблица с информацией о звонках, зарегистрированных в системе. На следующем этапе выполним создание объектов в среде Casebery, как это показано на рисунке 14. Рисунок 14 – Создание объектов в среде Casebery
Для объекта «Абоненты» укажем параметры, как это показано на рисунке 15. Рисунок 15 – Указание параметров для объекта «Абоненты» Аналогично укажем параметры для объектов «Звонки» и «Статусы звонков» как это показано на рисунках 16, 17. Рисунок 16 – Указание параметров для объекта «Звонки»
Рисунок 17 – Указание параметров для объекта «Статусы звонков»
Главное окно программы реализовано как MDI-форма. Для углубления знаний по работе новых компонентов Delphi, меню приложения было реализовано на Ribbon-компонентах (рисунок 18). Рисунок 18 – Вид TRibbon в режиме конструктора
Как видно из рисунка, меню состоит из одного TRibbonTabs, TRibbonPage, четырех групп TRibbonGroup. Два компонента TImageList обеспечивают иконки кнопок для разных размеров. Связь с базой данных обеспечивают компоненты вкладки DbGo: TADOConnection и TADODataSet. Настройка соединения с базой осуществляется через udl файл, где при необходимости можно поменять провайдера. Рассмотрим работу формы эмуляции звонков (рисунок 19). Можно выбрать абонента из базы или ввести вручную. Кнопками «Позвонить», «Завершить», «Принять» устанавливается статус звонка. Анимация меняется в соответствии со статусом звонка. Рисунок 19 – Вид формы эмуляции в режиме конструктора
Для удобства отслеживания параметров звонка был создан следующий тип данных: type tCall=record id1: Integer; //id телефона абонента1 id2: Integer; //id телефона абонента2 datest: TDateTime; dateend: TDateTime; status: Integer; itarrif: Integer; it1: integer; //флаг принадлежности к компании «Поговорим» абонента1 it2: Integer; //флаг принадлежности к компании «Поговорим» абонента2 end; Процедура сохранения звонка в базу состоит из нескольких этапов. На первом этапе проверяется существование телефона в базе, и, если нет телефон заносится в базу как телефон абонента Икс. Код процедуры проверки: function IsPhone( txt: TEdit; var it: integer): integer; var s, sval: string; begin s: ='SELECT tPhoneNumber.phnumid FROM tPhoneNumber WHERE tPhoneNumber.number='+#39+txt.Text+#39; sval: =moddata.getValue(s); if sval='' then begin Result: =SavePhone(8, txt.Text); it: =1; end else begin Result: =StrToInt(sval); s: ='SELECT tCompany.companyid, tPhoneNumber.phnumid, tPhoneNumber.number, tCompany.description '+ ' FROM tCompany INNER JOIN (tAbonent INNER JOIN tPhoneNumber ON tAbonent.abonentid = tPhoneNumber.abonentid) '+ ' ON tCompany.companyid = tAbonent.companyid '+ ' WHERE tPhoneNumber.phnumid='+sval; sval: =moddata.getValue(s); if sval< > '1' then it: =1; end; end;
Все ошибки при поэтапном сохранении отслеживается с помощью блока ошибок try…except…end и транзакций, часть кода процедуры сохранения иллюстрирует это: procedure Tfanime.SaveCall(); var ds: TADODataSet; comp1: Integer; s: string; begin moddata.ADOConnection1.BeginTrans; Try ……………………………
ds: =TADODataSet.Create(fanime); ds.Connection: =moddata.ADOConnection1; ds.CommandText: ='select * from tCall where false'; ds.Active: =True; ……………………………………………………………..
ds.Post; ds.Active: =False; ds.DisposeOf; moddata.ADOConnection1.CommitTrans; Except on e: Exception do begin moddata.ADOConnection1.RollbackTrans; ds.DisposeOf; ShowMessage(e.Message); End end; end;
Форма телефонного справочника (рисунок 20) визуально разделена на 2 части, и состоит из 2х компонентов TDBgrid, связанных через TADODataset как master-detail.
Рисунок 20 – Форма добавления абонентов и телефонов вручную
SQL-запрос на основную таблицу абонентов: SELECT tAbonent.abonentid, tAbonent.description, tAbonent.companyid, tCompany.caption FROM tCompany INNER JOIN tAbonent ON tCompany.companyid = tAbonent.companyid ORDER BY tAbonent.description, tCompany.caption
SQL-запрос на таблицу телефонов: SELECT *FROM tPhoneNumber Настройка Join отношения между таблицами по полю abonentid приведена на рисунке 21. Рисунок 21 – Окно настройки отношений Master-Detail
В форме предусмотрены поля поиска по абоненту и фильтр по названию оператора связи. Форма «Список телефонов» (рисунок 22) отображает информацию по всем звонкам в системе. В форме предусмотрен двойной фильтр по дате и статусу, при изменении даты или выбора типа статуса: ADODataSet1.Filtered: =False; s: ='datestart > = '+DateTimeToStr(dateof(DateTimePicker1.Date)) +' and ' + 'datestart< '+DateTimeToStr(dateof(IncDay(DateTimePicker1.Date))); if CheckBox2.Checked then s: =s+' and description LIKE '+ #39 + ComboBox1.Text + '%' + #39; ADODataSet1.Filter: =s; ADODataSet1.Filtered: =true;
Рисунок 22 – Форма просмотра звонков
В форме «Тарифы» (рисунок 23) реализована возможность изменения стоимости 1 секунды разговора в тарифах. Рисунок 23 – Форма тарифов компании
Отчеты в программе реализованы с помощью компонентов Fast Report. Окно выбора параметров для отчета приведено на рисунке 24. Программа предлагает сделать выбор данных для отчета по дате, по абоненту или по дате и абоненту. При неактивных флажках выбора даты и абонента выводится отче по всем абонентам и за все время. Рисунок 24 – Форма выбора параметров для отчета
Отчет в конструкторе FastReport приведен на рисунке 25. Рисунок 25 – Окно конструктора Fast Report
Как видно из рисунка 25 отчет состоит из нескольких основных частей: шапки, названия колонок отчета, данные отчета и суммирующая часть. Название отчета передается через TfrxVariables при вызове. Отчет для параметров с рисунка 25 приведен на рисунке 26. Стоит отметить, что в отчете принимаются во внимание только исходящие звонки. Рисунок 26 – Отчет по работе
При дальнейшем развитии разработанной системы, даже, как и учебной, обязательно стоит обратить внимание на идентификацию, к какому оператору относится совершаемый звонок. Листинг программного кода приведен в приложении В. Заключение
В процессе выполнения работы был выполнен объектно-ориентированный анализ и разработка информационной системы «Телефонные переговоры». На первоначальном этапе был выполнен системный анализ и анализ требований на основании разработки системы, позволяющей определить рамки системы, сформировать перечень исполнителей и их задач, определить прецеденты и разработать диаграммы прецедентов, последовательности для описания системных операций. Внутренними пользователями ИС «Телефонные переговоры» выступают: менеджер Call-центра и его целью является ведение учета телефонных переговоров в информационной системе, оператор Call-центра, выполняющий организацию связи между абонентами и оператор, определяющий оплату за телефонные переговоры. В ИС «Телефонные переговоры» можно будет получить отчет. Внешним пользователем выступает абонент, целью которого является получение услуг телефонной связи. Анализ диаграммы прецедентов показал, что после подключения абонент получает возможность ведения телефонных переговоров. В этом процессе кроме абонента учувствуют оператор и менеджер Call-центра. За определенный период бухгалтером формируются отчеты по телефонным звонкам абонента. Далее была выполнена разработка модели предметной области на основании выделения объектов предметной области или концептуальных классов, установления ассоциаций между концептуальными классами. В ИС «Телефонные переговоры» были выделены такие концептуальные классы как «Абоненты» для ведения учета абонентов, «Звонки» для регистрации звонков абонентов, «Статус звонков» для отслеживания выполнения звонков абонентов, «Номера телефонов», для ведения учета номеров телефонов абонентов» и «Тарифы» для расчета стоимости телефонных услуг. На последующем этапе была выполнена разработка модели проектирования на основании диаграммы последовательностей, кооперации и программных классов. Основой разработки программного продукта выступила модель данных и реализации. В модели данных используются сущности «Абоненты», «Номера телефонов», «Звонки», «Статусы звонков» и «Тарифы». Между сущностями выбрана не идентифицирующая связь «один-ко-многим». Для разработки моделей в курсовой работе была использована среда Rational Rose, которая позволяет реализовать объектно-ориентированный анализ на основании языка UML. Для разработки программного обеспечения использовалась среда программирования Embarcadero RAD Studio, которая содержит весь необходимый инструментарий для получения многофункционального программного продукта. Связь с базой данных обеспечивают компоненты вкладки DbGo: TADOConnection и TADODataSet. Настройка соединения с базой осуществляется через udl файл, где при необходимости можно поменять провайдера. Отчеты в программе реализованы с помощью компонентов Fast Report.
|
Последнее изменение этой страницы: 2019-06-19; Просмотров: 260; Нарушение авторского права страницы