Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab1_Отчет

.docx
Скачиваний:
16
Добавлен:
19.05.2015
Размер:
132.6 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение

высшего профессионального образования

"Донской государственный технический университет"

ДГТУ

Кафедра "Программное обеспечение вычислительной техники и

автоматизированных систем"

Утверждаю

Зав. каф. «ПОВТ и АС»

Нейдорф Р. А.

«____»____________20 __ г.

Пояснительная записка

к работе по дисциплине

"Основы программирования"

Тема: «Обработка структурированных типов данных»

Автор работы Здоровцов Денис Владимирович

Направление 231000 "Программная инженерия"

Обозначение работы Группа ВПР 21

Руководитель работы Слоновский А. В. _

(подпись) (Ф.И.О.)

Работа защищена

(дата) (оценка)

Члены комиссии

(Подпись) (Ф.И.О.)

(Подпись) (Ф.И.О.)

Ростов–на–Дону

2012 г.

Содержание

Содержание 3

Условие задачи 3

Блок-схемы алгоритмов 4

Добавление элемента 4

Изменение элемента 4

Вывод элементов 6

Общая схема 7

Скриншоты 11

Условие задачи

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

Блок-схемы алгоритмов

В блок схемах не отмечена обработка исключений, реализованная конструкциями try .. except.

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

Пояснения:

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

Изменение элемента

Пояснения:

Данные о пользователе просто заменяются новыми.

Удаление элемента

Пояснения:

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

Вывод элементов

Пояснения:

Элементы выводятся постранично (10 элементов на странице).

Общая схема

Пояснения:

Простое текстовое меню в форме диалога.

Код программы

program dataBase;

uses CRT;

type

TListItem = record

name: string[30];

age: integer;

team: integer;

end;

var

a: array of TListItem;

n: integer;

//Вывод сообщения об ошибке

procedure error(n: byte);

var str: string;

begin

if (n <> 0) then

begin

textColor(4);

write('Ошибка: ');

case (n) of

1: str:= 'Неверный ввод';

2: str:= 'Выход за границы списка';

3: str:= 'Ошибка при добавлении элемента';

4: str:= 'Ошибка при удалении элемента';

5: str:= 'Неизвестная ошибка';

end;

writeln(str);

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

textColor(7);

readln();

end;

end;

//Редактировать элемент

procedure editItem(n: integer; listItem: TListItem);

begin

try

a[n] := listItem

except

error(2);

end;

end;

//Добавить элемент

procedure addItem(listItem: TListItem);

begin

try

setLength(a, length(a) + 1);

a[length(a) - 1] := listItem;

except

error(3);

end;

end;

//Удаление элемента

procedure deleteItem(n: integer);

var i:integer;

begin

if ((n > 0) and (n < length(a))) then

begin

for i := n to length(a) - 2 do

a[i] := a[i + 1];

setLength(a, length(a) - 1);

end

else

error(4);

end;

//Заполнение всех полей

function getFildsDialog(): TListItem;

var listItemTmp:TListItem;

begin

while true do

begin

try

write('Введите имя: ');

readln(listItemTmp.name);

write('Введите возраст: ');

readln(listItemTmp.age);

write('Введите команду: ');

readln(listItemTmp.team);

break;

except

error(1);

continue;

end;

end;

result := listItemTmp;

end;

//Диалог редактирования элемента

procedure editDialog;

var n:integer;

begin

try

write('Введите номер элемента в списке:');

readln(n);

if ((n <= length(a)) and (n > 0)) then

editItem(n - 1,getFildsDialog())

else

error(2);

except

error(1);

end;

end;

//Диалог добавления элемента

procedure addDialog();

begin

addItem(getFildsDialog());

end;

//Диалог удаления элемента

procedure deleteDialog();

var n:integer;

begin

write('Введите номер удаляемого элемента: ');

readln(n);

deleteItem(n);

end;

//Диалог просмотра списка элементов

procedure viewDialog();

var i:integer;

begin

writeln(' № |','Имя':15,'':15,'|','Возраст','|','Команда','|');

for i:= 0 to length(a) - 1 do

begin

writeln(i + 1:3,'|',a[i].name:30,'|',a[i].age:7,'|',a[i].team:7,'|');

if (((i + 1) mod 10) = 0) then

readln();

end;

readln();

end;

//Точка входа

begin

while (true) do

begin

clrscr;

writeln('Выберите действие:');

writeln('1: Добавить элемент');

writeln('2: Удалить элемент');

writeln('3: Редактировать элемени');

writeln('4: Просмотреть список');

writeln('0: Выход');

writeln();

write('Выберите пункт меню: ');

readln(n);

writeln();

case n of

0: break;

1: addDialog();

2: deleteDialog();

3: editDialog();

4: viewDialog();

else continue;

end;

end;

end.

Скриншоты

Рисунок 1 Главное меню

Рисунок 2 Добавление элемента

Рисунок 3 Просмотр списка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]