close

Вход

Забыли?

вход по аккаунту

?

отчет (7)

код для вставкиСкачать
ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ АДМИНИСТРАЦИИ ВЛАДИМИРСКОЙ ОБЛАСТИ
ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ВЛАДИМИРСКОЙ
ОБЛАСТИ
«АЛЕКСАНДРОВСКИЙ ПРОМЫШЛЕННО-ГУМАНИТАРНЫЙ КОЛЛЕДЖ»
КУРСОВАЯ РАБОТА
СПЕЦИАЛЬНОСТЬ: Прикладная информатика
ДИСЦИПЛИНА:
Предметно-ориентированное программное
обеспечение
ТЕМА : «Тип “запись” –инструмент для создания файлов записей –
электронное хранилище информации по типу баз данных, сравнение записи с
таблицей баз данных . Создание приложений по обработке файла записей.»
ВЫПОЛНИЛА
студент группы ВТ-41
ТИМОШЕНКО РОМАН ВЛАДИМИРОВИЧ
РУКОВОДИТЕЛЬ
Н.И. Иванова
2012 год
1
Оглавление
Введение....................................................................................................................................................... 3
Теоретические основы темы ...................................................................................................................... 4
Практическая часть ..................................................................................................................................... 7
Формулировка задач ............................................................................................................................... 7
Постановка задачи................................................................................................................................... 8
Описание исходной (входной) информации..................................................................................... 8
Описание результатной (выходной) информации ........................................................................... 9
Алгоритм решения приложения ...................................................................................................... 10
Блок-схема приложения ....................................................................................................................... 11
Описание программы ............................................................................................................................ 20
Назначение и применение программы ............................................................................................ 20
Интерфейс приложения .................................................................................................................... 20
Описание внутренней структуры приложения............................................................................. 21
Описание алгоритмов приложения.................................................................................................. 22
Программный код приложения............................................................................................................ 24
Инструкция по работе с программой .................................................................................................. 39
Заключение ................................................................................................................................................ 44
Список литературы ................................................................................................................................... 45
Приложения ............................................................................................................................................... 46
2
Введение
Записи
В информационно-поисковых системах (таких как адресное бюро,
телефонная справочная служба и т.п) приходится хранить и обрабатывать
большие объемы данных. При решении научно-технических и
экономических задач обработки совокупностей большого количества
значений используются массивы. Но основное ограничение работы с
массивами заключается в том, что все элементы массива должны иметь один
и тот, же тип данных. Иногда для решения задач, в которых возникает
необходимость хранить и обрабатывать совокупности данных различного
типа, используются отдельные массивы для каждого типа данных, а для
установления соответствия между ними вводятся соответствующие индексы.
Итак, реальные данные об объектах часто описываются величинами разных
типов. Например, товар на складе описывается следующими величинами:
наименование, количество, цена, наличие сертификата качества и т.д. В этом
примере наименование – величина типа String, количество – integer, цена –
real, наличие сертификата качества – Boolean. Для записи комбинации
объектов разных типов в Delphi применяется комбинированный тип данных –
запись.
Запись представляет собой наиболее общий и гибкий структурированный тип
данных, так как она может быть образована из разнотипных компонентов и в
ней явным образом выражена связь между элементами данных,
характеризующими реальный объект.
3
Теоретические основы темы
Описание типа «запись»
Запись – это структурированный тип данных, состоящий из фиксированного
числа компонентов одного или нескольких типов. Определение типа записи
начинается идентификатором record и заканчивается зарезервированным
словом end. Между ними распологается списов компонентов, называемых
полями, с указанием идентификаторов полей и типа каждого поля.
Формат
<имя типа> = record
<идентификатор поля>:<тип компонента>;
…
<идентификатор поля>:<тип компонента>;
End;
Var
<идентификатор..> : <имя типа>;
Идентификатор поля должен быть уникальным только в пределах записи,
однако во избежание ошибок лучше делать его уникальным в пределах всей
программы. Объем памяти, необходимый для записи, складывается из длин
полей.
Значение полей записи могут использоваться в выражениях. Имена
отдельных полей не применяются так, как идентификаторы переменных,
поскольку может существовать несколько записей одинакового типа.
Обращение к значению поля осуществляется с помощью идентификатора
переменной и идентификатора поля, разделенных точкой. Такая комбинация
называется составным именем.
Составное имя можно использовать везде, где допустимо применение типа
поля. Для присваивания полям значений используется оператор
присваивания.
В ряде задач удобно пользоватся массивами из записей. Их можно описать
следующим образом:
4
Person = record
Fio: string [20];
Age:1..99;
Prof:string[30];
End;
Var
List:array[1..50] of person;
Обращение к полям записи имеет несколько гомоздкий вид, что особенно
неудобно при использовании мнемонических идентификаторов длинной
более пяти символов. Для решения этой проблемы в языке Delphi
предназначен оператор with, который имеет следующий формат:
With <переменная типа запись> do <оператор>;
Один раз указав переменную типа запись в операторе with, можно работать с
именами полей, как с обычными переменными, т.е без указания перед
идентификатором поля имени переменной, определяющей запись.
Delphi допускается вложение записей (то есть поле записи, в свою очередь,
тоже может являться записью), соответсвенно, оператор with тоже может
быть вложенным
With RV1, RV2, … , RVn do …
Уровень вложенности не должен привышать 9.
Обычно записи используются при работе с динамическими структурами и
для организации файлов на дисках. Записи могут служить также для
описания комплексных чисел, так как в Delphi нет для этого специальных
средств, В этом случае действительная и мнимая части комплексного числа
являются полями записи.
Записи с вариантами
Записи, представленные ранее, имеют строго определенную структуру. В
некоторых случаях это серьезно ограничивает возможности их применения.
Поэтому в Delphi имеется возможность задать тип записи, содержащий
5
произвольное число вариантов структуры. Такие записи называются
записями с вариантами. Записи с вариантами обеспечивают средства
объединения записей, которые похожи, но не идентичны по форме. Они
состоят из фиксированной и вариантной частей.
Использование фиксированной части не отличается от описанного ранее.
Вариантная часть формируется с помощью оператора case. Он задает особое
поле записи – поле признака, которое определяет, какой из вариантов в
данный момент будет активизирован. Значением признака в каждый текущий
момент. Константа, служащая признаком, задает вариант записи и называется
константой выбора.
Компоненты каждого варианта (идентификаторы полей и их типы)
заключается в круглые скобки. У части case нет отдельного слова end, как это
следовало бы ожидать по аналогии с оператором case. Одно слово end
заканчивает всю конструкцию записи с вариантами. Необходимо отметить,
что количество полей каждого из вариантов не ограничено.
Объем памяти, необходимый для записи с вариантами, складывается из длин
полей фиксированной части и максимально по длине поля переменной части.
6
Практическая часть
Формулировка задач
«Учет товаров на складе». Разработать приложение, реализующее создание и
обработку файла данных, следующей структуры:
 Дата поступления
 Код товара
 Наименование товара
 Фирма изготовитель
 Марка товара
 Сорт
 Единица измерения
 Цена единицы товара
 Количество
 Стоимость (расчетная)
Режимы работы программы:
 Ввод данных с клавиатуры и запись в файл POSTUP.DAT,
 Накопление данных за месяц,
 Сортировка по коду товара,
 Просмотр файла и вывод на экран ведомости товаров на складе с
расчетом общего итога стоимости материальных ценностей на складе,
 Расчет итогов по коду товара с расчетом общего количества и
стоимости, а также, средней цены каждого товара на складе
(ITOGI.DAT) и отпуск необходимого количества потребителю по
требованию с корректировкой файла итогов, хранение отпущенных
товаров в файл (OTPUSK.DAT) с возможностью вывода на печать,
7
 Выбор по коду и вывод на экран (принтер) всех характеристик данного
товара.
Постановка задачи
Наименование задачи – создание приложения «Учет товаров на складе».
Целью решения задачи является проверка наличия товара на складе, отпуск
товара со склада, вывод характеристик товара, расчет стоимости товара,
сортировка товара по коду, накопление данных за месяц.
Данное приложения создано для автоматизации на производства, внедрение
данного приложение будет, осуществляется на складах.
Данное приложение упростит работу на складе, а значит увеличит работу
производства.
Описание исходной (входной) информации
Входной информацией являются данные, которые показаны в таблице №1.
Эти данные будут использоваться в рабочей таблицы программы.
Таблица №1. Входная информация
Имя поля
Идентификатор
Разрядность
Тип поля
Дата
поступления
vrem
10
Дата
Код товара
ktovar
10
Числовой
Наименование
товара
ntovar
30
Строковый
Фирма
изготовитель
fizg
30
Строковый
Марка товара
mtovar
30
Строковый
Сорт
sort
30
Числовой
Единица
eizm
5
Числовой
8
измерения
Цена единицы
товара
stoimedtv
6
Числовой
Количество
kol
4
Числовой
Описание результатной (выходной) информации
Результатом выходной программы будет являться файл postup2.dat и
itogtov.dat, данные показаны в таблице №2.
Таблица №2. Выходная информация
Имя поля
Идентификатор
Разрядность
Тип поля
Дата
поступления
vrem
10
Дата
Код товара
ktovar
10
Числовой
Наименование
товара
ntovar
30
Строковый
Фирма
изготовитель
fizg
30
Строковый
Марка товара
mtovar
30
Строковый
Сорт
sort
30
Числовой
Единица
измерения
eizm
5
Числовой
Цена единицы
товара
stoimedtv
6
Числовой
Количество
kol
4
Числовой
Стоимость
(расчетная)
stoim
6
Числовой
9
Средняя
стоимость
srstoim
Общее
количество
okol
6
числовой
Так же возможна печать итоговой ведомости по кнопке «печать».
Алгоритм решения приложения
С помощью данного приложения пользователь программы сможет:
1) Открыть файл с товарами находящимися товарами.
2) Пользователь может изменять значения в файле(количество, дату
поступления, сорт продукта и т.д)
3) Пользователь может найти товар по коду. (Выводится товар по
идентификатору «ktovar»)
4) Пользователь может рассчитать стоимость исходя из количества и
цены товара, а так же общую стоимость всего товара.
5) Пользователю, возможно, вывести результатную информацию не
только на экран, но еще и вывести информацию на принтер.
6) Возможно, заполнить все поля даты. (Сегодняшняя дата)
7) Пользователь может выполнить сортировку товаров по коду товара.
8) Есть возможность очистить таблицу, добавить строку и удалить
последнюю строку
9) По кнопке «Выход» программа завершает свою работу.
10
Блок-схема приложения
1
Начало
2
procedure
TForm1.FormCreate
3
4
да
procedure
TForm1.N2Click
Файл?
нет
5
10
да
procedure
TForm1.N3Click
11
Функции?
6
да
15
procedure
TForm1.N14Click
16
Таблица?
нет
19
7
да
нет
Вывод?
procedure
TForm1.N13Click
20
8
9
procedure
TForm1.N4Click
Останов
20
19
procedure
TForm1.Button1
Click
3
11
10
15
11
16
procedure
TForm1.N6Click
3
procedure
TForm1.N7Click
3
procedure
TForm1.N9Click
3
procedure
TForm1.N10Click
3
procedure
TForm1.N11Click
3
12
17
13
18
procedure
TForm1.N8Click
3
procedure
TForm1.N12Click
3
14
12
4-1
2-1
procedure
TForm1.FormCreat
e
procedure
TForm1.N2Click
4-2
2-2
нет
Файл найден ?
Задаем размер
колонок
да
4-3
2-3
Открыть файл
Задаем заголовки
таблицы
2-4
3
4-4
Rowcount:=filesize(f)
+1
4-5
N:=0
4-6
Пока не конец
файла
4-7
да
Читать файл
4-8
нет
4-10
Закрытие файла
4-11
Задание
заголовка
таблицы
Inc(n)
4-9
4-12
Запись
информации в
таблицу
13
5-1
procedure
TForm1.N3Click
e
5-2
Файл найден?
e
5-3
нет
3
да
Открыть файл
e
5-7
5-4
For k:=1 to
rowcount-1 do
5-5
e
да
нет
Закрыть файл
e
5-8
Запись из
таблицы в файл
5-6
e
писать в файл
e
14
6-1
6-9
procedure
TForm1.N14Click
6-9
6-10
6-12
Накапливаем
количество
6-2
Файл найден?
3
6-11
6-13
Накапливаем
стоимость
6-3
Средняя цена=
стоимость/коли
чество
Открыть
файл1
Пишем в файл 2
6-14
6-7
Закрываем файл 1
6-4
Открыть
файл2
6-7
Закрываем файл 1
6-16
Средняя цена=
стоимость/коли
чество
6-5
Читать файл 1
6-15
6-16
6-17
Пишем в файл 2
6-6
Work2.ktovar:=
work.ktovar
6-18
Work2.ktovar:=
work.ktovar
6-7
Пока не конец
файла
6-16
6-19
Work2.kol:=work.
kol
6-8
Читать файл 1
6-20
Work2.stoim:=
work.stoim
6-9
If
work.ktovar=work2.k
tovar
6-10
6-21
6-12
24
15
7-1
11-1
procedure
TForm1.N13Click
procedure
TForm1.N6Click
7-2
11-2
нет
Файл найден?
24
нет
For i:=1 to
rowcount-1 do
да
7-3
11-5
да
11-3
Открыть файл 2
нет
Ячейка пустая?
11-4
7-4
Rowcount:=filesize(f)+1
11-2
да
Cells[0,i]:=date
7-5
N:=0
7-10
7-6
Пока не конец
файла
нет
Закрытие файла 2
да
7-7
7-11
Читать запись
файла2
Задание заголовков
таблицы
7-8
Inc(n)
7-12
7-9
Записываем запись
в таблицу
16
12-1
17-1
procedure
TForm1.N7Click
procedure
TForm1.N10Click
12-11
12-2
For t:=1 to
rowcount+5 do
нет
Увеличить
количество строк на
одну
да
12-3 For y:=1 to нет
rowcount-2 do
17-2
17-3
12-2
да
18-1
12-4
нет
If
cells[1,y]>cells[1,y+1]
12-3
да
12-5
нет
For i:=0 to colcount
do
12-6
да
A:=cells[I,y]
procedure
TForm1.N11Click
18-2
12-3
Уменьшаем
количество строк на
одну
18-3
12-7
cells[I,y]:=cells[I,y+1]
12-8
Cells[I,y+1]:=a
17
13-1
procedure
TForm1.N8Click
13-2
нет
13-7
For i:=1 to
rowcount-1 do
13-3
да
Stoimedtv:=
(cells[7,i])
14-1
procedure
TForm1.N12Click
13-4
kol:=
(cells[8,i])
14-2
B:=0
13-5
Stoim:=stoimedtv*kol
14-3
нет
14-5
For i:=1 to
rowcount-1 do
13-6
Cells[9,i]:=stoim
14-4
да
P:=rowcount-2
14-6
Накапливаем
стоимость
Cells[0,p]:=’общая
стоимость’
14-7
P:=rowcount-1
14-8
Cells[0,p]:= выводим
накопленную
стоимость
14-9
18
16-1
20-1
procedure
TForm1.Button1Click
procedure
TForm1.N9Click
20-2
16-2
16-5
Открыть файл
For i:=0 to
colcount-1 do
20-3
16-3
For j:=1 to
rowcount-1 do
16-4
На начальную
запись
16-2
20-4
Kod:=strtoint(edit1.text)
Очищает ячейку
20-5
нет
Пока не конец
20-10
файла
20-6
да
Читать в файл
20-7
If kod=work.ktovarнет
then
20-8
20-5
да
Запись из файла в
таблицу
20-9
Задание заголовков
19
Описание программы
Назначение и применение программы
Данное приложение называется «учет товаров на складе», Тема разработки –
создание приложения для складов, содержит строку меню, рабочую таблицу
и панель инструментов.
Данное приложения создано для автоматизации и внедрения
информационных систем в предприятия. Позволяет в удобном интерфейсе,
редактировать, добавлять и изменять информацию о продуктах на складе.
Так же можно осуществлять поиск по коду товара на складе, выдается полная
информация о продукте. Предусмотрен вывод информации на экран, а так же
вывод.
Интерфейс приложения
1
2
3
4
6
5
7
8
1. TForm – форма программы.
2. MainMenu – меню программы.
3. DateTimePicker – выбор текущей даты.
4. Edit – поле ввода «код товара».
20
5. StringGrid – таблица программы.
6. Button – вывод информации в StringGrid, по «коду товара».
7. Button –печать информации, которая показана в StringGrid.
8. Panel –панель программы «учет товара на складе».
Описание внутренней структуры приложения
Для работы приложения используется файл типа запись:
1. Сохранение итоговой ведомости
Tsklad2=record
ktovar:Word;
kol:Word;
stoim:Real;
srstoim:Real;
end;
2. Сохранение таблицы товаров
Tsklad=record
vrem:string[10];
ktovar:word;
ntovar:string[30];
fizg:string[30];
mtovar:string[30];
sort:string[30];
eizm:string[5];
stoimedtv:real;
kol:word;
stoim:real;
end;
21
Описание алгоритмов приложения
procedure TForm1.FormCreate(Sender: TObject);
Процедура создает заголовки и размер колонок у компонента StringGrid.
procedure TForm1.N4Click(Sender: TObject);
Процедура закрытия программы.
После нажатия на кнопку, программа завершит работу.
procedure TForm1.N9Click(Sender: TObject);
Процедура очистки таблицы StringGrid. Компонент StringGrid станет
пустым.
procedure TForm1.N10Click(Sender: TObject);
Процедура добавление строки в StringGrid. В компонент StringGrid добавить
одна строка в конец файла.
procedure TForm1.N11Click(Sender: TObject);
Процедура удаления строки в компоненте StringGrid. Удаление последний
строки из компонента StringGrid.
procedure TForm1.N3Click(Sender: TObject);
Сохранить таблицу в файл. Файл сохранится в файл с расширением *.DAT
procedure TForm1.N2Click(Sender: TObject);
Открыть файл таблицы. Необходимо открыть файл с расширением *.DAT,
после чего данные из файла отобразятся в компоненте StringGrid
procedure TForm1.N8Click(Sender: TObject);
Расчет стоимости в компоненте StringGrid. Расчет стоимости по формуле
=Количество*Цену
procedure TForm1.N12Click(Sender: TObject);
Расчет общей стоимости в компоненте StringGrid. Расчитывается общая
стоимость всех товаров по формуле (N1+N2+N3+…+Nn)
procedure TForm1.N6Click(Sender: TObject);
22
Заполняет выбранную дату из Button в StringGrid.
Заполняет все пустые поля даты в компоненте StringGrid, выбранной датой из
компонента DateTimePicker1
procedure TForm1.N7Click(Sender: TObject);
Сортировка поля «код товара» в компоненте StringGrid, линейная
сортировка.
procedure TForm1.N14Click(Sender: TObject);
Создает итоговую ведомость и сохраняет с расширением *.DAT.
procedure TForm1.N13Click(Sender: TObject);
Открывает итоговую ведомость с расширением *.DAT.
procedure TForm1.Button1Click(Sender: TObject);
Вывод в компоненте StringGrid информации товара, по введенному коду в
компонент Edit.
procedure TForm1.btn1Click(Sender: TObject);
Печать информации которая находится в компоненте Stringrid, печать идет
прямая без возможности настройки печати.
23
Программный код приложения
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Menus, Grids, ExtCtrls, Printers, StdCtrls, XPMan;
const
namefile='Postup.dat';
type
Tsklad2=record
ktovar:Word;
kol:Word;
stoim:Real;
srstoim:Real;
end;
Tsklad=record
vrem:string[10];
ktovar:word;
ntovar:string[30];
fizg:string[30];
mtovar:string[30];
sort:string[30];
eizm:string[5];
stoimedtv:real;
kol:word;
stoim:real;
end;
TForm1 = class(TForm)
24
Panel1: TPanel;
StringGrid1: TStringGrid;
MainMenu1: TMainMenu;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
DateTimePicker1: TDateTimePicker;
Nfkbwf1: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N14: TMenuItem;
N13: TMenuItem;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
btn1: TButton;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
25
procedure N11Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:file of Tsklad;
f2:file of Tsklad2;
work:Tsklad;
work2:Tsklad2;
j,i,y,t:integer;
n:word;
implementation
{$R *.dfm}
26
procedure TForm1.FormCreate(Sender: TObject);
begin
with stringgrid1 do
begin
colwidths[0]:=100;
colwidths[1]:=70;
colwidths[2]:=120;
colwidths[3]:=130;
colwidths[4]:=80;
colwidths[5]:=40;
colwidths[6]:=120;
colwidths[7]:=150;
colwidths[8]:=70;
colwidths[9]:=70;
cells[0,0]:='Дата поступления';
cells[1,0]:='Код товара';
cells[2,0]:='Наименование товара';
cells[3,0]:='Фирма изготовителей';
cells[4,0]:='Марка товара';
cells[5,0]:='Сорт';
cells[6,0]:='Единица измерения';
cells[7,0]:='Стоимость единицы товара';
cells[8,0]:='Количество';
cells[9,0]:='Стоимость';
end;
end;
27
procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
with stringgrid1 do
begin
for i:=0 to colcount-1 do
for j:=0 to rowcount-1 do
cells[i,j]:='';
end;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
stringgrid1.RowCount:=stringgrid1.RowCount+1;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
stringgrid1.RowCount:=stringgrid1.RowCount-1;
end;
procedure TForm1.N3Click(Sender: TObject);
var
k:word;
begin
if savedialog1.Execute then
28
begin
assignfile(f,savedialog1.filename);
rewrite(f);
with stringgrid1 do
begin
for k:=1 to rowcount-1 do
begin
work.vrem:=cells[0,k];
work.ktovar:=strtoint(cells[1,k]);
work.ntovar:=cells[2,k];
work.fizg:=cells[3,k];
work.mtovar:=cells[4,k];
work.sort:=cells[5,k];
work.eizm:=cells[6,k];
work.stoimedtv:=strtofloat(cells[7,k]);
work.kol:=strtoint(cells[8,k]);
work.stoim:=strtofloat(cells[9,k]);
write(f,work);
end;
closefile(f);
end;
end;
end;
procedure TForm1.N2Click(Sender: TObject);
var
n:word;
begin
if opendialog1.Execute then
begin
assignfile(f,opendialog1.FileName);
29
reset(f);
with stringgrid1 do
begin
rowcount:=filesize(f)+1;
n:=0;
while not eof(f) do
begin
read(f,work);
inc(n);
cells[0,n]:=work.vrem;
cells[1,n]:=inttostr(work.ktovar);
cells[2,n]:=work.ntovar;
cells[3,n]:=work.fizg;
cells[4,n]:=work.mtovar;
cells[5,n]:=work.sort;
cells[6,n]:=work.eizm;
cells[7,n]:=formatfloat('0.00',work.stoimedtv);
cells[8,n]:=inttostr(work.kol);
cells[9,n]:=formatfloat('0.00',work.stoim);
end;
end;
closefile(f);
end;
begin
with stringgrid1 do
begin
cells[0,0]:='Дата поступления';
cells[1,0]:='Код товара';
cells[2,0]:='Наименование товара';
cells[3,0]:='Фирма изготовителей';
30
cells[4,0]:='Марка товара';
cells[5,0]:='Сорт';
cells[6,0]:='Единица измерения';
cells[7,0]:='Стоимость единицы товара';
cells[8,0]:='Количество';
cells[9,0]:='Стоимость';
end;
end;
end;
procedure TForm1.N8Click(Sender: TObject);
var
stoimedtv,stoim:real;
kol:word;
begin
with stringgrid1 do
for i:=1 to rowcount-1 do begin
stoimedtv:=strtofloat(cells[7,i]);
kol:=strtoint(cells[8,i]);
stoim:=stoimedtv*kol;
cells[9,i]:=formatfloat('0.00',stoim);
end;
end;
procedure TForm1.N12Click(Sender: TObject);
var
p:integer;
b:real;
begin
b:=0;
with stringgrid1 do
31
for i:=1 to rowcount-1 do
begin
b:=b+strtofloat(cells[9,i]);
end;
begin
stringgrid1.RowCount:=stringgrid1.RowCount+2;
begin
with stringgrid1 do
begin
p:=rowcount-2;
cells[0,p]:='Общая стоимость';
p:=rowcount-1;
cells[0,p]:=formatfloat('0.00',b);
end;
end;
end;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
with stringgrid1 do
for i:=1 to rowcount-1 do begin
if cells[0,i]='' then
cells[0,i]:=datetostr(date);
end;
end;
procedure TForm1.N7Click(Sender: TObject);
var
a:string[30];
32
begin
with stringgrid1 do
begin
for t:=1 to rowcount+5 do
begin
for y:=1 to rowcount-2 do
if strtofloat(cells[1,y])>strtofloat(cells[1,y+1]) then
begin
for i:=0 to colcount do
begin
a:=cells[i,y];
cells[i,y]:=cells[i,y+1];
cells[i,y+1]:=a;
end;
end;
end;
end;
end;
procedure TForm1.N14Click(Sender: TObject);
var
ktovar, k, i :integer;
result: boolean;
begin
assignfile(f, 'postup2.dat');
assignfile(f2,'itogtov.dat');
Reset(f);
Reset(f2);
read(f,work);
seek(f, 0);
33
ktovar:=work.ktovar;
work2.kol:=0;
work2.stoim:=0;
k:=0;
begin
while not result do
begin
while not eof(f) do
begin
seek(f2,0);
while not eof(f2) do //проверка есть ли уже такой код
begin
read(f2,work2);
if work2.ktovar = ktovar then
result := true //такой код есть
else
result := false; //такого кода нету
end;
read(f,work);
if not result then
begin
if work.ktovar=ktovar then
begin
work2.kol:=work2.kol+work.kol;
work2.stoim:=work2.stoim+work.stoim;
end;
end
else
ktovar := work.ktovar;
end;
34
work2.ktovar:=ktovar;
work2.srstoim:=work2.stoim/work2.kol;
seek(f2, filesize(f2)); //Добавляем запись в конец ведь, значит и встаем туда
write(f2,work2); //записываем собранные данные
end;
end;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
assignfile(f2,opendialog1.FileName);
reset(f2);
with stringgrid1 do
begin
rowcount:=filesize(f2)+1;
n:=0;
while not eof(f2) do
begin
read(f2,work2);
inc(n);
cells[0,n]:=inttostr(work2.ktovar);
cells[3,n]:=formatfloat('0.00',work2.srstoim);
cells[1,n]:=inttostr(work2.kol);
cells[2,n]:=formatfloat('0.00',work2.stoim);
end;
end;
closefile(f2);
end;
35
with stringgrid1 do
begin
cells[0,0]:='Код товара';
cells[1,0]:='Общее количество';
cells[2,0]:='Общая стоимость';
cells[3,0]:='Средняя стоимость';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
kod:integer;
begin
assignfile(f,'postup2.dat');
reset(f);
Seek(f,0);
kod:=strtoint(edit1.text);
while not eof(f) do
begin
read(f,work);
if kod=work.ktovar then
begin
with stringgrid1 do
begin
cells[0,1]:=work.vrem;
cells[1,1]:=inttostr(work.ktovar);
cells[2,1]:=work.ntovar;
cells[3,1]:=work.fizg;
cells[4,1]:=work.mtovar;
cells[5,1]:=work.sort;
36
cells[6,1]:=work.eizm;
cells[7,1]:=formatfloat('0.00',work.stoimedtv);
cells[8,1]:=inttostr(work.kol);
cells[9,1]:=formatfloat('0.00',work.stoim);
cells[0,0]:='Дата поступления';
cells[1,0]:='Код товара';
cells[2,0]:='Наименование товара';
cells[3,0]:='Фирма изготовителей';
cells[4,0]:='Марка товара';
cells[5,0]:='Сорт';
cells[6,0]:='Единица измерения';
cells[7,0]:='Стоимость единицы товара';
cells[8,0]:='Количество';
cells[9,0]:='Стоимость';
end;
end;
end;
with stringgrid1 do
begin
for i:=0 to colcount-1 do
for j:=2 to rowcount-1 do
cells[i,j]:='';
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
P:TextFile;
i,j : Integer;
37
s : String;
begin
AssignPrn(P);
Rewrite(P);
For i:=0 To StringGrid1.RowCount-1 Do
Begin
s:='';
For j:=0 To StringGrid1.ColCount-1 Do s:=s+StringGrid1.Cells[j,i];
Writeln(P,s);
End;
CloseFile(P);
end;
end.
38
Инструкция по работе с программой
Данное приложение разработано для операционной системы Windows (ME/XP/7/VISTA). Для
редактирование оболочки и функционала программы, необходимо ПО Delphi 7.
Функциональное назначение
Данная программа предназначена для автоматизации информационных
систем на предприятии. Приложение приоритетно для склада. Есть
возможность добавления, редактирование товара. Возможность печатать
информацию, сортировка товара, расчет стоимости.
Описание логической структуры программы.
Файл
 Открытие файла – проверяется существование файла, далее
открывается выбранный файл.
 Сохранение файла – сохранение файлов на носители.
 Создание и открытие ведомости – создает (отдельный файл) и
открывает ведомость в окне программы.
 Выход – завершение работы программы.
Функции
 Заполнить дату – заполнение полей выбранной даты.
 Сортировка – сортировка товара по коду товара.
 Расчет стоимости – расчет стоимости всех товаров.
 Расчет общий стоимости – расчет стоимости всех товаров.
Таблица
 Очистить таблицу – полная очистка таблицы в программе.
 Добавить строку – добавление новой строки, в конец таблицы.
 Удалить строку – Удаление последней строки из таблицы.
Вывод – вывод в таблице товары по выбранной дате.
39
Печать – печать таблицы.
Вызов и загрузка приложения
Для правильного запуска ПО «Учет товаров на складе» необходимо
загрузить папку с файлами в корень диска D:/, если не существует данный
раздел, необходимо обратится к разработчику, чтобы изменить корневой
путь.
Объем программного обеспечения 482 КБ
Входные данные
Для правильной работы программы необходимо в поля: «Дата поступления»
указывать дату форматом «дд.мм.гггг», в полях «код товара», «сорт»,
«стоимость», «количество» - заполнять числами, так как поле имеет числовой
тип, в остальные поля возможно указывать различные символы.
Описание пользовательского интерфейса
При запуске приложения откроется окно, которое показано на рисунке 2.
Рисунок 2. Рабочее окно программы.
Меню программы содержит пункты, которые показаны на рисунках 3,4,5:
40
Рисунок 3. Меню - Файл.
 Открыть файл – открыть файл postup.dat
 Сохранить файл – сохранить файл postup.dat
 Создать итоговую ведомость – создать итоговую ведомость itogtov.dat
 Открыть Итоговую ведомость – открыть итоговую ведомость
itogtov.dat
 Выход – выход из приложения.
Рисунок 4. Меню - Функции.
 Заполнить дату – заполнить дату в пустых полях «дата поступления»
 Сортировка – сортировка товара по «код товара»
 Расчет стоимости – расчет стоимости в колонке «Стоимость»
 Расчет общей стоимости – Добавление новой строки с выводом общей
стоимости товаров.
41
Рисунок 5. Меню - Таблица.
 Очистить таблицу – очистка рабочей таблицы.
 Добавить строку – добавление новой строки в таблицу.
 Удалить строку – удаление последней строки в таблице.
Рабочая область программы выглядит так и в нее входят компоненты,
которые показаны на рисунке 6.
Рисунок 6. Рабочая область программы.
42
Рабочее окно таблицы, содержит таблицу с заголовками и полями, показано
на рисунке 7.
Рисунок 7. Таблица с товаром.
Данная таблица содержит все сведения о товаре.
На рисунке №8 изображена таблица итоговой ведомости, в ней добавлены
поля: Общее количество, общая стоимость, средняя стоимость.
Рисунок 8. Таблица итоговой ведомости.
43
Заключение
В ходе выполнения работы, я получил новые навыки и знания в языке Delphi,
мной была написана программа «Учет товаров на складе», программа служит
для внедрения информационной системы на предприятие, данная программа
ведет журнал товаров на складе, составляет итоговую ведомость. Всю
информацию, возможно, распечатать на принтере или просто вывести ее на
экран.
В результате выполнения программы, я не справился с одной процедурой,
это отпуск товара со склада.
При написании программы «Учет товаров на складе» я использовал новый
компонент «печать», всю информацию о нем брал из открытых источников:
интернет, литература.
Данную программу необходимо совершенствовать и улучшать, так как при
работе с ней могут происходить сбои и неполадки.
Полученные навыки позволят мне в дальнейшем развитии и
профессиональной деятельности.
44
Список литературы
1. А.Я Архангельский. Программирование в DELPHI 7. Издательство
БИНОМ, 2003
2. Владимир Попов. Паскаль и Делфи: учебный курс. Издательский дом
«Питер», 2005
3. Интернет ресурсы:
3.1http://cyberforum.ru/
3.2http://yandex.ru/
3.3http://google.com/
45
Приложения
Рис. 1. Главное окно программы.
Рис. 2. Панель программы.
46
Рис. 3. Панель инструментов «файл».
Рис.3. Панель инструментов «Функции».
Рис. 5. Панель инструментов «таблица».
Рис. 6. Таблица итоговой ведомости.
47
Рис. 7. Таблица товаров.
48
Документ
Категория
Программирование, Базы данных
Просмотров
133
Размер файла
413 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа