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

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

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

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

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

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

1 Создание набора данных (МД).

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

3 Просмотр всех элементов МД.

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

5 Переход к работе с другим МД.

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

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

7 Добавление всех элементов в конец другого МД.

Множество данных должно представлять собой информацию об банках города:

1 адрес (string).

2 количество вкладчиков (longint).

3 сумма вкладов (real).

4 тип: государственный, акционерный, частный (перечислимый тип).

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

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

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

3 Глобальные данные использовать нельзя.

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

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

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

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

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

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

Главная программа подключает следующие модули: crt, menu, funkcii.

В основной программе реализован вывод массива меню действий и выбор с помощью оператора case.

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

uses menu, Funkcii, crt;

var

mas:f;

s:char;

KolvoElm, poz: integer;

Begin

New (mas);

{vvod parametrov ekrana}

Repeat

{vivod menu}

case poz of

1:Sozdanie (mas, KolvoElm);

2:DobavVkon (mas, KolvoElm);

3:Porsmotr (mas, KolvoElm);

4:Poisk (mas, KolvoElm);

5:Perehod (mas, KolvoElm);

6:UdalenieOtVibran (mas, KolvoElm);

7:DobavVfail (mas, KolvoElm);

8:halt;

end;

until {izmenilsya el-t};

if {izmenilsya} then

{vivod vseh el-v}

end.

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

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

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

unit menu;

interface

uses crt, funkcii;

procedure glavn (var poz: integer);

implementation

В menu. tpu осуществляется вывод меню интерфейса. Процедурой glavn (var poz: integer), обрабатывается нажатие клавиш, в зависимости от переданного параметра выполняется определённое действие, т. е пункт меню. Формальным параметром передаётся выбранный пункт в меню (poz).

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

var

i, k: integer;

vibor:char;

MasMenu:array [1.10] of string [40];

Begin

MasMenu[1]:= Sozdanie MD ';

.

{вывод остальных пунктов меню}

{Назначение параметров окна}

{Назначение цвета текста и фона}

for i:=1 to 8 do

{Вывод пунктов меню}

{end for i:=1.}

{Назначение цвета текста и фона текущей строки}

{Вывод текущего пункта меню}

Repeat

{Считывание нажатой клавиши}

vibor:=readkey;

{Назначение цвета текста и фона остальных строк}

for i:=1 to 8 do

{Вывод пунктов меню}

{end for i:=1.}

case vibor of

#72{vverh}: begin

{Prisvoenie stroke znach menshe na 1}

poz:=poz-1;

{Proverka na vihod za granicy menu}

end;

#80{vniz}: begin

{Prisvoenie stroke znach bolshe na 1}

poz:=poz+1;

{Proverka na vihod za granicy menu}

end;

#13 {Enter}: i:=poz;

#27: halt;

end;

{end case vibor of}

{Назначение цвета текста и фона текущей строки}

{Вывод текущего пункта меню}

until i=poz;

end;

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

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

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

unit funkcii;

interface

uses crt;

Type

Vid=(Gosudarst, akcionern, chastnii);

Bank=record

Adres: string[20];

Kolvo: longint;

Summa: real;

Tip: Vid;

end;

F=array[1.30] of bank;

procedure Sozdanie (var mas: F;var KolvoElm: integer);

procedure DobavVkon (var mas: F;var KolvoElm: integer);

procedure Porsmotr (mas:F; KolvoElm: integer);

procedure Poisk (mas:F; KolvoElm: integer);

procedure Perehod (var mas: F;var KolvoElm: integer);

procedure UdalenieOtVibran (var mas: F; var KolvoElm: integer);

procedure DobavVfail (mas:F; KolvoElm: integer);

implementation

Процедура Sozdanie (var mas: F;var KolvoElm: integer) создаёт новый массив данных.

Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

i:integer;

s:char;

begin

{Назначение цвета текста и фона}

KolvoElm:=0;

i:=1;

while i=1 do

begin

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

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

{Запрос на ввод ещё элемента};

end;

end;

Процедура DobavVkon (var mas: F;var KolvoElm: integer) добавляет записи в конец массива, количество записей корректирует пользователь. Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

i:integer;

begin

{Назначение цвета текста и фона}

repeat

{приращение счётчика количества элементов}

{Ввод Названия предмета}

{Ввод номера курса}

{Ввод чавсов в год}

{Запрос на ввод ещё одного предмета}

readln (i);

until i=2;

end;

Процедура Porsmotr (mas:F; KolvoElm: integer) выводит массив записей в виде таблицы. Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

i, k, j:integer;

z, x: longint;

s:char;

begin

{Назначение цвета текста и фона}

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

For i:=1 to KolvoElm do

begin

{Вывод первого столбика}

{дополнение пробелами}

{Вывод второго столбика }

{Подсчёт количества символов в числе}

repeat

inc (k);

z:=x div 10;

x:=z;

if (x<10) and (x<>0) then

begin

inc (k);

x:=0;

end;

until x=0;

{дополнение пробелами}

{Вывод третьего столбика}

{Подсчёт количества символов в числе}

{дополнение пробелами}

{Вывод четвёртого столбика}

end;

{end for i:=1.}

{Вывод окончания таблицы}

end;

Процедура Poisk (mas:F; KolvoElm: integer) выводит элемент по введенному номеру. Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

i, k, j:integer;

z, x: longint;

s:char;

begin

{Назначение цвета текста и фона}

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

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

{Вывод первого столбика}

{дополнение пробелами}

{Вывод второго столбика }

{Подсчёт количества символов в числе}

repeat

inc (k);

z:=x div 10;

x:=z;

if (x<10) and (x<>0) then

begin

inc (k);

x:=0;

end;

until x=0;

{дополнение пробелами}

{Вывод третьего столбика}

{Подсчёт количества символов в числе}

{дополнение пробелами}

{Вывод четвёртого столбика}

{Вывод окончания таблицы}

end;

Процедура perehod (var mas: F;var KolvoElm: integer) Помещает новый символ после выбранного. Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

PytbKfail:string;

Fail: file of predmet;

s:char;

begin

{Назначение цвета текста и фона}

{Ввод пути к файлу}

assign (fail, PytbKfail);

{открытие файла для чтения}

while not eof (fail) do {Пока не конец файла}

begin

{Наращение счётчика количества элементов}

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

end;

{end while not.}

close (fail);

Writeln (' Perehod vipolnen :)');

s:=readkey;

end;

Процедура UdalenieOtVibran (var mas: F; var KolvoElm: integer) удаляет все элементы до конца НД начиная от введённого. Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

i, k: integer;

begin

{Назначение цвета текста и фона}

{Запрос на ввод номера элемента от которого нужно удалять}

{Измена количество элементов на значение меньше на 1 чем выбранный номер}

end;

Процедура DobavVfail (mas:F; KolvoElm: integer Сохраняет все элементы МД в конце другого НД. Формальными параметрами этой процедуры являются массив с данными (mas) типом (F), описанным в разделе типов и количеством элементов в массиве (KolvoElm).

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

var

PytbKfail:string;

Fail: file of predmet;

i, k: integer;

s:char;

mas1:T;

begin

{Назначение цвета текста и фона}

{Ввод пути к файлу}

assign (fail, PytbKfail);

{открытие файла для чтения}

while not eof (fail) do {Пока не конец файла}

begin

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

end;

{end while not.}

close (fail);

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

for i:=1 to k do

{запись прошлой информации в файл}

{end for.}

for i:=1 to KolvoElm do

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

close (fail);

Writeln (' Dobavleno :)');

s:=readkey;

end;

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

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

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

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

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

Рисунок 2 — Создание НД

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

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

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

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

Для просмотра всех элементов набора данных нужно выбрать в меню пункт «Просмотр всех элементов». Выводится таблица со всеми данными (рисунок 7).

Рисунок 7 — Вывод набора данных

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

Чтобы найти элемент по заданному номеру, нужно выбрать в меню пункт «Поиск элемента по номеру». После выбора программа попросит ввести номер элемента который хотите просмотреть, после чего программа выведет этот элемент в виде таблицы. После нажатия любой клавиши программа вернется в меню. Найдём элемент под номером 1 (рисунок 8).

Рисунок 8 — Поиск

2.5 Переход к другому НД

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

файл сортировка массив копирование Рисунок 9 — НД до перехода Рисунок 10 — Результат после перехода

2.6 Удаление элементов начиная от выбранного

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

Рисунок 11 — До удаления Рисунок 12 — После удаления

2.7 Добавление всех элементов в конец другого МД

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

Рисунок 13 — Добавление

Заключение

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

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

MathCAD 7.0./ Руководство пользователя./ В. К. Савелин./ BHV-Киев, 1998.

Турбо Паскаль 7.0/ А. Колесников./ В.Гинзбург./ BHV/ Киев, 1996.

Бородич, Ю. С. Паскаль для персональных компьютеров. — Минск: Высшая школа, 1991.

Приложение А

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

uses menu, Funkcii, crt;

var

mas:f;

s:char;

KolvoElm, poz: integer;

Begin

New (mas);

clrscr;

textbackground (black);

textcolor (white);

repeat

glavn (poz);

case poz of

1:Sozdanie (mas, KolvoElm);

2:DobavVkon (mas, KolvoElm);

3:Porsmotr (mas, KolvoElm);

4:Poisk (mas, KolvoElm);

5:Perehod (mas, KolvoElm);

6:UdalenieOtVibran (mas, KolvoElm);

7:DobavVfail (mas, KolvoElm);

8:halt;

end;

until (poz=8)or (poz=2) or (poz=6);

if (poz=2) or (poz=6) then

porsmotr (mas, KolvoElm);

end.

Приложение Б

Текст модуля реализации меню (menu)

unit menu;

interface

uses crt, Funkcii;

procedure glavn (var poz: integer);

implementation

procedure glavn (var poz: integer);

var

i, k: integer;

vibor:char;

MasMenu:array [1.10] of string [40];

begin

MasMenu[1]:='Sozdanie MD ';

MasMenu[2]: ='Dobavlenie Novih el-v v konec ';

MasMenu[3]: ='Prosmotr vseh el-v ';

MasMenu[4]: ='Poisk el-ta po nomery ';

MasMenu[5]: ='Perehod Kdrugomy MD ';

MasMenu[6]: ='Udalenie nachinaya ot vibanogo el-ta';

MasMenu[7]: ='Dobavlenie v konec drugogo MD ';

MasMenu[8]: ='EXIT ';

window (1,1,80,25);

textbackground (white);

clrscr;

textbackground (black);

textcolor (white);

for i:=1 to 8 do

begin

gotoxy (1,i);

write (MasMenu[i]);

end;

{end for i:=1.}

textbackground (yellow);

textcolor (red);

poz:=1;

gotoxy (1,poz);

write (MasMenu[poz]);

repeat

vibor:=readkey;

textbackground (black);

textcolor (white);

for i:=1 to 8 do

begin

gotoxy (1,i);

write (MasMenu[i]);

end;

{end for i:=1.}

i:=0;

case vibor of

#72{vverh}: begin

{Prisvoenie stroke znach menshe na 1}

poz:=poz-1;

{Proverka na vihod za granicy menu}

if poz<1 then

poz:=8;

end;

#80{vniz}: begin

{Prisvoenie stroke znach bolshe na 1}

poz:=poz+1;

{Proverka na vihod za granicy menu}

if poz>8 then

poz:=1;

end;

#13 {Enter}: i:=poz;

#27: halt;

end;

{end case vibor of}

textbackground (yellow);

textcolor (red);

gotoxy (1,poz);

write (MasMenu[poz]);

until i=poz;

end;

end.

Приложение В

Текст модуля реализации всех запросов (Funkcii)

unit funkcii;

interface

uses crt;

Type

Vid=(Gosudarst, akcionern, chastnii);

Bank=record

Adres: string[20];

Kolvo: longint;

Summa: real;

Tip: Vid;

end;

F=array[1.30] of bank;

procedure Sozdanie (var mas: F;var KolvoElm: integer);

procedure DobavVkon (var mas: F;var KolvoElm: integer);

procedure Porsmotr (mas:F; KolvoElm: integer);

procedure Poisk (mas:F; KolvoElm: integer);

procedure Perehod (var mas: F;var KolvoElm: integer);

procedure UdalenieOtVibran (var mas: F; var KolvoElm: integer);

procedure DobavVfail (mas:F; KolvoElm: integer);

implementation

procedure Sozdanie (var mas: F;var KolvoElm: integer);

var

i:integer;

PytbKfail:string;

Fail: file of bank;

s:char;

begin

textbackground (black);

clrscr;

textcolor (green);

KolvoElm:=0;

i:=1;

while i=1 do

begin

inc (KolvoElm);

writeln ('Vvedite Adres banka:');

readln (Mas ^ [KolvoElm]. adres);

writeln ('Vvedite Kolvo Vkladchikov:');

readln (Mas ^ [KolvoElm]. Kolvo);

writeln ('Vvedite Summu vkladov:');

readln (Mas ^ [KolvoElm]. Summa);

writeln ('Vvedite Tip Banka: 1-Gosudarst 2-Akcionern 3-Chastnii:');

readln (i);

case i of

1:Mas ^ [KolvoElm]. Tip:=Gosudarst;

2:Mas ^ [KolvoElm]. Tip:=Akcionern;

3:Mas ^ [KolvoElm]. Tip:=Chastnii;

end;

writeln ('Hotite vvesti eshe? Da-1, Net-2');

readln (i);

end;

s:=readkey;

end;

procedure DobavVkon (var mas: F;var KolvoElm: integer);

var

i:integer;

begin

textbackground (black);

clrscr;

textcolor (green);

repeat

inc (KolvoElm);

writeln ('Vvedite Adres banka:');

readln (Mas ^ [KolvoElm]. adres);

writeln ('Vvedite Kolvo Vkladchikov:');

readln (Mas ^ [KolvoElm]. Kolvo);

writeln ('Vvedite Summu vkladov:');

readln (Mas ^ [KolvoElm]. Summa);

writeln ('Vvedite Tip Banka: 1-Gosudarst 2-Akcionern 3-Chastnii:');

readln (i);

case i of

1:Mas ^ [KolvoElm]. Tip:=Gosudarst;

2:Mas ^ [KolvoElm]. Tip:=Akcionern;

3:Mas ^ [KolvoElm]. Tip:=Chastnii;

end;

writeln ('Hotite vvesti eshe? Da-1, Net-2');

readln (i);

until i=2;

end;

procedure Porsmotr (mas:F; KolvoElm: integer);

var

i, k, j:integer;

z, x: longint;

s:char;

begin

textbackground (black);

clrscr;

textcolor (green);

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

writeln ('¦ Adres ¦ Vkladchikov¦ Summa ¦ Tip banka ¦');

For i:=1 to KolvoElm do

begin

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

write ('¦ ', mas ^ [i]. adres);

for k:=1 to 11-length (mas ^ [i]. adres) do

write (' ');

{end for k:=1.}

write ('¦ ', mas ^ [i]. kolvo);

z:=0;

repeat

inc (z);

k:=mas ^ [i]. kolvo;

j:=k div 10;

k:=j;

if (j<10) and (j<>0) then

begin

inc (z);

j:=0;

end;

until j=0;

for x:=1 to 11-z do

write (' ');

{end for k:=1.}

x:=round (mas ^ [i]. summa);

write ('¦ ', x);

k:=0;

repeat

inc (k);

z:=x div 10;

x:=z;

if (x<10) and (x<>0) then

begin

inc (k);

x:=0;

end;

until x=0;

for j:=1 to 10-k do

write (' ');

{end for k:=1.}

case mas ^ [i]. Tip of

Gosudarst: write ('¦ Gosudarst ');

Akcionern: write ('¦ Akcionern ');

Chastnii: write ('¦ Chastnii ');

end;

writeln (' ¦ ');

end;

{end for i:=1.}

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

s:=readkey;

end;

procedure Poisk (mas:F; KolvoElm: integer);

var

i, k, j:integer;

z, x: longint;

s:char;

begin

textbackground (black);

clrscr;

textcolor (green);

write ('Vvedite nomer el-ta');

readln (i);

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

writeln ('¦ Adres ¦ Vkladchikov¦ Summa ¦ Tip banka ¦');

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

write ('¦ ', mas ^ [i]. adres);

for k:=1 to 11-length (mas ^ [i]. adres) do

write (' ');

{end for k:=1.}

write ('¦ ', mas ^ [i]. kolvo);

z:=0;

repeat

inc (z);

k:=mas ^ [i]. kolvo;

j:=k div 10;

k:=j;

if (j<10) and (j<>0) then

begin

inc (z);

j:=0;

end;

until j=0;

for x:=1 to 11-z do

write (' ');

{end for k:=1.}

x:=round (mas ^ [i]. summa);

write ('¦ ', x);

k:=0;

repeat

inc (k);

z:=x div 10;

x:=z;

if (x<10) and (x<>0) then

begin

inc (k);

x:=0;

end;

until x=0;

for j:=1 to 10-k do

write (' ');

{end for k:=1.}

case mas ^ [i]. Tip of

Gosudarst: write ('¦ Gosudarst ');

Akcionern: write ('¦ Akcionern ');

Chastnii: write ('¦ Chastnii ');

end;

writeln (' ¦ ');

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

s:=readkey;

end;

procedure Perehod (var mas: F;var KolvoElm: integer);

var

PytbKfail:string;

Fail: file of bank;

s:char;

begin

textbackground (black);

clrscr;

textcolor (green);

KolvoElm:=0;

Writeln ('Vvedite Pytb k faily');

readln (PytbKfail);

assign (fail, PytbKfail);

reset (fail);

while not eof (fail) do

begin

inc (KolvoElm);

read (fail, mas ^ [KolvoElm]);

end;

{end while not.}

close (fail);

Writeln (' Perehod vipolnen :)');

s:=readkey;

end;

procedure UdalenieOtVibran (var mas: F; var KolvoElm: integer);

var

i, k: integer;

begin

textbackground (black);

clrscr;

textcolor (green);

writeln ('Vvedite nomer el-ta nachinaya s kotorogo vse ydalite:');

readln (i);

KolvoElm:=(i-1);

end;

procedure DobavVfail (mas:F; KolvoElm: integer);

var

PytbKfail:string;

Fail: file of bank;

i, k: integer;

s:char;

mas1:T;

begin

textbackground (black);

clrscr;

textcolor (green);

Writeln ('Vvedite Pytb k faily');

readln (PytbKfail);

assign (fail, PytbKfail);

reset (fail);

while not eof (fail) do

begin

inc (k);

read (fail, mas1[k]);

end;

close (fail);

rewrite (fail);

for i:=1 to k do

write (fail, mas1[i]);

{end for.}

for i:=1 to KolvoElm do

write (fail, mas ^ [i]);

close (fail);

textbackground (black);

clrscr;

textcolor (green);

Writeln (' Dobavleno :)');

s:=readkey;

end;

end.

.ur

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