Разработка программного обеспечения для терминалов приема платежей за услуги связи

Создание прикладного программного обеспечения для реализации интерфейса терминала по приему платежей за услуги связи. Анализ требований к программному обеспечению. Выбор языка программирования. Разработка интерфейса пользователя и проектной документации.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 18.06.2015
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

casei of

1: begin

caption:='Далее'; top:=650; left:=1100;

end;

2: begin

caption:='Назад'; top:=650; left:=16;

end;

3: begin

caption:='НаГлавную'; top:=650; left:=565;

color:=rgb(236,159,45);

end;

4: begin

font.Size:=22;

caption:='Погашениекредитов';

width:=300;

top:=250; left:=10;

visible:=true;

end;

end;

stat - номер действия (главная страница = 0, ввод номера = 1, проверка данных = 2, внесение наличных = 3). В зависимости от номера действия организовано динамическое изменение вида формы (Рисунок 2-5):

a:=tnavigator(self);

casea.index of

1: begin

case stat of

1: begin

stat:=2; form1.reg2(true);

form1.Label3.Caption:='Проверкавведенныхданных';

end;

2: begin

stat:=3; form1.reg3(true);

form1.Label3.Caption:='Внеситеналичные';

end;

3: begin

form1.Label4.Visible:=false;

form1.Label3.Caption:='Возьмитечек';

form1.chek;

end;

end;

end;

2: begin

case stat of

1: begin

stat:=0; form1.reg1(false);

form1.Label3.Caption:='Выберитеоператора';

form1.ButtonsNastr(true);

navigat[4].Visible:=true;

end;

2: begin

stat:=1; form1.reg2(false);

form1.Label3.Caption:='Введитеномер';

end;

3: begin

stat:=2; form1.reg3(false);

form1.reg2(true);

form1.Label3.Caption:='Проверкавведенныхданных';

end;

end;

end;

3: begin

stat:=0; form1.reg1(false);

form1.Label3.Caption:='Выберитеоператора';

form1.label4.Visible:=false;

navigat[1].Caption:='Далее';

form1.Panel1.Visible:=false;

navigat[4].Visible:=true;

form1.buttonsnastr(true);

end;

4: begin

form1.ButtonsNastr(false);

navigat[4].Visible:=false;

navigat[3].Visible:=true;

end;

end;

money,komis - внесенная сумма и комиссия от нее;

labels - массив полей для формирования чека;

nam - имя получателя;

number - строка с введенным номером из поля Edit1.

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

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

Механизм наследования обеспечивает возможность доступа объектов, являющихся экземплярами класса-потомка, к методам и свойствам класса-предка. Использование данного механизма в ООП ведет к значительному уменьшению объема программы (а следовательно, и временны затрат на разработку программы) и повышению ее функциональности. Фактически дочерний класс представляет собой точную копию родительского класса с некоторыми расширениями, дополнениями и изменениями.При этом название метода сохраняется, а его внутренняя реализация изменяется. Этополиморфизм - одно из трёх основных важных понятий ООП: инкапсуляция, наследование и полиморфизм.

Для того чтобы в классе-потомке изменить метод, унаследованный от родительского класса, могут быть использованы различные подходы. В ООП существуют три схожие концепции: переобъявление, переопределение и перегрузка.

В программе созданы несколько новых классов с использованием переопределения методов при наследовании (Рисунки 9 и 10).В классе-потомке при этом используется специальный модификатор override.

Класс Tnavigator.Кнопки навигации: Назад, На Главную, Далее:

Tnavigator=class(Tpanel)

procedure click; override;

private

index:integer;

end;

КлассTkeyboard. Клавиатура (от 1 до 0 и кнопка Удалить):

Tkeyboard=class(Tpanel)

procedureclick;override;

private

number:string;

end;

Рисунок 9- Класс Tnavigator и класс Tkeyboard

Класс Tmybutton.Кнопки на главной странице.

Tmybutton=class(Tpanel)

procedureclick;override;

private

Index:integer;

icon:timage;

end;

Рисунок 10- Класс Tmybutton.Кнопки на главной странице

При создании нового экземпляра класса вначале вызываются конструкторы всех родительских классов (начиная с самого высшего уровня иерархии), наследником которых является данный класс, и только затем выполняется конструктор самого класса. Объявить и создать новый объект можно следующим образом: В разделе var объявляется переменная, имеющая тип требуемогокласса:

var

Form1: Tform1;

buttons:array[1..n] of Tmybutton;

keybrd:array[1..m] of tkeyboard;

navigat:array[1..4] oftnavigator;

Затем в тексте программы с помощью вызова конструктора Create создается новый экземпляр указанного класса, ссылка на который присваивается описанной переменной, например:

for i:=1 to n do

begin

buttons[i]:=tmybutton.Create(self);

withbuttons[i] do

В программе организованы режимы проверки введенных данных и визуальный контроль действий операций пользователя (Рисунки 11 и 12).

Рисунок 11 - Проверка данных

Рисунок 12 - Внесение наличных

Первоначально формирование чека было организовано в пользовательской процедуреForm1. Сhek при этом надписи в чеке печатались друг на друге (Рисунок 13).

Рисунок - 13 Некорректная печать чека

Эта ошибка была исправлена путем переноса процедуры создания полей чека из пользовательской процедуры в событийную процедуру FormCreate (Рисунок 14).

Рисунок 14 - Корректная печать чека

7. Разработка проектной документации

7.1 Руководство пользователя

При входе на главную страницу пользователь (плательщик) видит основное меню, которое содержит:

- меню выбора оператора;

- меню погашения кредита.

Интерфейс представлен ранее на рис.15

После выбора оператора пользователь переходит на страницу "введите номер", представленную на рисунке 15.

Рисунок 15 - Страница ввода номера телефона

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

Осуществляется переход на страницу проверки номера. Страница представлена ранее на рисунке 11.

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

После внесения наличных денег в купюроприемник происходит перенаправление на страницу печати чека, представленную на рисунке 14 и собственно печать чека. На данной странице есть функциональная клавиша "на главную". Если пользователь входит в меню погашения кредита, то на главной странице он должен выбрать функциональную клавишу "погашение кредита". Далее происходит перенаправление на страницу выбора банка клиента. Страница выбора банка представлена на рисунке 17.

Рисунок 17 - Страница выбора банка

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

Рисунок 18 - Страница проверки правильности ввода номера счета

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

7.2 Руководство программиста

Структура проекта.

В состав проекта входит несколько файлов и каталогов.

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

– Projectl .dproj - файл группы проектов;

– Projectl.dpr - файл проекта, позволяющий управлять взаимодействием форм и выполнением различных действий на уровне всего приложения. В нем содержатся ссылки на все формы проекта и относящиеся к ним модули, а также код инициализации приложения;

– Projectl. Res - файл ресурсов приложения. Двоичный файл, содержащий все необходимые для проекта ресурсы (пиктограммы, указатели мыши, графические изображения или строки). Название у него такое же, как и у файла проекта.

– Projectl.exe- файл приложения;

– Unitl.dfm - файл, определяющий внешний вид формы;

Unitl.pas - файл исходного кода модуля.

8. Оценка эффективности программного продукта

Оценка стоимости разработки программного обеспечения

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

Стоимость разработки определяется следующим образом:

(1)

где С -- стоимость;

Т -- трудозатраты (например, в человеко-часах или человеко-месяцах);

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

Трудозатраты вычисляют по следующей формуле:

(2)

Здесь Р -- размер кода программы;

П -- временная производительность.

Для измерения производительности можно пользоваться методом функциональных точек

Метод заключается в следующем.

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

Следующим шагом метода будет подсчет количества факторов, приведенных ниже:

- внешние входы. Различаются только те входы, которые по-разному влияют на функцию. Функция выбор метода имеет один внешний вход;

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

- внешние запросы;

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

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

Далее полученные значения умножаются на коэффициенты сложности для каждого фактора (по данным IFPUG) и суммируются для получения полного размера программного продукта. Значения этих коэффициентов приведены в таблице 1.

Таблица 1 - Значения коэффициентов сложности

Параметр

Просто

Средне

Сложно

Внешние входы

3

4

6

Внешние выходы

4

5

7

Внешние запросы

3

4

6

Внутренние логические файлы

7

11

15

Внешние логические файлы

5

7

11

Для рассматриваемого нами примера возьмем значения, приведенные в таблице 2.

Размер нашей функции составит:

Это число является предварительной оценкой и нуждается в уточнении.

Таблица 2 - Пример коэффициентов сложности

Параметр

Просто

Средне

Сложно

Количество

Коэффициент

Количество

Коэффициент

Количество

Коэффициент

Внешние входы

1

3

0

4

0

6

Внешние выходы

2

4

1

5

0

7

Внешние запросы

0

3

0

4

0

6

Внутренние логические файлы

1

7

1

11

0

15

Внешние логические файлы

0

5

1

7

0

11

Следующим шагом в определении размера программного кода методом функциональных точек является присвоение веса (от 0 до 5) каждой характеристике проекта. Перечислим эти характеристики:

1.Требуется ли резервное копирование данных?

2.Требуется обмен данными?

3.Используются распределенные вычисления?

4.Важна ли производительность?

5.Программа выполняется на сильно загруженном оборудовании?

6.Требуется ли оперативный ввод данных?

7.Используется много форм для ввода данных?

8.Поля базы данных обновляются оперативно?

9.Ввод, вывод, запросы являются сложными?

10.Внутренние вычисления сложны?

11.Код предназначен для повторного использования?

12.Требуется преобразование данных и установка программы?

13.Требуется много установок в различных организациях?

14.Требуется поддерживать возможность настройки и простоту использования?

Значения для данных характеристик определяются следующим образом: 0 -- никогда; 1 -- иногда; 2 -- редко; 3 -- средне, 4 -- часто; 5 -- всегда. Эти характеристики для примера функции сведены в таблице 3.

Таблица 3 - Пример характеристик проектов

Характеристика

Значение в примере

Характеристика

Значение в примере

1

4

8

4

2

1

9

3

3

0

10

1

4

2

11

5

5

2

12

1

6

1

13

0

7

3

14

4

Определяется S -- сумма всех весов.

И наконец, уточненный функциональный размер вычисляют по формуле

(3)

[Уточненный функциональный размер] =[Приближенный функциональный размер] * [0,65+0,01 * (Сумма общих характеристик)]. Суть этой формулы состоит в том, что неуточненный функциональный размер нужно уменьшить на 35 %. И если к приложению предъявляется специальные требования (не все общие характеристики - нули), то каждая единица этих общих характеристик увеличивает результат на 1 %. Уточненный функциональный размер функции выбор метода будет следующим:

Далее проведем преобразование функционального размера в количество строк кода.

Количество строк кода по функциональному размеру можно вычислить с помощью стандартных таблиц. В свою очередь, количество строк кода позволяет определить общую трудоемкость в человеко-месяцах и сроки проекта. Например, в известна следующая величина: 23 строки исходного кода на Delphi на одну единицу функционального размера. Используя этот коэффициент, имеем 39 х 53 = 0,9 тыс. строк на Delphi.

Переведем теперь эти цифры в человеко-месяцы согласно формуле COCOMO (Конструктивная модель стоимости - Constructive Cost Model)

y = 0,9x1.05 , (4)

где x - тысячи строк кода. Получим оценку 0,9*2,71.05 = 2,5 человеко-месяцев.

Далее человеко-месяцы умножаются на оклад сотрудника разработчика в соответствии с формулой (1). При окладе 15000 рублей стоимость разработки будет приблизительно равна 37500 рублей. Учитывая тот факт, что осуществляется переход ООО "Теплостройсервис" от дилерской схемы работы к самостоятельному обслуживанию терминалов оплаты за услуги связи, данная стоимость проекта является оправданной.

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

9. Мероприятия по охране труда, безопасности жизнедеятельности

9.1 Вредные воздействия производственных факторов

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

Работа с компьютером входит в состав вредных для здоровья человека работ. Так оператор подвержен таким заболеваниям, как воспаление кожи и дерматиты, так как пыль, накапливающаяся на экране из-за электростатического поля, летит на оператора. Человек, сидящий за дисплеем, может подвергаться воздействию низкоэнергетического рентгеновского и ультрафиолетового излучения, электромагнитного излучения (экраны наиболее интенсивно излучают на частотах 10.4 - 15 КГц - частоте строчной развертки), статического электричества; возникающего в результате облучения экрана потоком заряженных частиц электронной трубки, а также воздействию шума, неудовлетворительного освещения и микроклимата. Помимо всего сказанного, работа за компьютером относится к психическим формам труда, так как необходимо воспринимать изображение на экране, постоянно следить за его динамикой, различать тексты рукописных или печатных материалов и т. П. Также сидячая поза во время работы может приводить к таким симптомам, как боли в спине и области шеи, ухудшение зрения, боли в кистевых и плечевых суставах, нарушение сна, вызванного перенапряжением, хронические головные боли, тошнота, слабость.

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

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

Конструкция монитора должна обеспечивать возможность фронтального наблюдения экрана путем поворота корпуса в горизонтальной плоскости вокруг вертикальной оси в пределах ±30° и в вертикальной плоскости вокруг горизонтальной оси в пределах ±30° с фиксацией в заданном положении. Дизайн монитора должен предусматривать окраску корпуса в спокойные мягкие тона с диффузным рассеиванием света.

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

Измерения рентгеновского излучения перед экраном цветного дисплея показали, что на расстоянии 5 см от экрана мощность дозы составляет 100 мкГр/ч, а на расстоянии 250 см от экрана - 0.0025 мкГр/ч. Конструкция видеомониторов должна обеспечивать величину эквивалентной дозы рентгеновского излучения в любой точке на расстоянии 0.05 м от экрана и корпуса монитора не более 0.1 мбэр/час (100 мкР/час ).

Измерения в рабочей зоне дисплея электромагнитных полей показали, что их уровни перед экраном ниже установленных допустимых норм. Однако сбоку от экрана напряженность электромагнитного поля может превышать норму в 3.3 раза у отечественных и в 1.4 раза у импортных дисплеев. В таких случаях защита осуществляется расстоянием. Поэтому необходимо строго соблюдать нормы объемно-планировочного решения помещений с дисплеями и выдерживать расстояния между расположенными по соседству компьютерами равными не менее 1.2 м.

Особое внимание следует обратить на статическое электричество. Измерения показывают, что напряженность электростатического поля в рабочей зоне, как отечественных, так и импортных дисплеев достигает 85-62 кВ/м, при норме 20 кВ/м в течение часа (ГОСТ 12.1.045.84).

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

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

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

9.2 Методы повышения безопасности

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

Заземление. Наиболее часто используемым методом защиты является заземление оборудования. При этом металлический корпус прибора присоединяется к земле специальным проводом. В электрическом приборе, подключаемом к сети с помощью шнура, это заземление осуществляется с помощью третьего, круглого или U-образного, контакта вилки. Если произойдет замыкание на корпус прибора, который заземлен таким образом, то электрический ток будет протекать от места замыкания к корпусу и возвращаться по проводу заземления. В идеальном случае ток замыкания будет настолько велик, что это приведет к немедленному срабатыванию размыкателя цепи (предохранителя). При этом неисправный прибор отключается от сети, и опасность устраняется.

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

Защита низким напряжением. Чем выше напряжение, тем больше ток, протекающий через человека при неисправности электрооборудования. При использовании аппаратуры, которая работает на значительно более низком уровне, чем в электросети, напряжении, можно значительно уменьшить вероятность и тяжесть несчастных случаев. Один из путей - питание приборов от батарей. У таких приборов есть еще одно преимущество - их не надо заземлять. Батареи применяются лишь в небольших приборах, но иногда этот способ защиты используется и таких приборах, как портативные рентгеновские аппараты. Другой путь получения более низких напряжений - применение небольших трансформаторов, встраиваемых непосредственно в вилку прибора. Этот трансформатор обычно используется и для изоляции части схемы с низким напряжением от земли.

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

9.3 Пожарная безопасность

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

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

Для разработки и использования программы необходимо ЭВМ. Особенностью современных ЭВМ является высокая плотность расположения элементов электронных схем. При прохождении электрического тока по проводникам и деталям выделяется тепло, что в условиях их высокой плотности может привести к перегреву.

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

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

В соответствии с требованиями ГОСТ 12.1.004-91 пожарная безопасность объекта обеспечивается: системой предотвращения пожара; системой противопожарной защиты; организационно-техническими мероприятиями. Для этого применяется огнезащита материалов и конструкций, используются противопожарные преграды (внутренние и наружные противопожарные стены, перегородки, перекрытия, противопожарные зоны), применяются противопожарную защиту зданий. В производственных помещениях необходимо также иметь первичные средства пожаротушения, которыми можно производить тушение пожаров на начальной стадии (огнетушители). Для тушения пожара в помещении с ПЭВМ необходимо применять газовые составы - хладоны, инертные разбавители, порошки.

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

Для успешной эвакуации персонала необходимо предусмотреть следующие требования к зданиям, где располагается помещения с ПЭВМ: количество эвакуационных выходов из помещений и зданий в целом определяется с учетом безопасности (не менее двух); минимальная ширина дверей на путях эвакуации - 0,8 м, а проходов - не менее 1 м; коридоры и проходы, предназначенные для эвакуации, имеют возможно меньшую длину и минимальное количество поворотов; двери на путях эвакуации открываются по направлению выхода из здания; лестницы имеют удобную для эвакуации связь с этажами и в то же время надежную изоляцию от них, исключающую воздействие на них факторов пожара.

9.4 Защита окружающей природной среды

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

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

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

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

Заключение

В результате работы над выпускной квалификационной работой решена задача, создания прикладного программного продукта для реализации пользовательского интерфейса терминалов по приему платежей от населения. Данная задача ставилась ООО Фирмой "Теплостройсервис" при переходе с дилерского обслуживания терминалами оплаты населения к созданию собственной сети на основе своего программного обеспечения. Данное пользовательское приложение интегрируется с единую систему проведения платежей от населения в банки и операторам сотовой связи. Приложение реализовано в среде Delpfi 2007, которое является клиентской частью архитектуры клиент-сервер. В работе представлена модель классов системы перевода платежей с с клиентской и серверной частью в виде базы данных. Реализация клиент серверной технологии через Интернет осуществляется по технологии CORBA, встроенной в систему разработки Delpfi 2007.

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

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

1. Голицина, О.Л. Программирование на языках высокого уровня [Текст] / О.Л. Голицина, И.И. Попов.- М.: ФОРУМ, 2011.- 496 с.

2. Джексон, Г. Проектирование реляционных баз данных [Текст] / Г. Джексон. - М.: Мир, 2011. - 298 с.

3. Долгоруков, А. Метод case как современная технология профессионально-ориентированного проектирования [Электронный ресурс] / А. Долгоруков. - // КОРНИ. - Режим доступа: http://www.evolkov.net/case/case.develop.html.

4. Емельянова, Н.З. Основы построения автоматизированных информационных систем: Учеб. Пособие [Текст] / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов - М.: Форум: Инфра-М, 2011. - 412с.

5. Зиндер, Е.З. Бизнес-реинжиниринг и технологии системного проектирования. Учебное пособие [Текст]/ Е.З. Зиндер - М.: Центр Информационных Технологий. - 2010. - 135 с.

6. Интернет-Университет Информационных Технологий. Элементы графической нотации диаграммы классов [Электронный ресурс].- Режим доступа: http://www.intuit.ru/department/pl/umlbasics/5/

7. Интернет-Университет Информационных Технологий. Введение в Delphi 2007 [Электронный ресурс].- Режим доступа: http://www.intuit.ru/department/pl/ Delphi /1/

8. Информационные системы: Диаграмма вариантов использования [Электронный ресурс].- Режим доступа: http://www.business-process.ru/designing/methodology/uml/theory/use_case_diagram_theory.html

9. Карпова, Т.А. Базы данных. Модели, разработка, реализация [Текст]/Т.А. Карпова. - СПб: Питер. - 2012. - 304 с.

10. Карпова, Т.С. Базы данных. Модели, разработка, реализация [Текст] / Т.С. Карпова. - СПб.: Питер, 2012. - 236 с.

11. Крёнке, Д.А., Теория и практика построения баз данных. З-е изд. [Текст] / Д.А. Крёнке - СПб.: Питер, 2010 - 859 с.: ил.

12. Макаровских, Т.А. Документирование программного обеспечения. В помощь техническому писателю [Текст] / Т.А. Макаровских. - СПб.: Ленанд. - 2015. - 356 с.

13. Маклаков, С. В. UML 2.0. Руководство по применению [Текст]/ Маклаков С. В. - М.: ДИАЛОГ-МИФИ. - 2011. - 256 с.

14. Маленко, Д.Ю., Новые возможности для разработчиков SQL Server [Текст] / Д.Ю. Маленко - М.: СОЛОН-Пресс, 2011. - 208с.: ил.

15. Саммерфилд, М. Программирование на Delphi. Подробное руководство. - Пер. с англ. [Текст] / М. Саммерфилд. - СПб.: Символ-Плюс, 2012. - 608с.

16. Синтес, А. Объектно-ориентированное программирование [Текст] / А. Синтес -М.: Вильямс, 2012. - 672 с.

17. Сухомлин, В.А. Объектно-ориентированные CASE-технологии. Учебное пособие [Текст]/ проф. В.А. Сухомлин. - М.: МГУ. - 2011. - 134 с.

18. Фаронов, В. В. Delphi. Программирование на языке высокого уровня: Учебник для вузов[Текст]/ В.В. Фаронов. - Спб.: Питер, 2012. -- 348с.

19. Черемных, С.В. Моделирование и анализ систем.UML 2.0: практикум [Текст] / С.В. Черемных, И.О.Семенов, B.C. Ручкин - М.: Финансы и статистика, 2010.- 192 с.

20. Эванс, Э. Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем [Текст] / Э.Эванс - М.: Вильямс - 2012. - 562с.

21. Эренковский, В.А. Безопасность работы за компьютером: Учебное пособие [Текст] /В.А. Эренковский.- Спб.: Питер, 2012. -- 348с.

Приложение А

Листинг программы главной формы

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Buttons, GIFImg;

const

day:array[1..7] of string=('Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');

n=4; m=11; z=6;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Timer1: TTimer;

Label3: TLabel;

Edit1: TEdit;

Image1: TImage;

Label4: TLabel;

Panel1: TPanel;

procedure FormCreate(Sender: TObject);

procedure StartTime;

procedure reg1(show:boolean);

procedure reg2(show:boolean);

procedure reg3(show:boolean);

procedure chek;

procedure labnastr(lab:tlabel; t,l:integer; cap:string);

procedure ButtonsAndKeybrdCreate;

procedure ButtonsNastr(reg:boolean);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Tnavigator=class(Tpanel)

procedure click; override;

private

index:integer;

end;

Tkeyboard=class(Tpanel)

procedure click;override;

private

number:string;

end;

Tmybutton=class(Tpanel)

procedure click;override;

private

Index:integer;

icon:timage;

end;

var

Form1: TForm1;

buttons:array[1..n] of TMybutton;

keybrd:array[1..m] of tkeyboard;

navigat:array[1..4] of tnavigator;

c:tcolor;

curs:integer;

phone:string;

stat:integer;

money,komis:integer;

labels:array[1..z] of tlabel;

nam,number:string;

implementation

{$R *.dfm}

procedure tform1.ButtonsNastr(reg: Boolean);

var

a:string;

i:integer;

begin

if reg then

begin

a:='.bmp';

buttons[1].Caption:='МТС';

buttons[2].Caption:='Билайн';

buttons[3].Caption:='Мегафон';

buttons[4].Caption:='TELE2';

buttons[1].icon.top:=20;

label3.Caption:='Выберите оператора';

end

else

begin

a:='_1.bmp';

buttons[1].Caption:='Сбербанк России';

buttons[2].Caption:='УралСиб';

buttons[3].Caption:='Альфа-банк';

buttons[4].Caption:='Россельхозбанк';

buttons[1].icon.top:=5;

label3.Caption:='Выберите банк';

end;

for i:=1 to n do

begin

try

if reg then buttons[i].Index:=i

else buttons[i].Index:=i+4;

image1.Picture.LoadFromFile(inttostr(buttons[i].Index)+'.gif');

buttons[i].icon.Picture.Assign(image1.Picture);

except

showmessage('Файл '+inttostr(buttons[i].Index)+'.gif'+' не найден в папке с программой.');

end;

end;

end;

procedure tform1.labnastr(lab: TLabel; t: Integer; l: Integer; cap: string);

begin

lab.Top:=t; lab.Left:=l; lab.Caption:=cap;

end;

procedure tform1.chek;

var

i:integer;

number1:string;

p:integer;

a:integer;

begin

number1:='';

if number[1]='+' then a:=5

else a:=1;

for i:=a to 23 do

begin

try

p:=strtoint(number[i]);

if ((p>=0)and(p<=9)) then number1:=number1+number[i];

except

continue;

end;

end;

labnastr(labels[1],30,5,'Получатель: '+nam);

labnastr(labels[2],55,5,'Принято: '+inttostr(money)+' руб.');

labnastr(labels[3],80,5,'Зачислено: '+inttostr(money-komis)+' руб.');

labnastr(labels[4],105,5,'Комиссия: '+inttostr(komis)+' руб.');

labnastr(labels[5],130,5,'Номер телефона/счета: '+number1);

labnastr(labels[6],155,5,'Дата: '+datetostr(now)+' '+timetostr(now));

panel1.Width:=250; panel1.Height:=200;

panel1.left:=550; panel1.Top:=200;

panel1.Visible:=true;

panel1.Caption:='';

navigat[1].Visible:=false;

navigat[2].Visible:=false;

end;

procedure tform1.reg1(show:boolean);

var

i:integer;

begin

for i:=1 to 3 do

begin

if (show and (i=1)) then continue;

navigat[i].Visible:=show;

end;

for i:=1 to m do keybrd[i].Visible:=show;

for i:=1 to n do buttons[i].Visible:=not show;

Edit1.Visible:=show;

Image1.Visible:=show;

end;

procedure tform1.reg2(show:Boolean);

var

I:integer;

begin

for i:=1 to m do keybrd[i].Visible:=not show;

label4.Caption:='Проверьте правильность введенныхо Вами данных.';

label4.Caption:=label4.Caption+#13+'Если Вы допустили ошибку - вернитесь назад,';

label4.Caption:=label4.Caption+' иначе - '+#13+'нажмите Далее';

label4.Visible:=show;

label4.Font.Size:=16;

navigat[1].Caption:='Далее';

end;

procedure tform1.reg3(show: Boolean);

var

i:integer;

begin

number:=edit1.Text;

image1.Visible:=not show;

edit1.Visible:=not show;

label4.Font.Size:=26;

label4.Caption:='Внесено '+inttostr(money)+' руб.'+#13;

komis:=money-(money div 10);

label4.Caption:=label4.Caption+#13+'К зачислению '+inttostr(money-komis)+' руб.'+#13;

label4.Caption:=label4.Caption+#13+'Комиссия '+inttostr(komis)+' руб.';

navigat[1].Caption:='Оплатить';

end;

procedure tform1.ButtonsAndKeybrdCreate;

var

i,t,l:integer;

begin

t:=150;

for i:=1 to n do

begin

buttons[i]:=tmybutton.Create(self);

with buttons[i] do

begin

parent:=form1;

width:=600; height:=110;

top:=t; left:=400;

font.Size:=26; font.Color:=clWhite;

parentbackground:=false;

color:=c;

borderstyle:=bssingle;

index:=i;

icon:=timage.Create(self);

with icon do

begin

parent:=buttons[i];

width:=200; height:=98;

if i=1 then top:=20

else top:=5;

left:=10;

proportional:=true;

transparent:=true;

end;

end;

t:=t+buttons[i].Height+15;

end;

buttonsnastr(true);

t:=215; l:=525;

for i:=1 to m do

begin

keybrd[i]:=tkeyboard.Create(self);

with keybrd[i] do

begin

parent:=form1;

width:=100; height:=100;

top:=t; left:=l;

parentbackground:=false;

color:=c;

font.Size:=26; font.Color:=clwhite;

caption:=inttostr(i);

number:=inttostr(i);

visible:=false;

borderstyle:=bssingle;

end;

l:=l+keybrd[i].width+15;

if i mod 3=0 then begin t:=t+keybrd[i].Height+5; l:=525; end;

end;

keybrd[10].Width:=(keybrd[10].Width*3)+30;

keybrd[10].Caption:='0';

keybrd[10].number:='0';

keybrd[11].Top:=edit1.Top-45;

keybrd[11].Left:=1015;

keybrd[11].Height:=edit1.Height+40;

keybrd[11].Width:=175;

keybrd[11].Caption:='Удалить';

for i:=1 to 4 do

begin

navigat[i]:=tnavigator.Create(self);

with navigat[i] do

begin

parent:=form1; visible:=false;

width:=250; height:=100;

index:=i;

font.Size:=30; font.Color:=clwhite;

borderstyle:=bssingle;

parentbackground:=false;

color:=c;

case i of

1: begin

caption:='Далее'; top:=650; left:=1100;

end;

2: begin

caption:='Назад'; top:=650; left:=16;

end;

3: begin

caption:='На Главную'; top:=650; left:=565;

color:=rgb(236,159,45);

end;

4: begin

font.Size:=22;

caption:='Погашение кредитов';

width:=300;

top:=250; left:=10;

visible:=true;

end;

end;

end;

end;

end;

procedure tnavigator.Click;

var

a:tnavigator;

i:integer;

begin

a:=tnavigator(self);

case a.index of

1: begin

case stat of

1: begin

stat:=2; form1.reg2(true);

form1.Label3.Caption:='Проверка введенных данных';

end;

2: begin

stat:=3; form1.reg3(true);

form1.Label3.Caption:='Внесите наличные';

end;

3: begin

form1.Label4.Visible:=false;

form1.Label3.Caption:='Возьмите чек';

form1.chek;

end;

end;

end;

2: begin

case stat of

1: begin

stat:=0; form1.reg1(false);

form1.Label3.Caption:='Выберите оператора';

form1.ButtonsNastr(true);

navigat[4].Visible:=true;

end;

2: begin

stat:=1; form1.reg2(false);

form1.Label3.Caption:='Введите номер';

end;

3: begin

stat:=2; form1.reg3(false);

form1.reg2(true);

form1.Label3.Caption:='Проверка введенных данных';

end;

end;

end;

3: begin

stat:=0; form1.reg1(false);

form1.Label3.Caption:='Выберите оператора';

form1.label4.Visible:=false;

navigat[1].Caption:='Далее';

form1.Panel1.Visible:=false;

navigat[4].Visible:=true;

form1.buttonsnastr(true);

end;

4: begin

form1.ButtonsNastr(false);

navigat[4].Visible:=false;

navigat[3].Visible:=true;

end;

end;

end;

procedure tkeyboard.Click;

var

a:tkeyboard;

p:string;

begin

a:=tkeyboard(self);

if form1.Label3.Caption='Введите номер телефона' then

begin

if a.number='11' then

begin

if curs=0 then curs:=24;

case curs of

22: curs:=19;

18: curs:=14;

12:curs:=7;

5: ;

else curs:=curs-1;

end;

p:=form1.Edit1.Text;

form1.Edit1.Text:=copy(p,1,(curs-1))+' '+copy(p,curs+1,(25-curs+1));

navigat[1].Visible:=false;

end

else

if curs<>0 then

begin

p:=form1.Edit1.Text;

form1.Edit1.Text:=copy(p,1,(curs-1))+a.number+copy(p,curs+1,(25-curs+1));

case curs of

7: curs:=12;

14: curs:=18;

19: curs:=22;

23: begin curs:=0; navigat[1].Visible:=true; end;

else inc(curs);

end;

end;

end;

if form1.Label3.Caption='Введите номер счета' then

begin

if a.number='11' then

begin

curs:=curs-1;

p:=form1.Edit1.Text;

form1.Edit1.Text:=copy(p,1,(curs-1))+copy(p,(curs+1),(25-(curs+1)));

navigat[1].Visible:=false;

end;

if a.number<>'11' then

begin

if curs<13 then

begin

form1.Edit1.Text:=form1.Edit1.Text+a.number;

curs:=curs+1;

if curs=13 then navigat[1].Visible:=true;

end;

end;

end;

end;

procedure tmybutton.Click;

var

a:tmybutton;

i:integer;

begin

a:=tmybutton(self);

nam:=a.Caption;

form1.Image1.Picture.LoadFromFile(inttostr(a.Index)+'.gif');

if a.Index<=4 then

begin

form1.Label3.Caption:='Введите номер телефона';

form1.Edit1.Text:=phone;

curs:=5;

end

else

begin

form1.Label3.Caption:='Введите номер счета';

form1.Edit1.Text:='';

curs:=1;

end;

stat:=1;

form1.reg1(true);

navigat[4].Visible:=false;

end;

procedure tform1.StartTime;

begin

label1.Caption:=day[dayofweek(now)]+', '+datetostr(now);

label2.Caption:=timetostr(now);

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

label2.Caption:=timetostr(now);

end;

procedure TForm1.FormCreate(Sender: TObject);

var

i:integer;

begin

c:=rgb(81,182,207); stat:=0; money:=0;

form1.BorderStyle:=bsnone;

form1.WindowState:=wsmaximized;

StartTime;

ButtonsAndKeybrdCreate;

phone:='+7 ( ) - - - ';

edit1.Font.Size:=40;

edit1.Width:=600; edit1.Height:=100;

edit1.Top:=120; edit1.Left:=400;

edit1.Text:=phone;

edit1.Font.Color:=clblue;

edit1.Visible:=false;

image1.Visible:=false;

Image1.Top:=250;

for i:=1 to z do

begin

labels[i]:=tlabel.Create(self);

with labels[i] do

begin

width:=1;

parent:=panel1;

autosize:=true;

font.Size:=8;

font.Style:=[fsbold];

end;

end;

end;

end.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.