Автор работы: Пользователь скрыл имя, 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: 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;
В описании переменных описываются
так же глобальные переменные которые
используются для обращения к файлу и
массиву записей:
В модуле объявлены следующие процедуры:
Процедура 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
{запрос имени открываемого файла}
{открытие файла}
{перезагрузка файла }
{конец}
{------------------}
{заголовок процедуры
{описание переменных}
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');
{конец модуля}
При запуске программы необходимо ввести имя открываемого файла, необходимо, что бы этот файл существовал физически на жестком диске в корне программы, рисунок 1.
Рисунок 1 - Начало выполнения программы.
После ввода имени файла, на экране появляется меню программы, в котором пользователю предоставляется выбрать один пункт для реализации поставленной задачи, рисунок 2.
Shows=record
name_shows:string[21]; {Название}
rating:real;{ Рейтинг }
duration in minutes:integer;{ Длительность в минутах }
end;
Рисунок 2 - Меню программы.
Для того, что бы считать данные из файла, и переписать их в массив записей необходимо ввести 1 и нажать Enter, после ввода осуществится считывание в массив данных из файла.
Для того, что бы добавить новые элементы данных нужно ввести 2, нажать клавишу Enter и ввести данные. При вводе, вначале необходимо ввести количество записей, далее, вводить данные для записи, по окончании ввода каждого поля необходимо нажать Enter. На рисунке 3 показан пример ввода новых данных в массив записей. По окончании ввода на экран выведется таблица, содержащая все записи. Так же таблица просмотра появляется каждый раз когда выполняются какие либо операции над массивами данных.
Для того, что бы найти минимальный или максимальный элемент на заданном диапазоне нужно нажать 3, Enter. Выбрать критерий поиска ввести диапазон в рамках которого будет осуществляться поиск. Далее нажать Enter пока не появится результат поиска, рисунок 5.
Рисунок 4 - Поиск минимального и максимального поля.
Рисунок 5 - Результат поиска минимального и максимального поля.
Для вставки нового элемента необходимо выбрать третий пункт меню, далее ввести номер записи, перед которой будет вставлены новые данные, затем ввести данные, рисунок 6.
Для просмотра записей нужно выбрать четвертый пункт. Осуществится вывод на экран всех записей, как показано на рисунке 7.
Рисунок 7 - Просмотр записей.
Для сохранения результатов работы программы нужно нажать 5, Enter.
Для выхода из программы нужно нажать 6, произойдет выход из программы.
.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
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.
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].
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].
write('є',masfile[i].height:
write('є',masfile[i].urosh:10,
writeln;
end;
writeln('
writeln('Press Enter');
readln;
end;
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');