Формирование расчетной ведомости при поставках сырья
Требования к функциональным характеристикам программы. Требования к составу и параметрам технических средств. Порядок контроля и приемки. Программа для формирования расчетной ведомости в разрезе поставщиков при поставках сырья на гормолкомбинат.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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
Подобные документы
Разработка системы управления базой данных "Структура ВУЗа". Требования к программе: функциональным характеристикам, надежности, эксплуатации, составу и параметрам технических средств. Требования к программной документации. Порядок контроля и приемки.
курсовая работа [982,7 K], добавлен 08.06.2015Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.
курсовая работа [1,5 M], добавлен 17.11.2010Требования к функциональным характеристикам, составу и параметрам технических средств, информационной и программной совместимости. Описание программы: общие сведения, логическая структура. Средства и порядок испытаний. Входные и выходные данные.
курсовая работа [6,3 M], добавлен 12.01.2015Стадии и этапы разработки программного продукта для осуществления упрощенной работы с клиентами и учёта услуг оказываемых "Интернет-центром". Требования к функциональным характеристикам и надежности программы, к составу и параметрам технических средств.
лабораторная работа [29,4 K], добавлен 13.06.2014Разработка программы, позволяющей реализовать шифрование и дешифрование текстового файла методом замены и методом перестановки. Требования к функциональным характеристикам, надежности, составу и параметрам технических средств ПО. Интерфейс пользователя.
курсовая работа [19,0 K], добавлен 30.04.2011Разработка игровой программы "разгадывания кроссворда". Создание схемы хранения данных, изучение возможности среды программирования. Требования к функциональным характеристикам, составу и параметрам технических средств, информационной совместимости.
курсовая работа [403,9 K], добавлен 26.03.2015Системный анализ предметной области. Требования к программе и программному изделию, к функциональным характеристикам, к надежности, составу и параметрам технических средств. Обоснование выбора средств выбора для хранения и обработки базы данных.
реферат [403,8 K], добавлен 02.02.2014Развитие эффективных способов воспроизведения музыкальной информации без потери качества. Требования к функциональным характеристикам, к надежности и безопасности, к составу и параметрам технических средств, к информационной и программной совместимости.
курсовая работа [496,0 K], добавлен 03.12.2010Требования к функциональным характеристикам проектируемого интернет-магазина. Требования к составу и параметрам технических средств и программной документации. Стадии и этапы разработки интернет-магазина, проверка и контроль правильности ее работы.
курсовая работа [598,2 K], добавлен 17.05.2011Обоснование выбора средства программирования Microsoft Access 2000. Требования к параметрам и составу технических средств, к функциональным характеристикам, к надежности. Описание процесса отладки. Определение группы сложности разрабатываемой программы.
дипломная работа [968,5 K], добавлен 13.03.2014