Обработка набора данных, представленного в виде файла
Описание программного комплекса, его структура и общая характеристика составных модулей. Механизм создания набора данных, поиск элементов по номеру. Методика просмотра элементов и вычисление среднего, минимума и максимума из заданного диапазона.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.12.2013 |
Размер файла | 239,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
Целью данной курсовой работы является практическая обработка набора данных, представленного в виде файла. В данной работе необходимо обеспечить реализацию следующих запросов к заданному множеству структурированной информации:
Создание набора данных.
Добавление новых элементов в конец набора данных.
Просмотр всех элементов набора данных.
Поиск элемента по номеру.
Переход к работе с другим набором данных.
В соответствии с заданием моего варианта необходимо обеспечить реализацию двух запросов к заданному множеству структурированной информации:
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<k then
m:=m+1;
{end if}
#72:if m>1 then
m:=m-1;
{end if}
#81:if m+24<k then
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 ('ўўҐ¤ЁвҐ Ё¬п д ©» ');
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 then
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<kol then
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.
Размещено на Allbest.ru
Подобные документы
Структура программного комплекса. Создание набора данных. Описание модуля funkcii.tpu. Копирование информации из НД в заданный файл. Сортировка массива по номерам. Просмотр элементов и вычисление среднего, минимума и максимума из заданного диапазона.
курсовая работа [626,6 K], добавлен 18.06.2014Структура программного комплекса. Ввод информации из заданного файла. Создание набора данных. Добавление элементов в конец набора данных. Просмотр всех элементов набора данных. Копирование информации из НД в заданный файл. Сортировка массива по номерам.
курсовая работа [630,5 K], добавлен 01.06.2014Создание программы, которая создает набор данных в динамической памяти компьютера и позволяет корректировать его. Описание программного комплекса. Обзор особенностей реализации программы с использованием модулей. Добавление данных в конец текущего набора.
курсовая работа [455,2 K], добавлен 28.08.2017Создание программы, работающей с набором данных на внешнем устройстве. Описание программного комплекса. Обзор структуры главной программы. Процедура добавления новых элементов, поиска и создания на экране вертикального меню. Проверка работы программы.
курсовая работа [265,6 K], добавлен 28.08.2017Создание набора классов, реализующих функции генерации метаданых для заданного файла данных спутника MTSAT-1R. Существующие методы решения. Реализация алгоритма получения необходимых полей с нужными данными. Разработка структуры базы данных инвентаря.
курсовая работа [38,6 K], добавлен 17.07.2009Входные данные - статистические сведения о работе механообрабатывающего цеха, представленные в виде файла. Способы расчета основных характеристик работы. Описание работы созданного программного комплекса. Формы отображения выходных данных проекта.
курсовая работа [36,8 K], добавлен 23.06.2011Разработка программы для работы с множеством данных, перечень и работа ее модулей. Проверка работы программы. Реализация поиска элемента в файле по его номеру и добавление элементов в конец уже созданного НД. Возможности и особенности применения программы
курсовая работа [3,5 M], добавлен 22.06.2012Содержание исходного набора данных. Основные причины возникновения выбросов. Главные алгоритмы кластеризации. Обработка и очистка файла. Описание его полей. Прямоугольная вещественнозначная матрица. Метрика Минковского. Математическое определение объекта.
курсовая работа [1,4 M], добавлен 25.10.2016Разработка базы данных спортивной обуви NIKE. Работа основных модулей и блоков. Процесс упорядочения элементов по определенному критерию. Формы сортировки базы данных. Добавление данных в базу. Поиск значений по заданному пользователем критерию.
курсовая работа [2,9 M], добавлен 16.08.2012Текстовые базы данных. Библиотеки исходников программного обеспечения. Механизм для нахождения заданного термина в тексте. Поиск без использования индекса. Степени детализации индекса. Расширенный информационный поиск. Латентное сингулярное разложение.
презентация [131,7 K], добавлен 11.10.2013