Инструкция пользователя

Запустим файл «Pavlyuchkov.exe», появится окно:

Выберите пункт №1 и введите исходные данные, после чего с ними можно будет произвести одно из действий:

2.Вывод исходных и расчётных данных на экран;

К удобству пользователя программа имеет функцию сохранения данных в файл для последующего использования. Для сохранения выберите пункт №3, введите имя сохраняемого файла, если файл с таким именем уже существует, программа спросит вас: Дописать данные в файл? Для согласия введите “Д”, в противном случае введите “Н” и прежде хранящаяся в файле информация будет заменена новыми данными. Для загрузки ранее сохранённой информации выберите пункт №4, ведите имя нужного файла, в случае отсутствия файла с таким именем, программа сообщит об ошибке.

Пункт №5. Сохранение в текстовый файл. Версия для печати. По окончании сохранения появится сообщение “Отчёт готов”. Текстовый файл “pe4at” вы найдёте в папке с данной программой.

Пункт №6.Вывод на экран данных запрашиваемых пользователем. Эта функция позволяет пользователю отфильтровать все данные и вывести на экран только искомые. После выбора этой функции введите значение минимальной стоимости инвентаря необходимого вам.

Функция под пунктом №7 позволяет произвести сортировку гр.3 по убыванию.

Пункт №8. Функция вывода максимального и минимального значений гр.4;

Удаление строки с соответствующим порядковым номером в случае неверного ввода данных. Для этого выберите пункт №9 и укажите порядковый номер строки, которую необходимо удалить.

10.Выход из программы.

Внимание: ключевой клавишей в данной программе является «Enter»,

ее следует нажимать при каждом запросе для дальнейшей работы программы.

Внимание: при запуске программы нужно расширить таблицу, для этого нажмите правой кнопкой мыши на вкладку программы на панели пуск, выберите графу “Свойства”, закладку “Расположение ” и установите ширину окна 500.

4.Исходный код

program Pavlyuchkov;

{$APPTYPE CONSOLE}

uses

SysUtils;

type

mebel=record

inum:word;

name:string[10];

cena:real;

pi:real;

ost:extended;

zos:string[10];

end;

mas=array[1..200]of mebel;

var

n,vsm:byte;

a:mas;

f:file of mebel;

ft:text;

function rus(a:string):string;

var i:byte;

begin

for i:=1 to length(a) do

begin

if (a[i]<='п') and (a[i]<>' ') and (a[i]<>':') and (a[i]<>'.')and (a[i]<>'"') and (a[i]<>'!') and(a[i]<>'/') then

a[i]:=chr(ord(a[i])-64);

if (a[i]>='р') and (a[i]<>' ') and (a[i]<>':') and (a[i]<>'.')and (a[i]<>'"') and (a[i]<>'!') and(a[i]<>'/') then

a[i]:=chr(ord(a[i])-16);

end;

rus:=a;

end;

function rus1(a:string):string;

var i:byte;

begin

for i:=1 to length(a) do

begin

if (a[i]<='п') and (a[i]<>' ') and (a[i]<>':') and (a[i]<>'"') and (a[i]<>'!') and(a[i]<>'/')and (a[i]<>',') then

a[i]:=chr(ord(a[i])+64);

if (a[i]>='р') and (a[i]<>' ') and (a[i]<>':') and (a[i]<>'"') and (a[i]<>'!') and(a[i]<>'/') and (a[i]<>'"') then

a[i]:=chr(ord(a[i])+16);

end;

rus1:=a;

end;

procedure vvod(var a:mas;var n:byte);

begin

inc(n);

write (rus('Введите инвентарный номер: '));

readln (a[n].inum);

write (rus('Введите наименование мебели: '));

readln (a[n].name);

write (rus('Введите стоимость: '));

readln (a[n].cena);

write (rus('Введите процент износа: '));

readln (a[n].pi);

a[n].ost:=a[n].cena-a[n].cena*a[n].pi/100;

if a[n].pi>80 then a[n].zos:= rus('Списать');

writeln; writeln;

end;

procedure vivod(a:mas;n:byte);

var i:byte;

icena:real; iost:extended;

begin

icena:=0;

iost:=0;

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln ('|',rus('Инвентарный'),'|',rus('Наименование'),'| ',rus('Цена'),' | ',rus('Процент'),' |',rus('Остаточная'),' | ',rus('Заключение'), ' |');

writeln ('| ',rus('номер'),' | ',rus('мебели'),' | ',rus('руб'),' | ',rus('износа'),' | ',rus('стоимость'),' | ',rus('о списании'), ' |');

writeln ('| ', ' | ', ' | ', ' | ', ' | ',rus('руб'),' | ', ' |');

writeln ('| ', ' | ', ' | ', ' | ', ' | ', ' | ', ' |');

writeln ('+-----------+------------+----------+----------+------------+------------+');

for i:= 1 to n do begin

write ('|',a[i].inum:10,' |');

write (a[i].name:12,'|');

write (a[i].cena:8:2,' |');

write (a[i].pi:8:2,' |');

write (a[i].ost:8:2,' |');

writeln (a[i].zos:9,' |');

icena:=icena+a[i].cena;

iost:=iost+a[i].ost;

end;

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln ('|',rus('Итого '),'| |',icena:8:2,' | ', ' |',iost:8:2,' | ', ' |');

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln ('|',rus('В среднем '),'| |',icena/n:8:2,' | ', ' |',iost/n:8:2,' | ', ' |');

writeln ('+-----------+------------+----------+----------+------------+------------+'); writeln; writeln;

end;

procedure save(a:mas;n:byte);

var i:byte; otvet:char; name:string;

Begin

writeln('Введите имя файла для сохранения');

readln(name);

assign(f,name);

{$i-}

reset(f);

{$i+}

if IOResult=0 then

Begin

writeln('Дописать данные в файл д/н ');

readln(otvet);

if otvet= 'д' then seek(f,filesize(f))

else rewrite(f);

End

Else

rewrite(f);

for i:=1 to n do

write(f,a[i]); { запись в файл из массива}

close(f);

writeln ('Данные сохранены');

writeln;

end;

procedure open(var a:mas;var n:byte);

var name:string;

Begin

writeln (rus('Введите имя сохраненного файла'));

readln(name);

assign(f,name);

{$i-}

reset(f);

{$i+}

if ioresult<>0 then writeln(rus('Ошибка открытия'))

Else

Begin

n:=0;

while (not eof(f)) and (n<200) do

Begin

inc(n);

read(f,a[n]); { запись в массив из файла}

end;

close(f);

end;

vivod(a,n);

end;

procedure otchet(a:mas;n:byte);

var i:byte;

icena:real;

iost:extended;

Begin

icena:=0;

iost:=0;

assign(ft,'pe4at.txt');

rewrite(ft);

writeln (ft,' ****************************');

writeln (ft,' Ведомость на списание мебели');

writeln (ft,' ****************************');

writeln;

writeln (ft,'+-----------+------------+----------+----------+------------+------------+');

writeln (ft,'|Инвентарный|Наименование| Цена | Процент |Остаточная | Заключение |');

writeln (ft,'| номер | мебели | руб | износа | стоимость | о списании |');

writeln (ft,'| | | | | руб | |');

writeln (ft,'| | | | | | |');

writeln (ft,'+-----------+------------+----------+----------+------------+------------+');

for i:=1 to n do begin

write (ft,'|',a[i].inum:10,' |');

write (ft,rus1(a[i].name):12,'|');

write (ft,a[i].cena:8:2,' |');

write (ft,a[i].pi:8:2,' |');

write (ft,a[i].ost:8:2,' |');

writeln (ft,rus1(a[i].zos):9,' |');

icena:=icena+a[i].cena;

iost:=iost+a[i].ost;

end;

writeln (ft,'+-----------+------------+----------+----------+------------+------------+');

writeln (ft,'|Итого | |',icena:8:2,' | |',iost:8:2,' | |');

writeln (ft,'+-----------+------------+----------+----------+------------+------------+');

writeln (ft,'|В среднем | |',icena/n:8:2,' | |',iost/n:8:2,' | |');

writeln (ft,'+-----------+------------+----------+----------+------------+------------+');

write (rus('Отчет готов')); writeln; writeln;

end;

procedure filtr(a:mas;n:byte);

var

m:word;

fl:boolean;

i:byte;

icena:real;

iost:extended;

begin

write(rus('Введите минимальную стоимость товара '));

readln (m);

fl:=false;

for i:=1 to n do

if (a[i].cena>m) and (not fl) then

begin

icena:=0;

iost:=0;

fl:=true;

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln ('|',rus('Инвентарный'),'|',rus('Наименование'),'| ',rus('Цена'),' | ',rus('Процент'),' |',rus('Остаточная'),' | ',rus('Заключение'), ' |');

writeln ('| ',rus('номер'),' | ',rus('мебели'),' | ',rus('руб'),' | ',rus('износа'),' | ',rus('стоимость'),' | ',rus('о списании'), ' |');

writeln ('| ', ' | ', ' | ', ' | ', ' | ',rus('руб'),' | ', ' |');

writeln ('| ', ' | ', ' | ', ' | ', ' | ', ' | ', ' |');

writeln ('+-----------+------------+----------+----------+------------+------------+');

write ('|',a[i].inum:10,' |');

write (a[i].name:12,'|');

write (a[i].cena:8:2,' |');

write (a[i].pi:8:2,' |');

write (a[i].ost:8:2,' |');

writeln (a[i].zos:9,' |');

icena:=icena+a[i].cena;

iost:=iost+a[i].ost;

end

else

if a[i].cena>m then

begin

write ('|',a[i].inum:10,' |');

write (a[i].name:12,'|');

write (a[i].cena:8:2,' |');

write (a[i].pi:8:2,' |');

write (a[i].ost:8:2,' |');

writeln (a[i].zos:9,' |');

icena:=icena+a[i].cena;

iost:=iost+a[i].ost;

end;

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln ('|',rus('Итого '),'| |',icena:8:2,' | ', ' |',iost:8:2,' | ', ' |');

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln ('|',rus('В среднем '),'| |',icena/n:8:2,' | ', ' |',iost/n:8:2,' | ', ' |');

writeln ('+-----------+------------+----------+----------+------------+------------+');

writeln; writeln;

end;

procedure sort (a:mas; n:byte);

var

i,j:byte; c:mebel;

begin

for i:=1 to n do

begin

for j:=i to n do

if a[j].cena >= a[i].cena then

begin

c:=a[i];

a[i]:=a[j];

a[j]:=c;

end;

end;

vivod(a,n);

end;

procedure max_min(var a:mas; n:byte);

var

max,min:real;

i:byte;

begin

max:=0;

for i:=1 to n do

begin

if a[i].pi>max then max:=a[i].pi;

end;

writeln(rus('Максимальный процент износа'),': ',max:5:2);

writeln;

min:=max;

for i:=1 to n do

begin

if a[i].pi<min then

min:=a[i].pi;

end;

writeln(rus('Минимальный процент износа'),': ',min:5:2);

writeln;

end;

procedure del(var a:mas;var n:byte);

var m,i,j:byte;

begin

writeln(rus('Введите'),' ',rus('номер'),' ',rus('удаляемой'),' ',rus('строки'));

readln(m);

for i:=1 to n do

begin

if m=i then

begin

for j:=m to n do

a[j]:=a[j+1];

end;

end;

n:=n-1;

vivod(a,n);

end;

begin

writeln ('****************************');

writeln (rus('Ведомость на списание мебели'));

writeln ('****************************');

writeln;

n:=0;

repeat

writeln(rus('Главное меню'));

writeln('1.',rus('Ввод данных'));

writeln('2.',rus('Вывод списка'));

writeln('3.',rus('Сохранить данные'));

writeln('4.',rus('Загрузить данные'));

writeln('5.',rus('Версия для печати'));

writeln('6.',rus('Поиск по критерию'));

writeln('7.',rus('Сортировка по цене'));

writeln('8.',rus('Макс'),'/',rus('мин процент износа'));

writeln('9.',rus('Удаление строки'));

writeln('10.',rus('Выход'));

write(rus('Выберите номер пункта'));write(': ');

readln (vsm);

writeln; writeln;

case vsm of

1:vvod(a,n);

2:vivod(a,n);

3:save (a,n);

4:open (a,n);

5:otchet (a,n);

6:filtr (a,n);

7:sort (a,n);

8:max_min (a,n);

9:del(a,n);

10:writeln (rus('Ура! '),'=]');

end;

until vsm=10;

readln;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: