У вас вопросы?
У нас ответы:) SamZan.net

тематики и информатики.

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

Составители: профессор  Степанов В.С.,

ст. преподаватель Васильева Н.И.

ст. преподаватель Ситникова Е.В.

ст. преподаватель Меркушин А.В.

Рецензент: доцент Шнеерсон Ю.Б.

Рекомендовано к изданию в качестве методических указаний к выполнению курсовой работы  по информатике для студентов ФАВТ, кафедрой математики и информатики.

Протокол №11   от 02.07.2008 г.

  1.  Санкт-Петербургский государственный университет кино и телевидения, 2008 г.

1. Общие положения

Курсовая работа по информатике (далее курсовая работа) является одной из форм учебно-исследовательской работы, ее выполнение является обязательным для всех студентов первого курса факультета АВТ. Тема курсовой работы выдается индивидуально. В задании формулируется задача, метод ее решения.

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

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

Курсовая работа может быть оценена на “отлично”, “хорошо”, “удовлетворительно”, “неудовлетворительно”. Оценка проставляется на титульном листе отчета за подписью научного руководителя,  а также вносится в экзаменационную ведомость и зачетную книжку. Неудовлетворительная оценка в зачетную книжку не вносится. Полное название курсовой работы с указанием оценки вносится в приложении к диплому.

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

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


2.
Требования к курсовой работе

Курсовая работа состоит из отчета, к которому прилагается отлаженная программа на электронном носителе.

2.1. Требования к отчету

Отчет по курсовой работе включает в себя следующее:

  •  титульный лист;
  •  формулировка задания (№ варианта, постановка задачи);
  •  оглавление;
  •  введение;
  •  основная часть, включающая:
    •  краткое описание всех процедур и функций (не стандартных, а написанных самим разработчиком программы);
    •  алгоритм основной программы; алгоритм процедуры, реализующей меню; алгоритмы всех процедур и функций (блок – схемы алгоритмов);
    •  текст программы на алгоритмическом языке высокого уровня;
    •  результаты выполнения задания;
  •  список использованных источников.

Текст и блок-схемы алгоритмов отчета должны быть выполнены синими (черными) чернилами, разборчивым почерком или набраны и распечатаны при помощи ПК (текст 11-16 пт, межстрочный интервал 1,3-1,5). Используется одна сторона листа писчей бумаги формата А4. На левой стороне листа для подшивки оставляется поле шириной 25-30 мм. Для остальных полей следует соблюдать следующие размеры: верхнее – не менее 15мм., нижнее – не менее 20 мм., правое – не менее 10 мм.

Страницы нумеруются, начиная с титульного листа, причем используется сквозная нумерация, а сами номера проставляются в правом нижнем углу листа без точки в конце. Номер страницы на титульном листе не проставляется. Иллюстрации, таблицы и схемы, блок-схемы, расположенные на отдельных листах, также включаются в общую нумерацию страниц работы.

Таблицы, блок-схемы и схемы, приведенные в курсовой работе, должны иметь сквозную нумерацию арабскими цифрами. На них должны быть ссылки и упоминания в тексте работы. Таблицы имеют собственную сквозную нумерацию. Номер размещается в правом верхнем углу над заголовком таблицы после слова “Таблица”. Блок-схемы и схемы имеют заголовок, расположенный над ними, начинающийся со слова “Блок-схема…” или “Схема…”. Рисунки и графики должны иметь сквозную нумерацию и подпись, например,  “Рис.6. Блок-схема процедуры VVOD ”.

Если в тексте встречаются формулы, то они записываются в отдельной строке.

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

2.2. Требования к программе

Электронный носитель с рабочей, отлаженной программой (желательно дискета) является обязательной частью отчета. Файлы, размещенные на электронном носителе, должны иметь непосредственное отношение к курсовой работе (резервная копия, текстовые файлы пояснительного содержания пользователю, и т.д.). Перед сдачей преподавателю обязательная проверка на отсутствие вирусов.

К самой программе предъявляются следующие требования:

  •  наличие заставки (текстовой или графической) при запуске программы;
  •  каждый пункт меню оформляется в виде отдельной процедуры или функции;
  •  наличие меню выбора пункта задания (цифровое меню – на оценку не выше “удовлетворительно”);
  •  наличие пункта меню, позволяющего осуществлять ввод новых данных в файл и добавление записей в файл;
  •  файл базы данных является типизированным;
  •  файл базы данных состоит из записей;
  •  наличие в базе данных не менее 10 записей;
  •  текст программы набирается с обязательными отступами;
  •  выводимые на экран результаты должны быть упорядочены согласно формулировке задания.

2.3. Требования к защите курсовой работы

Для получения положительной оценки студенту необходимо:

  1.  представить на проверку преподавателю отчет, оформленный согласно выше приведенным правилам;
  2.  продемонстрировать преподавателю работу программы (со своего электронного носителя или набранную в одном из дисплейных классов кафедры, в этом случае файлы должны находится на диске D:\ USER1\ фамильная папка);
  3.  ответить на вопросы, заданные преподавателем.

3. Методические рекомендации

3.1. Структурное программирование

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

Главное место в структурном программировании занимают:

  •  нисходящая разработка;
  •  непосредственно структурное программирование.

Нисходящее (сверху вниз) проектирование начинается с постановки задачи, которую требуется решить, и развивается далее путем разбиения ее на подзадачи. Процесс проектирования включает в себя следующие действия:

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

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

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

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

К основным концепциям структурного программирования относятся:

  •  отказ от бессистемного использования оператора goto;
  •  структуризация алгоритма;
  •  пошаговая детализация.

При разработке алгоритма нужно руководствоваться следующими рекомендациями:

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

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

В структурном программировании несколько базовых управляющих структур: следования, разветвления, повторения (цикл с предусловием). В Паскале, помимо уже перечисленных структур предусмотрены еще ряд дополнительных структур: вариант, коррекция, цикл с постусловием, цикл с параметром. Все структуры подробно рассмотрены в литературе [1].

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

3.2. Виды меню

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

Меню должно быть простым в работе и понятным для самого неподготовленного пользователя. Более сложная система имеет обычно несколько меню. Среди них выделяют главное. Каждый элемент главного меню может генерировать новое (вложенное) меню, являющееся второстепенным по отношению к главному. Уровень вложения меню ограничивается только логической структурой решаемой задачи.

Одним из главных моментов при разработке меню является обработка ситуаций, когда пользователь набирает неправильный идентификатор режима. Наиболее эффективны меню, которые жестко навязывают пользователю ответ, используя для управления только несколько клавиш (например, клавиши , , , , <Esc>, <Enter>) и автоматически игнорируя нажатие всех других.

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

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

Program KURSOVIK; uses crt,graph;

{пункты основного меню описаны в разделе описания const:}

const punkt:array[1..6] of string=

('1 - sozdaniye i dopolneniye',

'2 – display',

'3 - plotnost naseleniya',

'4 - sum naseleniye kontinenta',

'5 – correction’,  '6 - exit');

m='MAIN MENU'; v='Input number of punct ';

var {глобальные переменные}

procedure zastavka;

begin <тело процедуры> end;

. . . . . . .

begin

zastavka;

repeat

clrscr;

gotoXY (20,7); textcolor (red);

write (m); textcolor (yellow);

for i:=1 to 6 do

begin

gotoXY (15,10+i);

writeln (punkt[i])

end;

gotoXY (15,21); textcolor (white);

write (v); read (num);

case num of

1: create;

2: display

3: plotnst;

4: sumpop;

5: correct

else

begin gotoXY(15,23);

Write(‘Takogo puncta net. Repeat’);

Delay(1000)

end

end

until num=6

end.

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

Вертикальное меню и горизонтальное меню отличаются друг от друга только расположением списка режимов, все остальные принципы построения совпадают. Один из режимов выделен цветом или яркостью фона. Выбор нужного режима осуществляется нажатием клавиш ↑ ↓ для вертикального меню и клавиш → ← для горизонтального меню, активизация режима – клавишей <Enter>.

Для построения вертикального меню воспользуемся следующей процедурой:

procedure menu(var punkt: integer);

var i:integer; key:char;

begin

gotoXY(30,7); write(‘ Menu ‘);

for i:=1 to k do

begin gotoXY(30,10+i); write(name[i]) end;

punkt:=1;

repeat

textbackground(6);

{6 – коричневый цвет фона, цвет символа белый}

gotoXY(30,10+punkt);{выделяем первую строку}

write(name[punkt]);

repeat until keypressed;

key:=readkey;

if key =#0 then key:=readkey;

textbackground(0);

gotoXY(30,10+punkt);

write(name[punkt]); {отмена выделения}

case key of

#72:punkt:=punkt-1;

#80:punkt:=punkt+1;

end;

if punkt>k then punkt:=1

else

if punkt<1 then punkt:=k

until key=#13;

clrscr

end;

Использование данной процедуры рассмотрим на примере:

Program zenit;

Uses crt;

Const k=6;

Name: array[1..k] of string[30]=

('1- …', '2- …', '3- …',…);

var m:integer;

procedure menu(var punkt: integer);

var i:integer; key:char;

begin <тело процедуры>end;

procedure zastavka;

begin <тело процедуры>end;

. . . . . . .

{глобальный блок}

begin

zastavka;

repeat

menu(m);

case m of

1: create;

2: out;

3: srw;

4: sort;

5: spisok

end

until m=6

end.

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

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

  1.  Простая программа: реализует один или несколько алгоритмов (например, ряд вычислений). Меню в этом случае не требуется, так как нет логически обособленных элементов процесса решения.
  2.  Линейно организованная программа: реализует выполнение ряда логически завершенных блоков, различных по природе, но необходимых для реализации общей цели. Основная особенность этого типа программ — отсутствие подменю, так как управление осуществляется только на уровне режимов.
  3.  Структурированная программа: реализует всевозможные функциональные блоки различного уровня вложенности. Управление ведется на уровне режимов и подрежимов. Основная особенность – необходимость организации иногда довольно сложного структурированного меню.

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

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

3.3. Заставка (текстовая, графическая)

Заставка является визитной карточкой программы. Она выводится на экран сразу после старта программы и содержит информацию о названии программы, ее назначении, авторе и т.д.

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

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

Вариант 1:

  •  очистка экрана;
  •  вывод заставки на экран;
  •  удержание заставки на экране в течение фиксированного или неопределенно долгого времени;
  •  очистка экрана;
  •  вывод главного меню;
  •  работа с режимами меню.

Вариант 2:

  •  очистка экрана;
  •  одновременный вывод заставки и главного меню;
  •  работа с режимами меню;
  •  вывод заставки в любой момент, когда на экране находится главное меню.

Вариант 3:

  •  очистка экрана;
  •  вывод меню;
  •  вывод заставки поверх меню;
  •  удержание заставки фиксированное или неопределенно долгое время;
  •  исчезновение заставки и восстановление полной картинки меню;
  •  работа с меню.

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

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

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

procedure FRAME(x1,y1,x2,y2: integer);

{х1,у1 – корд.левого, а х2,у2 – правого угла рамки}

const

{для черчения двойной линии}

A=#186; B=#187; C=#188;

D=#200; E=#201; F=#205;

{для черчения одинарной линии

A=#179; B=#191; C=#217;

D=#192; E=#218; F=#196;}

var I,j:integer;

begin

clrscr;

gotoxy(x1,y1); {курсор в лев.угол}

write(E);

for i:=(x1+1) to (x2-1) do write(F);

write(B);

for i:=(y1+1) to (y2-1) do

begin

gotoxy(x1,i);

write(A);

gotoxy(x2,i);

write(A)

end;

gotoxy(x1,y2);

write(D);

for i:=(x1+1) to (x2-1) do write(F);

write(C)

end;

procedure zastavka;

begin

textmode(co40);

frame(2,2,40,25);

gotoxy(2,3);

write(‘САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ’);

gotoxy(5,5);

write(‘УНИВЕРСИТЕТ КИНО И ТЕЛЕВИДЕНИЯ’);

textcolor(red);

gotoxy(15,10); write(‘КУРСОВАЯ РАБОТА’);

gotoxy(15,12); write(‘ПО ИНФОРМАТИКЕ’);

gotoxy(20,18); write(‘Выполнил студент’);

gotoxy(20,19); write(‘группы …’);

gotoxy(20,20); write(‘Петров А.И.’);

gotoxy(15,22); write(‘САНКТ-ПЕТЕРБУРГ’);

gotoxy(20,23); write(‘2008’);

raidkey;

clrscr; textmode(co80)

end;

В типовом примере рассмотрена процедура графической заставки.

4. Разработка информационно-поисковой системы (ИПС)

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

Обязательным компонентом любой ИПС является база данных. База данных (БД) – это поименованная совокупность структурированных данных, относящихся к определённой предметной области. Реляционные БД – базы данных с табличной формой организации информации. Все данные и другая информация хранятся на жестком диске. Создание файла базы данных включает два этапа: создание структуры файла и его заполнение данными.

Файл данных, или база данных, представляет собой таблицу. Столбцы в таблице называются полями, а строки – записями. Запись – комбинированный тип данных, состоящий из компонент различных типов (полей).

База данных состоит из таблицы. Для работы с базой данных в Turbo Pascal используются записи в типизированном файле. Структура записи (структура таблицы) включает название поля, тип поля, размер поля.

Для создания, обработки и надежного хранения БД необходим комплекс программных и языковых средств (СУБД система управления базами данных). СУБД должна обеспечивать выполнение перечисленных ниже операций над базами.

  1.  База состоит из одной или нескольких связанных таблиц с использованием (по необходимости) связей <один к одному>, <один ко многим>, <много к одному>, <много ко многим>.
  2.  Для обеспечения просмотра и поиска используется упорядоченность с помощью индексации или (в крайнем случае) сортировки.
  3.  Вся информация поддается просмотру и редактированию. Записи, содержащие много полей, можно просматривать как в табличном, так и в постраничном виде (в виде карточек).
  4.  Программа позволяет проводить поиск или выборку информации по произвольному запросу (фильтру).

Индекс – это набор указателей на строки таблицы, упорядоченный по значениям полей записей. Каждый элемент этого набора состоит из двух частей: порядкового номера записи в таблице и значения поля сортировки.

Например, сортировка в алфавитном порядке фамилий

Индекс:   4 Афанасьев

                6 Быков

                1 Иванов

Слева указан номер записи в таблице (4, 6, 1), а справа – фамилия в данной записи (фамилии следуют в алфавитном порядке). Просмотр происходит следующим образом: просматривается индексный файл по полю фамилия, и читается из таблицы запись с номером 4, а затем 6 и т.д. Основная таблица не упорядочена.

5. Типовой пример

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

5.1. Постановка задачи

Построить систему управления базой данных (в дальнейшем-СУБД), отражающую сведения о странах мира. Построить базу данных, которая была бы максимально гибкой. В базе данных должны содержаться данные: часть света, название страны, площадь, население. Составить программу на языке Turbo Pascal, позволяющую работать с этой информацией, используя переменные типа «запись» и базу данных в типизированном файле.

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

  1.  создание БД в типизированном файле;
  2.  дополнение файла новыми записями;
  3.  вывод на экран;
  4.  ввод названия страны и определение средней плотности населения;
  5.  для каждой части света определение суммарной численности населения всех приведённых стран и вывод их на экран в порядке убывания в виде «часть света – суммарная численность населения»;
  6.  коррекция данных о заданной стране.

5.2. Описание базы данных

База данных состоит из таблицы. Для работы с базой данных в Turbo Pascal используются типизированные файлы элементами которого являются записи.

Название поля

Тип поля

Размер поля

Описание

continent

текстовый

13

часть света

country

текстовый

13

название

страны

area

числовой

вещественный

площадь

population

числовой

длинное целое

население

5.3. Структура программы

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

Program KURSOVIK; uses crt,graph;

const punkt:array[1..9] of string=

('1 - sozdaniye i dopolneniye',

'2 - display,

'3 - plotnost naseleniya',

'4 - sum naseleniye kontinenta',

'5 - correction', '6 - exit');

m='MAIN MENU'; v='Input number of punct ';

type zap=record

continent,country:string [13];

area:real; population:longint

end;

var {описание глобальных переменных, например, z:zap; f:file of zap} num,i:integer;

procedure zastavka;

{раздел описаний}

begin

{тело процедуры}

end;

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

................

begin

zastavka;

repeat

clrscr;

gotoXY (20,7); textcolor (red);

write (m); textcolor (yellow);

for i:=1 to 6 do

begin

gotoXY (15,10+i);

writeln (punkt[i])

end;

gotoXY (15,21); textcolor (white);

write (v); read (num);

case num of

1: create;

2: display

3: plotnst;

4: sumpop;

5: correct

else

begin

gotoXY(15,23);

write(‘Takogo puncta net. Repeat’);

delay(1000)

end

end

until num=6

end.

5.4. Первоначальные данные

Данные вводят и сохраняют в типизированном файле 'TIP1.DAT'. Эти данные введены с помощью procedure create;

continent    country    area    population    

Africa        Egipet    1001         36000    

Africa        Togo        56          2092    

Africa        Tunis      164          5400    

Asia          India     3268        563490    

Asia          Japan      370        107880    

Asia          Kitai     9597        800720    

Europe        Avstriya    84          7490    

Europe        France     551         51921    

Europe        Spain      505         34328    

North America Canada    9976         21854    

North America USA       9363        210194    

5.5. Интерфейс программы

Для того, чтоб понять, что делает программа, рассмотрим ее меню:

MAIN MENU

1 - sozdaniye i dopolneniye

2 - display

3 - plotnost naseleniya

4 - sum naseleniye kontinenta

5- correction

6 - exit

Input number of punct

Примечание: выбор пункта меню осуществляется путем ввода соответствующего номера.

Меню программы появляется при ее запуске после выполнения заставки.

Рассмотрим  назначения каждого пункта меню:

1 – sozdaniye i dopolneniye - создание базы данных в типизированном файле и дополнение файла новыми записями (пункты 1 и 2 исходного задания);

2 – display – вывод базы данных на экран;

3 – plotnost naseleniya - ввод пользователем названия страны и получение информации о средней плотности населения данной страны (пункт 4 исходного задания). В случае неверного ввода программа сообщает пользователю об ошибке в названии страны или отсутствии сведений о данной стране в базе данных;

4 – sum naseleniye kontinenta - определение для каждого континента суммарной численности населения всех стран, имеющихся в базе данных, и вывод информации на экран в порядке убывания численности. Программа сообщает об отсутствии сведений по какому-либо континенту в случае отсутствия информации ни по одной из стран для данного континента;

5 – correction - коррекция записи в базе данных. В соответствии с желанием пользователя, программа позволяет произвести как полную коррекцию имеющейся информации для данной страны (название страны, континент, площадь, численность населения), так и заменить лишь числовые данные для введённой страны. В случае неверного ввода первоначального имени страны, нуждающейся в коррекции, программа сообщает пользователю об ошибке в названии или отсутствии данной страны в базе данных;

Каждый пункт меню формируется как отдельная процедура.

Создание и дополнение базы данных - procedure create;

Вывод на экран - procedure display;

Средняя плотность населения - procedure plotnst;

Суммарное население континента - procedure sumpop;

Коррекция записи - procedure correct.

5.6. Разработка процедур

Рассмотрим подробно две процедуры.

1. Суммарное население континента - procedure sumpop

Схема алгоритма реализации данной процедуры

Пояснения к алгоритму

Переменные процедуры sumpop

Имя

переменной

Смысл

переменной

Назначение

переменной

Ограничения

Z

элемент

файла tip1.dat

исходная

глобальная переменная, запись

Z1

массив,

элементы

которого двухкомпонентные

записи

результат

типизированная

константа

Z2

двухкомпонентная

запись

промежуточная

поле1 – это название континента, поле2 – численность населения

i, j

индексы

массива Z1

целые числа

В процедуре используется локальная типизированная константа Z1. 

type

zap1=record

cont:string[13];

nas:longint

end;

const

z1:array[1..5] of zap1=

((cont:'Africa';nas:0),

(cont:'Asia';nas:0),

(cont:'Europe';nas:0),

(cont:'North America';nas:0),

(cont:'South America';nas:0));

var z2:zap1; i,j:integer;

Это массив состоящий из 5 элементов (по числу континентов). Каждый элемент массива – запись состоящая из двух полей (название континента, численность населения стран приведенных в таблице соответствующего континента). Типизированная константа используется в процедуре, чтобы задать начальные значения полям записи (название континента и значения ноль для численности населения).

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

Из файла tip1.dat считывается очередной элемент файла (запись о стране) и помещается в переменную Z

type zap=record

continent,country:string [13];

area:real;

population:longint

end;

var f:file of zap; z:zap;

Значение поля континент (название континента) переменной Z последовательно сравнивается со значением поля cont элементов массива Z1. если сравнение произошло, то значение поля nas (соответствующего элемента Z1) увеличивается на значение поля population переменной Z. Таким образом, после просмотра всех элементов файла в массиве Z1 в полях nas будут результаты вычисления сумм населения стран для каждого континента.

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

Программа процедуры

procedure sumpop;

type

zap1=record

cont:string[13];

nas:longint

end;

Const

z1:array[1..5] of zap1=

((cont:'Africa';nas:0),

(cont:'Asia';nas:0),

(cont:'Europe';nas:0),

(cont:'North America';nas:0),

(cont:'South America';nas:0));

var z2:zap1; i,j:integer;

begin

clrscr; ;

reset (f);

while not eof (f) do

begin

read (f,z);

for i:=1 to 5 do

if z.continent=z1[i].cont then

z1[i].nas:=z1[i].nas+z.population

end;

for i:=1 to 4 do

for j:=i+1 to 5 do

if z1[i].nas<z1[j].nas then

begin

z2:=z1[i]; z1[i]:=z1[j]; z1[j]:=z2

end;

textcolor(lightred);

gotoxy(10,2);

write('SUM population on continents:');

textcolor(yellow);

gotoxy(5,3);write('Continent');

gotoxy(20,3);

write('Population (thousand people)');

for i:=1 to 5 do

with z1[i] do

begin

textcolor (white);

gotoXY (5,i+4);

write (cont);

if nas<>0 then

begin gotoXY (20,i+4); write (nas) end

else

begin

textcolor (lightred);

gotoxy(20,i+4); write ('NO INFORMATION')

end

end;

gotoxy(10,15);

write('Continue. Press on key');

readkey;

close (f)

end;

Примечание: при выводе данных на экран используется стандартная процедура gotoxy(x,y)-установливает курсор в позицию экрана с координатами (x,y) и с этой позиции осуществляется вывод по процедуре Write. Если численность населения континентов равна нулю, то на экран выводится текст'NO INFORMATION'(нет информации).

2. Средняя плотность населения - procedure plotnst

Переменные процедуры plotnst

Имя

переменной

Смысл

переменной

Назначение

переменной

Ограничения

Z

элемент файла tip1.dat

исходная

глобальная переменная, запись

S

название страны

вводимое

данное

с клавиатуры

строка,  максимальный размер 13 символов

R

средняя плотность населения заданной страны

результат

число

вещественное

b

флажок

промежуточная

логическая

ans

флажок

промежуточная

целое число

Схема алгоритма реализации данной процедуры

Пояснения к алгоритму

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

Из файла tip1.dat считывается очередной элемент файла (запись о стране) и помещается в переменную Z. При совпадении названия страны (поле country) в записи Z со значением S переменной b присваивается значение true. Начальное значение b было false. Это сделано для того, чтобы не просматривать остальные элементы файла до конца файла. Условие (not eof(f)) and (b=false) будет иметь значение false при b= true даже если не достигнут конец файла, что позволит досрочно выйти из цикла.

После выхода из цикла проверяется значение флажка b, если b=true то производится расчет средней плотности населения для страны заданной в переменной S. Если записи о стране с название S в файле нет, то выводится на экран текст «Неверно задано название страны или в файле нет информации об этой стране» ('INVALID NAME OR NAME WITH NO INFORMATION!').

Пользователь имеет возможность повторить заново выполнение процедуры не выходя в меню (ans<>0) или закончить выполнение процедуры и выйти в меню (ans=0).

Программа процедуры

procedure plotnst;

var s:string; b:boolean;

ans:byte; r:real;

begin

repeat

clrscr;

b:=false; textcolor (lightcyan);

gotoXY (3,2);

write ('Input name of the country ');

textcolor (white);

repeat readln (s) until s<>'';

reset (f);

while (not eof (f)) and (b=false) do

begin

read (f,z);

if z.country=s then b:=true

end;

if b=true then

begin r:=z.population/z.area;

gotoXY (3,4); textcolor (yellow);

writeln (z.country,' - ',r:8:2,' thousand men for 1 square kilometer')

end

else

begin gotoXY (3,4);

textcolor (lightred);

writeln ('INVALID NAME OR NAME

WITH NO INFORMATION!')

end;

writeln; textcolor (white);

write ('  0 - exit, 1 - continue ');

readln (ans)

until ans=0;

close (f)

end;

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

5.7. Текст программы

Program KURSOVIK; 

uses crt,graph;

const punkt:array[1..6] of string=

('1 - sozdaniye i dopolneniye',

'2 - display ',

'3 - plotnost naseleniya',

'4 - sum naseleniye kontinenta',

'5 - correction',

'6 - exit');

m='MAIN MENU';

v='Input number of punct ';

type zap=record continent,country:string [13];

area:real;

population:longint

end;

var f:file of zap;

z:zap;

num,i:integer;

procedure zastavka;

const

vspom='Kursovayarabota';

var gd,gm,a,i,x:integer;

begin

gd:=detect; initgraph (gd,gm,'D:\TP\BGI');

{на красном фоне появляется текст КУРСОВАЯ РАБОТА, с использованием эффекта «летящие буквы»}

setfillstyle (1,red); floodfill (1,1,red);

setcolor (blue); settextstyle (0,0,4);

for i:=1 to 9 do

begin

outtextXY(50*i,100,copy(vspom,i,1));

delay (20000)

end;

setcolor (blue); settextstyle (0,0,4);

for i:=10 to 15 do

begin

outtextXY (70*(i-9),250,

copy(vspom,i,1));

delay (20000);

end;

{от центра снизу экран меняет цвет фона,

закрывая надпись}

setcolor (6); setfillstyle (9,6);

x:=getmaxX div 2;

for a:=1 to x-20 do

begin

fillellipse(x,1,a,getmaxY+round(0.5*a));

delay (600)

end;

setfillstyle (9,6); floodfill (30,1,red);

{сверху экрана выводятся данные студента: фамилия, имя, факультет, группа; в центре экрана появляются 5 колец символизирующих 5 континентов, цвет колец изменяется}

repeat

setcolor (random (15));

settextstyle (0,0,2);

outtextXY (115,30,'IVANOW, FAVT-613');

a:=random (15);

setcolor (a); setfillstyle (1,a);

circle (150,180,70);

circle (150,180,55);

floodfill (150,115,a); a:=random (15);

setcolor (a); setfillstyle (1,a);

circle (300,180,70);

circle (300,180,55);

floodfill (300,115,a);

a:=random (15);

setcolor (a); setfillstyle (1,a);

circle (450,180,70);

circle (450,180,55);

floodfill (450,115,a); a:=random (15);

setcolor (a); setfillstyle (1,a);

circle (227,310,70);

circle (227,310,55);

floodfill (227,245,a); a:=random (15);

setcolor (a); setfillstyle (1,a);

circle (375,312,70);

circle (375,312,55);

floodfill (375,245,a);

for i:=1 to 100 do delay (1000);

until keypressed;

{после нажатия клавиши вид экрана изменяется, появляется изображение глобуса и солнца}

setcolor (yellow);

outtextXY (115,30,'IVANOW, FAVT-613');

setfillstyle (0,brown);

bar(0,getmaxY-50,getmaxX,getmaxY);

setlinestyle (0,0,3);

setcolor (0);

for x:=270 to 294 do

line (x,105,x-160,310);

bar (110,310,150,490);

for i:= 110 to 125 do

arc (210,220,230,420,i);

setcolor (lightblue);

for i:=1 to 100 do circle (210,220,i);

setcolor (blue); circle (210,220,100);

setcolor (yellow); circle (515,165,50);

setfillstyle (1,yellow);

floodfill (515,165,yellow);

setlinestyle (0,0,3);

line(435,165,595,165);

x:=440;

repeat

i:=round(sqrt(7000-sqr(x-515)))+165;

line (515,165,x,i);

i:=-round(sqrt(7000-sqr(x-515)))+165;

line (515,165,x,i);

x:=x+10;

until x>=600;

readkey;

{после нажатия клавиши появляется закрывающийся занавес}

a:=random (15); setfillstyle (1,a);

setcolor (a); x:=getmaxX div 2+50;

for a:=1 to x do

begin

fillellipse (1,1,a,3*a);

fillellipse (getmaxX,1,a,3*a);

delay (1500)

end;

closegraph

end;

procedure create;

const

materik:array [1..5] of string [13]=

('Africa','Asia','Europe','North

America','South America');

var s:string [7]; ans,j,n:byte; i:integer;

begin

clrscr; s:='TIP'; textcolor (white);

write('0 - to create baza;

1 - to continue baza');

readln (n); writeln;

case n of

0:begin rewrite (f); i:=0 end;

1:begin reset(f); seek(f,filesize (f));

i:=filepos (f)

end

end;

repeat

clrscr; i:=i+1; textcolor (magenta);

writeln ('Input record number ',i);

with z do

begin

textcolor (yellow);

write('Input name of the country');

textcolor (white);

readln (country); writeln;

textcolor (yellow);

writeln ('Choose your continent');

textcolor (lightblue);

for j:=1 to 5 do

writeln (j,' - ',materik [j]);

read(j); continent:=materik [j];

textcolor (yellow);

writeln('You have chosen', materik

[j]); writeln;

writeln ('Input area, population

and of revision'); textcolor(white);

read (area,population); writeln;

textcolor (yellow); writeln

textcolor (lightred);

writeln ('Dobavleno!')

end;

write (f,z); writeln; textcolor (white);

write ('0 - exit, 1 - continue ');

readln (ans); writeln

until ans=0;

close (f)

end;

procedure display;

const

s:array [1..4] of string=

('continent','country',

'area','population');

var i:integer; ans:byte;

begin

repeat

clrscr; textcolor (yellow);

for i:=1 to 4 do write (s[i],'    ');

i:=2;

reset (f); textcolor (white);

while not eof (f) do

begin

read (f,z); i:=i+1;

gotoXY (1,i); write (z.continent);

gotoXY (15,i); write (z.country);

gotoXY (23,i); write (z.area:8:2);

gotoXY (33,i); write(z.population:10);

end;

gotoxy(10,15); textcolor (white);

write ('0 - exit, 1 - continue ');

read (ans); writeln;

until ans=0; close (f)

end;

procedure plotnst;

var s:string; b:boolean;

ans:byte; r:real;

begin

repeat

clrscr; b:=false;

textcolor (lightcyan); gotoXY(3,2);

write('Input name of the country');

textcolor (white);

repeat readln (s) until s<>'';

reset (f);

while (not eof (f)) and (b=false) do

begin

read (f,z);

if z.country=s then b:=true

end;

if b=true then

begin

r:=z.population/z.area;

gotoXY (3,4); textcolor (yellow);

writeln (z.country,' - ',r:8:2,

'thousand men for 1 square kilometer')

end

else

begin

gotoXY (3,4);

textcolor (lightred);

writeln ('INVALID NAME OR

NAME WITH NO INFORMATION!')

end;

writeln; textcolor (white);

write ('  0 - exit, 1 - continue ');

readln (ans)

until ans=0; close (f)

end;

procedure sumpop;

type

zap1=record

cont:string[13];

nas:longint

end;

const

z1:array[1..5] of zap1=

((cont:'Africa';nas:0),

(cont:'Asia';nas:0),

(cont:'Europe';nas:0),

(cont:'North America';nas:0),

(cont:'South America';nas:0));

var z2:zap1; i,j:integer;

begin

clrscr; ;

reset (f);

while not eof (f) do

begin

read (f,z);

for i:=1 to 5 do

if z.continent=z1[i].cont then

z1[i].nas:=z1[i].nas+z.population

end;

for i:=1 to 4 do

for j:=i+1 to 5 do

if z1[i].nas<z1[j].nas then

begin

z2:=z1[i]; z1[i]:=z1[j]; z1[j]:=z2

end;

textcolor(lightred); gotoxy(10,2);

write('SUM population on continents:');

textcolor(yellow);

gotoxy(5,3);write('Continent');

gotoxy(20,3);

write('Population (thousand people)');

for i:=1 to 5 do

with z1[i] do

begin

textcolor (white); gotoXY (5,i+4);

write (cont);

if nas<>0 then

begin

gotoXY (20,i+4); write (nas)

end

else

begin

textcolor(lightred);

gotoxy(20,i+4);

write ('NO INFORMATION')

end

end;

gotoxy(10,15);

Write('Continue. Press on key');

readkey; close (f)

end;

procedure correct;

const

materik:array [1..5] of string [13]=

('Africa','Asia','Europe',

'North America','South America');

var ans,l,i:integer; imya:string; b:boolean;

begin

repeat

clrscr;

write('0 - to correct,

1 - to change numeric information');

read (l); writeln;

reset (f); textcolor (green);

write ('Input name of the country

you want to change  ');

textcolor (white);

repeat readln (imya) until imya<>'';

writeln; b:=false;

while (not eof (f)) and (b=false) do

begin

read (f,z);

if z.country=imya then b:=true

end;

if (b=true) and (l=0) then

begin

textcolor (green);

write('Input new name of the country');

textcolor (white); readln (z.country);

writeln; textcolor (green);

writeln ('Choose the continent');

textcolor (lightcyan);

for i:=1 to 5 do

writeln (i,' - ',materik[i]);

writeln; textcolor (white);

read (i); z.continent:=materik [i];

textcolor (green);

writeln('You have chosen',materik [i]);

writeln

end;

if b=true then

begin

textcolor (green);

writeln('Input NEW area, poppulation');

textcolor (white);

read (z.area,z.population);

writeln; textcolor (green);

write ('Input NEW capital population');

textcolor(white);seek (f,filepos(f)-1);

write (f,z); writeln;

textcolor(yellow); write ('Obnovleno!')

end

else begin

textcolor (lightred);

writeln ('INVALID NAME OR

NAME WITH NO INFORMATION !');

writeln

end;

textcolor (white);

write ('0 - exit, 1 - continue ');

readln (ans); writeln;

until ans=0; close (f)

end;

begin

zastavka;

assign(f,'tip1.dat');

repeat

clrscr; gotoXY (20,7); textcolor (red);

write (m); textcolor (yellow);

for i:=1 to  6 do

begin

gotoXY (15,10+i); writeln (punkt[i])

end;

gotoXY (15,21); textcolor (white);

write (v); read (num);

case num of

1: create;

2: display;

3:plotnst;

4:sumpop;

5:correct;

end

until num=6

end.

5.8. Результаты машинного тестирования

1) После выполнения заставки и после выхода из процедуры на экране появляется меню:

MAIN MENU

1 - sozdaniye i dopolneniye

2 - display

3 - plotnost naseleniya

4 - sum naseleniye kontinenta

5 - correction

6 - exit

Input number of punct 1

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

Результаты процедуры create (дополнение базы данных):

0 - to create baza;  1 - to continue baza  1

Input record number 11

Input name of the country  Kitai

Choose your continent

1 - Africa

2 - Asia

3 - Europe

4 - North America

5 - South America

2

You have chosen Asia

Input area, poppulation

9597 800720

Dobavleno!

0 - exit, 1 - continue 0

Примечание: 0 – выход в меню, 1 – повторить выполнение процедуры для другой страны

2) MAIN MENU

1 - sozdaniye i dopolneniye

2 - display

3 - plotnost naseleniya

4 - sum naseleniye kontinenta

5 - correction

6 - exit

Input number of punct 2

Результаты процедуры display:

continent    country    area    population   

Africa        Egipet    1001         36000   

Africa        Togo        56          2092   

Africa        Tunis      164          5400   

Asia          India     3268        563490   

Asia          Japan      370        107880   

Asia          Kitai     9597        800720   

Europe        Avstriya    84          7490   

Europe        France     551         51921   

Europe        Spain      505         34328   

North America Canada    9976         21854   

North America USA       9363        210194   

0 - exit, 1 - continue 0

3) MAIN MENU

1 - sozdaniye i dopolneniye

2 - display

3 - plotnost naseleniya

4- sum naseleniye kontinenta

5 - correction

6 - exit

Input number of punct 3

Результаты процедуры plotnost :

Input name of the country fsdgr

INVALID NAME OR NAME WITH NO INFORMATION!

0 - exit, 1 - continue 1

Input name of the country France

France - 94 thousand men for 1 square kilometer

0 - exit, 1 - continue 0

4) MAIN MENU

1 - sozdaniye i dopolneniye

2 - display

3 - plotnost naseleniya

4 - sum naseleniye kontinenta

5 - correction

6 - exit

Input number of punct 4

Результаты процедуры sumpop:

SUM population on continents:

Continent       Population  (thousand people)

Asia                  1472090

North America          232048

Europe                  93739

Africa                  43492

South America      NO INFORMATION

0 - exit, 1 - continue  0

5) MAIN MENU

1 - sozdaniye i dopolneniye

2 - display

3 - plotnost naseleniya

4 - sum naseleniye kontinenta

5 - correction

6 - exit

Input number of punct 5

Результаты процедуры correct:

0 - to correct, 1 - to change numeric information 1

Input name of the country you want to change  France

Input NEW area, poppulation and year of revision

570   52030   1990

Input NEW capital population   2585

Obnovleno!  0 - exit, 1 - continue 1

0 - to correct, 1 - to change numeric information 0

Input name of the country you want to change  Kitai

Input new name of the country China

Input new name of the capital  Pekin

Choose the continent

1 - Africa

2 - Asia

3 - Europe

4 - North America

5 - South America

2

You have chosen Asia

Input NEW area, poppulation and year of revision

9597   800720   1975

Input NEW capital population  7570

Obnovleno!  0 - exit, 1 – continue  0

6. Литература

1. Малыхина М.П. Программирование на языке высокого уровня. Turbo Pascal – СПб.: БХВ – Петербург, 2006.

2. Юркин А. Задачник по программированию.—СПб.: Питер, 2002.

3. Степанов В.С., Меркушин А.В., Васильева Н.И. Алгоритмизация и программирование на языке высокого уровня. Методические указания к выполнению расчетной работы. СПбГУКиТ, 2008.

4. Бородич Ю.С. и др. Паскаль для персональных компьютеров .

Оглавление

1. Общие положения…………………………………………….…2

2. Требования к курсовой работе……………………………….…3

2.1. Требования к отчету……………………………………......3

2.2. Требования к программе……………………………….…..4

2.3. Требования к защите курсовой работы…………...............5

3. Методические рекомендации…………………………….……..6

3.1. Структурное программирование……………….………….6

3.2. Виды меню………………………………………………….8

3.3. Заставка (текстовая, графическая)……………………….13

4. Разработка информационно-поисковой системы (ИПС)…….17

5. Типовой пример………………………………………………...19

5.1. Постановка задачи………………………………………...19

5.2. Описание базы данных……………………………………20

5.3. Структура программы……………………………………..20

5.4. Первоначальные данные…………………………………..21

5.5. Интерфейс программы…………………………………….22

5.6. Разработка процедур………………………………………23

5.7. Текст программы…………………………………………..32

5.8. Результаты машинного тестирования…………………....41

6. Литература………………………………………………………45

3




1. КОНТРОЛЬНАЯ РАБОТА по дисциплине Английский язык вариант 1
2. Синергетика как естественная наука о структурных преобразованиях в открытой диссипативной нелинейной системе
3. В то же время малые дозы радиации в случае бластогенной трансформации переводят дифференцированные клетки
4. ведении учета составлении отчетности формировании учетной политики организации контроле анализе данных
5.  Раскройте понятие предмета и задач общей и детской психологии
6. техническая фраза обозначающая элементарный принцип организации материала по нисходящей степени интереса
7. Социология конфликта.html
8. реферат дисертації на здобуття наукового ступеня кандидата медичних наук Київ ~1
9. повар Шляндин Виктор МихайловичГород- Санкт
10. тема корпоративного права
11. тема приспосабливает свои ресурсы к динамическим условиям внешней и внутренней среды
12. Игровые упражнения как средство коррекции агрессивного поведения у детей младшего школьного возраста с ЗПР
13. тематическое программирование
14.  ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИССЛЕДОВАНИЯ ИНТЕРНЕТ ~ ЗАВИСИМОСТИ6 1
15. на тему- Разработка художественноконструкторской документации на брюки для женщин средней возрастной груп
16. Реферат на тему- Технология и организация маркетинговых исследований Ст
17. Особенности аудиторской деятельности
18. Особенности правового регулирования труда женщин и лиц с семейными обязанностями
19. стри означает женщина
20. Основы Алгоритмизации и Программирования Руководитель