Формирование расчетной ведомости при поставках сырья

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.06.2013
Размер файла 249,2 K

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

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

Размещено на http://www.allbest.ru/

Формирование расчетной ведомости при поставках сырья

1. Анализ предметной области

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

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

В настоящее время поставляемое сырье сопровождается товарно-транспортными накладными доставки сырья, которые содержат в заголовке номер, дату и поставщика и имеют графы: наименование продукта (молоко или сливки), фактический вес - F в тоннах, жирность - G в процентах, сорт (1, 2 или 3; только для молока), зачетный вес - Z (Z=F*G/3.6 для молока и Z=F*G/35 для сливок). На основании таких накладных и данных о ценах каждого вида продукции бухгалтер формирует расчетную ведомость в разрезе поставщиков, производя расчеты вручную.

Примеры накладных:

Пример расчетной ведомости на основе двух этих накладных

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

2. Техническое задание

2.1 Основание для разработки

Программа разрабатывается на основании задания на курсовое проектирование по дисциплине «Информатика и программирование». Задание утверждено заведующим кафедрой ИВС Пензенского государственного университета Косниковым Ю.Н. и выдано доцентом кафедры ИВС Хохловым А.Е.

2.2 Назначение разработки

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

2.3 Требования к программе

2.3.1 Требования к функциональным характеристикам

Входным документом для данной программы является ежедневная товарно-транспортная накладная доставки сырья, содержащая в заголовке номер, дату и поставщика. Графы накладной: наименование продукта (молоко или сливки), фактический вес в тоннах (F), жирность в процентах (G), сорт (1, 2 или 3, только для молока), зачетный вес (для молока равен Z=F*G/3.6, для сливок - Z=F*G/35).

На основании таких накладных по запросу пользователя программа должна формировать расчетную ведомость в разрезе поставщиков с графами: Поставщик, Молоко, Сливки. Графа Молоко содержит подграфы - 1 сорт, 2 сорт, 3 сорт, Всего. Каждая из этих подграф содержит подграфы - Зачетный вес и Сумма. Графа Сливки содержит подграфы - Зачетный вес и Сума.

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

2.3.2 Требования к составу и параметрам технических средств

Программа предназначена для работы на IBM-совместимых персональных компьютерах, имеющих следующие минимальные характеристики: тактовая частота процессора - 1 ГГц; оперативная память - 128 Мбайт; на жестком диске при установке используется около 30 Мбайт; объем жесткого диска зависит от размера информационной базы, но должен быть не менее 100 Мбайт.

2.3.3 Требования к информационной и программной совместимости

Программа должна быть разработана в среде Delphi 7.0 работающей под управлением операционной системы Windows XP и выше.

2.4 Требования к программной документации

Разрабатываемая программа должна сопровождаться следующими программными документами:

- Описание программы;

- Программа и методика испытаний;

- Описание применения;

- Текст программы.

2.5 Порядок контроля и приёмки

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

3. Описание программы

3.1 Общие сведения

Программа №1 разработана в среде Turbo Pascal 7.0, её текст содержится в каталоге `I: \Курсовая Работа\.

3.2 Функциональное назначение

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

3.3 Описание логической структуры

Алгоритм решения в виде схемы представлен на рисунках 1, 2 и 3. На рисунке 1 представлен алгоритм части программы, которая отвечает за формирование файла с накладными, на рисунках 2 и 3 - части, формирующей на основе накладных расчетную ведомость.

Рисунок 1 (формирование файла с накладными): первым делом пользователю предоставляется выбор: можно либо открыть существующий файл (блок 4) с базой данных накладных, либо создать новый (блок 5). Затем, независимо от того, какое из двух действий выбрал пользователь, предоставляется еще один пользовательский выбор: можно добавить запись в файл с накладными (блок 7), удалить выбранную запись (блок 8), удалить все записи (блок 9).

Рисунки 2 и 3 (формирование расчетной ведомости на основе файла с накладными): сначала стоимостным переменным c1, c2, c3 и sl присваиваются значения 30, 20, 10 и 50 соответственно (блок 2). Затем происходит открытие файла с накладными (блок 3). Следом выполняется цикл со счетчиком для значений i от 1 до количества записей в файле минус единица (блок 4). В теле цикла элементу массива qes[i] присваивается значение записи, соответствующей i номеру (блок 5). По завершении цикла первому элементу массива pos присваивается поле postav записи qes[1], а переменной k единица (блок 7). Затем выполняется следующий цикл со счетчиком (Б) для значений i от 1 до количества записей в файле минус единица (блок 8). В теле цикла переменной un присваивается значение 0 (блок 9), после чего следует выполнение очередного цикла со счетчиком (В) для значений j от 1 до k (блок 10). В теле цикла проверяется условие qes[i].postav=pos[j] (блок 11). В случае, если оно выполняется, переменной un присваивается значение 1 (блок 12). По завершении цикла (В) проверяется, равна ли переменная un нулю (блок 14). Если оно выполняется, то элементу массива pos [k+1] присваивается значение qes[i], а переменной k:=k+1 (блок 15). После завершения цикла Б выполняется следующий цикл Г (блок 17) для значений m от 1 до k. Внутри цикла еще один цикл Д (блок 18), который выполняется для значений i от 1 до количества записей в файле минус единица. В теле цикла проверяется условие равенства qes[i].postav элементу массива pos[m] (блок 19). В случае, если оно выполняется, происходит обращение к записи nes[m] (блок 20), за чем в зависимости от значения сорта продукта qes[i].sort[1] (блок 21) выполняется подсчет зачетного веса и суммы:

'1': z1=z1+qes[i].zahet; s1=z1*c1; (блок 22)

'2': z2=z2+qes[i].zahet; s2=z2*c2; (блок 23)

'3': z3=z3+qes[i].zahet; s3=z3*c3; (блок 24)

'0': slz=slz+qes[i].zahet; sls=slz*sl; (блок 25)

По завершении цикла Д в цикле Г выполняются следующие действия:

Подсчитывается общий зачетный вес по всем сортам молока nes[m].vz=nes[m] z1+nes[m].z2+nes[m].z3; подсчитывается общая сумма по всем сортам молока nes[m].vs:=nes[m].s1+nes[m].s2+nes[m].s3 (блок 27);

По завершении цикла Д выполняется цикл Е (блок 29) для значений i от 1 до k. В теле цикла происходит вывод записи nes[i], а так же подсчет общих итогов, согласно данным формулам (блок 30):

itog1 [1]=itog1 [1]+nes[i].z1;

itog1 [2]=itog1 [2]+nes[i].s1;

itog1 [3]=itog1 [3]+nes[i].z2;

itog1 [4]=itog1 [4]+nes[i].s2;

itog1 [5]=itog1 [5]+nes[i].z3;

itog1 [6]=itog1 [6]+nes[i].s3;

itog1 [7]=itog1 [7]+nes[i].vz;

itog1 [8]=itog1 [8]+nes[i].vs;

itog1 [9]=itog1 [9]+nes[i].slz;

itog1 [10]=itog1 [10]+nes[i].sls;

По завершении цикла Е выполняется цикл Ж (блок 32) для значений i от 1 до 10. В теле цикла происходит вывод itog[i] (блок 33).

Рисунок 1 - Схема части программы, которая отвечает за формирование файла с накладными

Форма Form2 (Курсовая Работа, форма для формирования файла с накладными), Unit2.pas.

На форме расположены следующие объекты:

пять однострочных редакторов с вкладки Standart - Edit1 (для ввода номера накладной), Edit2 (даты), Edit3 (поставщика), Edit4 (фактического веса) и Edit5 (жирности);

пять объектов с вкладки Standart - метки Label1, Label2, Label3, Label4, Label5. В свойстве Caption меток Label помещены пояснения для пользователя программы:

Label1. Caption - `Номер накладной';

Label2. Caption - `Дата';

Label3. Caption - `Поставщик';

Label4. Caption - `Фактический вес';

Label5. Caption - `Жирность (%)';

два объекта с вкладки Standart - компоненты RadioGroup1 (в свойстве Caption имеет 'Выберите продукт', на выбор предоставляетcя Молоко и Сливки) и RadioGroup2 (в свойстве Caption имеет 'Выберите сорт молока', на выбор предоставляется 1, 2 и 3 сорт);

один компонент с вкладки Additional - таблица StringGrid, служащая для отображения накладных и выбора накладной для удаления;

кнопки Button1 (Добавить запись), Button 2 (Отобразить записи), Button3 (Удалить запись), Button4 (Открыть файл), Button5 (Новый файл), Button6 (Очистить файл) с вкладки Standart для создания обработчиков событий, служащих для цели, соответствующей описанию кнопки;

В разделе описания программы описаны следующие глобальные:

типы данных:

запись gormol с полями nomer (тип integer), data (string[100]), postav (string[100]), namnam (string[100]), fact (real), zir (real), sort (string[100]), zahet (real), которые служат для хранения информации из накладной;

массив qes1 [1..1000] с элементами типа gormol;

переменные пользовательского типа:

p типа gormol; в переменной p хранится одна накладная;

qes типа qes1; в массив qes заносятся все накладные;

переменные строкового типа string:

super - в ней хранится путь к файлу с накладными;

переменная для типизированного файла типа file of gormol:

F - файловая переменная;

Программа состоит пяти обработчиков событий.

Обработчик события клика на кнопку формы Button1 - procedure Tform2. Button1. Click (Добавить запись):

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с вызова процедуры AssignFile (F, super) для присваивания имени текстовому файлу перед его открытием. C помощью процедуры Reset открывается файл. С помощью процедуры seek (F, Filesize(F)) происходит переход в конец файла. Затем с помощью ключевого слова with происходит обращение к полям записи p. Полю namnam (название продукта) присваивается значение поля Items с индексом RadioGroup1. ItemIndex компонента RadioGroup1 namnam:=RadioGroup1. Items [RadioGroup1. ItemIndex]. Затем проверяется условие if namnam='Молоко' then. Если оно выполняется, то полю sort присваивается значение RadioGroup2. Items [RadioGroup2. ItemIndex]. С помощью ф-ии преобразования из строкового типа в вещественный StrToFloat полям fact и zir присваиваются значения Edit5. Text и Edit4. Text соответственно. Затем проверяется условие if sort<>'' then. Если оно выполняется, то полю zahet присваивается значение (Fact*Zir)/3.6, в противном случае - (Fact*Zir)/35. Далее полю nomer с помощью ф-ии преобразования из строкового типа в целочисленный StrToInt присваивается значение Edit1. Text, а полям data и postav значения Edit2. Text и Edit3. Text. Далее происходит запись полученной записи p в файл F с помощью процедуры Write, за чем следует закрытие файла с помощью процедуры CloseFile(F) и программный вызов кнопки Button2 Button2. Click.

Обработчик события клика на кнопку формы Button1 - procedure Tform2. Button2. Click (Отобразить записи):

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с вызова процедуры AssignFile (F, super) для присваивания имени текстовому файлу перед его открытием. C помощью процедуры Reset открывается файл. Переменной kol присваивается значение числа записей в файле kol:=FileSize(F) - 1. Затем выполняется цикл со счетчиком для значений i от 1 до kol for i:=1 to kol do begin. В теле цикла с помощью процедуры Seek происходит переход к i записи в файле Seek (F, i), c помощью процедуры Read происходит чтение записи Read (F, p), элементу массива qes[i] присваивается запись p. По завершении цикла файл закрывается. Далее свойству RowCount таблицы StringGrid2 присваивается количество строк, равное kol StringGrid2. RowCount:=kol. Затем проверяется условие равенства переменной kol нулю. Если оно выполняется, то в цикле со счетчиком для i от 0 до 7 ячейкам нулевой строки таблицы присваивается значение `' for i:=0 to 7 do StringGrid2. Cells [i, 0]:=''. Далее выполняется еще один цикл со счетчиком для i от 1 до kol, где происходит заполнение ячеек таблицы записями:

StringGrid2. Cells [0, i-1]:=IntToStr (qes[i].nomer);

StringGrid2. Cells [1, i-1]:=qes[i].data;

StringGrid2. Cells [2, i-1]:=qes[i].postav;

StringGrid2. Cells [3, i-1]:=qes[i].namnam;

StringGrid2. Cells [4, i-1]:=FloatToStr (RoundTo(qes[i].fact, - 2));

StringGrid2. Cells [5, i-1]:=FloatToStr (RoundTo(qes[i].zir, - 2));

StringGrid2. Cells [6, i-1]:=qes[i].sort;

StringGrid2. Cells [7, i-1]:=FloatToStr (RoundTo(qes[i].zahet, - 2));

При этом в случае с 4, 5 и 7 столбцом используется функция RoundTo для округления результата до двух знаков после запятой и функция FloatToStr для преобразования из вещественного типа в строковый. В случае с нулевым столбцом используется функция для преобразования из целочисленного типа в строковый IntToStr.

Обработчик события клика на кнопку формы Button1 - procedure Tform3. Button3. Click (Удалить запись):

В разделе описания программы описана переменная целочисленного типа integer q, служащая для хранения номера выбранной строки в таблице StringGrid1.

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с присваивания переменной q номера выбранной пользователем строки в таблице StringGrid1 при помощи обращения к свойству Selection StringGrid2. Selection. Top+1. Затем происходит вызов процедуры AssignFile (F, super) для присваивания имени текстовому файлу перед его открытием. C помощью процедуры Reset открывается файл. С помощью процедуры seek происходит переход к последней записи в файле seek (f, filesize(f) - 1). Данная запись считывается в переменную p с помощью процедуры read. Затем при помощи процедуры seek происходит переход к q записи в файле, после чего данная запись заменяется записью из переменной p write (f, p). Далее с помощью процедуры seek происходит переход к последней записи в файле, которая с помощью процедуры Truncate успешно удаляется; происходит закрытие файла Closefile(f) и следующий за ним программный вызов кнопки Button2 Button2. Click.

Обработчик события клика на кнопку формы Button4 - procedure Tform2. Button4. Click (Открыть файл):

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с открытия файла пользователем. Для этого используется функция Execute, которая приводит к открытию диалогового окна в соответствии со свойствами компонента OpenDialog1. Функция Execute возвращает true, если пользователь выбрал файл каким-либо методом. Если пользователь нажал в диалоговом окне Отмена (Cancel), то метод Execute возвращает false. В случае, если пользователем был выбран файл, переменной super присваивается значение пути к файлу OpenDialog1. FileName и происходит программный вызов кнопки Button2 Button2. Click.

Обработчик события клика на кнопку формы Button5 - procedure Tform2. Button5. Click (Создать файл):

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с сохранения файла пользователем. Для этого используется функция Execute, которая приводит к открытию диалогового окна в соответствии со свойствами компонента SaveDialog1. Функция Execute возвращает true, если пользователь выбрал файл каким-либо методом. Если пользователь нажал в диалоговом окне Отмена (Cancel), то метод Execute возвращает false. В случае, если пользователем был выбран файл, переменной super присваивается значение пути к файлу SaveDialog1. FileName, происходит программный вызов кнопок Button6 Button6. Click и Button2 Button2. Click.

Обработчик события клика на кнопку формы Button6 - procedure Tform2. Button6. Click (Очистить файл):

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с вызова процедуры AssignFile (F, super) для присваивания имени текстовому файлу перед его открытием. Затем с помощью процедуры Rewrite происходит стирка содержимого файла. Далее поля записи p заполняются следующим образом:

nomer:=0;

data:='';

postav:='';

namnam:='';

fact:=0;

zir:=0;

sort:='';

zahet:=0

С помощью процедуры Write запись p вносится в файл за чем следует закрытие файла и программный вызов кнопки Button2 Button2. Click.

Форма Form1 (Курсовая Работа, форма для формирования расчетной ведомости), Unit1.pas.

На форме расположены следующие объекты:

один компонент с вкладки Additional - таблица StringGrid, в которой отображается расчетная ведомость;

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

В разделе описания программы описаны следующие глобальные:

типы данных:

запись gormol с полями nomer (тип integer), data (string[100]), postav (string[100]), namnam (string[100]), fact (real), zir (real), sort (string[100]), zahet (real), которые служат для хранения информации из накладной;

запись gor с полями postav (string[100]), z1, s1, z2, s2, z3, s3:, vz, vs, slz, sls: real, служащая для хранения строки расчетной ведомости;

массив qes1 [1..1000] с элементами типа gormol;

массив nes1 [1..100] с элементами типа gor;

переменные пользовательского типа:

p типа gormol; в переменной p хранится одна накладная;

qes типа qes1; в массиве хранятся накладные;

nes типа qes1; в массиве хранится расчетная ведомость за исключением общих итогов;

переменные строкового типа string:

super - в ней хранится путь к файлу с накладными;

переменная для типизированного файла типа file of gormol:

F - файловая переменная;

Программа состоит из двух обработчиков событий.

Обработчик события клика на кнопку формы Button1 - procedure Tform1. Button1. Click (Открыть файл с базой данных накладных):

В разделе описания описаны:

переменные целочисленного типа integer:

i, j, m - счетчики;

un - служит для проверки, повторяется ли поставщик или нет;

kol - количество записей в файле;

k - количество поставщиков;

переменные вещественного типа real:

c1, c2, c3, sl - хранят в себе цену на продукты;

одномерный массив pos типа array, индексы которого принимают значения в диапазоне [1..1000], а элементы принадлежат к строковому типу string;

одномерный массив itog1 типа array, индексы которого принимают значения в диапазоне [1..10], а элементы принадлежат к вещественному типу real;

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с присваивания переменным c1, c2, c3 и sl значений 30, 20, 10 и 50 соответственно. Следом выполняется цикл со счетчиком для значений i от 1 до 100 for i:=1 to 100 do. В теле цикла происходит обращение к записи nes[i]: всем ее полям присваиваются нулевые значения z1:=0; s1:=0; z2:=0; s2:=0; z3:=0; s3:=0; vs:=0; vz:=0; sls:=0; slz:=0. Затем выполняется еще один цикл со счетчиком для значений i от 1 до 10, в теле цикла обнуляются элементы массива itog[i] itog1 [i]:=0. Далее происходит открытие файла пользователем. Для этого используется функция Execute, которая приводит к открытию диалогового окна в соответствии со свойствами компонента OpenDialog1. Функция Execute возвращает true, если пользователь выбрал файл каким-либо методом. Если пользователь нажал в диалоговом окне Отмена (Cancel), то метод Execute возвращает false. В случае, если пользователем был выбран файл, переменной super присваивается значение пути к файлу OpenDialog1. FileName. Затем происходит вызов процедуры AssignFile (F, super) для присваивания имени текстовому файлу перед его открытием. C помощью процедуры Reset открывается файл. Переменной kol присваивается значение количества записей в файле filesize(f) - 1. Затем выполняется цикл со счетчиком для значений i от 1 до kol for i:=1 to kol do begin, в теле цикла: происходит переход к i записи в файле с помощью процедуры Seek (F, i), запись считывается в переменную p с помощью процедуры Read (F, p), элементу массива qes[i] присваивается значение p. После завершения цикла файл закрывается с помощью процедуры CloseFile(F).

Далее выполняется цикл со счетчиком для значений i от 1 до kol for i:=1 to kol do, в теле цикла проверяется условие if qes[i].sort='' then. В случае, если оно выполняется, полю sort записи qes[i] присваивается значение 0 qes[i].sort:='0'. После завершения цикла первому элементу массива pos присваивается значение qes[1].postav, а переменной k единица. Затем выполняется цикл со счетчиком для значений i от 1 до kol. В теле цикла переменной un присваивается значение 0 и выполняется еще один цикл со счетчиком для значений j от 1 до k. В теле вложенного цикла проверяется условие if qes[i].postav=pos[j] then, в случае выполнения которого переменной un присваивается единица. После завершения вложенного цикла проверяется условие if un=0 then begin. Если оно выполняется, то: элементу массива pos [k+1] присваивается значение поля записи qes[i].postav; а переменная k принимает значение k+1. После завершения цикла происходит выполнение цикла со счетчиком для значений m от 1 до k for m:=1 to k do begin. В теле цикла находится вложенный цикл for i:=1 to kol do begin. В теле данного цикла проверяется, равен ли поставщик в записи поставщику из массива pos if qes[i].postav=pos[m] then. В случае выполнения условия происходит обращение к записи nes[i] с помощью ключевого слова with и с помощью оператора выбора case qes[i].sort[1] of происходит выбор последующих операций в зависимости от сорта, указанного в записи.

'1': begin z1:=z1+qes[i].zahet; s1:=z1*c1; end;

'2': begin z2:=z2+qes[i].zahet; s2:=z2*c2; end;

'3': begin z3:=z3+qes[i].zahet; s3:=z3*c3; end;

'0': begin slz:=slz+qes[i].zahet; sls:=slz*sl; end;

После завершения вложенного цикла полю записи nes[m].vz присваивается значение nes[m].z1+nes[m].z2+nes[m].z3; а полю записи nes[m].vs значение nes[m].s1+nes[m].s2+nes[m].s3.

После завершения основного цикла свойству RowCount таблицы StringGrid1 присваивается значение k и выполняется цикл со счетчиком для значений i от 1 до k, в теле цикла происходит обращение к StringGrid1 с помощью ключевого слова with и выполняются следующие операции, ограниченные операторными скобками begin…end:

Cells [0, i-1]:=pos[i];

Cells [1, i-1]:=FloatToStr (RoundTo(nes[i].z1, - 2));

Cells [2, i-1]:=FloatToStr (RoundTo(nes[i].s1, - 2));

Cells [3, i-1]:=FloatToStr (RoundTo(nes[i].z2, - 2));

Cells [4, i-1]:=FloatToStr (RoundTo(nes[i].s2, - 2));

Cells [5, i-1]:=FloatToStr (RoundTo(nes[i].z3, - 2));

Cells [6, i-1]:=FloatToStr (RoundTo(nes[i].s3, - 2));

Cells [7, i-1]:=FloatToStr (RoundTo(nes[i].vz, - 2));

Cells [8, i-1]:=FloatToStr (RoundTo(nes[i].vs, - 2));

Cells [9, i-1]:=FloatToStr (RoundTo(nes[i].slz, - 2));

Cells [10, i-1]:=FloatToStr (RoundTo(nes[i].sls, - 2));

Операции служат для присваивания ячейкам таблицы соответствующих полей записи nes[i], при этом для значений столбцов таблицы от 1 до 10 используется функция RoundTo для округления значения до двух знаков после запятой и функция FloatToStr для преобразования из вещественного типа в строковый.

В этом же цикле выполняются следующие операции:

itog1 [1]:=itog1 [1]+nes[i].z1;

itog1 [2]:=itog1 [2]+nes[i].s1;

itog1 [3]:=itog1 [3]+nes[i].z2;

itog1 [4]:=itog1 [4]+nes[i].s2;

itog1 [5]:=itog1 [5]+nes[i].z3;

itog1 [6]:=itog1 [6]+nes[i].s3;

itog1 [7]:=itog1 [7]+nes[i].vz;

itog1 [8]:=itog1 [8]+nes[i].vs;

itog1 [9]:=itog1 [9]+nes[i].slz;

itog1 [10]:=itog1 [10]+nes[i].sls;

Они служат для подсчета общих итогов по каждому из полей записи nes.

После завершения цикла выполняется последний цикл со счетчиком для значений i от 1 до 10. В теле цикла происходит присваивание ячейке таблицы StringGrid2 [i, 0] значения itog1 [i]. При этом используется функция RoundTo для округления значения до двух знаков после запятой и функция FloatToStr для преобразования из вещественного типа в строковый.

Обработчик события procedure TForm1. FormCreate:

Раздел исполняемых операторов программы ограничивается операторными скобками begin … end и начинается с обращения к таблице StringGrid1с помощью ключевого слова with, где далее ширине нулевого столбца таблицы присваивается значение ColWidths[0]:=143; выполняется цикл со счетчиком для i от 1 до 10, где ширине столбца таблицы присваивается значение ColWidths[i]:=74.

После завершения цикла происходит обращение к таблице StringGrid2 с помощью ключевого слова with, которое ограничивается операторными скобками begin..end. Внутри: ширине нулевого столбца таблицы присваивается значение ColWidths[0]:=143; нулевой ячейке присваивается значение Cells [0,0]:='Итого:';, выполняется цикл со счетчиком для i от 1 до 10, где ширине столбца таблицы присваивается значение ColWidths[i]:=74.

3.4 Используемые технические средства

Программа предназначена для работы на IBM-совместимых персональных компьютерах, имеющих следующие минимальные характеристики: тактовая частота процессора - 1 ГГц; оперативная память - 128 Мбайт; на жестком диске при установке используется около 30 Мбайт; объем жесткого диска зависит от размера информационной базы, но должен быть не менее 100 Мбайт.

3.5 Вызов и загрузка

Путь к каталогу проекта: `I: \Курсовая работа\'. Программу можно запустить, открыв файл Project1.exe.

3.6 Входные данные

Входными данными являются:

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

Файл с накладными.

3.7 Выходные данные

Файл с накладными, в который были добавлены или удалены записи.

Выходными данными является сформированная на основе файла с накладными расчетная ведомость.

4. Программа и методика испытаний

4.1 Объект испытаний

Объектом испытаний является программа, предназначенная для формирования расчетной ведомости на основании ежедневных товарно-транспортных накладных.

4.2 Цель испытаний

Целью испытаний является проверка работоспособности и надежности программы.

4.3 Требования к программе

Входным документом для данной программы является ежедневная товарно-транспортная накладная доставки сырья, содержащая в заголовке номер, дату и поставщика. Графы накладной: наименование продукта (молоко или сливки), фактический вес в тоннах (обозначение F), жирность в процентах (обозначение G), сорт (1, 2 или 3, только для молока), зачетный вес (для молока равен Z=F*G/3.6, для сливок - Z=F*G/35).

На основании таких накладных по запросу пользователя программа должна формировать расчетную ведомость в разрезе поставщиков с графами: Поставщик, Молоко, Сливки. Графа Молоко содержит подграфы - 1 сорт, 2 сорт, 3 сорт, Всего. Каждая из этих подграф содержит подграфы - Зачетный вес и Сумма. Графа Сливки содержит подграфы - Зачетный вес и Сума.

Ведомость должна заканчиваться итоговой строкой.

Программа должна обеспечивать удаление всех записей из файла.

4.4 Требования к программной документации

Состав программной документации, предъявляемой на испытания:

* Техническое задание

* Описание программы

* Программа и методика испытаний

* Описание применения

* Текст программы.

4.5 Средства и порядок испытаний

Программа предназначена для работы на IBM-совместимых персональных компьютерах, имеющих следующие минимальные характеристики: тактовая частота процессора - 1 ГГц; оперативная память - 128 Мбайт; на жестком диске при установке используется около 30 Мбайт; объем жесткого диска зависит от размера информационной базы, но должен быть не менее 100 Мбайт.

Программа разработана в среде Delphi 7.0 работающей под управлением операционной системы Windows XP и выше.

Для проверки правильности работы системы был принят следующий порядок действий:

а) запустить программу на выполнение;

б) провести тестирование программы по тестам, описанным в пункте 4.6;

в) сравнить реакции программы с ожидаемым результатом;

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

4.6 Методы испытаний

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

Цены на продукты:

30 рублей за тонну молока 1 сорта;

20 рублей за тонну молока 2 сорта;

10 рублей за тонну молока 3 сорта;

50 рублей за тонну сливок;

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

Расчеты:

Зачетный вес:

1) 36*2/3.6=20 (молоко)

2) 18*2/3.6=10 (молоко)

3) 72*4/3.6=80 (молоко)

4) 144*4/3.6=160 (молоко)

5) 35*2/35=2 (сливки)

6) 70*4/35=8 (сливки)

7) 140*4/35=16 (сливки)

8) 36*2/3.6=20 (молоко)

9) 144*4/35=16,46 (сливки)

10) 144*4/3.6=160 (молоко)

11) 8*2/3.6=20 (молоко)

12) 77*2/35=4,4 (сливки)

13) 72*5/3.6=100 (молоко)

14) 72*3/3.6=60 (молоко)

15) 116*3/3.6=96,67 (молоко)

16) 109*3/35=9,34 (сливки)

1 сорт молока, зачетный вес и сумма:

1) Молочный Рай: 0+[1] 20=20; 20*30=600;

2) Путин On_Fire: 0+[8] 20=20; 20*30=600;

3) Master Chief: 0+[13] 100=100; 100*30=3000;

2 сорт молока, зачетный вес и сумма:

1) Молочный Рай: 0+[2] 10+[4] 160+[10] 160=330; 330*20=6600;

2) Путин On_Fire: 0;

3) Master Chief: 0;

3 сорт молока, зачетный вес и сумма:

1) Молочный Рай: 0+[3] 80+[14] 60+[15] 96,67=236,67; 236,67*10=2366,7;

2) Путин On_Fire: 0;

3) Master Chief: 0+[11] 4,44=4,44; 4,44*10=44,4;

Всего по молоку, зачетный вес и сумма:

1) Молочный Рай: 0+20+330+236,67=586,67; 0600+6600+2366,7=9566.7;

2) Путин On_Fire: 20; 600;

3) Master Chief: 100+4,44=104,44; 3000+44.4=3044,4;

Сливки, зачетный вес и сумма:

1) Молочный Рай: 0+[9] 16,46=16,46; 16,46*50=823;

2) Путин On_Fire: 0+[5] 2+[6] 8+[7] 16+[16] 9,34=35,34; 35,34*50=1767;

3) Master Chief: 0+[12] 4,4=4,4; 4,4*50=220;

Итого:

1 сорт - зач. вес и сумма: 20+20+100=140; 600+600+3000=4200;

2 сорт - зач. вес и сумма: 330+0+0=330; 6600+0+0=6600;

3 сорт - зач. вес и сумма: 236,67+0+4,44=241,11; 2366,7+44,4=2411,1;

Всего - зач. вес и сумма: 586.67+20+104,44=711,11; 9566,7+600+3044,4=13211,1;

Сливки - зач. вес и сумма: 16,46+35,34+4,4=56.2; 56.2*50=2810;

Результат работы программы приведен в приложении Б на рисунках Б1, Б2, Б3 и Б4. Он совпадает с результатами, приведенными выше, следовательно можно сделать вывод, что программа работает верно.

5. Описание применения

5.1 Назначение программы

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

5.2 Условия применения

Программа предназначена для работы на IBM-совместимых персональных компьютерах, имеющих следующие минимальные характеристики: тактовая частота процессора - 1 ГГц; оперативная память - 128 Мбайт; на жестком диске при установке используется около 30 Мбайт; объем жесткого диска зависит от размера информационной базы, но должен быть не менее 100 Мбайт.

5.3 Описание задачи

На основании накладных с информацией о номере, поставщике, дате, зачетном и фактическом весе, жирности, сорте молока, а так же ценам на продукты по запросу пользователя программа должна формировать расчетную ведомость в разрезе поставщиков с графами: Поставщик, Молоко, Сливки. Графа Молоко содержит подграфы - 1 сорт, 2 сорт, 3 сорт, Всего. Каждая из этих подграф содержит подграфы - Зачетный вес и Сумма. Графа Сливки содержит подграфы - Зачетный вес и Сума.

Ведомость должна заканчиваться итоговой строкой.

Программа должна обеспечивать удаление всех записей из файла.

5.4 Входные и выходные данные

После запуска программы на экране монитора отобразятся два окна, одно с подзаголовком `Курсовая Работа, форма для формирования файла с накладными', вторая `Курсовая Работа, форма для формирования расчетной ведомости'.

Если уже есть готовый файл с накладными, который нет необходимости редактировать, то можно сразу приступить к работе с окном `Курсовая Работа, форма для формирования расчетной ведомости'. Пользователю необходимо нажать на кнопку `Открыть файл с базой данных накладных' и выбрать файл с накладными, в результате чего программа сформирует расчетную ведомость.

Если необходимо создать файл с накладными или отредактировать его, то необходимо воспользоваться окном `Курсовая Работа, форма для формирования файла с накладными'. Первым делом пользователю необходимо выполнить одно из двух действий: либо нажать на кнопку `Открыть файл', либо нажать на кнопку `Создать файл'. В первом случае пользователь должен выбрать файл с накладными и нажать на кнопку `Открыть' в диалоговом окне. В результате будут отображены все записи, хранящиеся в выбранном файле. Если пользователь выберет кнопку `Создать файл', то ему необходимо выбрать местоположение данного файла в диалоговом окне, написать его название и нажать на кнопку `Сохранить'.

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

Заключение

программа ведомость поставщик гормолкомбинат

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

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


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

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