Проектирование программы по анализу массива
Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 15.06.2014 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
Информационные технологии широко применяются в наше время для автоматизации документооборота на различных предприятиях.
Постоянно растет объем и сложность обрабатываемой информации, требуются все новые и новые виды ее представления. Не подлежит сомнению, что организовать поиск, произвести анализ и совершить многие другие операции значительно проще и удобнее, имея дело с электронными документами, чем с печатными.
Программы позволяют обогатить курс обучения, дополняя его разнообразными возможностями компьютерных технологий, и делают его, таким образом, более интересным и привлекательным для учащихся. Исключительно высокая степень наглядности представленного материала, взаимосвязь различных компонентов курсов, комплексность и интерактивность делают программы незаменимыми помощниками, как для ученика, так и для учителя. Практически все развитые страны активно разрабатывают и поддерживают компьютерные технологии обучения. Это вызвано, во-первых, тем, что компьютер стал средством повышения производительности труда во всех сферах деятельности человека, во-вторых, резко возрос объем необходимых знаний и с помощью традиционных способов и методик преподавания уже невозможно подготовить требуемое количество высокопрофессиональных специалистов.
Необходимость активного использования обучающих программ сегодня диктуется не только тем, что персональный компьютер стал уже не экзотической технической новинкой, но инструментом в технологической образовательной цепочке в виде средства обучения, а также тем, что без его активного использования невозможно повысить интенсивность процесса получения знаний, закрепления навыков и умений.
Целью моей дипломной работы является создание программы визуализации методов сортировки массива, которая может быть использована при изучении дисциплин, связанных с программированием и алгоритмизацией, для демонстрации методов сортировки массива.
В дипломной работе я использовала среду программирования Delphi. На стадии анализа требований мною был собран весь необходимый теоретический материал для создания программы. На стадии интеграции разработан программный код. На стадии тестирования проводилась проверка работоспособности программы.
1. Теоретическая часть
1.1 Назначение и область применения
Программа позволяет визуально демонстрировать заполнение массива случайным образом и сортировать его различными методами.
Программный продукт предназначен в качестве вспомогательного пособия преподавателям предмета: «Программирование в компьютерных системах». Также программа может использоваться студентами, изучающими данный предмет, для самостоятельной работы.
Программа предназначена для использования в учебных заведениях. Это позволит преподавателям эффективно использовать время урока, повысить мотивацию студентов к изучению программирования.
1.2 Технические характеристики
программа массив пользователь
Постановка задачи
Необходимо создать разработку программного продукта предназначенного для заполнения и сортировки массива.
Разработанный программный продукт должен удовлетворять следующим требованиям:
· Наличие клавиш для заполнения, сортировки, удаления массива
· Наличие поля для отображения количества массива;
· Наличие поля скорости заполнения массива
· Наличие поля вывода гистограммы
Входными данными являются значения элементов целочисленного массива, сгенерированного случайным образом.
В качестве выходных данных выступают гистограммы, представляющие текущее содержание обрабатываемого массива.
Внешний вид программы должен соответствовать интерфейсу Windows-приложения.
Программный продукт должен быть прост и понятен для работы с ним.
Описание алгоритма
Алгоритм - последовательность чётко определенных действий, выполнение которых ведёт к решению задачи. Алгоритм, записанный на языке машины, есть программа решения задачи.
При разработке своего программного продукта я использовала следующий алгоритм:
1. разработка структуры программного продукта;
2. сбор информации;
3. выбор среды программирования и разработка интерфейса;
4. создание дизайна программного продукта;
5. создание кнопок и ползунков, при помощи которых осуществляется работа программы;
6. создание поля для вывода гистограммы.
При решении поставленной задачи можно представить схему, отображающую набор действий пользователя при работе с программой.
Пользователю, при входе, предоставляются действия на выбор: заполнение, сортировка массива; просмотр результата сортировки.
Администратор устанавливает программу и имеет доступ к ее исходному коду.
входных и выходных данных
Входными данными являются значения элементов целочисленного массива, сгенерированного случайным образом.
В качестве выходных данных выступают гистограммы, представляющие текущее содержание обрабатываемого массива.
К функциональным особенностям созданной программы можно отнести:
· возможность заполнения, сортировки, удаления массива;
· наличие поля для отображения размерности массива;
· возможность выбора скорости сортировки массива;
· возможность выбора метода и направления сортировки;
· возможность фиксирования времени сортировки;
· визуальное отображение процесса сортировки.
Выбор состава технических и программных средств
Одним из требований для нормальной работы программы является быстродействие системы в целом. При достаточно быстром обмене информацией между процессором и памятью компьютера можно существенно сократить время загрузки страниц и обработки различных запросов. Данное быстродействие можно достигнуть, используя современные процессор и модули памяти.
Для нормального функционирования программного продукта требуется ПК со следующими минимальными характеристиками:
· центральный процессор с частотой не ниже 1000 MГц;
· объём оперативной памяти не менее 512 MБ;
· жесткий диск с объемом свободной памяти не менее 70 МБ;
· дисковод CD/DVD;
· манипулятор «мышь»;
· клавиатура;
· монитор.
Программа работает в операционной системе Microsoft Windows 7. Операционные системы данного класса являются самыми надежными и популярными.
В качестве программных средств, при разработке программного продукта используется Delphi.
Delphi - результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5. 5, добавил в Паскаль объектно-ориентированные свойства, а Delphi - объектно-ориентированный язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией.
Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован вариант для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft.NET, которая, в свою очередь, была прекращена с выходом Delphi 2007.
На сегодняшний день, наряду с поддержкой разработки 32 и 64-разрядных программ для Windows, реализована возможность создавать приложения для Apple Mac OS X (начиная с Embarcadero Delphi XE2), IOS (включая симулятор, начиная с XE4 посредством собственного компиятора), а также, в Delphi XE5, приложения для Google Android (непосредственно исполняемые на ARM процессоре).
Независимая, сторонняя реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC.
Язык Pascal предназначен для описания вычислительного процесса решения задачи, в состав которой могут входить величины.
программа массив пользователь
Схема 1 - Используемые величины
Константы - данные, значения которых не изменяются в программе.
Переменные - данные, могущие изменяться при выполнении программы.
Для обозначения имен констант, переменных, функций, процедур и модулей используются буквы и цифры, входящие в алфавит языка, и знак подчеркивания «_». Имена начинаются с буквы или знака подчеркивания» _ «и содержат до 63 значащих символов. Символ пробела в имени не допускается. Эти имена принято называть идентификаторами.
Выражения - константы, переменные и обращения к функциям, соединенные знаками операций. Операторы - специальные символы и слова, выполняющие действия.
Функции, процедуры и модули - отдельные программные блоки, имеющие имена и подключаемые к основной программе.
Классы и объекты Delphi. Для реализации интерфейса Delphi использует библиотеку классов, которая содержит большое количество разнообразных классов, поддерживающих форму и различные компоненты формы (командные кнопки, поля редактирования и т.д.).
Во время проектирования формы приложения Delphi автоматически добавляет в текст программы необходимые объекты. Это описание класса Когда программист, добавляя необходимые компоненты, создает форму, Delphi формирует описание класса формы. Когда программист создает функцию обработки события формы или ее компонента, Delphi добавляет объявление метода в описание класса формы приложения.
Помимо классов визуальных компонентов в библиотеку классов входят и классы так называемых невизуальных (невидимых) компонентов, которые обеспечивают создание соответствующих объектов и доступ к их методам и свойствам. Типичным примером невизуального компонента является таймер (тип TTimer) и компоненты доступа и управления базами данных.
Графика языка программирования
Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа сграфикой в Delphi предполагает обращение к канве - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста.
В работе с графикой в Delphi в распоряжении программиста находятся канва (холст, полотно - свойство Canvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство канвы Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы.
Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты! Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер.
Основное свойство такого объекта как Canvas Delphi - Pixels [i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора
Image1. Canvas. Pixels [100, 100]:=clRed;
приведёт к рисованию красной точки с координатами [100, 100]. Узнать цвет пиксела можно обратным присвоением:
Color:=Image1. Canvas. Pixels [100, 100];
Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR. Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF.
Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.
2. Практическая часть
2.1 Техническое задание
Полное наименование программы «Создание программы визуализации методов сортировки массива».
Краткое наименование программы - «Сортировка массива».
Сортировка массива демонстрирует различные методы сортировки и позволяет выделить наиболее эффективные из них.
Разработка ведется на основании задания на дипломную работу по специальности «Программное обеспечение вычислительной техники и автоматизированных систем».
Задание утверждено на заседании предметно-цикловой комиссии специальности 230105 14.04.2014 года.
Разработка является аттестационной при подготовке программиста.
Программный продукт предназначен для заполнения и сортировки массива разными способами.
Программный продукт должен обладать следующими функциональными характеристиками:
· иметь кнопки для заполнения массива;
· иметь кнопки для сортировки массива;
· удаление массива;
· внешний вид программы должен соответствовать интерфейсу Windows - приложения и должен быть удобен в работе и понятен пользователю любого уровня;
· программа должна запускаться по стандартам запуска Windows - приложения.
Входными данными являются значения элементов целочисленного массива, сгенерированного случайным образом.
В качестве выходных данных выступают гистограммы, представляющие текущее содержание обрабатываемого массива.
Требования к временным характеристикам и размерам занимаемой памяти состоят в том, что время реакции программы на нажатие любой из клавиш не должно превышать 0,25 с, за исключением реакций на чтение и запись входных и выходных файлов.
Программа должна нормально функционировать при бесперебойной работе ПК. При возникновении сбоя в работе аппаратуры восстановление нормальной работы программы должно производиться после:
· перезагрузки операционной системы;
· запуска исполняемого файла программы.
Уровень надежности программы должен соответствовать технологии программирования, предусматривающей комплексное тестирование программы.
Время восстановления после отказа должно состоять из:
· времени перезапуска пользователем операционной системы;
· времени запуска пользователем исполняемого файла программы.
Условия эксплуатации ограничены лишь стабильностью работы аппаратной и программной составляющих компьютера, на котором установлен программный продукт.
Выбор методов решения осуществляется разработчиком.
Выбор языка программирования осуществляется разработчиком. При разработке программного продукта используется среда Delphi
Описание основных конструкций языка программирования
Элементы управления - это объекты, которые служат для организации интерфейса между пользователем и компьютером. Например: кнопки, списки, переключатели.
Элемент управления - это объект, имеющий свои свойства, методы, события.
1. Компонент Form
Форма - это важнейший визуальный компонент, который представляет собой видимое окно Windows. В системе Delphi форма является компонентом, который служит контейнером для всех других компонентов.
Приложение может иметь несколько форм, одна из которых считается главной и при запуске программы отображается первой.
Форма может быть модальной и немодальной. Немодальная форма позволяет без ее закрытия переключиться в другую форму приложения, а модальная форма требует обязательного закрытия перед обращением к любой другой форме приложения.
2. Компонент Button
Компонент Delphi Button это стандартная кнопка Delphi, кнопка имеет на поверхности надпись (описывающая её назначение при нажатии). Основное событие для кнопки является OnClick, выполняемое при нажатии, при этом кнопка меняет внешний вид, подтверждая этим происходящее действие визуально. Сразу после отпускания кнопки, выполняется действия в обработчике OnClick. Кнопку можно нажать не только щелчком мыши но и комбинацией клавиш, что бы задать комбинацию необходимо перед символом используемый в комбинации поставить символ амперсанта «&». После чего пользователь вместо щелчка мыши может использовать сочетание клавиш Alt и клавишей выделенного символа.
Свойства Button
Cancel |
если установлено true, то нажимая клавишу «Esc» будет выполнено нажатие на данную кнопку. Это свойство лучше задавать для кнопок «Отменить»; |
|
Caption |
задает название кнопки |
|
Default |
если установлено в true, то при нажатии клавиши Enter будет выполнено нажатию на данную кнопку, даже если в этот момент данная кнопка не находится в фокусе. Но если в момент нажатия в фокусе находится другая кнопка, то сработает кнопка находящаяся в фокусе. |
|
Hint |
подсказка - текст, который будет появляется рядом с курсором мыши при наведении указателя на кнопку (для того что бы текст отображался, свойство ShowHint должно быть <true>) |
|
ShowHint |
разрешает или запрещает отображение подсказки при наведении указателя на кнопку |
3. Компонент Image
Компонент Delphi Image предназначен для отображение на форме графических изображений по умолчанию выводит на поверхность формы изображения представленных в bmp формате. Для вывода изображений в jpg формате необходимо в дерективе uses подключить модуль JPEG. После размещения на форме компонента Image, он принимает вид выделенной прямоугольной области.
Свойства Image
Picture |
изображение отображающееся в поле компонента |
|
Width, Height |
размеры компонента. Если эти размеры меньше размера иллюстрации, а значение свойств Strech, AutoSize и Proportional равны False, то отображается часть изображения |
|
Proportional |
позволяет автоматически масштабировать картинки без искажения. Для выполнения масштабирования, значение свойства AutoSize должно быть равным False |
|
Strech |
позволяет автоматически масштабировать (сжимать или растягивать) изображение в соответствии с размером компонента Image. |
|
AutoSize |
позволяет автоматически изменять размер компонента в соответствии с размером изображения |
|
Center |
позволяет определять расположение изображения в поле компонента Image по горизонтали, если ширина картинки меньше ширины компонента. |
|
Canvas |
поверхность, позволяющая вывести графику |
|
Transparent |
указывает прозрачный цвет фона изображения |
4. Компонент Delphi - Label
Компонент Delphi Label предназначен для показа текста на форме нашей программы, которые не будет меняются в течение работы программы. Текст надписи компонента Label можно изменить, но делается это только программно. Текст, отображаемые в компоненте, определяются значением свойства Caption. Он прописывается в процессе проектирования или задается программно во время выполнения программы.
Свойства Label
color |
определяет фон компонента |
|
font |
определяет свойство текста |
|
visible |
yes(показать), false(скрыть) компонент |
|
WordWrap |
если «yes» переносит текст на новую строку |
|
Caption |
надпись отображаемого текста |
|
Alignment |
определяет способ выравнивания текста. может принимать 3 состояния taLeftJustify - по левому краю компонента, taCenter - выравнивание по центру и taRightJustify - выравнивание по правому краю |
|
Transparent |
при значение True, фон вывода текста прозрачный т.е. область компонента не закрашивается цветом установленным свойством Color |
|
Name |
имя компонента |
5. Компонент TRadioButton
Компонент TRadioButton (Переключатель) предназначен для выбора одного переключателя из ряда возможных. Переключатели всегда используются группами. Когда пользователь выбирает один из них, то выделение с текущего переключателя снимается. Таким образом, в группе выделен всегда только один переключатель.
При создании группы переключателей на форме надо расположить несколько компонентов TRadioButton. Программа поймет, что выделенным должен быть только один из них.
Свойства переключателя аналогичны свойствам флажка. Свойство Alignment определяет положение подписи справа или слева от переключателя, а свойство Checked - состояние объекта.
6. Компонент RadioGroup
Компонент Delphi RadioGroup представляет собой контейнер с группой компонентов RadioButton (переключателей). Такой компонент упрощает организацию работы переключателей, по сравнению другими групповыми контейнерами требующими добавлять переключатели вручную.
Компонент RadioGroup может содержать и другие компоненты, такие как редактор Edit или флажок CheckBox. Но автоматическое форматирование и распределение элементов на них не будет распространяться. В результате внешний вид приложения может пострадать тем, что элементы если и не будут перекрывать друг друга, то будут неравномерно располагаться относительно переключателей.
Основное свойство компонента RadioGroup это Items. В нем находятся строки, которые являются заголовками переключателей. Двойным щелчком на многоточии рядом с Items в Инспекторе Объектов мы попадаем в редактор списков строк, где каждая отдельная строка будет заголовком переключателя (радиокнопки). Отсчет строк идет с нуля. Элемент Items[2] будет третьим. Для работы с элементами используются методы: Add, Delete, Clear.
7. Компонент TrackBar
Компонент delphi TrackBar представляет собой визуальный элемент управления в виде ползунка, который можно перемещать клавишами или курсором мыши во время выполнения. Таким образом, пользователь может управлять какими-либо процессами: громкость звука, размером изображения и д.р. Ползунок может располагаться как вертикально, так и горизонтально, иметь шкалу с разных сторон и выделенный диапазон этой шкалы.
Основное свойство это Position. Которое можно задать во время проектирования или программно во время выполнения приложения. При перемещении ползунка можно прочитать значении Position, которое характеризует позицию, в которую перемещен ползунок. Для этой возможности служит событие OnChange. В обработчике которого можно прочитать значение Position и использовать это значение для управления каким-то компонентом.
Свойства TrackBar
Position |
целое значение, которое изменяется в пределах, задаваемые свойствами Min и Max. По умолчанию это 0 и 10 соответственно. Если задать больше значение Max, то увеличится кол-во возможных значений Position. |
|
Orientation |
определяет ориентацию ползунка горизонтальная или вертикальная |
|
TickMarks |
определяет размещение шкалы относительно компонента сверху или снизу если компонент расположен горизонтально и справа или слева если компонент расположен по вертикали либо с обоих сторон |
|
TickStyle |
указывает способ изображения шкалы. Может принимать значения: tsAuto - автоматическая прорисовка шкалы, tsManual - программное рисование шкалыс помощью метода SetTick, который помещает метку шкалы в позицию, соответствующую значению Value |
|
Frequency |
частота меток шкалы если свойство TickStyle равно tsAuto |
|
LineSize |
определяет насколько смещается ползунок при перемещении стрелками |
|
PageSize |
определяет насколько смещается ползунок при перемещении клавишами PageUp и PageDawn |
|
SelStart и SelEnd |
позволяет визуально выделить на шкале некоторый диапазон (средний компонент на рисунке 1) |
|
ThumbLength |
Толщина полосы бегунка в пикселях |
Для работы программы необходима операционная система Windows 7
Для нормального функционирования программного продукта требуется ПК со следующими минимальными характеристиками:
· центральный процессор с частотой не менее 1000 MГц;
· объём оперативной памяти не менее 512 MБ;
· жесткий диск с объемом свободной памяти не менее 70 МБ;
· дисковод CD/DVD;
· манипулятор «мышь»;
· клавиатура;
· монитор.
Программный продукт записан на диске - CD-R, который хранится в пластиковом конверте. Маркировка программного продукта содержит тему разработки, имя разработчика, дату внедрения программного продукта.
Диск не должен подвергаться воздействию прямых солнечных лучей; не должен храниться во влажной и жаркой атмосфере; необходимо предохранять поверхность диска от механических повреждений и электромагнитных воздействий.
Контроль программной документации будет производится руководителем дипломной работы.
Испытание и верификация программного продукта будут проводиться руководителем дипломной работы.
Приём программного продукта осуществляется руководителем дипломной работы и Государственной аттестационной комиссией Программный продукт является рабочим, если он удовлетворяет всем пунктам данного технического задания.
2.2 Технология разработки программного продукта
Создание программного продукта производилось по следующим технологическим этапам:
· Формирование и анализ требований к проекту - на этом этапе были сформулированы цели, задачи и требования к проекту. На основе этих требований была определена продолжительность его разработки.
· Составление требований заказчика - сбор требований к программному продукту, выдаваемых преподавателем.
В течение этого этапа проанализированы требования к программному продукту (форма представления информации, необходимые функции, желательные интерфейсы, существующие ограничения и т.д.).
· Планирование программного проекта - сбор информации по предметной области, необходимой для создания программного продукта.
В течение этапа планирования определены основные задачи, которые должны быть выполнены в процессе разработки, произведена оценка финансовых, технических и нетехнических ресурсов, объемов и сложности разрабатываемого программного продукта, методы и технологии выполнения работы.
· Проектирование программного продукта - разработка внутренней структуры программного продукта
· Выбор методологии разработки программного продукта и начало разработки (кодирование) - на этом этапе был создан первый работающий прототип программы средствами языка программирования Delphi для того, чтобы в дальнейшем, на следующих итерациях, постепенно детализировать и реализовать конкретные возможности, пропущенные по каким-то причинам на предыдущих итерациях;
В процессе выполнения этого этапа идет преобразование результатов этапа проектирования в коды на среде программирования Delphi.
· Тестирование программного продукта - проверка работоспособности отдельных модулей и всего проекта в целом.
Этап тестирования не имеет четкого определенного начала, но чем раньше он начинается, тем больше уверенности, что разрабатываемый ПП будет точно соответствовать требованиям заказчика. Общий набор тестов должен обеспечивать максимальный охват тестируемого ПП, т.е. тестированию должно быть подвергнуты как отдельные модули, так и весь продукт в целом, включая его системные свойства в соответствии с зафиксированными. Тестирование производится непосредственно руководителем ДР и заказчиком.
На этапе тестирования была произведена проверка внешнего вида формы и её работы по заполнению таблиц в базе данных
· Сопровождение программного продукта - это непосредственно сдача преподавателю проекта и внесение изменений, с учетом дополнительных пожеланий преподавателя.
На этапе сопровождения основное внимание уделяется внесению изменений в программный продукт. Эти изменения могут быть связаны с устранением ошибок, дополнительными пожеланиями заказчика, появившимися в результате работы с программным продуктом.
2.3 Текст программы с комментариями
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan, Menus, ComCtrls;
type
TArray = Array [0..25] of Integer;
TAColor=Array [0..25] of Byte;
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Label1: TLabel;
Button2: TButton;
XPManifest1: TXPManifest;
Button3: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
TrackBar1: TTrackBar;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
Label6: TLabel;
Label7: TLabel;
procedure Button1Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Pause (const Dela: Integer);
procedure Ris();
procedure Clearing();
procedure Zero();
procedure Sort11 (); // пузырьковая по убыванию
procedure Sort12 (); // пузырьковая по возрастанию
procedure N1Click (Sender: TObject);
procedure TrackBar1Change (Sender: TObject);
procedure Sort21 (var A: TArray; min, max: Integer); // процедура быстрой сортировки по убыванию
procedure Sort22 (var A: TArray; min, max: Integer); // процедура быстрой сортировки по возрастанию
procedure Sort31 (var a: TArray); // Шелла по убыванию
procedure Sort32 (var a: TArray); // Шелла по возрастанию
procedure Sort41 (Var ar: TArray; n: Integer); // выбор по убыванию
procedure Sort42 (Var ar: TArray; n: Integer); // выбор по возрастанию
private
{Private declarations}
public
A, my:TArray;
rr, gg, bb:TAColor;
{Public declarations}
end;
const n=25;
var
Form1: TForm1;
t1, t2:TDateTime;
sv, sh, x1, x2, y1, y2, i, x, h:integer;
BitM:TImage;
Bm, Sbuf: TBitMap;
buf: Byte;
implementation
{$R *.dfm}
procedure TForm1. Sort21 (var A: TArray; min, max: Integer); // процедура быстрой сортировки по возрастанию
var i, j, supp, tmp: Integer;
begin
t1:=Now;
supp:=A [max - ((max-min) div 2)];
i:=min; j:=max;
while i<j do
begin
while A[i]<supp do i:=i+1;
while A[j]>supp do j:=j-1;
if i<=j then
begin
tmp:=A[i]; A[i]:=A[j]; A[j]:=tmp;
buf:=rr[i];
rr[i]:=rr[j];
rr[j]:=buf;
buf:=gg[i];
gg[i]:=gg[j];
gg[j]:=buf;
buf:=bb[i];
bb[i]:=bb[j];
bb[j]:=buf;
i:=i+1; j:=j-1;
Clearing; Ris;
end;
end;
if min<j then Sort21 (A, min, j);
if i<max then Sort21 (A, i, max);
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
end;
procedure TForm1. Sort22 (var A: TArray; min, max: Integer); // процедура быстрой сортировки по возрастанию
var i, j, supp, tmp: Integer;
begin
t1:=Now;
supp:=A [max - ((max-min) div 2)];
i:=min; j:=max;
while i<j do
begin
while A[i]>supp do i:=i+1;
while A[j]<supp do j:=j-1;
if i<=j then
begin
tmp:=A[i]; A[i]:=A[j]; A[j]:=tmp;
buf:=rr[i];
rr[i]:=rr[j];
rr[j]:=buf;
buf:=gg[i];
gg[i]:=gg[j];
gg[j]:=buf;
buf:=bb[i];
bb[i]:=bb[j];
bb[j]:=buf;
i:=i+1; j:=j-1;
Clearing; Ris;
end;
end;
if min<i then Sort22 (A, min, j);
if i<max then Sort22 (A, i, max);
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
end;
Procedure TForm1. Sort31 (var a: TArray); // процедура Шелла убыванием
Var d, i, t: integer;
k: boolean; {пpизнак пеpестановки}
begin
t1:=Now;
d:=N div 2; {начальное значение интеpвала}
while d>0 do begin {цикл с yменьшением интеpвала до 1}
{пyзыpьковая соpтиpовка с интеpвалом d}
k:=true;
while k do begin {цикл, пока есть пеpестановки}
k:=false; i:=1;
for i:=1 to N-d do begin
{сpавнение эл-тов на интеpвале d}
if a[i]>a [i+d] then begin
t:=a[i]; a[i]:=a [i+d]; a [i+d]:=t; {пеpестановка}
buf:=rr[i];
rr[i]:=rr [i+d];
rr [i+d]:=buf;
buf:=gg[i];
gg[i]:=gg [i+d];
gg [i+d]:=buf;
buf:=bb[i];
bb[i]:=bb [i+d];
bb [i+d]:=buf;
k:=true; {пpизнак пеpестановки}
Clearing; Ris;
end; {if…}
end; {for…}
end; {while k}
d:=d div 2; {yменьшение интеpвала}
end; {while d>0}
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
end;
Procedure TForm1. Sort32 (var a: TArray); // процедура Шелла возрастанием
Var d, i, t: integer;
k: boolean; {пpизнак пеpестановки}
begin
t1:=Now;
d:=N div 2; {начальное значение интеpвала}
while d>0 do begin {цикл с yменьшением интеpвала до 1}
{пyзыpьковая соpтиpовка с интеpвалом d}
k:=true;
while k do begin {цикл, пока есть пеpестановки}
k:=false; i:=1;
for i:=1 to N-d do begin
{сpавнение эл-тов на интеpвале d}
if a[i]<a [i+d] then begin
t:=a[i]; a[i]:=a [i+d]; a [i+d]:=t; {пеpестановка}
k:=true; {пpизнак пеpестановки}
buf:=rr[i];
rr[i]:=rr [i+d];
rr [i+d]:=buf;
buf:=gg[i];
gg[i]:=gg [i+d];
gg [i+d]:=buf;
buf:=bb[i];
bb[i]:=bb [i+d];
bb [i+d]:=buf;
Clearing; Ris;
end; {if…}
end; {for…}
end; {while k}
d:=d div 2; {yменьшение интеpвала}
end; {while d>0}
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
end;
Procedure TForm1. Sort41 (Var ar: TArray; n: Integer); // процедура вставки убыванием
Var i, j, T: Integer;
buf1, buf2, buf3: Byte;
Begin
t1:=Now;
For i:= 1 To n Do
Begin
T:= ar[i];
j:= Pred(i);
buf1:=rr[i];
buf2:=gg[i];
buf3:=bb[i];
While (j > 0) and (T < ar[j]) Do
Begin {!!!}
ar [Succ(j)]:= ar[j];
rr [Succ(j)]:= rr[j];
gg [Succ(j)]:= gg[j];
bb [Succ(j)]:= bb[j];
Dec(j);
End;
ar [Succ(j)]:= T;
rr [Succ(j)]:= buf1;
gg [Succ(j)]:= buf2;
bb [Succ(j)]:= buf3;
Clearing; Ris;
End;
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
End;
Procedure TForm1. Sort42 (Var ar: TArray; n: Integer); // процедура вставки возрастанием
Var i, j, T: Integer;
buf1, buf2, buf3: Byte;
Begin
t1:=Now;
For i:= 1 To n Do
Begin
T:= ar[i];
j:= Pred(i);
buf1:=rr[i];
buf2:=gg[i];
buf3:=bb[i];
While (j > 0) and (T > ar[j]) Do
Begin {!!!}
ar [Succ(j)]:= ar[j];
rr [Succ(j)]:= rr[j];
gg [Succ(j)]:= gg[j];
bb [Succ(j)]:= bb[j];
Dec(j);
End;
ar [Succ(j)]:= T;
rr [Succ(j)]:= buf1;
gg [Succ(j)]:= buf2;
bb [Succ(j)]:= buf3;
Clearing; Ris;
End;
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
End;
procedure TForm1. Pause (const Dela: Integer); // процедура задержки вывода
var
StT: Cardinal;
begin
StT:= GetTickCount;
repeat
Application. ProcessMessages;
until (GetTickCount - StT) >= Dela;
end;
procedure TForm1. Ris(); // процедура графического вывода элементов массива
begin
x1:=0;
h:=20;
With Image1. Canvas do
Begin
for i:=1 to n do
begin
x1:=x1+h;
x2:=x1+h;
y1:=360;
y2:=my[i];
Brush. Color:= RGB (rr[i], gg[i], bb[i]);
Rectangle (x1, y1, x2, y2);
Label1. Caption:=IntToStr(i);
Brush. Color:= clWhite;
TextOut (x1, y2-15, IntToStr (y1-y2));
Image1. Visible:=false;
Bm:=Image1. Picture. Bitmap;
end;
end;
Sbuf:=TBitMap. Create;
Sbuf. Width:=Image1. Width;
Sbuf. Height:=Image1. Height;
Pause (TrackBar1. Position);
Form1. Canvas. Draw (sv, sh, Bm);
end;
procedure TForm1. Clearing(); // процедура очистки формы без обнуления массива
begin
i:=0;
Image1. Canvas. Brush. Color:= clWhite;
Image1. Canvas. FillRect (Rect(0,0, Width, Height));
Image1. Visible:=false;
Label7. Caption:='';
end;
procedure TForm1.N1Click (Sender: TObject); // информация о разработчиках
begin
ShowMessage ('Программа «Визуальная демонстрация'+#13#10+'методов сортировки массива» '
+#13#10+'Разработчик: Родионова П.С. гр П-IV-2'+#13#10+
'Руководитель-консультант: Александров В.Н.'+#13#10+'ТОГБОУ СПО «КИТ» 2014 г.'
+#13#10+'www.kit68.ru');
end;
procedure TForm1. Zero(); // процедура очистки формы и обнуления массива
begin
i:=0;
for x:=1 to n do
my[x]:=0;
Image1. Canvas. Brush. Color:= clWhite;
Image1. Canvas. FillRect (Rect(0,0, Width, Height));
Bm:=Image1. Picture. Bitmap;
Form1. Canvas. Draw (0, sh, Bm);
Label7. Caption:='';
end;
procedure TForm1. Sort11 (); // пузырьковая по убыванию
var r, t, b:integer;
begin
t1:=Now;
for t:=1 to n do
for r:=1 to n-t do
begin
if my[r]>my [r+1] then
begin
b:=my[r];
my[r]:=my [r+1];
my [r+1]:=b;
buf:=rr[r];
rr[r]:=rr [r+1];
rr [r+1]:=buf;
buf:=gg[r];
gg[r]:=gg [r+1];
gg [r+1]:=buf;
my [r+1]:=b;
buf:=bb[r];
bb[r]:=bb [r+1];
bb [r+1]:=buf;
Clearing; Ris;
end;
end;
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
end;
procedure TForm1. Sort12 (); // пузырьковая по возрастанию
var r, t, b:integer;
begin
t1:=Now;
for t:=1 to n do
for r:=1 to n-t do
begin
if my[r]<my [r+1] then
begin
b:=my[r];
my[r]:=my [r+1];
my [r+1]:=b;
buf:=rr[r];
rr[r]:=rr [r+1];
rr [r+1]:=buf;
buf:=gg[r];
gg[r]:=gg [r+1];
gg [r+1]:=buf;
my [r+1]:=b;
buf:=bb[r];
bb[r]:=bb [r+1];
bb [r+1]:=buf;
Clearing; Ris;
end;
end;
t2:=Now;
Label7. Caption:=FloatToStrF((t2-t1)*1000, ffFixed, 1,10);
end;
procedure TForm1. TrackBar1Change (Sender: TObject); // скорость сортировки
begin
Label5. Caption:=IntToStr (TrackBar1. Position);
end;
procedure TForm1. Button1Click (Sender: TObject); // заполнение массива
begin
Zero; Clearing;
randomize;
for x:=1 to n do
begin
my[x]:=360-random(300);
rr[x]:=random(250);
gg[x]:=random(250);
bb[x]:=random(250);
end; Ris;
end;
procedure TForm1. Button3Click (Sender: TObject); // очистка массива
begin
x1:=0; Zero;
Label1. Caption:=IntToStr(i);
for x:=1 to n do
my[x]:=0;
end;
procedure TForm1. Button2Click (Sender: TObject); // выбор способа и направления сортировки
begin
if (RadioGroup1. ItemIndex=0) and (RadioGroup2. ItemIndex=0) then Sort11;
if (RadioGroup1. ItemIndex=0) and (RadioGroup2. ItemIndex=1) then Sort12;
if (RadioGroup1. ItemIndex=1) and (RadioGroup2. ItemIndex=0) then Sort21 (my, 1, n);
if (RadioGroup1. ItemIndex=1) and (RadioGroup2. ItemIndex=1) then Sort22 (my, 1, n);
if (RadioGroup1. ItemIndex=2) and (RadioGroup2. ItemIndex=0) then Sort31 (my);
if (RadioGroup1. ItemIndex=2) and (RadioGroup2. ItemIndex=1) then Sort32 (my);
if (RadioGroup1. ItemIndex=3) and (RadioGroup2. ItemIndex=0) then Sort41 (my, n);
if (RadioGroup1. ItemIndex=3) and (RadioGroup2. ItemIndex=1) then Sort42 (my, n);
end;
end.
2.4 Описание программы
Общие сведения
Название программного продукта - «Создание программы визуализации методов сортировки массива».
Для нормальной работы программного продукта необходим компьютер типа IBM PC или совместимый с ним со следующим набором аппаратных средств:
Для нормального функционирования программного продукта требуется ПК со следующими минимальными характеристиками:
· центральный процессор с рабочей частотой не ниже 1000 MГц;
· объём оперативной памяти не менее 512 MБ;
· жесткий диск со свободным объемом не менее 70 МБ;
· дисковод CD/DVD;
· манипулятор «мышь»;
· клавиатура;
· монитор.
Программа написана на среде программирования Delphi
Функциональное назначение
«Сортировка массива» предназначена демонстрировать различные методы сортировки и выделять наиболее эффективные из них.
К функциональным особенностям разработанного в дипломе программного продукта можно отнести:
· Наличие клавиш для заполнения, сортировки, удаления массива
· Наличие поля для отображения количества массива;
· Наличие поля скорости заполнения массива
· Наличие поля вывода гистограммы
Описание логической структуры
Используемые технические средства
Для нормального функционирования программного продукта требуется ПК со следующими минимальными характеристиками:
· центральный процессор с рабочей частотой не ниже1000 MГц;
· объём оперативной памяти не менее 512 MБ;
· жесткий диск с объемом 70 МБ;
· дисковод CD/DVD;
· манипулятор «мышь»;
· клавиатура;
· монитор.
Так как.exe-файл программы «Сортировка массива» подвержен заражению, то для защиты компьютера от вирусов рекомендуется установить антивирусную программу.
Использование приведенных выше технических средств позволит обеспечить надежную работу всей системы в целом.
Установка и загрузка программы
Установка и загрузка программы осуществляется со специального компакт-диска. Установка заключается в копировании файлов программы на жесткий диск компьютера пользователя.
Для запуска программы необходимо воспользоваться файлом Sortirovka.exe. При этом откроется окно программы (рисунок 1). После этого можно начинать работу с программой.
Рисунок 1 Окно программы
Входные данные
К входной информации относятся значения элементов целочисленного массива, сгенерированного случайным образом.
Выходные данные
В качестве выходных данных выступают гистограммы, представляющие текущее содержание обрабатываемого массива.
2.5 Сопроводительная документация
Руководство пользователя
Программный продукт находится на диске в папке «Сортировка массива».
Установка пособия происходит путем копирования соответствующей папки на жесткий диск компьютера.
Файлом, который загружает данное пособие, является Sortirovka.exe (рисунок 2).
Рисунок 2. Расположение загрузочного файла
При открытии файла Sortirovka.exe отображается панель ввода данных (Рисунок.3), которая содержит:
· Клавишу для заполнения массива(1)
· Способы сортировки
v Пузырьковая(2)
v Быстрая(3)
v Шелла(4)
v Слиянием(5)
· Скорость демонстрации сортировки(6)
· Направление сортировки
v По убыванию(7)
v По возрастанию(8)
· Кнопку сортировка массива(9)
· Наличие кнопки очищения массива(10)
· Количество элементов массива (11)
· Время сортировки(12)
Рисунок.3 Панель ввода логического выражения
Результатом работы программного продукта является гистограмма (Рисунок.4)
Рисунок.4 Результаты работы программы
Завершение работы с программным продуктом происходит путем закрытия окна приложения.
Руководство администратора
Для работы программы необходим компьютер типа IBM PC или совместимый с ним со следующим набором аппаратных средств:
· центральный процессор с частотой не ниже 1000 MГц;
· объём оперативной памяти не менее 512 Mб;
· жесткий диск с объемом 70 МБ и более;
· привод для чтения лазерных дисков;
· стандартный манипулятор «мышь»;
· стандартная клавиатура;
· монитор.
· операционная система Windows 7
Эти требования к аппаратным средствам обеспечивают корректную работу приложения без сбоев и зависания.
Требуемое программное обеспечение:
· Операционная система Windows 7;
Использование приведенных выше технических и программных средств позволит обеспечить надежную работу всей системы в целом.
Установка программного обеспечения происходит с диска путем копирования «Сортировка массива»
Затем из каталога «Сортировка массива» необходимо запустить файл Sortirovka.exe и произойдет загрузка окна программы
Пользователь не имеет доступа к исходному коду программы.
2.6 Внедрение
Внедрение - стадия, по завершении которой программная документация размножена в нужном количестве, программа установлена и сопровождается, пользователи обучены.
После того как заказчик удовлетворен качеством продукта, начинается его внедрение - подготовка к окончательному запуску в эксплуатацию. Если приложение многопользовательское, то необходимо сформировать и настроить локальную сеть.
После того как программный продукт установлен нужно обучить пользователей работе с ним.
Сотрудничество с заказчиком по обслуживанию системы называется сопровождением. Оно бесплатно на определенный гарантийный срок (например, год).
Сопровождение программы - поддержка работоспособности программы, переход на ее новые версии, внесение изменений, исправление ошибок и т.д.
Процесс сопровождения охватывает действия и задачи сопровождающей организации (службы сопровождения). Данный процесс активизируется при изменениях (модификациях) программного продукта и соответствующей документации, вызванных возникшими проблемами в модернизации, либо адаптации программного продукта.
В нашем случае этап внедрения сводится к предоставлению в методический кабинет носителя с программой и руководством пользователя. При помощи данной программы преподаватели визуально смогут продемонстрировать четыре метода сортировки и выбрать наиболее эффективный из них, при помощи такого показателя как время сортировки каждого из представленных методов. Так же данная программа поможет студентам для самостоятельного изучения данной темы.
3. Экономическая часть
3.1 Расчет времени на создание программного продукта
Использование единых правил и технологий приводит к существенному повышению эффективности работы и качества создаваемого программного продукта. Процесс создания программного продукта включает в себя методологию, методы, стандарты и инструментальные средства, которые необходимо использовать при выполнении всех работ по созданию высококачественного программного продукта (ПП).
Общее время на создание программы складывается из различных компонентов. Структура общего времени на создание программного продукта представлена в таблице 1.
Таблица 1 - Структура общего времени на создание ПП
№ этапа |
Обозначение времени данного этапа |
Содержание этапа |
|
1 |
Тпо |
Подготовка описания задачи. |
|
2 |
То |
Описание задачи. |
|
3 |
Та |
Разработка алгоритма. |
|
4 |
Тбс |
Разработка блок-схемы алгоритма. |
|
5 |
Тн |
Написание программы на языке… |
|
6 |
Тп |
Набивка программы. |
|
7 |
Тот |
Отладка и тестирование программы. |
|
8 |
Тд |
Оформление документации, инструкции пользователю, пояснительной записки. |
Время этапов рассчитывается в человеко-часах, причем Тпо и Тд принимается по фактически отработанному времени, а время остальных этапов определяется расчетно с учетом условного числа команд (Q).
Условное число команд определяется по формуле:
Q=q * c, (1)
где q - коэффициент, учитывающий условное число команд в зависимости от типа задачи.
Выбрать значение коэффициента q можно из таблицы 2
Принимаю коэффициент q=4550
Таблица 2 - Условное число команд в зависимости от типа задачи
Тип задачи |
Пределы изменений коэффициента |
|
Задачи учета |
от 1400 до 1500 |
|
Задачи оперативного управления |
от 1500 до 1700 |
|
Задачи планирования |
от 3000 до 3500 |
|
Многовариантные задачи |
от 4500 до 5000 |
|
Комплексные задачи |
от 5000 до 5500 |
с - коэффициент, учитывающий новизну и сложность программы.
Программные продукты по степени новизны могут быть отнесены к одной из четырех групп:
- группа А - разработка принципиально новых задач;
- группа Б - разработка оригинальных программ;
- группа В-разработка программ с использованием типовых решений.
- группа Г - разовая типовая задача.
Данный ПП по степени новизны может быть отнесен к группе Б - разработка оригинальных программ.
По степени сложности программные продукты могут быть отнесены к одной из трех групп:
- 1 - алгоритмы оптимизации и моделирования систем;
- 2 - задачи учета, отчетности и статистики;
- 3 - стандартные алгоритмы.
По степени сложности ПП отнесен к стандартным алгоритмам.
Коэффициент с определяется по таблице 3 на пересечении групп сложности и степени новизны.
Принимаю коэффициент с =1,10
Таблица 3 - Степень сложности ПП
ЯЗЫК ПРОГРАММИР. |
ГРУППА СЛОЖНОСТИ |
СТЕПЕНЬ НОВИЗНЫ |
||||
А |
Б |
В |
Г |
|||
высокого уровня |
1 |
1,38 |
1,26 |
1,15 |
0,69 |
|
2 |
1,30 |
1,19 |
1,08 |
0,65 |
||
3 |
1,20 |
1,10 |
1,00 |
0,60 |
||
низкого уровня |
1 |
1,58 |
1,45 |
1,32 |
0,79 |
|
2 |
1,49 |
1,37 |
1,24 |
0,74 |
||
3 |
1,38 |
1,26 |
1,15 |
0,69 |
Используем формулу 1 для определения условного числа команд Q.
Q =4550*1,10=5005 ч.
Определяю время, затраченное на каждый этап создания программного продукта:
1) Тпо (время на подготовку описания задачи), берется по факту и составляет:
Тпо = 4 чел.·час.
2) То (время на описание задачи) определяется по формуле:
То = Q * В / (50 *К), (2)
где: В-коэффициент учета изменений задачи. Коэффициент В в зависимости от сложности задачи и числа изменений выбирается в интервале от 1,2 до 1,5.
Для данной задачи В = 1,2
К - коэффициент, учитывающий квалификацию программиста.
Выбрать значение коэффициента К можно из таблицы 4
Таблица 4 - Коэффициент квалификации программиста
Стаж программиста |
Значение коэффициента К |
|
до 2-х лет |
0,8 |
|
от 2 до 3 лет |
1,0 |
|
от 3 до 5 лет |
1,1 - 1,2 |
|
от 5 до 10 лет |
1,2 - 1,3 |
|
свыше 10 лет |
1,3 - 1,5 |
В данном случае коэффициент К = 1,1
Применяя формулу 2, подсчитываем время на описание задачи.
То =5005*1,2/(50*1,1)=109,2 чел.·час
3) Та (время на разработку алгоритма) рассчитываем по формуле:
Та = Q / (50 * К) (3)
Применяя формулу 3, подсчитываем время на разработку алгоритма.
Та=5005/(50*1,1)=91,0 чел.·час
4) Тбс (время на разработку блок - схемы) определяется аналогично Та
по формуле 3 и составляет
Тбс = 91,0 чел.·час
5) Тн (время написания программы на языке программирования)
определяется по формуле:
Тн = Q* 1,5/(50* К) (4)
Рассчитываем время написания программы на языке программирования.
Тн = 5005*1,5/(50*1,1)=136,5 чел.·час
6) Тп (время набивки программы) определяется по формуле:
Тп = Q / 50 (5)
Определяем время набивки программы.
Тп = 4550/50=100,1 чел.·час
7) Тот (время отладки и тестирования программы) определяется
по формуле:
(6)
Подставляем значения в формулу и получаем:
Тот =5005*4.2/(50*1.1) =382,2 чел.·час
8) Тд (время оформления документации) определяется по фактическим затратам времени Тд = 3 часа.
Таким образом, общее время на создание программного продукта (Т) равно:
Т = Тпо + То + Та + Тбс + Тн + Тп + Тот + Тд чел.·час (7)
T = 4+109,2+91,0+91,0+136,5+100,1+382,0+3=917,0 чел. час
3.2 Расчет заработной платы исполнителя работ
Заработная плата - это выраженная в денежной форме часть национального дохода, которая распределяется по количеству и качеству труда, затраченного каждым работником, и поступает в его личное потребление.
Оплата труда работников - это цена трудовых ресурсов, задействованных в производственном процессе.
В РФ в настоящее время применяются тарифная и бестарифная системы оплаты труда. Особенно широко распространенна тарифная система, которая включает следующие формы оплаты труда: повременную и сдельную оплату, а также их разновидности:
1) при сдельной форме оплаты труда различают виды:
· простая сдельная;
· сдельно-премиальная;
· косвенная сдельная;
· аккордная;
· сдельно-прогрессивная;
2) при повременной оплате труда:
· простая повременная;
· повременно-премиальная;
· окладная.
В дипломном проекте я применяю повременно-премиальную систему оплаты труда работников.
Повременная оплата труда, на первый взгляд исключает стимулирование более высокой производительности труда, т.к. время, проведенное на рабочем месте ничего не говорит о достигнутых результатах, однако это форма заработной платы тесно связана с результатами труда, поскольку в ее основу заложены формально определенные или фактически ожидаемые результаты работы за единицу времени. При повременной оплате труда величина заработка работника зависит от фактически отработанного им времени и его тарифной ставки.
При простой повременной оплате труда зарплата рассчитывается путем умножения часовой тарифной ставки рабочего определенного разряда на количество фактически отработанного времени за расчетный период в часах (днях).
При повременно-премиальной системе устанавливается размер премии в процентах к тарифной ставке за перевыполнение установленных показателей и условий премирования.
Выбор форм оплаты труда зависит от ряда факторов: характера оборудования, особенностей технологического процесса, требований к качеству, наличию и использования ресурсов. В связи с трудностями нормирования и количественного измерения труда для оплаты труда вспомогательных рабочих, рабочих служб технического контроля используется повременная зарплата.
Тарифная форма оплаты труда предусматривает использование данных тарифных сеток.
Тарифная сетка представляет собой перечень тарифно-квалификационных разрядов и тарифных коэффициентов, соответствующих данным разрядам. Тарифные коэффициенты, характеризуют соотношение тарифной ставки определенного разряда к тарифной ставке первого разряда.
Существуют единые тарифно-квалификационные справочники для специальностей применяемых во всех отраслях экономики и отраслевые тарифно-квалификационные справочники.
Основная заработная плата работника (ЗПосн.) определяется по формуле 8:
, (8)
где
З1 - месячная зарплата работника первого разряда, руб.;
Подобные документы
Разработка программы на языке Turbo Pascal, обеспечивающей работу пользователя в диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню вертикального типа. Блок-схема и листинг программы, описание руководства пользователя.
курсовая работа [1,5 M], добавлен 17.03.2014Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Модификация и сравнения двух текстовых файлов. Программа, написанная на языке программирования Cи и работоспособна на IBM совместимых компьютерах. Псевдографический и графический интерфейсы. Анализ программы методом сортировки одномерного массива.
курсовая работа [116,2 K], добавлен 21.02.2008Проектирование структуры программы, принцип ее работы, сферы практического использования и оценка возможностей. Выбор и обоснование среды программирования. Разработка пользовательского интерфейса и модулей приложения. Проведение тестирования программы.
курсовая работа [637,7 K], добавлен 14.01.2015Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
курсовая работа [1,5 M], добавлен 17.01.2011Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.
курсовая работа [896,7 K], добавлен 18.05.2014Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Выбор языка программирования и его обоснование. Определение системных требований. Схема алгоритма и программа на языке Qbasic. Разработка руководства пользователя. Способы конструирования программ. Особенности и принципы динамического программирования.
курсовая работа [398,8 K], добавлен 21.01.2014Разработка программы для нахождения минимального и максимального элемента массива, вычисления среднего арифметического строк и столбцов транспортирования матриц. Характеристика основных программных средств. Описание программы, руководство пользователя.
курсовая работа [2,4 M], добавлен 26.04.2015Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012