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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

КУРСОВАЯ РАБОТА

по курсу

Основы алгоритмизации и программирования

на тему

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

ВВЕДЕНИЕ

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

Для выполнения курсовой работы я использую систему PascalABC.

Система Pascal ABC основана на языке Delphi Pascal и призвана осуществить постепенный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Некоторые языковые конструкции в Pascal ABC допускают, наряду с основным, упрощенное использование, что позволяет использовать их на ранних этапах обучения. Например, в модулях может отсутствовать разделение на секцию интерфейса и секцию реализации. Тела методов можно определять непосредственно внутри классов (в стиле Java и C#), что позволяет создавать классы практически сразу после изучения записей, процедур и функций.

Ряд модулей системы программирования Pascal ABC специально создавался для учебных целей:

Модуль растровой графики GraphABC обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi. Он доступен в несобытийных программах и позволяет легко создавать анимацию без мерцания

В программе использую свои модули:

ProcedureAndFunktion — содержит основные процедуры и функции программы.

Type_And_Var — содержит глобальные переменные и свои типы переменных.

Компилятор Pascal ABC является компилятором переднего плана (front-end). Это означает, что он не генерирует исполняемый код в виде. exe-файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора. В итоге скорость работы программы примерно в 20 раз медленнее скорости работы этой же программы, откомпилированной в среде Borland Pascal, и в 50 раз медленнее этой программы, откомпилированной в среде Borland Delphi.

Система Pascal ABC позволяет:

программировать на языке Паскаль, подобном Delphi Pascal, включая объектно-ориентированные расширения

работать с графикой

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

работать с исполнителями Робот и Чертежник

использовать мини-версию электронного задачника Programming Taskbook, содержащую 200 учебных заданий по следующим темам:

скалярные типы данных и управляющие операторы

обработка последовательностей

минимум и максимум

одномерные и двумерные массивы

символы и строки

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

процедуры и функции, рекурсия

указатели и динамические структуры данных

1. ПОСТАНОВКА ЗАДАЧИ

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

1.1 Описание необходимых входных данных

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

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

Ф.И.О. студента;

Предмет по которому он тестировался;

Количество заданных вопросов;

Количество правильных ответов;

Дата прохождения теста;

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

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

2. ПРОЕКТИРОВАНИЕ ПРОГРАММЫ

Опираясь на поставленные задачи в предыдущем пункте, приступим к проектированию приложения.

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

Номер записи. Тип данных — integer;

Фамилия. Тип данных — string;

Имя. Тип данных — string;

Отчество. Тип данных — string;

Название предмета. Тип данных — string.

Дата и время. Тип данных — date.

Количество заданных вопросов. Тип данных — integer.

Количество правильных ответов. Тип данных -integer.

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

Таким образом, для работы с файлом необходимо разработать следующие процедуры и функции:

Процедуру для сохранения базы данных в файл.

Процедуру чтения данных из базы данных.

Интерфейс программы должен иметь следующие особенности:

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

Предоставлять возможность вывода на дисплей информации;

3. Возможность добавлять новую информацию;

4. Возможность удаления информации;

5. Возможность сортировки информации;

6. Возможность поиска информации;

7. Возможность проверки на некорректный ввод данных.

2.1 Используемые компоненты при разработке программы

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

Модуль CRT предназначен для работы с текстовым окном. Он написан для совместимости с Turbo Pascal. В качестве текстового используется графическое окно модуля GraphABC, при этом запрещено изменение размеров окна и ввод/вывод осуществляется непосредственно в текстовом окне. В результате вывода может осуществляться скроллирование текстового экрана.

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

3. ОПИСАНИЕ ПРОГРАММЫ

Программа разбита на модули ProcedureAndFunction, Type_and_Var. Рассмотрим некоторые процедуры описанные в программе:

Процедура Output служит для вывода базы данных на экран. Входные данные отсутствуют. файл тестирование данные база

Procedure OutputData;

var

TempFlag: boolean;

TempInt: integer;

TempString: string;

begin

writeln;

write (Number);

GotoXY (4,WhereY);

write (Element. Surname);

GotoXY (4,WhereY+1);

write (Element. Name);

GotoXY (4,WhereY+1);

write (Element. Patronymic);

GotoXY (22,WhereY-2);

TempInt: =1;

TempFlag: =true;

while (TempInt < Length (Element. Title)) and TempFlag do

begin

if (TempInt > 10) and (Element. Title[TempInt] = ' ') then

begin

write (Copy (Element. Title, 1, TempInt));

TempFlag: =false;

end;

if not TempFlag then

begin

GotoXY (22,WhereY+1);

write (Copy (Element. Title, TempInt+1,Length (Element. Title)));

end;

Inc (TempInt);

end;

if TempFlag then

begin

write (Element. Title);

writeln;

end;

GotoXY (52,WhereY-1);

write (Element. NumberQuestions);

GotoXY (62,WhereY);

write (Element. NumberAnswer);

GotoXY (70,WhereY);

writeln (Element. Time. Day div 10, Element. Time. Day mod 10,'. ', Element. Time. Month div 10, Element. Time. Month mod 10,'. ', Element. Time. Year);

GotoXY (70,WhereY);

writeln (Element. Time. Hour div 10, Element. Time. Hour mod 10,': ', Element. Time. Minutes div 10, Element. Time. Minutes mod 10);

writeln;

end;

Процедура InputElement заполнения записи. Входные данные, строки:

procedure InputElement (var Element: body);

var

tempS: string;

tempCH, tempInt: integer;

begin

write ('фамилия: ');

readln (tempS);

Element. Surname:=tempS;

write ('Имя: ');

readln (tempS);

Element. Name:=tempS;

write ('Отчество: ');

readln (tempS);

Element. Patronymic:=tempS;

write ('Название предмета: ');

readln (tempS);

Element. Title:=tempS;

write ('Количество заданных вопросов: ');

readln (tempCH);

Element. NumberQuestions:=tempCH;

flag: =true;

while flag do

begin

write ('Количество правильных ответов: ');

readln (tempCH);

if tempCH > Element. NumberQuestions then

begin

writeln ('Правильных ответов не может быть больше чем вопросов!');

end

else

begin

flag: =false;

Element. NumberAnswer:=tempCH;

end;

end;

writeln ('Введите дату прохождения теста: ');

flag:= true;

while flag do

begin

write ('Введите год (гггг/гг) 2001−2100: ');

readln (tempCH);

case tempCH of

0. 100:

begin

Element. Time. Year:=2000+tempCH;

flag: =false;

end;

2000. 2100:

begin

Element. Time. Year:=tempCH;

flag: =false;

end;

else writeln ('Введены неверные данные!!!');

end;

end;

flag:= true;

while flag do

begin

write ('Введите месяц сеанса (мм): ');

readln (tempCH);

case tempCH of

1. 12:

begin

Element. Time. Month:=tempCH;

flag: =false;

end;

else

begin

writeln ('Введены неверные данные!!!');

end;

end;

end;

flag: =true;

while flag do

begin

tempInt: =Element. Time. Month;

write ('Введите день сеанса (дд): ');

readln (tempCH);

case tempCH of

1. 31:

begin

Element. Time. Day:=tempCH;

flag: =false;

case tempInt of

2: begin

if ((Element. Time. Year mod 4) < > 0) and (tempCH = 29) then

begin

writeln ('Только в высокосный год в феврале 29 дней!');

flag: =true;

end;

if tempCH >= 30 then

begin

writeln ('В феврале нет', tempCH,'числа!');

flag: =true;

end;

end;

4,6,9,11: if tempCH = 31 then

begin

writeln ('В указанном месяце нет 31 числа!!!');

flag: =true;

end;

end;

end;

else

begin

writeln ('Введены неверные данные!!!');

end;

end;

end;

flag: =true;

while flag do

begin

write ('Введите час сеанса (чч): ');

readln (tempCH);

if (tempCH >= 0) and (tempCH < =23) then

begin

Element. Time. Hour:=tempCH;

flag: =false;

end

else

begin

writeln ('Введены неверные данные!!!');

end;

end;

flag: =true;

while flag do

begin

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

readln (tempCH);

if (tempCH >= 0) and (tempCH < =59) then

begin

Element. Time. Minutes:=tempCH;

flag: =false;

end

else

begin

writeln ('Введены неверные данные!!!');

end;

end;

writeln ('Данные сохранены!');

delay (2000);

clrscr;

end;

Процедура DeletElement удаления записи:

procedure DeletElement (var Q: Queue; NumberElement: integer);

begin

if NumberElement < > Q. Head^. Number then

begin

TempInt: =Q. Head^. Number;

Pop (Q, TempBody);

PushTail (Q, TempBody, false);

Flag: =true;

while (Q. Head^. Number < > NumberElement) and Flag do

begin

if Q. Head^. Number = TempInt then

begin

flag: =false;

end

else

begin

Pop (Q, TempBody);

PushTail (Q, TempBody, false);

end;

end;

if flag then

begin

Pop (Q, TempBody);

while Q. Head^. Number < > TempInt do

begin

Pop (Q, TempBody);

PushTail (Q, TempBody, True);

end;

end

else

begin

writeln ('Элемент с указаным номером не найден. ');

delay (2000);

end;

end

else

begin

Pop (Q, TempBody);

if Q. Head < > nil then

begin

Pop (Q, TempBody);

TempBody. Number:=1;

PushTail (Q, TempBody, False);

while Q. Head^. Number < > 1 do

begin

Pop (Q, TempBody);

PushTail (Q, TempBody, True);

end;

end;

end;

end;

4. ТЕСТИРОВАНИЕ ПРОГРАММЫ

Главное окно программы:

Рис. 1 — Главное окно программы

На экране отображается меню программы. Пользователь может работать с программой.

Создание нового файла:

Рис. 2 — Создание нового файла

Можно открыть уже созданную базу данных из файла:

Рис. 2 — Открытие имеющегося файла

Ввод данных о студенте

Рис. 3 — Добавление нового элемента в базу данных

Сортировка данных

Рис. 4 — Сортировка данных простыми вставками

Поиск данных в базе

Рис. 5 — Поиск по базе данных по всем полям

Вывод записей

Рис. 6 — Вывод данных на экран

Рис. 7 — как это выглядит на экране

На Рис. 7 после выведенных данных мы видим 3 функции:

Вывод других записей

Удаление определённого элемента

Вывод в главное меню программы

Сортировка ведомости

Рис. 8 — Сортировка данных перед занесением в ведомость

В пункте можно выбрать сортировку по Ф.И.О студента или сортировку по названию предмета.

Завершение программы

Рис. 9 — завершение программы

Завершение программы осуществляется путём выбора 9 пунка в главном меню программы.

ЗАКЛЮЧЕНИЕ

В рамках данной курсовой работы было решено задание «Разработка базы реализованного товара в лесном хозяйстве».

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

Для разработки приложения использовался язык высокого уровня Pascal. Средой разработки была выбрана среда Pascal ABC.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Бородич Ю. С., Вальвачев А. Н., Кузьмич А. И. Паскаль для персональных компьютеров. — Мн.: Выш. шк.; БФ ГИТМ «НИКА», 2011.

2. Аляев Ю. А., Гладков В. П., Козлов О. А. Практикум по алгоритмизации и программированию на языке Паскаль: Учеб. пособие. — М. :Финансы и статистика, 2010.

3. Т. А. Павловская -Паскаль, программирование на языке высокого уровня москва-минск, 2009.

ПРИЛОЖЕНИЕ 1

Блок-схемы подпрограмм

Рисунок 1 — блок-схема процедуры добавления элемента в очередь

Рисунок 2 — блок-схема процедуры форматированного вывода информации на экран

ПоказатьСвернуть
Заполнить форму текущей работой