Составление программ для решения задач на языке программирования Turbo Pascal

Автор работы: Пользователь скрыл имя, 23 Марта 2013 в 10:59, курсовая работа

Краткое описание

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

Содержание

ВВЕДЕНИЕ 3
1. УСЛОВИЕ И ПОСТАНОВКА ЗАДАЧИ 4
1.1. Входная информация 4
1.2. Выходная информация 5
1.3. Промежуточная информация 6
2. ФОРМАЛИЗАЦИЯ ЗАДАЧИ 7
3. АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ 8
3.1. Словесный алгоритм 8
3.2. Логическая схема алгоритма 9
3.3. Описание логической схемы 16
4. СОСТАВЛЕНИЕ ПРОГРАММЫ РЕШЕНИЯ ЗАДАЧИ 17
5. КОНТРОЛЬНЫЙ ПРИМЕР 22
ЗАКЛЮЧЕНИЕ 25

Прикрепленные файлы: 1 файл

Курсовая работа 21(З).doc

— 401.00 Кб (Скачать документ)

Если значение вспомогательной  переменной k=3, то выполнятся процедура OBNOVIT_DANNIE – процедура изменения списка файла. Номер изменяемой строки обозначим через переменную numrec. Введем значение этой переменной и установим указатель на позицию по указанному номеру записи. Введем старое значение записи (numrec). Затем выведем запись и перейдем на следующую позицию, потом вернемся на прежнюю позицию. Зададим новое значение записи. Используя процедуру ADD_NEWINF изменим запись и закроем файл.

При значении переменной k=4 выполняется процедура DOBAVIT_DANNIE. Процедура DOBAVIT_DANNIE выполняет задачу дополнения в список лекарств. Для этого установим текущую позицию в конец файла (seek), введем данные в файл. На экране появится надпись: «Изменяемый файл данных имеет … записей» (процедура filesize). Закрываем измененный файл.

Для поиска в файле по номеру группы и семестру вводим значение переменной k=5, тогда выполняется процедура POISK_PO_NOMERU_GR. В этой процедуре используем новые переменные: maska – переменная, которая принимает значения заданному номеру группы, rez_find – переменная результата, принимает значения «false» и «true» в тех случаях, когда заданный номер группы не найден (false) процедура будет выполняться до тех пор, пока введенный номер не будет найден (т.е. до конца записей файла). Если название номера не найдено, на экране появится: «нет данной записи». Если номер будет найден, на экран выведется таблица с полями записей и их значениями, внизу этой таблицы в строке будет записано количество записей для заданного пользователем. Закрываем файл.

Значение переменной k=0 программа завершается.

  1. Составление программы решения задачи

Программа для курсовой работы составлена на языке Турбо  Паскаль. Для решения поставленной задачи использовались стандартные процедуры и функция языка.

program nagruzka;

uses crt;

type

    stprepod=string[15];

    stnogruppi=string[3];

    stpredmet=string[12];

    stlekcii=integer;

    stpraktiki=integer;

    stlabi=integer;

    stzachet=string[3];

    stekzamen=string[3];

    recbook=record

    pr:stprepod;

    gr:stnogruppi;

    pred:stpredmet;

    lek:stlekcii;

    prak:stpraktiki;

    lab:stlabi;

    zach:stzachet;

    ege:stekzamen;

end;

var

   bookfile:file of recbook;

   work:recbook;

   count, lcount, pcount, lbcount, vcount, i:integer;

   vid:byte;

   end_menu:boolean;

   name:string[12];

procedure name_file;

begin

     writeln('Введите  имя файла данных: ');

     readln(name);

end;

procedure add_newinf;

begin

     writeln('Ввод записи ', filepos(bookfile)+1);

     with work do

     begin

          write('Преподаватель: ');

          readln(pr);

          write('№ группы: ');

          readln(gr);

          write('Предмет ');

          readln(pred);

          write('Лекции (часов): ');

          readln(lek);

          write('Практика (часов): ');

          readln(prak);

          write('Лабораторные (часов): ');

          readln(lab);

          write('Зачет (Да/Нет): ');

          readln(zach);

          write('Экзамен (Да/Нет): ');

          readln(ege);

          write(bookfile, work);

     end;

end;

procedure new_file;

var ind, count:integer;

begin

     name_file;

     assign(bookfile, name);

     rewrite(bookfile);

     writeln('Создание записи файла "', name, '"!');

     writeln('Введите число записей в списке: ');

     readln(count);

     for ind:=1 to count do add_newinf;

     lcount:=count;

     pcount:=count;

     lbcount:=count;

     vcount:=count;

     writeln('Создание  файла данных завершена.');

     writeln('Фаил  данных имеет ', filesize(bookfile), ' записей');

     close(bookfile);

end;

procedure vyvod_iz_faila;

begin

     read (bookfile, work);

     with work do

     begin

          write ('Запись ', filepos(bookfile), '-го номера: ');

          i:=lek+lab+prak;

          lcount:=lcount+lek;

          pcount:=pcount+prak;

          lbcount:=lbcount+lab;

          vcount:=vcount+i;

          writeln;

          writeln('Группа: ', gr);

          writeln('____________________________________________________________________________');

          writeln('|   №   |   Предмет   | Преподаватель |   Аудиторные часы   | итого | экз. |');

          writeln('|       |             |               |______|_______|______|       |      |');

          writeln('|       |             |               | лек. | прак. | лаб. |       |      |');

          writeln('____________________________________________________________________________');

          writeln('|',filepos(bookfile):7,'|',pred:13,'|',pr:15,'|',lek:6,'|',prak:7,'|',lab:6,'|',i:7,'|',ege:6,'|');

          writeln('| Всего |             |               |',lcount:6,'|',pcount:7,'|',lbcount:6,'|',vcount:7,'|      |');

          writeln('____________________________________________________________________________');

     end;

end;

procedure vyvod_vsey_inf;

begin

     name_file;

     assign(bookfile, name);

     {$I-}

     reset(bookfile);

     {$I+}

     if ioresult=0 then

     begin

          seek(bookfile, 0);

          writeln('Вывод списка сдачи экзамена из файла "', name, '"');

          while (not eof (bookfile)) do vyvod_iz_faila;

     end

     else writeln('Фаила  с именем ', name, ' на диске нет');

end;

procedure obnovit_dannie;

var numrec:longint;

begin

     name_file;

     assign(bookfile, name);

     {$I-}

     reset(bookfile);

     {$I+}

     if ioresult=0 then

     begin

          write('Укажите номер изменяемой  записи: ');

          readln(numrec);

          seek(bookfile, numrec-1);

          writeln('- старое значение записи');

          vyvod_iz_faila;

          seek(bookfile, numrec-1);

          writeln('Задаем новое значение ', numrec, '-й записи');

          add_newinf;

          close(bookfile);

     end

     else writeln('Фаила с именем ', name, ' на диске нет');

end;

procedure dobavit_dannie;

begin

     name_file;

     assign(bookfile, name);

     {$I-}

     reset(bookfile);

     {$I+}

     if ioresult=0 then

     begin

          seek(bookfile, filesize(bookfile));

          add_newinf;

          writeln('Измененный фаил данных имеет ', filesize(bookfile), ' записей');

          close(bookfile);

          end

          else writeln('Фаила с именем ', name, ' на диске нет');

end;

procedure poisk_po_nomeru_gr;

var maska:stnogruppi;

rez_find:boolean;

countrec:integer;

begin

     name_file;

     assign(bookfile, name);

     {$I-}

     reset (bookfile);

     {$I+}

     if ioresult=0 then

     begin

          writeln('Введите Номер группы для поиска: ');

          readln(maska);

          rez_find:=false;

          countrec:=0;

          while (not eof (bookfile)) do

          begin

               read (bookfile, work);

               with work do if pos(maska, gr)<>0 then

               begin

                    rez_find:=true;

                    inc(countrec);

          i:=lek+lab+prak;

          lcount:=lcount+lek;

          pcount:=pcount+prak;

          lbcount:=lbcount+lab;

          vcount:=vcount+i;

          writeln('Учебная нагрузка по группе ',gr);

          writeln('____________________________________________________________________________');

          writeln('|   №   |   Предмет   | Преподаватель |   Аудиторные часы   | итого | экз. |');

          writeln('|       |             |               |______|_______|______|       |      |');

          writeln('|       |             |               | лек. | прак. | лаб. |       |      |');

          writeln('____________________________________________________________________________');

          writeln('|',filepos(bookfile):7,'|',pred:13,'|',pr:15,'|',lek:6,'|',prak:7,'|',lab:6,'|',i:7,'|',ege:6,'|');

          writeln('| Всего |             |               |',lcount:6,'|',pcount:7,'|',lbcount:6,'|',vcount:7,'|      |');

          writeln('____________________________________________________________________________');

               end;

          end;

          if rez_find then writeln('Число записей для ', maska, ' = ', countrec)

          else writeln('Такого файла не существует!');

          close(bookfile);

     end

     else writeln('Фаила с именем', name, 'на диске нет');

end;

begin

     clrscr;

     repeat

     writeln('-=Учебная нагрузка=-');

     writeln('Выберите вид работы:');

     writeln('|  1-создание  нового файла');

     writeln('|  2-просмотр списка сдачи экзамена');

     writeln('|  3-изменение  списка');

     writeln('|  4-дополнение  в список');

     writeln('|  5-поиск');

     writeln('|  0-завершение  работы');

     writeln(' - Ваш  выбор!');

     readln(vid);

case vid of

     1:new_file;

     2:vyvod_vsey_inf;

     3:obnovit_dannie;

     4:dobavit_dannie;

     5:poisk_po_nomeru_gr;

     0:end_menu:=true;

end;

    writeln('Для продолжения нажмите Enter');

    readln;

    clrscr;

    until end_menu;

end.

 

  1. Контрольный пример

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


При запуске  программы, находящиеся в рабочей  зоне посредствам строки меню RUN или комбинацией клавиш(Ctrl+F9) мы имеем возможность проверить  нашу программу.

При запуске программы на экран  выводится меню задач для файла:

Пользователю предлагается выбрать  один из 6 вариантов. При выборе варианта «1», пользователь создает файл со сводными данными групп по проведенным часам. Далее идет запрос: количество записей в списке, после чего вводим данные, которые нужно ввести.

При вводе цифры 2 выполняется процедура просмотра списка из файла:

Если имя файла по какой либо причине введено не правильно, то

выводится сообщение:

Нажатие на клавишу с номером 3 выполняется процедура изменение списка:

4 – процедура дополнение в список:

 

 

 

5 – процедура поиска по номеру группы:

0 – завершение работы:

Заключение

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

Представленная  программа реализована на языке программирования Borland Pascal версии 7.0. Язык Borland Pascal 7.0 - это один из самых мощных языков для ЭВМ типа IBM PC/AT, работающий в среде операционной системы DOS, сочетающий в себе как мощность низкоуровневых языков программирования, так и структурированность с надежностью, присущих языкам высокого уровня.

Для реализации данного алгоритма был выбран язык программирования - Turbo Pascal, для ЭВМ типа IBM, работающих в среде операционной системы MS DOS. Программа составлена верно, что подтверждается контрольным примером .

 

СПИСОК ЛИТЕРАТУРЫ

        1. Информатика. Учебник. 3-е изд./Под ред. Проф. Н.В. Макаровой, М.:,2000.
        2. Информатика. Базовый курс., Симонович С.В. и др.СПб.: Питер. 2001.
        3. Новейшая энциклопедия персонального компьютера 2002, В.П. Леонтьев, М., “Олма-пресс”, 2002.
        4. Симонович С., Евсеев Г., Практическая информатика, учебное пособие, М.: АСТ-пресс,2000.
  1. Фаронов, Turbo Pascal 7.0., М.: Инфра-М,1998.
  2. Фигурнов В.Э.,IBM PC для пользователей, краткий курс, М.: Инфра-М, 1997.
  3. Могилев А.В., Пак Н.И., Хеннер Е.К., Информатика, Учебное пособие для студ. пед. вузов, 2-е изд., М.:Изд. центр “Академия”, 2001 – 816с.

Информация о работе Составление программ для решения задач на языке программирования Turbo Pascal