Обработка массивов указателей

Автор работы: Пользователь скрыл имя, 21 Марта 2014 в 16:54, курсовая работа

Описание работы

Целью курсовой работы является усовершенствование навыков работы с языком программирования Pascal, в результате чего необходимо написать программу, соответствующую всем требованиям, предъявленным к ней в техническом задании.
Запросы, которые необходимо реализовать в программе:
1) ввод информации из текстового файла в массив указателей на записи;
2) добавление новых элементов в конец массива;
3) просмотр всех элементов массива;
4) вывод информации из массива в текстовый файл.

Содержание работы

Введение………………………………………………………….. 3
1 Описание программного комплекса…………………………… 6
1.1 Структура программного комплекса ……………………......... 6
1.2 Описание модуля имяМодуля1………………………………. 9
2 Описание работы программы по контрольному примеру........... 16
2.1 Компетенция Правительства в экономической сфере, в области бюджета и финансов, в социально-культурной сфере….
18
2.2 Компетенция Правительства в области охраны окружающей среды, обеспечения законности, национальной безопасности и обороны, внешней политики……………………………
23
3 Соотношение актов Президента и Правительства Республики Беларусь………………………………………………………..
30
3.1 Акты Президента Республики Беларусь……………………. 30
3.2 Акты Совета Министров – Правительства Республики Беларусь………………………………………………………………
35
Заключение……………………………………………………….. 38
Список использованных источников…………………………… 39
Приложения………………………………..……………………... 41

Файлы: 1 файл

Курсовая.docx

— 230.03 Кб (Скачать файл)

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

         1: openf;

         2: dobavlenie;

         3: vstavka;

        4: prosmotr;

        5: savef;  end;

         end;

     {конец}

1.2 Модуль proc_shows

Данный модуль содержит объявления структур и типов, необходимых для работы программы, а так же процедуры реализующие запросы. Программный код модуля храниться в файле proc_shows.pas. 

В модуле объявлен тип данных shows -  данный тип описывает структуру данных для телепередач. В структуру входят такие данные как:  название, длительность в минутах, рейтинг. Объявление типа осуществляется кодом:

Shows=record

name_shows:string[21]; {Название}

rating:real;{ Рейтинг }

 duration in minutes:integer;{ Длительность в минутах }

 end;

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

    • file1 – основная переменная файла типа Shows;
    • file2 – переменная типа телепередача.

В модуле объявлены следующие процедуры:

    • savef – процедура сохранения записей в файле;
    • openf – процедура открывающая файл;
    • open – процедура запрашивающая имя файла;
    • dobavlenie -  процедура добавления массива данных;
    • prosmotr – процедура просмотра массива записей;
    • vstavka – вставка записи перед указанной.

Процедура openf необходима для считывания записей из файла, и записи их в массив. Вначале происходит открытие файла, а после в цикле запись всех данных в массив.

Процедура open нужна для выбора имени файла, а в дальнейшем и       открытие файла с которым будет происходить работа.

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

Процедура dobavlenie используется для добавления данных. Входным параметром является переменная g, введенное с клавиатуры число соответствует количество добавляемых записей.

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

По окончанию цикла, выполняется процедура prosmotr.

Процедура prosmotr вызывается по окончании работы основных процедур обработки записей и используется для вывода на экран всех записей. Вначале выводится шапка таблицы, а далее в цикле из массива выводятся данные фиксированной длины. По окончанию цикла выводится конец таблицы.

Процедура vstavka используется для добавление записи перед указанной.

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

 

Псевдокод модуля:

  {заголовок модуля}

  {блок инициализации}

  {подключение модулей}

  {описание типа }

 shows=record

          name_shows:string[21];

          rating:real

          duration in minutes:integer;

          end;

  {описание переменных}

{описание процедур }

{реализация}

 

{заголовок процедуры openf}

{описание переменных}

     begin

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

{пепезагрузка файла }

      i:=0;

{цикл считывания полей файла  и записи их в массив записей}

  while not EOF(file1) do

      begin

       inc(i);

{считывание с файла и запись  в массив}   

 {присваивание номеру количество записей}

    end;

{конец}

 

{заголовок процедуры savef}

  {описание переменных}

      begin

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

  {перезагрузка файла }

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

{очищение файла}

       for i:=1 to num do

       begin

{запись массива записей в  файл}

     end;

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

{конец}

 

{заголовок процедуры open}

  begin

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

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

{перезагрузка файла }

{конец}

 

  {------------------}

{заголовок процедуры dobavlenie}

  {описание переменных}

  begin

{ввод количества добавляемых  файлов}

   for i:=1 to g do

        begin

{ввод записей в массив записей}

        end;

{увеличение количества записей}

{вызов процедуры просмотра}

{конец процедуры}

    {------------------}

{заголовок процедуры vstavka}

  {описание переменных}

  begin

   {процедура очищения экрана}

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

inc(num);

{цикл от последней записи до записи с номером q+1 }

    for i:=num downto q+1 do

    masfile[i]:=masfile[i-1];

     with masfile[q] do

       begin

{вставка новой записи на место q}

       end;

{вызов процедуры просмотра записей}

{задержка экрана до нажатия клавиши}

{конец процедуры}

{----------------------}

{заголовок процедуры prosmotr}

{описание переменных}

 begin

{процедура очищения экрана}

{рисование шапки таблицы}

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

{закрытие таблицы}

{конец процедуры}

 

 

1.3 Модуль Men1

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

1: Otkrit fail;

2: Dobavlenie zapisei;

         3: Vstavka

          4: Prosmotr;

          5: Sochranit;

6: Vichod.

 

Пcевдокод модуля:

  {заголовок модуля Men1}

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

{подключение  модулей}

{описание  процедуры men1}

{реализация}

{заголовок  процедуры Men1}

    begin

     {процедура очищения экрана}

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

 writeln('Menu');

     writeln('1: otkrit fail');

     writeln('2: Dobavlenie zapisei');

     writeln('3:Vstavka);

     writeln('4: Prosmotr');

     writeln('5: Sochranit');

     writeln('6: Vichod');

     {конец модуля}

 

 

 

Работа программы

2.1 Запуск программы

При запуске программы необходимо ввести имя открываемого файла, необходимо, что бы этот файл существовал физически на жестком диске в корне программы, рисунок 1.

Рисунок 1 - Начало выполнения программы.

2.2 Меню программы

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

 

Shows=record

name_shows:string[21]; {Название}

rating:real;{ Рейтинг }

 duration in minutes:integer;{ Длительность в минутах }

 end;

 

Рисунок 2 - Меню программы.

Для того, что бы считать данные из файла, и переписать их в массив записей необходимо ввести 1 и нажать Enter, после ввода осуществится считывание в массив данных из файла.

2.3 Добавление новых  элементов

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

 

 
Рисунок 3 - Ввод данных.

2.4 Нахождение минимального  и максимального поля

Для того, что бы найти минимальный или максимальный элемент на заданном диапазоне нужно нажать 3, Enter. Выбрать критерий поиска ввести диапазон в рамках которого будет осуществляться поиск. Далее нажать Enter пока не появится результат поиска, рисунок 5.

Рисунок 4 - Поиск минимального и максимального поля.

 

Рисунок 5 - Результат поиска минимального и максимального поля.

2.5 Вставка новой  записи перед указанной

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

Рисунок 6 - Ввод  критерия выборки элементов

 

 

2.6 Просмотр записей

Для просмотра записей нужно выбрать четвертый пункт. Осуществится вывод на экран всех записей, как показано на рисунке 7.

Рисунок 7 - Просмотр записей.

2.6 Сохранение и  выход

Для сохранения результатов работы программы нужно нажать 5, Enter.

Для выхода из программы нужно нажать 6, произойдет выход из программы.

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

.

 

 

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

  1. Бородич, Ю.С. Разработка программных систем на языке Паскаль / Ю.С.Бородич – Мн., 1992.
  2. Бутомо, И.Д. Программирование на алгоритмическом языке ПАСКАЛЬ для микро-ЭВМ /  И.Д.Бутомо, А.В.Самочадин – Л., 1985.
  3. Вальвачев, А.Н. Программирование на языке ПАСКАЛЬ для ПЭВМ /  А.Н.Вальвачев, В.С.Крисевич – Мн., 1989.
  4. Грогоно, П. Программирование на языке ПАСКАЛЬ / П. Грогоно – М., 1982.
  5. Новиков, В.С. Паскаль / В.С.Новиков – М.,1990.
  6. Перминов, О.Н. Программирование на языке ПАСКАЛЬ / О.Н.Перминов – М., 1988.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А - Slow.PAS

program teleperedacha;

  uses proc_shows,men1,crt;

  var

   n:integer;

  begin

  clrscr;

  open;

   while (n<>7) do

    begin

    menu;

    readln(n);

    case n of

    1: openf;

    2: dobavlenie;

    3: vstavka;

    4: prosmotr;

    5: savef;

  end;

  end;

   readln;

  end.

Приложение Б – proc_mod.pas

unit proc_shows;

 interface

     uses crt;

 type

   shows = record

    name_shows: string[20];

    rating: real;

    duration in minutes: integer;

   end;

  var

   file1: file of derevo;

   fileMAS:derevo;

   masfile:array [1..20] of derevo;

   num:integer;

   files:string;

  procedure dobavlenie;

  procedure vstavka;

  procedure prosmotr;

  procedure open;

  procedure openf;

  procedure savef;

 implementation

 

    procedure openf;

  var i:integer;

  begin

  assign(file1,files);

  reset(file1);

  i:=0;

   while not EOF(file1) do

    begin

     inc(i);

     read(file1,masfile[i]);

     num:=i;

     end;

   end;

 

   procedure savef;

     var i:integer;

     begin

       assign(file1, files);

       reset(file1);

       seek(file1,0);

       truncate(file1);

       for i:=1 to num do

       begin

        write(file1, masfile[i]);

     end;

      close(file1);

        end;

 

  procedure open;

 

  begin

   writeln('imya otkrivaemogo faila');

   readln(files);

   assign(file1,files);

   reset(file1);

  end;

 

 

  procedure dobavlenie;

   var i,g :integer;

  begin

  writeln('kolichestvo zapisei');

  readln(g );

   for i:=1 to g do

        begin

         writeln;

         write('name_shows- ');

         readln(masfile[num+i].name);

         write('rating - ');

         readln(masfile[num+i].height);

         write('durating in minutes - ');

         readln(masfile[num+i].durating);

        end;

     num:=num+g;

 

     prosmotr;

     end;

    {------------------}

     procedure vstavka;

   var i,a,g,q,l:integer;

  begin

   clrscr;

   writeln('pered kakoy vstavlyat');

   readln(q);inc(num);

    for i:=num downto q+1 do

    masfile[i]:=masfile[i-1];

     with masfile[q] do

       begin

       write('name_shows- ');

         readln(name);

         write('vis - ');

         readln(height);

         write('durating in minutes - ');

         readln(durating);

       end;

      for i:=1 to num do

      begin

      writeln(masfile[i].name);

      writeln(masfile[i].height);

      writeln(masfile[i].durating);

      end;

   prosmotr;

   readln;

     end;

     {--------------}

     procedure prosmotr;

 var

 i:integer;

 begin

 writeln('Prosmotr dannih');

   clrscr;

      write('ЙНННЛНННННННННННННННННЛННННННННННННЛНННННННННН»');

      writeln;

      write('є N є Nazvanie dereva є   Visota   є  urojai  є');

      writeln;

      write('МНННОНННННННННННННННННОННННННННННННОНННННННННН№');

      writeln;

       for i:=1 to num do

      begin

  write('є',i:3,'є',masfile[i].name:17);

  write('є',masfile[i].height:12:2);

  write('є',masfile[i].urosh:10,'є');

  writeln;

      end;

    writeln('ИНННКНННННННННННННННННКННННННННННННКННННННННННј');

  writeln('Press Enter');

  readln;

  end;

Приложение В - MEN1.PAS

unit Men1;

interface

     uses crt;

   procedure menu;

implementation

procedure menu;

    begin

     clrscr;

     writeln('Menu');

     writeln('1- otkrit fail');

     writeln('2- Dobavlenie zapisei');

     writeln('3- Vstavka pered');

     writeln('4- Prosmotr');

     writeln('5- Sochranit');

     writeln('6- Vichod');

Информация о работе Обработка массивов указателей