Разработка алгоритма, схема алгоритма и его описание.



 

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

 

Sg1.cells

2

Начало

1

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

 

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

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

3

Memo1.Lines

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

 

4

 

Конец

 

 

Начало

1

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

 

 

n2=1, Sg1.Rowcount,1

2

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

Sg1.rows[n2].clear

 

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

3

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

 

 

Конец

4

 

 

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

1

 

Начало

 

 

2

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

Edit1.clear

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

 

А

 

B

 

 

3

Edit2.clear

 

4

 

Edit3.clear

 

5

Edit4.clear

 

6

 

Edit5.clear

 

Конец

7

 


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

1

Начало

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

Нет

Да

 2

Messagedlg

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

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

Cleansg

 3

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

 

 

 4

Memo1.lines.insert

 

7

Конец

 

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 – вызов процедуры авторасчета.

            сообщение о необходимости всех полей к обязательному заполнению.

Начало

1

 

Да

Нет

 

If edit1.text <>'' and edit2.text <>'' and edit3.text <>'' and edit4.text <>'' and edit5.text <>''

 2

 

 

А

 

Да

Нет

B

Messagedlg

 

Try:n=strtoint(edit2…5)

 3

 

 

n = 0

 4

 

n = 0, 200, 1

5

 

 6

 

Mzap[n].prod:='';

Mzap[n].onng:=0;

Mzap[n].plan:=0;

Mzap[n].onkg:=0;

Mzap[n].svocep:=0;

 

 

 7

 

n = 1

 

8

n = 1, sg1.rowcount, 1

 

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

Нет

Да

 9

 

 

D

C

 

B

А

 

D

C

B

А

 

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

10

 

n = 1, n = 0

11

 

 

12

 

n = 1, 200, 1

 

 

Нет

Да

13

 

 

(Mzap[2*n].prod<>'') and (CompareText(edit1.Text,Mzap[2*n].prod)>0)

 

14

L = L + 1

 

 

15

k = 2L + 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);

 

16

 

Cleansg

17

 

18

n = 1, k = 1

 

 

19

 

n = 1, 200, 1

 

 

Нет

Да

20

Mzap[n].prod<>''

 

 

D

C

B

А

 

 

D

C

B

А

 

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

 

21

 

 

22

k = k +1

 

 

n = n + 1

23

 

 

B

А

24

Cleanedit

 

Messagedlg

 

25

Autorachet

 

Конец

26

 

 

6. процедура автоматического расчета: autorachet.

 

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

Блок 2 – формирование цикла.

Блок 3 – условие математического расчета (при не пустой ячейке - выполняется).

Блок 4 – выполнение математических расчетов.

Блоки 5,6,7 – поиск максимального элемента.

Блок 8 – вывод в поле memo наименование статьи с наибольшим значением.


1

Начало

 

 

2

 

n = 1, sg1.rowcount, 1

 

 

Нет

Да

3

Sg1.cells[0,n]<>''

 

D

C

B

А

 

D

C

B

А

4

Sg1.cells[4,n]:=inttostr(strtoint(cells[1,n])+strtoint(cells[2,n])-strtoint(cells[3,n]));

 

Sg1.cells[6,n]:=floattostr(strtoint(cells[4,n])*strtofloat(cells[5,n])/1000);

 

Да

5

 

Нет

 

Sg1.cells[6,n]>max

 

6

L = n

 

 

max = Sg1.cells[6,n]

7

 

8

 

Memo1.lines

 

9

Конец

 

 

7. процедура сохранения базы: button6click.

 

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

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

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

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

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

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

Блоки 11,12 – запись в файл.

Блок 13 – закрытие файла.

Блок 14 – вывод в поле memo подтверждения.

 

1

Начало

 

assignfile(filezap,filenamezap);

 

2

 

rewrite(filezap);

n:=0;

 

3

 

 4

n = 0

 

 

5

 

n = 0, 200, 1

 

 

Mzap[n].prod:='';

Mzap[n].onng:=0;

Mzap[n].plan:=0;

Mzap[n].onkg:=0;

Mzap[n].svocep:=0;

 

 

 6

 

 

 7

 

n = 1

 

8

 

n = 1, sg1.rowcount, 1

 

 

Нет

Да

 9

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

 

10

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

 

 

n = 1, 100, 1

11

 

12

 

filezap, mzap[n]

 

 

А

 

А

13

сlosefile (filezap);

 

 

14

 

memo1.lines

 

 

15

Конец

 

 


8. процедура открытия базы: button5click.

 

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

Блоки 2,3 – открытие для чтения данных.

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

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

Блоки 7,8,9 – чтение из типизированного файла в типизированный массив.

Блок 10 – вызов подтверждения очистки StringGrid.

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

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

Блок 17 – вызов процедуры расчета.

Блок 18 – вывод в поле memo подтверждения.

1

 

Начало

 

assignfile(filezap,filenamezap);

 

2

 

reset(filezap);

n:=0;

 

3

 

 4

 

n = 0

 

n = 0, 200, 1

5

 

 

 6

Mzap[n].prod:='';

Mzap[n].onng:=0;

Mzap[n].plan:=0;

Mzap[n].onkg:=0;

Mzap[n].svocep:=0;

 

 

А

 

 


А

 

 7

while not eof(filezap)

 

 

8

filezap, mzap[n]

 

 

n = n + 1

 9

 

Cleansg

10

 

 

11

n = 1, k = 1

 

 

n = 1, 200, 1

12

 

 

Да

13

Mzap[n].prod<>''

Нет

 

14

 

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

 

15

 

k = k +1

 

 

16

n = n + 1

 

17

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

 

Конец

 

 


Дата добавления: 2018-10-26; просмотров: 202; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!