Помощь в написании студенческих работ
Антистрессовый сервис

Обработка набора данных, представленного в виде файла

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Целью данной курсовой работы является практическая обработка набора данных, представленного в виде файла. В данной работе необходимо обеспечить реализацию следующих запросов к заданному множеству структурированной информации: Для удаления элементов, начиная от текущего нужно выбрать элемент, а затем выбрать в меню пункт «Удаление элементов, начиная от текущего», после этого программа удалит все… Читать ещё >

Обработка набора данных, представленного в виде файла (реферат, курсовая, диплом, контрольная)

Целью данной курсовой работы является практическая обработка набора данных, представленного в виде файла. В данной работе необходимо обеспечить реализацию следующих запросов к заданному множеству структурированной информации:

Создание набора данных.

Добавление новых элементов в конец набора данных.

Просмотр всех элементов набора данных.

Поиск элемента по номеру.

Переход к работе с другим набором данных.

В соответствии с заданием моего варианта необходимо обеспечить реализацию двух запросов к заданному множеству структурированной информации:

1 Удаление, элементов начиная от текущего

2 Просмотр элементов и вычисление среднего, минимума и максимума из заданного диапазона Множество данных должно представлять собой информацию об абонентах АТС:

фамилия (string);

оплата в месяц (longint);

номер АТС (integer);

дополнительные средства связи: факс-модем, модем, факс, отсутствуют (перечислимый тип).

Условия и ограничения, которые должны быть соблюдены при написании данного программного комплекса:

1 Главную процедуру программы с реализацией простейшего меню следует определить в отдельном модуле.

2 Процедуры, реализующие запросы, должны быть размещены в одном или более модулях.

3 Глобальные данные: Спецификация файла. Никаких других глобальных переменных использовать нельзя.

4 Вместе с меню на экране должно быть отображено:

номер текущего элемента;

содержимое текущего элемента.

5 На экран выводить элементы в виде таблицы (один элемент — одна строка таблицы).

6 Если после выполнения запроса изменяется хотя бы один элемент, то заканчивать запрос выводом всего множества элементов.

7 Тестами к заданиям служат 2 НД с правдоподобной информацией.

1. Описание программного комплекса

1.1 Структура программного комплекса

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

Главная программа подключает следующие модули: crt, menu, sozd, perehod, vivod, poisk, dobavlenie, udalenie, sredmaxmin

Псевдокод программы kursach:

Program kursach;

uses crt, menu, sozd, perehod, vivod, poisk, dobavlenie, udalenie{, sredmaxmin};

const kolvo=8; x=1; y=1;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

var mass: mymenu;

long:integer;

name:string;

zap:zapis;

{процедура прорисовки меню}

procedure vertmenu (mas:mymenu; x, y, kol: integer; var long: integer);

var max, i, j: integer; l: byte; key: char;

begin

{нахождение максимальной строки}

{дополнение всех строк до максимальной}

{прорисовка рабочего окна}

for i:=1 to kol do

{вывод полей меню}

{end for i:=1 to kol do}

{инициализация long}

{подсветка первого поля меню}

repeat

{инициализация l}

{определение кода нажатой клавиши}

{реакция на нажатие командных клавиш}

{прорисовка поля меню в исходный цвет}

{подсветка следующего выбранного поля меню}

until false

{end repeat}

end;

{процедура отключения курсора}

procedure cursor_off;

{процедура включения курсора}

procedure cursor_on;

{процедура очистки экрана}

procedure stir;

begin

{прорисовка рабочего окна}

{инициализация полей меню}

{вызов процедуры отключения курсора}

repeat

{вывод меню}

case long of

{вызов процедур в соответствии с выбранным пунктом меню}

1:begin

{очистка экрана и включение курсора}

{вызов процедуры создания нд}

{очистка экрана и отключение курсора}

{вывод меню}

end;

2:begin

{очистка экрана и включение курсора}

{вызов процедуры добавления элементов в конец нд}

{очистка экрана и отключение курсора}

{вывод меню}

end;

3:begin

{очистка экрана}

{вызов процедуры вывода нд}

{очистка экрана}

{вывод меню}

end;

4:begin

{включение курсора}

{вызов процедуры поиска элемента}

{отключение курсора}

end;

5:begin

{очистка экрана и включение курсора}

{вызов процедуры перехода к работе с другим нд}

{очистка экрана и отключение курсора}

{вывод меню}

end;

6:begin

{очистка экрана и включение курсора}

{вызов процедуры создания нд по ключевому полю}

{очистка экрана и отключение курсора}

{вывод меню}

end;

7:begin

{очистка экрана и включение курсора}

{вызов процедуры добавления всех эл-тов в другой нд}

{очистка экрана и отключение курсора}

{вывод меню}

end;

end;

until long=kolvo;

{end repeat}

end;

end.

1.2 Описание модуля sozd. tpu

программный модуль данные файл

В модуле sozd. tpu описана процедура sozdanienab и типы создаваемого множества данных.

Описательная часть модуля:

unit sozd;

interface

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure sozdanie_nd;

implementation

Процедура sozdanienab создает новый набор данных.

Псевдокод процедуры sozdanienab:

procedure sozdanienab;

var fail: file of zapis;

zap:zapis;

i, n, tg: integer;

name:string;

begin

{ввод имени создаваемого файла}

{связывание переменной fail с набором данных}

{открытие файла fail для записи}

{ввод количества элементов n}

for i:=1 to n do

begin

{ввод данных}

{запись данных в файл}

end;

{end for i:=1 to n}

{закрытие файла}

end;

1.3 Описание модуля dobavlenie. tpu

В модуле dobavlenie. tpu описана процедура dobavleniek и типы, необходимые для работы с множеством данных.

Описательная часть модуля:

unit dobavlenie;

interface

uses vivod;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure dobavleniek (name:string);

implementation

Процедура dobavleniek добавляет элементы в конец набора данных. В эту процедуру передается переменная name (имя файла).

Псевдокод процедуры dobavleniek:

procedure dobavleniek;

var fail: file of zapis;

zap:zapis;

i, n, tg, max: integer;

sredstvastr, oplatastr: string;

begin

{связывание переменной fail с набором данных}

{открытие файла fail для записи}

{поиск последнего эл-та и установка указателя в конец файла}

{ввод кол-ва добавляемых элементов}

for i:=max+1 to n+max do

begin

{ввод данных}

{запись данных в файл}

end;

{end for}

{закрытие файла}

{вывод нд}

end;

1.4 Описание модуля vivod. tpu

В модуле vivod. tpu описана процедура vivodnab и типы, необходимые для работы с множеством данных.

Описательная часть модуля:

unit vivod;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure vivodnab (name:string);

implementation

Процедура vivodnab обеспечивает вывод набора данных на экран в виде таблицы и скроллинг таблицы, если она не помещается в окне. В эту процедуру передается переменная name (имя файла).

Псевдокод процедуры vivodnab:

procedure vivodnab;

var stroka: array [1.50] of string[80];

i:integer;

zap:zapis;

sredstvastr, oplatastr: string;

fail:file of zapis;

k, m, a, l: integer;

key:char;

begin

{связывание переменной fail с нд и открытие файла}

{инициализация k}

{инициализация stroka[1] и stroka[2]}

repeat

{чтение данных из файла}

{перевод данных в строковый тип}

{запись строк таблицы в массив строк}

{подготовка следующей итерации}

until eof (fail);

{end repeat}

{инициализация последней строки}

{отключение курсора}

{прорисовка рабочего окна}

{вывод первых 25-ти строк}

{инициализация m}

repeat

{определение кода нажатой клавиши}

case key of

{реакция на нажатие командых клавиш}

end;

{end case key of}

{инициализация l}

for a:=m to m+24 do

{вывод строк в соответсвии с нажатой клавишей}

until key=#27;

{end repeat}

{закрытие файла}

end;

1.5 Описание модуля poisk. tpu

В модуле poisk. tpu описана процедура poiskel и типы, необходимые для работы с множеством данных.

Описательная часть модуля:

unit poisk;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure poiskel (imya_faila:string);

implementation

Процедура poiskel обеспечивает поиск в наборе данных поиск элемента по номеру и вывод этого элемента вместе с главным меню. В эту процедуру передается переменная name (имя файла).

Псевдокод процедуры poiskel:

procedure poiskel;

var fail: file of zapis;

n, i: byte;

sredstvastr, nomstr, oplatastr: string;

zap:zapis;

begin

{прорисовка рабочего окна}

{ввод номера элемента}

{связывание файла с нд}

{открытие файла}

{нахождение максимального номера и проверка введенного номера}

{установка указателя на начало файла}

repeat

{чтение из файла}

{перевод данных из файла в строковое представление}

if zap. nom=n then

{вывод элемента}

{end if}

until eof (fail);

{end repeat}

{закрытие файла}

end;

1.6 Описание модуля perehod. tpu

В модуле perehod. tpu описана процедура perehodnab.

Описательная часть модуля:

unit perehod;

interface

procedure perehodnab (var name: string);

implementation

Процедура perehodnab выполняет переход к работе с другим набором данных. Из этой процедуры в главную передается переменная name (имя файла).

Псевдокод процедуры perehodnab:

procedure perehodnab;

var fail: file;

begin

{ввод имени файла}

{связывание файла с нд}

{проверка вводавывода}

end;

1.7 Описание модуля udalenie. tpu

В модуле udalenie. tpu описана процедура udelenieel.

Описательная часть модуля:

unit sozd_key;

interface

uses crt, vivod;

const x=1; y=2; kol=4;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure udalenieel (name:string; nom: integer);

implementation

Процедура udelenieel удаляет данные начиная от текущуго номера. В эту процедуру передается переменная name (имя файла).

Псевдокод процедуры udalenieel:

procedure udalenieel (name:string; nom: integer);

{открытие файла}

{удаление файла}

end;

end.

1.8 Описание модуля sredmaxmin. tpu:

В модуле sredmaxmin. tpu описана процедура nahojdenie. Также в модуле описаны типы, необходимые для работы с множеством данных.

Описательная часть модуля:

unit sredmaxmin;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure naxogdenie (name:string);

implementation

Процедура nahojdenie обеспечивает нахождение среднего, максимального и минимального элементов текущего набора данных. В эту процедуру передается переменная name (имя исходного файла).

Псевдокод процедуры dobavlenie:

procedure naxogdenie (name:string);

var fail: file of zapis;

zap:zapis;

verh, niz, min, max, i, j, k: integer;

kol_vo:array [1.100] of integer;

sum, sredn: real;

sredstvastr, oplatastr: string;

begin

{ввод нижней и верхней границы}

{вывод шапки таблицы}

repeat

{вывод эллементов попавших в данный диапазон}

until eof (fileout);

{end repeat}

{вычисление среднего, максимального и минимального эллементов}

{вывод эллементов}

end;

2. Описание работы программы по контрольному примеру

Программ начинается с вывода меню. Для передвижения по пунктам меню нужно использовать клавиши «Вверх» и «Вниз» (Рисунок 1).

Рисунок 1 — Главное меню

2.1 Создание набора данных

Чтобы создать новый набор данных, нужно выбрать в меню пункт «Создать новый НД». После выбора программа попросит ввести имя создаваемого файла, затем количество элементов, после чего мы приступим к вводу самих элементов. После завершения ввода программа вернется в меню. Создадим набор данных, состоящий из трех элементов (рисунок 2), и выведем его (рисунок 3).

Рисунок 2 — Создание набора данных

2.2 Добавление элементов в конец набора данных

Чтобы добавить в уже существующий набор данных новые элементы, нужно выбрать в меню пункт «Добавить элементы в конец НД». Программа попросит ввести количество добавляемых элементов, после ввода количества мы сможем ввести сами элементы. На на рисунке 5 — процесс добавления элементов, на рисунке 6 — конечное состояние набора данных.

Рисунок 5 — Добавление элементов в конец нд Рисунок 6 — Конечное состояние нд

2.3 Просмотр всех элементов набора данных

Для просмотра всех элементов набора данных нужно выбрать в меню пункт «Просмотреть все элементы НД». Если таблица с элементами не будет помещаться в окно, программа обеспечит скроллинг при помощи клавиш «Вверх», «Вниз», «PageUp» и «PageDown» (рисунки 7 и 8).

Рисунок 7 — Вывод набора данных (Часть 1)

Рисунок 8 — Вывод набора данных (Часть 2)

2.4 Поиск элемента по номеру

Для поиска элемента в наборе данных по номеру необходимо выбрать в меню пункт «Найти элемент по номеру», ввести номер, после чего программа выведет данный элемент. Для примера возьмем набор данных из предыдущего примера и выведем второй элемент.

Рисунок 9 — Поиск элемента по номеру

2.5 Переход к работе с другим набором данных

Для перехода к работе с другим набором данных нужно выбрать в меню пункт «Перейти к работе с другим НД» и ввести имя файла, который нам нужно открыть. В примере, изображенном на рисунках 11 и 12 я перейду от нд из пункта 2.3 к нд из пункта 2.2.

Рисунок 10 — Переход к работе с другим нд Рисунок 11 — Вывод нд, к которому перешли

2.6 Удаление элементов, начиная от текущего

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

Рисунок 13 — Ввод имени создаваемого файла Рисунок 16 — Вывод созданного набора данных

2.7 Просмотр элементов и вычисление среднего, минимума и масимума из заданного диапазона

Для просмотра элементов и вычисление среднего, минимума и масимума из заданного диапазона нужно выбрать в меню пункт «Просмотр элементов и вычисление среднего, минимума и масимума из заданного диапазона», после чего программа попросит ввести верхний и нижний дивпазоны (рисунок 17).

Рисунок 17 — Ввод нижнего и верхнего диапазонов Рисунок 18 — Вывод результата

Заключение

Итогом выполнения данной курсовой работы является написание программного комплекса по обработке набора данных. В результате написания программного комплекса, я закрепил свои знания по основам алгоритмизации и программирования, углубил свои знания по алгоритмическому языку Pascal, получил опыт разработки программных комплексов и на практике освоил основы модульного программирования. Все условия данной курсовой работы были соблюдены. Все запросы выполняются корректно.

Список использованных источников

Исходники.ру [Электронный ресурс]. — 2012. — Режим доступа:

http://forum.sources.ru. — Дата доступа: 15.05.2012.

Зуев, Е. А. Программирование на языке Turbo Pascal 6.0, 7.0 / Е. А. Зуев. — Радио и связь, Веста, 1993. — С. 215−227.

Приложение

Текст главной программы:

program kursach;

uses crt, menu, sozd, perehod, vivod, poisk, dobavlenie, udalenie, sredmaxmin;

const kolvo=8; x=1; y=1;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

var mas: mymenu;

long:integer;

name:string;

zap:zapis;

procedure cursor_off;

begin

asm

mov ah, 1

mov cx, 2020h

int 10h

end;

end;

procedure cursor_on;

assembler;

asm

mov ah, 1

mov cx, 0607h

int 10h

end;

procedure stir;

begin

window (1,1,80,25);

textbackground (black);

textcolor (white);

clrscr;

end;

begin

window (1,1,80,25);

textcolor (white);

textbackground (black);

mas[1]: ='Создать новый НД';

mas[2]: ='Добавить элементы в конец НД';

mas[3]: ='Просмотреть все элементы НД';

mas[4]: ='Найти элемент по номеру';

mas[5]: ='Перейти к работе с другим НД';

mas[6]: ='Удаление элементов, начиная от текущего';

mas[7]: ='Просмотр элементов и вычисление среднего, минимума и максимума';

mas[8]: ='Выход';

clrscr;

cursor_off;

repeat

vertmenu (mas, x, y, kolvo, long);

case long of

1:begin

stir;

cursor_on;

sozdanienab;

clrscr;

cursor_off;

vertmenu (mas, x, y, kolvo, long);

end;

2:begin

stir;

cursor_on;

dobavleniek (name);

clrscr;

cursor_off;

vertmenu (mas, x, y, kolvo, long);

end;

3:begin

stir;

vivodnab (name);

clrscr;

vertmenu (mas, x, y, kolvo, long);

end;

4:begin

cursor_on;

poiskel (name);

cursor_off;

end;

5:begin

stir;

cursor_on;

perehodnab (name);

clrscr;

cursor_off;

vertmenu (mas, x, y, kolvo, long);

end;

6:begin

stir;

cursor_on;

udalenieel (name, nom);

clrscr;

cursor_off;

vertmenu (mas, x, y, kolvo, long);

end;

7:begin

stir;

cursor_on;

naxogdenie (name);

clrscr;

cursor_off;

vertmenu (mas, x, y, kolvo, long);

end;

end;

{end case}

until long=kolvo;

{end repeat}

end.

Текст модуля sozd.tpu:

unit sozd;

interface

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure sozdanienab;

implementation

procedure sozdanienab;

var fail: file of zapis;

zap:zapis;

i, n, tg: integer;

name:string;

begin

writeln ('введите имя файла');

readln (name);

assign (fail, name);

rewrite (fail);

writeln ('введите количество элементов');

readln (n);

for i:=1 to n do

begin

writeln ('введите фамилию');

readln (zap.familiya);

writeln ('введите оплату');

readln (zap.oplata);

writeln ('введите номер');

readln (zap.nomerATS);

writeln ('выберите дополнительное средство');

writeln ('1 — факс-модем');

writeln ('2 — модем');

writeln ('3 — факс');

writeln ('4 — нету');

repeat

readln (tg);

if (tg<1) or (tg>4) then

writeln ('ошибка, введите заново');

until (tg>=1) and (tg<=4);

{end repeat}

case tg of

1:zap.sredstva:=faxmodem;

2:zap.sredstva:=modem;

3:zap.sredstva:=fax;

4:zap.sredstva:=nety;

end;

{end case}

zap.nom:=i;

write (fail, zap);

end;

{end for}

close (fail);

readln;

end;

end.

Текст модуля dobavlenie.tpu:

unit dobavlenie;

interface

uses vivod;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure dobavleniek (name:string);

implementation

procedure dobavleniek;

var fail: file of zapis;

zap:zapis;

i, n, tg, max: integer;

sredstvastr, oplatastr: string;

begin

assign (fail, name);

reset (fail);

repeat

read (fail, zap);

if zap. nom>max then

max:=zap.nom;

until eof (fail);

{end repeat}

seek (fail, max);

writeln ('введите количество добавляемых элементов');

readln (n);

for i:=max+1 to n+max do

begin

writeln ('введите фамилию');

readln (zap.familiya);

writeln ('введите оплату в месяц');

readln (zap.oplata);

writeln ('введите номер');

readln (zap.nomerATS);

writeln ('выберите дополнительные средства');

writeln ('1 — факс-модем');

writeln ('2 — модем');

writeln ('3 — факс');

writeln ('4 — отсутствует');

repeat

readln (tg);

if (tg<1) or (tg>4) then

writeln ('ошибка, введите заново');

until (tg>=1) and (tg<=4);

{end repeat}

case tg of

1:zap.sredstva:=faxmodem;

2:zap.sredstva:=modem;

3:zap.sredstva:=fax;

4:zap.sredstva:=nety;

end;

{end case}

zap.nom:=i;

write (fail, zap);

end;

{end for}

vivodnab (name);

close (fail);

end;

end.

Текст модуля vivod.tpu:

unit vivod;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure vivodnab (name:string);

implementation

procedure vivodnab;

var stroka: array [1.50] of string[80];

i:integer;

zap:zapis;

sredstvastr, oplatastr, nomerATSstr: string;

fail:file of zapis;

k, m, a, l: integer;

key:char;

begin

assign (fail, name);

reset (fail);

k:=3;

stroka[1]: ='г==========T=========T==========T===============';

stroka[2]:='¦ Фамилия ¦ Оплата ¦ Номер ¦ Доп. средства ¦';

repeat

read (fail, zap);

for i:=length (zap.familiya) to 9 do

zap.familiya:=' '+zap.familiya;

{end for}

case ord (zap.sredstva)+1 of

1:sredstvastr:=' факс-модем';

2:sredstvastr:=' модем';

3:sredstvastr:=' факс';

4:sredstvastr:=' нету';

end;

{end case}

str (zap.oplata, oplatastr);

for i:=length (oplatastr) to 8 do

oplatastr:=oplatastr+' ';

{end for}

str (zap.nomerATS, nomerATSstr);

for i:=length (nomerATSstr) to 9 do

nomerATSstr:=nomerATSstr+' ';

stroka[k]: ='¦==========+=========+==========+===============¦';

stroka [k+1]: ='¦'+zap.familiya+'¦'+oplatastr+'¦'+nomerATSstr+'¦'+sredstvastr+'¦';

k:=k+2;

until eof (fail);

{end repeat}

stroka[k]: ='L==========¦=========¦==========¦===============-';

asm

mov ah, 1

mov cx, 2020h

int 10h

end;

window (1,1,80,25);

textbackground (black);

textcolor (white);

clrscr;

for i:=1 to 24 do

writeln (stroka[i]);

write (stroka[25]);

m:=1;

repeat

key:=readkey;

case key of

#80:if m+24

m:=m+1;

{end if}

#72:if m>1 then

m:=m-1;

{end if}

#81:if m+24

begin

m:=m+24;

if m+24>k then

m:=k-25;

{end if}

end;

{end if}

#73:if m>25 then

m:=m-24

else

m:=1;

{end if}

end;

{end case}

l:=1;

for a:=m to m+24 do

begin

gotoxy (1, l);

write (stroka[a]);

l:=l+1;

end;

until key=#27;

{end repeat}

close (fail);

end;

end.

Текст модуля poisk.tpu:

unit poisk;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure poiskel (imya_faila:string);

implementation

procedure poiskel;

var fail: file of zapis;

n, i: byte;

sredstvastr, nomstr, oplatastr: string;

zap:zapis;

begin

window (1,12,80,25);

textcolor (white);

textbackground (black);

clrscr;

writeln ('введите номер элемента');

readln (n);

assign (fail, imya_faila);

reset (fail);

clrscr;

repeat

read (fail, zap);

str (zap.nom, nomstr);

for i:=length (nomstr) to 5 do

nomstr:=nomstr+' ';

{end for}

for i:=length (zap.familiya) to 9 do

zap.familiya:=' '+zap.familiya;

{end for}

str (zap.oplata, oplatastr);

for i:=length (oplatastr) to 8 do

oplatastr:=oplatastr+' ';

{end for}

case ord (zap.sredstva)+1 of

1:sredstvastr:=' Факс-модем';

2:sredstvastr:=' Модем';

3:sredstvastr:=' Факс';

4:sredstvastr:=' Нету';

end;

{end case}

if zap. nom=n then

begin

writeln ('текущий элемент:');

writeln ('г======T==========T=========T=========T===============');

writeln ('¦номер ¦ Фамилия ¦ Оплата ¦Номер АТС¦ Доп. средсва ¦');

writeln ('¦======+==========+=========+=========+===============¦');

writeln ('¦', nomstr, '¦', zap. familiya, '¦', oplatastr, '¦', zap. nomerATS:9,'¦', sredstvastr:15,'¦');

writeln ('L======¦==========¦=========¦=========¦===============-');

end;

{end if}

until eof (fail);

{end repeat}

close (fail);

end;

end.

Текст модуля perehod.tpu:

unit perehod;

interface

procedure perehodnab (var name: string);

implementation

procedure perehodnab;

var fail: file;

begin

writeln ('ўўҐ¤ЁвҐ Ёп д (c)" ');

readln (name);

assign (fail, name);

reset (fail, 1);

close (fail);

end;

end.

Текст модуля serdmaxmin.tpu:

unit sredmaxmin;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

procedure naxogdenie (name:string);

implementation

procedure naxogdenie (name:string);

var fail: file of zapis;

zap:zapis;

verh, niz, min, max, i, j, k: integer;

kol_vo:array [1.100] of integer;

sum, sredn: real;

sredstvastr, oplatastr: string;

begin

assign (fail, name);

reset (fail);

repeat

writeln ('введите нижнюю границу диапазона');

readln (niz);

writeln ('введите верхнюю границу диапазона');

readln (verh);

if niz>verh then

writeln ('верхяя граница должна быть больше нижней');

{end if}

until verh>=niz;

{end repeat}

k:=1;

writeln ('г==========T=========T===========T===============');

writeln ('¦ Фамилия ¦ Оплата ¦ Номер ¦ Доп. средства ¦');

repeat

read (fail, zap);

for i:=length (zap.familiya) to 9 do

zap.familiya:=' '+zap.familiya;

{end for}

case ord (zap.sredstva)+1 of

1:sredstvastr:=' факс-модем';

2:sredstvastr:=' модем';

3:sredstvastr:=' факс';

4:sredstvastr:=' нету';

end;

{end case}

str (zap.oplata, oplatastr);

for i:=length (oplatastr) to 8 do

oplatastr:=oplatastr+' ';

{end for}

if (zap.oplata>=niz) and (zap.oplata<=verh) then

begin

kol_vo[k]: =zap.oplata;

k:=k+1;

writeln ('¦==========+=========+===========+===============¦');

writeln ('¦', zap. familiya, '¦', oplatastr:9,'¦', zap. nomerATS:11,'¦', sredstvastr, '¦');

end;

until eof (fail);

{end repeat}

writeln ('L==========¦=========¦===========¦===============-');

max:=kol_vo[1];

min:=kol_vo[1];

for j:=1 to k-1 do

begin

if kol_vo[j]>max then

max:=kol_vo[j];

if kol_vo[j]

min:=kol_vo[j];

sum:=sum+kol_vo[j];

end;

writeln ('макс. элемент — ', max);

writeln ('мин. элемент — ', min);

sredn:=sum/(k-1);

writeln ('среднее — ', sredn:0:3);

readln;

end;

end.

Текст модуля udalenie.tpu:

unit udalenie;

interface

uses crt;

type dopsredstva = (faxmodem, modem, fax, nety);

zapis = record

nom:byte;

familiya:string;

oplata:longint;

nomerATS:integer;

sredstva:dopsredstva;

end;

var

fail:file of zapis;

zap:dopsredstva;

name:string;

nom:integer;

procedure udalenieel (name:string; nom: integer);

implementation

procedure udalenieel (name:string; nom: integer);

begin

clrscr;

assign (fail, name);

reset (fail);

seek (fail, nom);

truncate (fail);

end;

end.

Текст модуля menu.tpu:

unit menu;

interface

uses crt;

type mymenu=array [1.25] of string;

procedure vertmenu (mas:mymenu; x, y, kol: integer; var long: integer);

implementation

procedure vertmenu;

var max, i, j: integer; l: byte; key: char;

begin

max:=length (mas[1]);

for i:=2 to kol do

if length (mas[i])>max then

max:=length (mas[i]);

{end if}

{end for}

for i:=1 to kol do

for j:=length (mas[i])+1 to max do

mas[i]: =mas[i]+' ';

{end for}

{end for}

window (x, y, x+max, y+kol);

textbackground (blue);

clrscr;

for i:=1 to kol do

begin

gotoxy (1, i);

write (mas[i]);

end;

{end for}

long:=1;

gotoxy (1,1);

textbackground (red);

textcolor (white);

write (mas[1]);

repeat

l:=long;

key:=readkey;

if key=#0 then

key:=readkey;

{end if}

case key of

#80:if long

long:=long+1

else

long:=1;

{end if}

#72:if long>1 then

long:=long-1

else

long:=kol;

{end if}

#13:exit;

end;

{end case}

gotoxy (1, l);

textcolor (white);

textbackground (blue);

write (mas[l]);

gotoxy (1, long);

textbackground (red);

textcolor (white);

write (mas[long]);

until false

{end repeat}

end;

end.

Показать весь текст
Заполнить форму текущей работой