Программирование в Delphi

Программирование в Delphi

Программирование в Delphi

МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА И ПРОДОВОЛЬСТВИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования «Белорусский государственный аграрный технический университет»
Факультет Предпринимательства и управления
Кафедра Экономической информатики
Курсовой проект
Тема «ПРОГРАМИРОВАНИЕ В DELPHI»
Выполнил студент II курса
группы 52-ЗЭИ
Зачетная книжка №506020
Братулин Евгений Петрович
Проверил _______________
Минск 2007

CОДЕРЖАНИЕ
1. Введение. 3
2. Постановка задачи. 4
3. Математическая формулировка задачи и выбор метода обработки информации 7
4. Разработка алгоритма схемы алгоритма и его описание. 9
5. Форма представления исходных данных. 21
6. Разработка интерфейса. 22
7. Листинг программы.. 25
8. Результаты проведенных расчетов и их анализ. 32
Выводы.. 35
Список использованных источников. 36
Приложения. 37

1. Введение.
В данной курсовой работе предложено создать Windows-приложение на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.
Разработчику ставиться вполне определенная задача, при выполнении которой используются навыки работы с операционными системами, программными оболочками, разнообразными служебными и сервисными средствами. А также навыки по алгоритмизации, программированию и решению в интегрированной визуальной среде программирования Delphi задач по экономике и управлению на предприятии.

2. Постановка задачи.
В данной курсовой работе требуется создать Windows-приложение на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое обеспечивает формирование, обработку на ЭВМ и вывод информации. Предусмотреть хранение информации в типизированных файлах, содержащих не менее 10 записей. Приложение должно обеспечивать формирование базы данных сведений о выручке от реализации продукции за плановый период, выполнить математические вычисления по расчету объема реализации и стоимости в оптовых ценах всего объема реализации. Также необходимо обеспечить сортировку базы данных в алфавитном порядке по наименованию продукции и организовать вывод в MEMO-поле наименование продукции, имеющее значение наибольшей стоимости.
Степень рациональности создания данной программы оценивается как низкая. Исходя из начальных условий, необходимо выполнить тривиальную последовательность действий
— хранение малого объема данных
— произведение простых математических вычислений
— обеспечение хранение базы данных
При исследовании существующих программных продуктов, был сделан вывод, что используя комплексное программное обеспечение компании Microsoft, на базе электронных таблиц Excel или базы данных Access можно было создать такое же приложение, выполняющее поставленную задачу. При этом затрачивается минимум усилий на проработку интерфейса и процедур сортировки. Однако, большим минусом данного решения будет является необходимость обязательной предварительной установки программного обеспечении Microsoft Office, лицензионные версии которого не получили широкого распространения на территории Республики Беларусь.
Поэтому принято считать, что уже исходя из этого разрабатываемое Windows- приложение не является «бесполезным», потому как имеет одну четко сформировавшуюся цель и место применения. Вероятное использование данного продукта — финансовые терминалы на базе операционных систем семейства Windows любого производственного предприятия. Данная программа, используя стандартные компоненты, с успехом будет работать в ОС-ах Windows’95, 98, 2000, ХР не требуя при этом дополнительных инсталляций программного обеспечения.
Для создания подобного приложения, которое будет удовлетворять поставленную задачу, и обеспечения функционирования математического аппарата необходимо как минимум
1) Один компонент для визуального представления данных в табличной форме,
2) MEMO-поле для вывода данных, указанных в задании
3) Набор компонентов для добавления / изменения / удаления записей в базу данных
4) Диалоговые окна, обеспечивающие выбор файлов для открытия / сохранения базы данных с соответствующими кнопками для их вызова.
Также необходимо обязательно создать дополнительные подпрограммы, обеспечивающие непосредственно математический аппарат основной программы и сортирование базы данных.
Таким образом, учитывая вышесказанное, разработчиком были приняты следующие решения, касающиеся будущей структуры приложения
1) для визуального отображения данных в табличной форме выбрать компонент StringGrid, который в текстовой форме обеспечивает ввод, изменение, удаление и просмотр данных. Шапка таблицы будет повторять таблицу, указанную в начальном условии. Предустановленное максимальное количество данных – 100 записей, что также удовлетворяет начальному условию
2) MEMO-поле прежде всего предназначенное для вывода данных, указанных в условии, дополнительно использовать для визуального подтверждения выполняемых пользователем действий.
3) для добавления / изменения / удаления записей в базу данных использовать 5 компонентов edit (для заполнения соответствующих столбцов), и 2 button-а (для добавления и удаления записи соответственно). Так как для отображения информации в StringGrid используется текстовая форма, предусмотреть невозможность ввода текстовых данных в численные поля с выводом соответствующего сообщения, а также невозможность внесения «пустого» поля, так как все поля базы данных, необходимые для математического расчета по условиям задачи должны быть заполнены.
4) использовать стандартные диалоги OpenDialog и SaveDialog для предоставления пользователю возможности визуального выбора имени и пути типизированного файла для открытия либо для сохранения базы данных. Для вызова диалогов использовать 2 компонента button с соответствующими названиями
5) для «обнуления» данных, т.е. создания новой базы использовать компонент button с подписью «создать базу».
6) для дублирования функций программы и создания дополнительного удобства работы с приложением применить компонент menu с соответствующими подменю и подписями кнопок.
7) математический аппарат представить в виде отдельной процедуры, состоящей из двух уравнений, удовлетворяющих начальному условию, которые являются необходимой частью приложения. Расчет проводить в автоматизированном режиме, без участия пользователя.
8) выполнить сортирование базы данных в автоматизированном режиме. Что исключит лишние действия пользователя по периодическому нажатию кнопки «сортировка». Действие сортировки выполнить уникальным, специально разработанным методом при каждом изменении базы данных.

3. Математическая формулировка задачи и выбор метода обработки информации
В поставленной задаче необходимо выполнить простейшие операции и вычисления. Математический аппарат представлен в виде вычисления двух неизвестных по заранее заданным формулам.
1) из базы данных выделить сведения на каждую запись об остатке на начало года, об остатке на конец года, о плане выпуска, а также стоимость в оптовых ценах единицы продукции.
2) выполнить вычисление объема реализации по формуле, указанной в задании.
3) выполнить вычисление стоимости в оптовых ценах всего объема реализации по формуле, указанной в задании.
Поиск наименования продукции, обладающей наибольшую стоимость всего объема реализации, происходит методом прямого перебора базы данных, сравнивая каждый последующий элемент с предыдущим. При обнаружении последующего элемента большим, чем предыдущий, значение стоимости записывается в одну буферную переменную, а индекс строки записывается во вторую. При окончании перебора в поле MEMO выводится наименование продукции из базы данных, соответствующей записанному ранее индексу, а значение переписывается из буферной переменной.
Элемент автоматической сортировки встроен в систему вывода информации через компонент StringGrid. Для этого используется типизированный массив набора данных. При добавлении новой записи происходит перенос данных из StringGrid-а в типизированный массив и затем происходит прямой перебор базы данных с поиском наиболее большего в текстовом смысле значения наименования продукции с использованием функции CompareText. При определении первого большего элемента добавляемая запись записывается между строк типизированного массива, а затем все «не пустые» записи типизированного массива переносятся в уже очищенный StringGrid. Затем типизированный массив очищается.
Таким образом исключается необходимость участия пользователя в процессе сортировки данных. Ход процесса перестроения базы данных как бы вмонтирован в операции по изменению данных. То есть конечной целью разработчика являлась создание унифицированной процедуры по преобразованию массива данных.Однако, данный метод (ровно как и метод «пузырька») применим только для малых объемов баз данных, так как преобразование большого массива информации потребует значительные ресурсы. Поэтому набор данных намеренно был ограничен 100 записями, что в полной мере удовлетворяет поставленному условию (оперирование с более чем десятью записями).
Дальнейшим возможным развитием программы может быть использование стандартизированных типов баз данных со встроенной системой индексации и поиска, со встроенными функциями сортировки. Также возможно интегрирование типизированных файлов с программами Microsoft Office Excel или Access. Также, при необходимости, возможно доработать программу до клиент/серверного положения, которое будет иметь общую систему защищенных баз данных, удобное управление, а также распределение полномочий по добавлению/изменению/удалению записей.

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

Sg1.cells

2

Начало

1

1. процедура выполнения действий при загрузке формы
FormShow.

Пояснения к алгоритму 1
Блок 2 – задание имен фиксированным столбцам в StringGrid.

3

memo1.Lines

Блок 3 – вывод в поле
memo сообщения о запуске.

Начало

1

2. процедура очистки
StringGrid
CleanSG.

n2=1, Sg1.Rowcount,1

2

Пояснения к алгоритму 2

Sg1.rows[n2].clear

Блок 2 – цикл перемещения по строкам
StringGrid.

3

Блок 3 – очистка строки
StringGrid.

3. процедура очистки edit-ов clearedit.

2

Пояснения к алгоритму 3

edit1.clear

Блоки 2-6 – очистка
edit-ов.

4

6

4. процедура создания новой базы button4click.

Пояснения к алгоритму 4

Нет

Да

2

messagedlg

Блок 2 – запрос удаления несохраненных данных.

Блок 3 – вызов процедуры.

cleansg

3

Блок 4 – вывод в поле
memo подтверждение создания базы.

5. процедура добавления записи button1click.
Пояснения к алгоритму 5
Блок 2 – проверка edit-ов на не пустые строки.
Блок 3 – попытка присвоить строке целочисленные переменные.
сообщение о необходимости полей 2…5 быть числом.
Блок 4 – задание начального условия цикла.
Блоки 5,6 – цикл очистки типового массива.
Блок 7 – задание начального условия цикла.
Блоки 8,9,10 – цикл перевода строки StringGrid в массив записей.
Блок 11 – задание начального условия цикла.
Блоки 12,13,14 – цикл нахождения количества записей больших добавленного значения.
Блок 13 – выполнение условия сравнения текстовых переменных.
Блоки 15,16 – междустрочное добавление записи в массив.
Блок 17 – вызов процедуры.
Блок 18 – задание начального условия цикла.
Блоки 19,20,21,22,23 – цикл перевода массива в StrinпGrid.
Блок 24 – вызов процедуры очистки edit-ов.
Блок 25 – вызов процедуры авторасчета.
сообщение о необходимости всех полей к обязательному заполнению.

12

19

6. процедура автоматического расчета autorachet.
Пояснения к алгоритму 6
Блок 2 – формирование цикла.
Блок 3 – условие математического расчета (при не пустой ячейке — выполняется).
Блок 4 – выполнение математических расчетов.
Блоки 5,6,7 – поиск максимального элемента.
Блок 8 – вывод в поле memo наименование статьи с наибольшим значением.

2

7. процедура сохранения базы button6click.
Пояснения к алгоритму 7
Блоки 2,3 – открытие для записи данных.
Блок 4 – задание начального условия цикла.
Блоки 5,6 – повторный цикл очистки массива.
Блок 7 – задание начального условия цикла.
Блоки 8,9,10 – повторение цикла перевода строки StringGrid в массив записей.
Блоки 11,12 – запись в файл.
Блок 13 – закрытие файла.
Блок 14 – вывод в поле memo подтверждения.

5

8. процедура открытия базы button5click.
Пояснения к алгоритму 8
Блоки 2,3 – открытие для чтения данных.
Блок 4 – задание начального условия цикла.
Блоки 5,6 – повторный цикл очистки массива.
Блоки 7,8,9 – чтение из типизированного файла в типизированный массив.
Блок 10 – вызов подтверждения очистки StringGrid.
Блок 11 – задание начального условия цикла.
Блоки 12,13,14,15,16 – повтор цикла перевода массива в StringGrid.
Блок 17 – вызов процедуры расчета.
Блок 18 – вывод в поле memo подтверждения.

9. процедура удаления базы button3click.
Пояснения к алгоритму 9
Блок 2 – очистка выбранной строки.
Блок 3 – задание начального условия цикла.
Блоки 4,5 – повторный цикл очистки массива.
Блок 6 – задание начального условия цикла.
Блоки 7,8,9 – повторение цикла перевода строки StrinGrid в массив записей.
Блок 10 – задание начального условия цикла.
Блоки 11,12,13,14,15 – повтор цикла перевода массива в StrinGrid.
Блок 16 – расчет.

15

16

10. клик StringGrid-а.
Пояснения к алгоритму 10

Начало

1

Блок 2 – подтверждение выбора.

2

3

11. вызов печати.
Пояснения к алгоритму 11

Начало

1

Блок 2 – вызов стандартного почтового клиента.

12. выход.
Пояснения к алгоритму 12

Начало

1

Блок 2 – выход из программы.

5. Форма представления исходных данных
По условию поставленной задачи необходимо предусмотреть хранение информации в типизированных файлах. Для решения данного вопроса, необходимо разработать типизированный элемент хранения данных – строку набора базы данных, роль которой в данном приложении будет выполнять переменная «zap», имеющая следующую структуру.
type zap=record
prod string[80];
onng longint;
plan longint;
onkg longint;
svocep extended;
end;
Т.е. данная переменная представляет собой линейный массив переменных данных необходимого нам типа. Для организации двумерного массива, опишем в разделе переменных массив «Mzap»
var
Mzap array[1..200] of zap; //объявление типа массива записей
Типизированный файл представляет собой набор типизированных элементов, структура и наименование которого описаны в вышеназванном разделе переменных
filezap file of zap;
filenamezap string;

6. Разработка интерфейса
Принимая во внимание поставленную ранее задачу, создаем на форме следующие визуальные компоненты
— StringGrid — для визуального отображения данных в табличной форме. Шапка таблицы будет повторять таблицу, указанную в начальном условии, и заполняется при открытии формы. Предустановленное максимальное количество строк – 100, столбцов – 7. Ширины столбцов выбираем в соответствии с размерностью данных.
— MEMO-поле для вывода данных, указанных в условии.
— 5 компонентов edit для добавления / изменения / удаления записей в базу данных (компоненты имеют ширину, соответствующую ширинам стобцов, и расположены напротив каждого столбца снизу) (см. рис. 1).

Рис.1. Общий вид приложения.
2 button-а для добавления и удаления записи, названных соответственно выполняемой функции. Так как для отображения информации в StringGrid используется текстовая форма, предусмотрено невозможность ввода текстовых данных в численные поля с выводом соответствующего сообщения, а также невозможность внесения «пустого» поля, так как все поля базы данных, необходимые для математического расчета по условиям задачи, должны быть обязательными для заполнения. Эти события регистрируются специальными предвартельными условиями и при обнаружения несоответствия выводится окно, отображающее наименование ошибки (см. рис.2 и рис.3).

Рис.2. Ошибка при добавлении пустого (пыстых) полей.

Рис.3. Ошибка при добавлении не численного значения.
— использованы стандартные диалоги OpenDialog и SaveDialog для предоставления пользователю возможности визуального выбора имени и пути типизированного файла для открытия либо для сохранения базы данных (См. рис.4).

Рис.4. Стандартное диалоговое окно для открытия базы данных.
Для вызова диалогов использованы 2 компонента button с соответствующими названиями. А для «обнуления» данных, т.е. создания новой базы использовать компонент button с подписью «создать базу».
Для дублирования функций программы и создания дополнительного удобства работы с приложением применен компонент menu с соответствующими подменю и подписями кнопок.
Расположение кнопок и других полей выбрано для гарантированного удобства работы с приложением.

7. Листинг программы
unit EconomInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Menus, StdCtrls,shellapi;
type
TForm1 = class(TForm)
sg1 TStringGrid;
MainMenu1 TMainMenu;
N1 TMenuItem;
N2 TMenuItem;
N3 TMenuItem;
N4 TMenuItem;
N5 TMenuItem;
N6 TMenuItem;
N7 TMenuItem;
N9 TMenuItem;
N10 TMenuItem;
N11 TMenuItem;
Memo1 TMemo;
Edit1 TEdit;
Edit2 TEdit;
Edit3 TEdit;
Edit4 TEdit;
Edit5 TEdit;
Button1 TButton;
Button3 TButton;
Button4 TButton;
Button5 TButton;
Button6 TButton;
OpenDialog1 TOpenDialog;
SaveDialog1 TSaveDialog;
N8 TMenuItem;
procedure FormShow(Sender TObject);
procedure cleansg(Sender TObject);
procedure cleanedit(Sender TObject);
procedure Button4Click(Sender TObject);
procedure Button1Click(Sender TObject);
procedure autorachet(Sender TObject);
procedure Button6Click(Sender TObject);
procedure Button5Click(Sender TObject);
procedure Button3Click(Sender TObject);
procedure sg1Click(Sender TObject);
procedure N8Click(Sender TObject);
procedure N5Click(Sender TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 TForm1;
implementation
{$R *.dfm}
type zap=record // объявление типа записи
prod string[80];
onng longint;
plan longint;
onkg longint;
svocep extended;
end;
var
Mzap array[1..200] of zap; //объявление типа массива записей
filezap file of zap;
filenamezap string;
//процедура выполнения действий при загрузке формы
procedure TForm1.FormShow(Sender TObject);
begin
with sg1 do begin
Cells[0,0] =’Наименование продукции’;
Cells[1,0] =’ОнНГ’;
Cells[2,0] =’ПВ’;
Cells[3,0] =’ОнКГ’;
Cells[4,0] =’ОР, шт’;
Cells[5,0] =’СвОЦЕП, руб’;
Cells[6,0] =’СвОЦВОР, т.руб’;
end;
memo1.Lines.Insert(0,DateTimeToStr(Now)+’ — Программа запущена!’);
end;
//процедура очистки стринггрида
procedure Tform1.cleansg(Sender TObject);
var n2 integer;
begin
with sg1 do begin
for n2 =1 to RowCount do begin
Rows[n2].Clear;
end;
end;
end;
//процедура очистки эдитов
procedure Tform1.cleanedit(Sender TObject);
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
end;
//Создание новой базы
procedure TForm1.Button4Click(Sender TObject);
begin
if messagedlg(‘Все несохраненные данные текушей базы будут стерты!’,mtconfirmation,mbYesNoCancel,0)=mrYes then begin
cleansg(Sender);
memo1.Lines.Insert(0,DateTimeToStr(Now)+’ — Новая база создана. Пожалуйста сохраните, задав новое имя.’);
end;
end;
//добавление записи
procedure TForm1.Button1Click(Sender TObject);
var n,k,l integer;o extended;
begin
//проверка на пустые поля edit-ов
if (edit1.Text<>») and (edit2.Text<>») and (edit3.Text<>») and (edit4.Text<>») and (edit5.Text<>») then
begin
try
n =strtoint(edit2.text);
n =strtoint(edit3.text);
n =strtoint(edit4.text);
o =strtofloat(edit5.text);
except
on EConvertError do messagedlg(‘Поля 2..5 должны быть числом!’,mterror,mbOKCancel,1);
end;
//цикл очистки массива записей
n =0;
repeat
Mzap[n].prod =»;
Mzap[n].onng =0;
Mzap[n].plan =0;
Mzap[n].onkg =0;
Mzap[n].svocep =0;
n =n+1;
until n>=200;
//цикл перевода строк stringgrid-a в массив записей
n =1;
repeat
if sg1.Cells[0,n]<>» then begin
Mzap[2*n].prod =sg1.Cells[0,n];
Mzap[2*n].onng =strtoint(sg1.cells[1,n]);
Mzap[2*n].plan =strtoint(sg1.cells[2,n]);
Mzap[2*n].onkg =strtoint(sg1.cells[3,n]);
Mzap[2*n].svocep =strtofloat(sg1.cells[5,n]);
end;
n =n+1;
until n>=sg1.RowCount;
//цикл нахождения количества записей больших добавляемого значения
n =1;l =0;
repeat
if (Mzap[2*n].prod<>») and (CompareText(edit1.Text,Mzap[2*n].prod)>0) then l =l+1;
n =n+1;
until n>=200;
//междустрочная запись в массив
k =2*l+1;
Mzap[k].prod =edit1.Text;
Mzap[k].onng =strtoint(edit2.text);
Mzap[k].plan =strtoint(edit3.text);
Mzap[k].onkg =strtoint(edit4.text);
Mzap[k].svocep =strtofloat(edit5.text);
cleansg(sender); //вызов очистки стрингрида
//цикл перевода массива записей в стринггрид
n =1;k =1;
repeat
if Mzap[n].prod<>» then begin
sg1.Cells[0,k] =Mzap[n].prod;
sg1.Cells[1,k] =inttostr(Mzap[n].onng);
sg1.Cells[2,k] =inttostr(Mzap[n].plan);
sg1.Cells[3,k] =inttostr(Mzap[n].onkg);
sg1.Cells[5,k] =floattostr(Mzap[n].svocep);
k =k+1;
end;
n =n+1;
until n>=200;
cleanedit(Sender); //вызов очистки эдитов
autorachet(sender);
end
else messagedlg(‘Все поля обязательна для заполенения!’,mterror,mbOKCancel,1); //вызов предупреждения
end;
//Процедура автоматического расчета
procedure Tform1.autorachet(Sender TObject);
var n,l longint; max extended;
begin
n =1;
max =0;
repeat
with sg1 do begin
if cells[0,n]<>» then begin
cells[4,n] =inttostr(strtoint(cells[1,n])+strtoint(cells[2,n])-strtoint(cells[3,n]));
cells[6,n] =floattostr(strtoint(cells[4,n])*strtofloat(cells[5,n])/1000);
if strtofloat(cells[6,n])>max then begin l =n; max =strtofloat(cells[6,n]);end;
end;
end;
n =n+1;
until n>=sg1.rowCount;
memo1.Lines.Insert(0,DateTimeToStr(Now)+’ — Расчет произведен. Максимальный СвОЦВОР ‘+floattostr(max)+’ руб. у ‘+sg1.cells[0,l]);
end;
procedure TForm1.Button6Click(Sender TObject);
var n longint;
begin
with savedialog1 do begin
title =’Сохранение базы’;
if execute then
begin
filenamezap =filename;
assignfile(filezap,filenamezap);
rewrite(filezap);
n =0;
repeat
Mzap[n].prod =»;
Mzap[n].onng =0;
Mzap[n].plan =0;
Mzap[n].onkg =0;
Mzap[n].svocep =0;
n =n+1;
until n>=200;
n =1;
repeat
if sg1.Cells[0,n]<>» then begin
Mzap[n].prod =sg1.Cells[0,n];
Mzap[n].onng =strtoint(sg1.cells[1,n]);
Mzap[n].plan =strtoint(sg1.cells[2,n]);
Mzap[n].onkg =strtoint(sg1.cells[3,n]);
Mzap[n].svocep =strtofloat(sg1.cells[5,n]);
end;
n =n+1;
until n>=sg1.RowCount;
for n =1 to 100 do write(filezap,mzap[n]);
closefile(filezap);
end;
end;
memo1.Lines.Insert(0,DateTimeToStr(Now)+’ — База сохранена под именем ‘+filenamezap);
end;
rocedure TForm1.Button5Click(Sender TObject);
var n,k longint;
begin
with opendialog1 do begin
title = ‘Открытие базы’;
if execute then
begin
filenamezap =filename;
assignfile(filezap,filenamezap);
reset(filezap);
n =0;
repeat
Mzap[n].prod =»;
Mzap[n].onng =0;
Mzap[n].plan =0;
Mzap[n].onkg =0;
Mzap[n].svocep =0;
n =n+1;
until n>=200;
n =1;
while not eof(filezap) do
begin
read(filezap,mzap[n]);
n =n+1;
end;
cleansg(sender);
n =0;k =1;
repeat
if Mzap[n].prod<>» then begin
sg1.Cells[0,k] =Mzap[n].prod;
sg1.Cells[1,k] =inttostr(Mzap[n].onng);
sg1.Cells[2,k] =inttostr(Mzap[n].plan);
sg1.Cells[3,k] =inttostr(Mzap[n].onkg);
sg1.Cells[5,k] =floattostr(Mzap[n].svocep);
k =k+1;
end;
n =n+1;
until n>=200;
autorachet(sender);
end;
end;
memo1.Lines.Insert(0,DateTimeToStr(Now)+’ — База ‘+filenamezap+ ‘ открыта’);
end;
//процедура удаления записи
procedure TForm1.Button3Click(Sender TObject);
var n,k longint;
begin
sg1.Rows[sg1.Row].Clear;
n =0;
repeat
Mzap[n].prod =»;
Mzap[n].onng =0;
Mzap[n].plan =0;
Mzap[n].onkg =0;
Mzap[n].svocep =0;
n =n+1;
until n>=200;
n =1;
repeat
if sg1.Cells[0,n]<>» then begin
Mzap[n].prod =sg1.Cells[0,n];
Mzap[n].onng =strtoint(sg1.cells[1,n]);
Mzap[n].plan =strtoint(sg1.cells[2,n]);
Mzap[n].onkg =strtoint(sg1.cells[3,n]);
Mzap[n].svocep =strtofloat(sg1.cells[5,n]);
end;
n =n+1;
until n>=sg1.RowCount;
cleansg(sender);
n =0;k =1;
repeat
if Mzap[n].prod<>» then begin
sg1.Cells[0,k] =Mzap[n].prod;
sg1.Cells[1,k] =inttostr(Mzap[n].onng);
sg1.Cells[2,k] =inttostr(Mzap[n].plan);
sg1.Cells[3,k] =inttostr(Mzap[n].onkg);
sg1.Cells[5,k] =floattostr(Mzap[n].svocep);
k =k+1;
cleanedit(Sender); //вызов очистки эдитов
end;
n =n+1;
until n>=200;
autorachet(sender);
end;
procedure TForm1.sg1Click(Sender TObject);
begin
edit1.Text =sg1.Cells[0,sg1.Row];
edit2.Text =sg1.Cells[1,sg1.Row];
edit3.Text =sg1.Cells[2,sg1.Row];
edit4.Text =sg1.Cells[3,sg1.Row];
edit5.Text =sg1.Cells[5,sg1.Row];
memo1.Lines.Insert(0,DateTimeToStr(Now)+’ — Запись № ‘+inttostr(sg1.Row)+ ‘ выбрана’);
end;
procedure TForm1.N8Click(Sender TObject);
begin
ShellExecute(form1.Handle, nil,PChar(‘mailto ultrix@tut.by?Subject=EcoInfo’),»,», 0);
end;
procedure TForm1.N5Click(Sender TObject);
begin
halt;
end;
end.

8. Результаты проведенных расчетов и их анализ.

В данной курсовой работе нам необходимо было рассчитать объем реализации и стоимость в оптовых ценах всего объема реализации продукции за плановый период. Для расчетов нам были даны исходные данные о выручке от реализации продукции за плановый период (Табл. 1).
Таблица1. Сведения о выручке от реализации продукции за плановый период.

Наименование продукции
Остатки на начало года
План выпуска
Остатки на конец года
Объем реализации, шт.
Стоимость в оптовых ценах единицы продукции, руб.
Стоимость в оптовых ценах всего объема реализации, тыс. руб.

1
2
3
4
5
6
7

Яблоко
711
40000
500

200000

Апельсин
236
80000
100

500150

Ананас
348
60000
200

400000

Мандарин
117
90000
50

550000

Грейпфрут
284
50000
150

450000

Банан
173
70000
300

350000

Абрикос
513
95000
450

300000

Персик
286
65000
600

250000

Виноград
482
85000
300

600000

Груша
136
40000
150

650000

Расчеты производились следующим образом
· Рассчитаем объем реализации продукции за плановый период. Объем реализации, в нашем, случае равен сумме остатков на начало года с планом выпуска за вычетом остатков на конец года по каждому виду реализованной продукции (Табл. 2).

Таблица2. Сведения о выручке от реализации продукции за плановый период.

Наименование продукции
Остатки на начало года
План выпуска
Остатки на конец года
Объем реализации, шт.
Стоимость в оптовых ценах единицы продукции, руб.
Стоимость в оптовых ценах всего объема реализации, тыс. руб.

1
2
3
4
5
6
7

Яблоко
711
40000
500
40211
200000

Апельсин
236
80000
100
80136
500150

Ананас
348
60000
200
60148
400000

Мандарин
117
90000
50
90067
550000

Грейпфрут
284
50000
150
50134
450000

Банан
173
70000
300
69873
350000

Абрикос
513
95000
450
95063
300000

Персик
286
65000
600
64686
250000

Виноград
482
85000
300
85182
600000

Груша
136
40000
150
39986
650000

· Зная стоимость в оптовых ценах единицы продукции, мы можем рассчитать стоимость в оптовых ценах всего объема реализации произведением объема реализации и стоимости в оптовых ценах единицы продукции (Табл. 3).
Таблица3. Сведения о выручке от реализации продукции за плановый период.

Наименование продукции
Остатки на начало года
План выпуска
Остатки на конец года
Объем реализации, шт.
Стоимость в оптовых ценах единицы продукции, руб.
Стоимость в оптовых ценах всего объема реализации, тыс. руб.

1
2
3
4
5
6
7

Яблоко
711
40000
500
40211
200000
8042200

Апельсин
236
80000
100
80136
500150
40080020,4

Ананас
348
60000
200
60148
400000
24059200

Мандарин
117
90000
50
90067
550000
49536850

Грейпфрут
284
50000
150
50134
450000
22560300

Банан
173
70000
300
69873
350000
24455550

Абрикос
513
95000
450
95063
300000
28518900

Персик
286
65000
600
64686
250000
16171500

Виноград
482
85000
300
85182
600000
51109200

Груша
136
40000
150
39986
650000
25990900

Анализируя данные расчета мы можем сказать, что наиболее выгодно для продавца производить и реализовывать по цене 600000 руб. виноград т.к. этот продукт наиболее востребован покупателем и производитель получит за него наибольшую прибыль (51109200 тыс. руб.). Также будет выгодно производить и реализовывать по цене 500150 и 550000 руб. апельсины и мандарины соответственно т.к. за реализацию этих продуктов производитель получит высокую прибыль (40080020,4 и 49536850 соответственно). При производстве таких продуктов как ананасы (400000 руб.), грейпфрут (22560300 руб.), банан (24455550 руб.), абрикос (28518900 руб.), персик (16171500 руб.), груша (25990900 руб.), производитель будет получать хорошую прибыль, но при разных объемах и цене от реализации, подстраиваясь под потребности покупателя. Эти продукты можно было производить под заказ для реализации сторонним покупателем в не основной деятельности. Не выгодным продуктом для производства и реализации по цене 200000 руб. и объеме 40000 шт. является яблоко т.к. этот продукт не приносит хорошей прибыли.
В результате анализа мы можем сделать вывод, что наиболее выгодно для предприятия производить и реализовывать виноград, апельсины и мандарины т.к. эти продукты наиболее востребованы потребителем и влечет большие прибыли для предприятия.
Все расчеты производились в созданной нами программе на алгоритмическом языке ObjectPascal в визуальной среде Delphi. Для удобства расчета и просматривания результатов все наименование товара автоматически располагается в алфавитном порядке. Наибольшую прибыль и результат расчета мы можем видеть в поле memo куда эти данные также заносятся автоматически (рис. 5).

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

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

Список использованной литературы
1. Архангельский А.Я. Программирование в Delphi 6 ––М. ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
2. Кандзюба С.П., Громов В.Н. Delphi 6. Базы данных и приложения. Лекции и упражнения. – К. Издательство «ДинСофт», 2001. – 576 с.
3. Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2001. – 672с.
4. Программирование в среде Delphi Лабораторный практикум для студентов всех специальностей. Под общей редакцией Синицына А.К. – Мн.; БГУИР, 1998. – 94 с.
5. Основы информатики и вычислительной техники. Методические указания к выполнению курсовой работы для студентов факультета предпринимательства и управления специальности Э 03. 02. 00 «Экономическая информатика». Фурунжиев Р.И. – Ротапринт БАТУ, Мн. 2000. – 25 с.
6. Архангельский А.Я. Программирование в Delphi 6 ––М. ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
7. Кандзюба С.П., Громов В.Н. Delphi 6. Базы данных и приложения. Лекции и упражнения. – К. Издательство «ДинСофт», 2001. – 576 с.
8. Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2001. – 672с.
9. Программирование в среде Delphi Лабораторный практикум для студентов всех специальностей. Под общей редакцией Синицына А.К. – Мн.; БГУИР, 1998. – 94 с.
10. Основы информатики и вычислительной техники. Методические указания к выполнению курсовой работы для студентов факультета предпринимательства и управления специальности Э 03. 02. 00 «Экономическая информатика». Фурунжиев Р.И. – Ротапринт БАТУ, Мн. 2000. – 25 с.

Приложения

К данному курсовому проекта прилагается магнитный носитель информации (дискета 3,5’’, 1,44Mb) с электронной версией пояснительной записки, полученным Windows-приложением (файл EcoInfo.exe), исходными текстами программы (файл EconomInfo.pas), а также другими необходимыми файлами для компиляции приложения.