Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная по КП.doc
Скачиваний:
7
Добавлен:
16.12.2013
Размер:
203.78 Кб
Скачать

6.2.2. Задание на алгоритмизацию и программирование задач на файлы данных

Необходимо разработать алгоритм и написать программы для:

- создания файла данных;

- чтения созданного файла данных;

- добавления записей в созданный файл данных;

- обработка созданного файла данных по заданному условию.

7. Структура записи данных

Шифр товара

Наименование

Цена

План продажи

(руб)

Факт. Продано

(руб)

Напечатать в выходном документе:

Процент выполнения плана и фактическую денежную сумму реализации для произвольно заданного товара.

  1. Создание файла:

Нет

Да

Программа создания файла данных:

program Soz; {Программа создает типизированный файл.}

uses crt;

type t=record

shifr:string[6]; {Шифр товара}

naim:string[12]; {Наименование}

cena:real; {Цена}

plan:real; {План продажи}

fact:real; {Факт. продано}

end;

var

fl:file of t; {Файловая переменная}

d:t; {Переменная для обмена}

im:String[12]; {Строковая переменная для имени файла}

p:Byte; {переменная используемая для циклов}

begin

ClrScr; {Очистка экрана}

Write('Введите имя файла который будет создан (маска: ????????.???):');

ReadLn(im);

WriteLn;

assign(fl,im); {Связывание файловой переменной fl}

rewrite(fl); {Открытие файла для создания}

p:=1;

while p=1 do {Выполнить пока есть данные}

begin

Write('Введите шифр товара (не более 6 символов):');

ReadLn(d.shifr);

Write('Введите наименование товара (не более 12 символов):');

ReadLn(d.naim);

Write('Введите цену товара :');

ReadLn(d.cena);

Write('Введите план продажи (руб):');

ReadLn(d.plan);

Write('Введите сколько факт. продано(руб):');

ReadLn(d.fact);

write(fl,d); {Запись данных в файл}

Write('Будете продолжать вводить данные? (Да - 1; Нет - 0):');

ReadLn(p);

end;

close(fl); {Закрытие файла}

end.

Пример выполнения программы:

  1. Чтение файла:

Нет

Да

Да

Нет

Да

Нет

Да

Нет

Программа чтения файла данных:

program Chten; {Программа считывает данные из файла данных и выводит на экран}

uses crt;

type t=record

shifr:string[6];

naim:string[12];

cena:real;

plan:real;

fact:real;

end;

var

fl:file of t;

d:t;

im:String[12];

osh:Boolean; {Логическая переменная для проверки существования файла, который

открывается}

p:byte;

begin

osh:=True; {Задание начальных значений}

while Osh do {Задавать вопрос о открытии файла пока не будет введено правильное}

{имя файла}

begin

ClrScr;

Write('Введите имя созданного ранее файла (маска: ????????.???):');

ReadLn(im);

WriteLn;

assign(fl,im);

{$I-} {Отключаем контроль ошибок ввода-вывода}

reset(fl); {Открыть файл для обработки}

{$I+} {Включаем контроль ошибок ввода-вывода}

If IOResult<>0 then

begin

WriteLn('Такого файла не существует.');

Write('Хотите ввести другое имя (Да - 1; Нет - 0):');

ReadLn(p);

If p=1 Then Osh:=true

Else halt;

end

Else Osh:=False;

end;

ClrScr;

WriteLn('┌──────┬────────────┬────────────┬────────────┬────────────┐');

WriteLn('│ Шифр │Наименование│ Цена │План продажи│Факт.Продано│');

WriteLn('│товара│ │ │ (руб) │ (руб) │');

WriteLn('├──────┼────────────┼────────────┼────────────┼────────────┤');

while not eof(fl) do {Продолжать до тех пор пока не будет достигнут конец файла}

begin

with d do begin

Read(fl,d); {Считывание данных из файла}

WriteLn('│',shifr:6,'│',naim:12,'│',cena:12:2,'│',plan:12:2,'│',fact:12:2,'│');

end; {Вывод данных на экран.}

end;

ReadLn;

Close(fl); {Закрытие файла}

end.

Пример выполнения программы:

  1. Добавление записей:

Нет

Да

Да

Нет

Нет

Да Да

Нет

Программа добавления записей в файл данных:

program Dobav; {Программа добавляет в файл данных новые данные}

uses crt;

type t=record

shifr:string[6];

naim:string[12];

cena:real;

plan:real;

fact:real;

end;

var

fl:file of t;

d:t;

im:String[12];

p:Byte;

Osh:Boolean;

l:Integer; {Счетчик}

begin

osh:=True;

while Osh do

begin

ClrScr;

Write('Введите имя созданного ранее файла (маска: ????????.???):');

ReadLn(im);

WriteLn;

assign(fl,im);

{$I-}

reset(fl);

{$I+}

If IOResult<>0 then

begin

WriteLn('Такого файла не существует.');

Write('Хотите ввести другое имя (Да - 1; Нет - 0):');

ReadLn(p);

If p=1 Then Osh:=true

Else halt;

end

Else Osh:=False;

end;

l:=filesize(fl); {Определение количества записей в файле}

seek(fl,l); {Установка указателя за пределы файла, чтобы новые данные добавлялись}

{ в конце файла}.

WriteLn('Введите новые данные.');

p:=1;

while p=1 do

begin

Write('Введите шифр товара (не более 6 символов):');

ReadLn(d.shifr);

Write('Введите наименование товара (не более 12 символов):');

ReadLn(d.naim);

Write('Введите цену товара :');

ReadLn(d.cena);

Write('Введите план продажи (руб):');

ReadLn(d.plan);

Write('Введите сколько факт. продано(руб):');

ReadLn(d.fact);

write(fl,d);

Write('Будете продолжать вводить данные? (Да - 1; Нет - 0):');

ReadLn(p);

end;

close(fl);

end.

Пример выполнения программы:

  1. Обработка записей:

Нет

Да

Нет

Закрыть файл

Да

Да

Да

Нет

Нет

Нет

Нет

Да

Программа обработки записей в файле данных:

program Obrab; {Программа по обработке файла данных по определенному условию}

uses crt;

type t=record

shifr:string[6];

naim:string[12];

cena:real;

plan:real;

fact:real;

end;

var

fl:file of t;

d:t;

im:String[12];

Vern, osh:Boolean; {Vern\ True – если поиск параметров был успешен

False – если поиск не успешен}

p:byte;

st:String;

pr:Real;

begin

osh:=True;

while Osh do

begin

ClrScr; {Очистка экрана}

Write('Введите имя созданного ранее файла (маска: ????????.???):');

ReadLn(im);

WriteLn;

assign(fl,im);

{$I-}

reset(fl);

{$I+}

If IOResult<>0 then

begin

WriteLn('Такого файла не существует.');

Write('Хотите ввести другое имя (Да - 1; Нет - 0):');

ReadLn(p);

If p=1 Then Osh:=true

Else halt;

end

Else Osh:=False;

end;

p:=1;

while p=1 do begin { Пока р=1, исходные данные для ввода есть}

ClrScr;

p:=1;

Write('По каким параметрам будите искать: (Шифр товара - 2, Наименование - 3):');

ReadLn(p);

Write('Введите какой товар будете искать: ');

ReadLn(st);

{Вывод шапки таблицы} WriteLn('┌──────┬────────────┬────────────┬────────────┬────────────┬────────────┐');

WriteLn('│ Шифр │Наименование│ Цена │План продажи│Факт.Продано│Процент вып.│');

WriteLn('│товара│ │ │ (руб) │ (руб) │ плана │');

WriteLn('├──────┼────────────┼────────────┼────────────┼────────────┼────────────┤');

Vern:=False;

while not eof(fl) do {Пока не достигнут конец файла}

begin

with d do begin {Работа с типизированной переменной d}

Read(fl,d);

If p=2 Then begin {Анализирование данных из файла по условию поиска}

If st=shifr Then

Vern:=True;

end

Else If p=3 Then begin {Анализирование данных из файла по условию поиска}

If st=naim Then

Vern:=True;

end;

If Vern Then begin {Если поиск успешен вычисляем проценты.}

pr:=(fact/plan)*100;

WriteLn('│',shifr:6,'│',naim:12,'│',cena:12:2,'│',plan:12:2,'│',fact:12:2,'│',pr:12:2,'│'); {Вывод данных на экран}

Break;

end;

end;

end;

If not Vern Then WriteLn('Вы ввели не правильный параметр.');

Write('Хотите продолжить? (Да - 1; Нет - 0):');

ReadLn(p);

end;

ReadLn;

Close(fl);

end.

Пример выполнения программы: