Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач.rtf
Скачиваний:
1
Добавлен:
25.11.2019
Размер:
23.87 Mб
Скачать

Autorachet

А

А

Конец

memo1.lines

18

19

9. процедура удаления базы: button3click.

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

Блок 2 – очистка выбранной строки.

Блок 3 – задание начального условия цикла.

Блоки 4,5 – повторный цикл очистки массива.

Блок 6 – задание начального условия цикла.

Блоки 7,8,9 – повторение цикла перевода строки StrinGrid в массив записей.

Блок 10 – задание начального условия цикла.

Блоки 11,12,13,14,15 – повтор цикла перевода массива в StrinGrid.

Блок 16 – расчет.

1

Начало

2

sg1.Rows[sg1.Row].Clear;

n = 0, 200, 1

3

n = 0

Mzap[n].prod:='';

Mzap[n].onng:=0;

Mzap[n].plan:=0;

Mzap[n].onkg:=0;

Mzap[n].svocep:=0;

4

5

6

n = 1

7

n = 1, sg1.rowcount, 1

C

B

А

C

B

А

Нет

Да

8

sg1.Cells[0,n]<>''

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]);

9

n = n + 1

k = k +1

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);

Нет

Да

Mzap[n].prod<>''

n = 1, 200, 1

10

n = 1, k = 1

Autorachet

11

12

13

14

15

16

Конец

17

10. клик StringGrid-а.

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

Начало

1

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

2

memo1.lines

3

Конец

11. вызов печати.

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

Начало

1

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

2

shellexecute

3

Конец

12. выход.

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

Начало

1

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

1

halt

3

Конец

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 с соответствующими подменю и подписями кнопок.

Расположение кнопок и других полей выбрано для гарантированного удобства работы с приложением.