Смекни!
smekni.com

Разработка информационного обеспечения и анализ данных для информационной системы "Станция технического обслуживания" (стр. 6 из 7)

RadioButton1 и RadioButton2 позволяют определить тип поиска. Если необходимо найти клиента, оформившего данный заказ, то надо выбрать "поиск клиента по ID заказа". Если необходимо просмотреть все заказы клиента или найти клиента в БД, чтобы повторно не вводить данные, то надо выбрать "поиск заказов клиента" и ввести необходимые данные.

ComboBox1 (ID заказа), ComboBox2 (ID клиента), ComboBox3 (Фамилия) и ComboBox4 (№ автомобиля) позволяют ввести (найти) данные для поиска.

По нажатию кнопки Button3 (Найти) осуществляется поиск. Если поиск не дал положительных результатов, выводится сообщение "Объект не найден".

В зависимости от выбранной категории поиска результаты будут различны. Если осуществляется поиск по категории "поиск клиента по ID заказа", то выведется только информация о клиенте в поля Edit1 (ID клиента), Edit2 (ФИО клиента), Edit3 (№ автомобиля). Если же поиск осуществляется по категории "поиск заказов клиента", то кроме информации о клиенте выведется также информация о всех его заказах в виде таблицы StringGrid1.

По нажатию кнопки Button1 (Новый заказ клиента), открывается форма "Оформление заказа", оформляется новый заказ на найденного клиента, то есть в форме "Оформление заказа" сразу отображаются все известные данные.

По нажатию кнопки Button2 (Новый заказ), открывается форма "Оформление заказа", оформляется новый заказ, в который все данные вводятся вручную.

Опишем подробно форму "Оформление заказа", представленную на рисунке 8.

Рисунок 7 - форма "Оформление заказа"

При оформлении заказа заполняются только голубенькие поля, серые поля заполняются при редактировании (принятии заказа на выполнение). Поля Edit9 (ID клиента), Edit1 (ID заказа), Edit2 (Стоимость) заполняются после создания нового заказа, т.е. после добавления данных в таблицы. Кнопка Button1 (Принять) добавляет все введённые данные в соответствующие таблицы. В поля Edit3 (Фамилия), Edit4 (Имя), Edit5 (Отчество), Edit6 (№ автомобиля) содержат информацию о клиенте и, если клиент найден в БД, заполняются автоматически.

Выпадающий список ComboBox1 (ID и наименование детали) позволяет найти нужную деталь для замены в списке. Поле Edit7 (Количество) позволяет указать сколько деталей данного типа требуется для замены в данном заказе. При нажатии кнопки Button2 (Добавить) информация о детали выводиться в таблицу StringGrid1. Выпадающий список ComboBox2 (Исполняющий мастер) позволяет выбрать мастера для исполнения, это поле заполняется при редактировании.

Выпадающий список ComboBox3 (ID и наименование услуги) позволяет найти нужную услугу в списке. При нажатии кнопки Button4 (Добавить) информация об услуге выводиться в таблицу StringGrid2. Выпадающий список ComboBox4 (Исполняющий мастер) позволяет выбрать мастера для исполнения. Для каждой услуги выбирается отдельный мастер. Это поле заполняется при редактировании.

Кнопка Button3 (Добавить данные) вносит недостающие данные при редактировании. Для этого необходимо открыть заказ и дописать недостающую информацию.

Для реализации работы с услугами сгенерирована форма "Услуги", представленная на рисунке 9. Опишем её содержимое и принцип работы.

Рисунок 8 - форма "Услуги"

Данная форма содержит таблицу StringGrid1 (Все услуги) для предоставления клиенту полного списка услуг и краткой информации по ним: ID услуги, наименование, стоимость. При запуске формы эта информация выводится автоматически.

Для осуществления поиска в поле Edit4 (Поиск) надо ввести ID услуги, по которой необходимо просмотреть полную информацию. По нажатию кнопки Button1 (Просмотреть) в область GroupBox2 (Информация по услуге) выводится вся известная информация: в поле Edit1 - ID услуги, в поле Edit2 - наименование услуги, в поле Edit3 - стоимость. В таблицу StringGrid2 (Исполняющие мастера) выводится информация по всем мастерам, исполняющие данную услугу: ID мастера, фамилия, имя, отчество мастера.

Таким образом, были описаны 3 формы, наиболее используемые при работе с клиентом.

3.3 Описание реализации модуля прогнозирования

Для сбора сведений по прогнозированию система должна перебрать все заказы за последние 10 месяцев по дате закрытия и записать в соответствующие массивы стоимости заказов: per1 [kol1], per2 [kol2], per3 [kol3], per4 [kol4], per5 [kol5], per6 [kol6], per7 [kol7], per8 [kol8], per9 [kol9], per10 [kol10]. Для каждого периода времени организуется отдельный массив. Все массивы имеют разную размерность, равную количеству заказов в данном периоде. После чего система переходит к выполнению функции прогнозирования:

int i,j; // служебные переменные

int x1=11, x2=12, x3=13; // номера периодов, для которых узнаём (прогнозируем) значение

int raschod=81; // общий расход

int x; // текущая переменная

float f; // значение функции

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

for (i=0; i<kol1; i++) sum1=sum1+per1 [i] ;

for (i=0; i<kol2; i++) sum2=sum2+per2 [i] ;

for (i=0; i<kol3; i++) sum3=sum3+per3 [i] ;

for (i=0; i<kol4; i++) sum4=sum4+per4 [i] ;

for (i=0; i<kol5; i++) sum5=sum5+per5 [i] ;

for (i=0; i<kol6; i++) sum6=sum6+per6 [i] ;

for (i=0; i<kol7; i++) sum7=sum7+per7 [i] ;

for (i=0; i<kol8; i++) sum8=sum8+per8 [i] ;

for (i=0; i<kol9; i++) sum9=sum9+per9 [i] ;

for (i=0; i<kol10; i++) sum10=sum10+per10 [i] ;

// задание массива, состоящих из сумм (экспериментальные значения функции); n - количество периодов, данные которых известны и используются для программирования float sum [n] ={sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8,sum9,sum10};

// прогнозирование для периода n+1

x=x1; f=0;

for (i=0; i<n; i++)

for (j=0; j<n; j++)

if (i! = j) f+= (x-a [i]) / (a [i] -a [j]) *sum [i] ;

f=f-raschod;

Edit1->Text=FloatToStr (f);

// прогнозирование для периода n+2

x=x2; f=0;

for (i=0; i<n; i++)

for (j=0; j<n; j++)

if (i! = j) f+= (x-a [i]) / (a [i] -a [j]) *sum [i] ;

f=f-raschod;

Edit2->Text=FloatToStr (f);

// прогнозирование для периода n+3

x=x3; f=0;

for (i=0; i<n; i++)

for (j=0; j<n; j++)

if (i! = j) f+= (x-a [i]) / (a [i] -a [j]) *sum [i] ;

f=f-raschod;

Edit3->Text=FloatToStr (f);

Результат данного прогноза - значения чистого дохода по трём следующим (будущим) периодам.

Отладка и тестирования приложения

Существует несколько методов тестирования:

Тестирование программ методом "чёрного ящика" (Black box testing)

Тестирование программ методом "белого ящика" (White box)

Тестирование ПО методом "серого ящика" (Grey box)

Тестирование не функциональных аспектов программы.

Опишем эти методы вкратце:

Тестирование программы как "белого ящика" и "чёрного ящика"

При тестировании белого ящика (англ. white-box testing, также говорят - прозрачного ящика), разработчик теста имеет доступ к исходному коду и может писать код, который связан с библиотеками тестируемого ПО. Это типично для юнит-тестирования (англ. unit testing), при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции - работоспособны и устойчивы, до определенной степени.

При тестировании чёрного ящика (англ. black-box testing), тестировщик имеет доступ к ПО только через те же интерфейсы, что и заказчик или пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру либо другому процессу подключиться к системе для тестирования. Например, тестирующий модуль может виртуально нажимать клавиши или кнопки мыши в тестируемой программе с помощью механизма взаимодействия процессов, с уверенностью в том, все ли идет правильно, что эти события вызывают тот же отклик, что и реальные нажатия клавиш и кнопок мыши. Как правило, тестирование чёрного ящика ведётся с использованием спецификаций или иных документов, описывающих требования к системе.

3.4 Тестирование нефункциональных параметров программы

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

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

Тестирование "Юзабилити" - тестирование интерфейса пользователя, его удобности, практичности и лёгкости для освоения обычным пользователем.

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

Тестирование качества интернационализации и локализации программного обеспечения.

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

Таким образом, в данной главе было описано назначение главных модулей, представлены основные формы - "Работа с клиентами", "Оформление заказа", "Услуги", - с описанием принципа работы. Программно описан модуль прогнозирования. Произведено тестирование полученного программного продукта методом тестирования нефункциональных параметров "Юзабилити".

Заключение

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

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

ручное заполнение документов подвергает риску ошибок;

большая бумажная волокита;

возможность утери одной или нескольких составляющих документации о заказах;

затруднение поиска нужного;

хранение много лишней макулатуры.

Также описаны автоматизированные бизнес-процессы и их преимущества:

возможность найти клиента из базы, если этот клиент однажды обращался в данную организацию;