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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    375,5 Кб
  • Опубликовано:
    2015-04-07
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Введение


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

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

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

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

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

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

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

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

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

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

1   адрес (string).

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

menu, Funkcii,crt;:f;:char;,poz:integer;(mas);

{vvod parametrov ekrana}

{vivod menu}poz of

:Sozdanie(mas,KolvoElm);

:DobavVkon(mas,KolvoElm);

:Porsmotr(mas,KolvoElm);

:Poisk(mas,KolvoElm);

:Perehod(mas,KolvoElm);

:UdalenieOtVibran(mas,KolvoElm);

:DobavVfail(mas,KolvoElm);

:halt;;{izmenilsya el-t};{izmenilsya} then

{vivod vseh el-v}.

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


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

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

unit menu;crt, funkcii;glavn(var poz:integer);

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

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

,k:integer;:char;:array [1..10] of string [40];[1]:= Sozdanie MD ';

..

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

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

{Назначение цвета текста и фона}i:=1 to 8 do

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

{end for i:=1..}

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

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

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

{Назначение цвета текста и фона остальных строк}i:=1 to 8 do

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

{end for i:=1..}vibor of

#72{vverh}: begin

{Prisvoenie stroke znach menshe na 1}:=poz-1;

{Proverka na vihod za granicy menu};

#80{vniz}: begin

{Prisvoenie stroke znach bolshe na 1}:=poz+1;

{Proverka na vihod za granicy menu};

#13 {Enter}: i:=poz;

#27: halt;;

{end case vibor of}

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

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

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


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

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

unit funkcii;crt;=(Gosudarst,akcionern,chastnii);=record: string[20];: longint;: real;: Vid;;=array[1..30] of bank;Sozdanie(var mas:F;var KolvoElm:integer);DobavVkon(var mas:F;var KolvoElm:integer);Porsmotr(mas:F; KolvoElm:integer);Poisk(mas:F; KolvoElm:integer);Perehod(var mas:F;var KolvoElm:integer);UdalenieOtVibran(var mas:F; var KolvoElm:integer);DobavVfail(mas:F; KolvoElm:integer);

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

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

:integer;:char;

{Назначение цвета текста и фона}:=0;:=1;i=1 do

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

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

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

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

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

var:integer;

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

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

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

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

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

{Запрос на ввод ещё одного предмета}(i);i=2;;

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

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

,k,j:integer;,x:longint;:char;

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

{вывод шапки таблицы}i:=1 to KolvoElm do

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

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

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

{Подсчёт количества символов в числе}(k);:=x div 10;:=z;(x<10) and (x<>0) then(k);:=0;;x=0;

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

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

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

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

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

;

{end for i:=1..}

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

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

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

var,k,j:integer;,x:longint;:char;

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

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

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

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

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

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

{Подсчёт количества символов в числе}(k);:=x div 10;:=z;(x<10) and (x<>0) then(k);:=0;;x=0;

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

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

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

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

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

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

;

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

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

:string;: file of predmet;:char;

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

{Ввод пути к файлу}(fail,PytbKfail);

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

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

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

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

{end while not..}(fail);(' Perehod vipolnen :)');:=readkey;;

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

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

,k:integer;

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

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

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

;

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

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

:string;: file of predmet;,k:integer;:char;:T;

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

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

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

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

{end while not..}(fail);

{открытие файла для записи}i:=1 to k do

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

{end for..}i:=1 to KolvoElm do

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

(' Dobavleno :)');:=readkey;

;

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, получил опыт разработки программных комплексов и на практике освоил основы модульного программирования. Все условия данной курсовой работы были соблюдены. Все запросы выполняются корректно.

 

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


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

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

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

 

Приложение А


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

uses menu,Funkcii,crt;:f;:char;,poz:integer;(mas);;(black);(white);(poz);poz of

:Sozdanie(mas,KolvoElm);

:DobavVkon(mas,KolvoElm);

:Porsmotr(mas,KolvoElm);

:Poisk(mas,KolvoElm);

:Perehod(mas,KolvoElm);

:UdalenieOtVibran(mas,KolvoElm);

:DobavVfail(mas,KolvoElm);

:halt;;(poz=8)or (poz=2) or (poz=6);(poz=2) or (poz=6) then(mas,KolvoElm);.

Приложение Б


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

menu;crt,Funkcii;glavn(var poz:integer);glavn(var poz:integer);,k:integer;:char;:array [1..10] of string [40];

[1]:='Sozdanie MD ';[2]:='Dobavlenie Novih el-v v konec ';[3]:='Prosmotr vseh el-v ';[4]:='Poisk el-ta po nomery ';[5]:='Perehod Kdrugomy MD ';[6]:='Udalenie nachinaya ot vibanogo el-ta';[7]:='Dobavlenie v konec drugogo MD ';[8]:='EXIT ';

(1,1,80,25);(white);;

(black);(white);i:=1 to 8 do(1,i);(MasMenu[i]);;

{end for i:=1..}(yellow);(red);:=1;(1,poz);(MasMenu[poz]);

:=readkey;(black);(white);i:=1 to 8 do(1,i);(MasMenu[i]);;

{end for i:=1..}:=0;vibor of

#72{vverh}: begin

{Prisvoenie stroke znach menshe na 1}:=poz-1;

{Proverka na vihod za granicy menu}poz<1 then:=8;;

#80{vniz}: begin

{Prisvoenie stroke znach bolshe na 1}:=poz+1;

{Proverka na vihod za granicy menu}poz>8 then:=1;;

#13 {Enter}: i:=poz;

{end case vibor of}(yellow);(red);(1,poz);(MasMenu[poz]);i=poz;;.

 

Приложение В


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

funkcii;crt;=(Gosudarst,akcionern,chastnii);=record: string[20];: longint;: real;: Vid;;=array[1..30] of bank;Sozdanie(var mas:F;var KolvoElm:integer);DobavVkon(var mas:F;var KolvoElm:integer);Porsmotr(mas:F; KolvoElm:integer);Poisk(mas:F; KolvoElm:integer);Perehod(var mas:F;var KolvoElm:integer);UdalenieOtVibran(var mas:F; var KolvoElm:integer);DobavVfail(mas:F; KolvoElm:integer);

Sozdanie(var mas:F;var KolvoElm:integer);:integer;:string;: file of bank;:char;(black);;(green);:=0;:=1;i=1 do(KolvoElm);('Vvedite Adres banka:');(Mas ^ [KolvoElm].adres);('Vvedite Kolvo Vkladchikov:');(Mas ^ [KolvoElm].Kolvo);('Vvedite Summu vkladov:');(Mas ^ [KolvoElm].Summa);

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

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

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

:Mas ^ [KolvoElm].Tip:=Chastnii;;('Hotite vvesti eshe? Da-1, Net-2');(i);;

:=readkey;;DobavVkon(var mas:F;var KolvoElm:integer);:integer;(black);;(green);(KolvoElm);('Vvedite Adres banka:');(Mas ^ [KolvoElm].adres);('Vvedite Kolvo Vkladchikov:');(Mas ^ [KolvoElm].Kolvo);('Vvedite Summu vkladov:');(Mas ^ [KolvoElm].Summa);

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

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

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

:Mas ^ [KolvoElm].Tip:=Chastnii;;('Hotite vvesti eshe? Da-1, Net-2');(i);i=2;;

Porsmotr(mas:F; KolvoElm:integer);,k,j:integer;,x:longint;:char;(black);;(green);('╔════════════╦════════════╦═══════════╦═════════════╗');('║ Adres ║ Vkladchikov║ Summa ║ Tip banka ║');

i:=1 to KolvoElm do('╠════════════╬════════════╬═══════════╬═════════════╣');('║ ',mas ^ [i].adres);k:=1 to 11-length(mas ^ [i].adres) do(' ');

{end for k:=1..}('║ ',mas ^ [i].kolvo);:=0;(z);:=mas ^ [i].kolvo;:=k div 10;:=j;(j<10) and (j<>0) then(z);:=0;;j=0;

x:=1 to 11-z do(' ');

{end for k:=1..}

:=round(mas ^ [i].summa);('║ ',x);:=0;

(k);:=x div 10;:=z;(x<10) and (x<>0) then(k);:=0;;x=0;

j:=1 to 10-k do(' ');

{end for k:=1..}mas ^ [i].Tip of: write('║ Gosudarst ');: write('║ Akcionern ');: write('║ Chastnii ');;(' ║ ');;

{end for i:=1..}('╚════════════╩════════════╩═══════════╩═════════════╝');:=readkey;;

Poisk(mas:F; KolvoElm:integer);,k,j:integer;,x:longint;:char;(black);;(green);('Vvedite nomer el-ta');(i);

('╔════════════╦════════════╦═══════════╦═════════════╗');('║ Adres ║ Vkladchikov║ Summa ║ Tip banka ║');('╠════════════╬════════════╬═══════════╬═════════════╣');('║ ',mas ^ [i].adres);k:=1 to 11-length(mas ^ [i].adres) do(' ');

{end for k:=1..}('║ ',mas ^ [i].kolvo);:=0;(z);:=mas ^ [i].kolvo;:=k div 10;:=j;(j<10) and (j<>0) then(z);:=0;;j=0;

x:=1 to 11-z do(' ');

{end for k:=1..}

:=round(mas ^ [i].summa);('║ ',x);:=0;

(k);:=x div 10;:=z;(x<10) and (x<>0) then(k);:=0;;x=0;

j:=1 to 10-k do(' ');

{end for k:=1..}mas ^ [i].Tip of: write('║ Gosudarst ');: write('║ Akcionern ');: write('║ Chastnii ');;(' ║ ');('╚════════════╩════════════╩═══════════╩═════════════╝');:=readkey;;

Perehod(var mas:F;var KolvoElm:integer);:string;: file of bank;:char;(black);;(green);:=0;('Vvedite Pytb k faily');(PytbKfail);(fail,PytbKfail);(fail);not eof(fail) do(KolvoElm);(fail, mas ^ [KolvoElm]);;

{end while not..}(fail);

(' Perehod vipolnen :)');:=readkey;;

UdalenieOtVibran(var mas:F; var KolvoElm:integer);,k:integer;(black);;(green);('Vvedite nomer el-ta nachinaya s kotorogo vse ydalite:');(i);:=(i-1);;

DobavVfail(mas:F; KolvoElm:integer);:string;: file of bank;,k:integer;:char;:T;(black);;(green);('Vvedite Pytb k faily');(PytbKfail);(fail,PytbKfail);(fail);not eof(fail) do(k);(fail, mas1[k]);;(fail);(fail);i:=1 to k do(fail, mas1[i]);

{end for..}i:=1 to KolvoElm do(fail,mas ^ [i]);(fail);(black);;(green);(' Dobavleno :)');:=readkey;;.

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!