Информационная система "Выставочный зал"

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


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

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

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

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовойработе

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

Тема: «Информационная система «Выставочный зал»

Содержание

Введение

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

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

2. Проектирование программы

3. Реализация программы

4. Тестирование программы

Заключение

Список использованных материалов

Приложение

Введение

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

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

Lazarus -- свободная среда разработки программного обеспечения для компилятора Free Pascal (часто используется сокращение FPC-- свободно распространяемый компилятор языка программирования Pascal) на языке Object Pascal. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. На данный момент является единственным инструментом быстрой разработки приложений (RAD), позволяющим Delphi-программистам создавать приложения с графическим интерфейсом для Linux (и других не-Windows) систем.

Позволяет достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows, Android. Начиная с Delphi XE2 в самом Delphi имеется возможность компиляции программ для Mac OS X и iOS.

Функции:

Основан на библиотеке визуальных компонентов Lazarus Component Library (LCL). В настоящее время практически полностью поддерживает виджеты Win32, GTK1, GTK2, Carbon. В разработке находятся виджеты Qt и WinCE.

1. Поддерживает преобразование проектов Delphi

2. Реализован основной набор элементов управления

3. Редактор форм и инспектор объектов максимально приближены к Delphi

4. Интерфейс отладки (используется внешний отладчик GDB)

5. Простой переход для Delphi программистов благодаря близости LCL к VCL

6. Полностью юникодный (UTF-8) интерфейс и редактор и поэтому отсутствие проблем с портированием кода, содержащего национальные символы

7. Мощный редактор кода, включающий систему подсказок, гипертекстовую навигацию по исходным текстам, автозавершение кода и рефакторинг

8. Форматирование кода «из коробки», используя механизмы Jedi Code Format

9. Поддержка двух стилей ассемблера: Intel и AT&T (поддерживаются со стороны компилятора)

10. Поддержка множества типов синтаксиса Pascal: Object Pascal, Turbo Pascal, Mac Pascal, Delphi (поддерживаются со стороны компилятора)

11. Имеет собственный формат управления пакетами

12. Авто сборка самого себя (под новую библиотеку виджетов) нажатием одной кнопки

13. Поддерживаемые для компиляции ОС: Linux, Microsoft Windows (Win32, Win64), Mac OS X, FreeBSD, WinCE, OS/

Недостатки:

1. Нет полной совместимости с Delphi (хотя в отличие от Delphi предоставляет возможность создавать более кроссплатформенные приложения)

2. Отсутствие полной документации, хотя она доступна в виде Wiki -- учебников, которые могут редактировать сами пользователи

3. Разные кодировки строк в Windows и Lazarus (UTF-16 и UTF-8) создают трудности для Windows -- пользователей, так как им придется вручную следить за преобразованием строк, используя несколько десятков функций и большое руководство в wiki

ПО, написанное на Lazarus

1. Total Commander -- 64-разрядная версия TC 8.0 компилируется с помощью Lazarus x64

2. Double Commander -- двухпанельный файловый менеджер c открытым исходным кодом, работающий под Linux и Microsoft Windows.

3. easyMP3Gain -- аудиоредактор для нормализации громкости mp3-файлов.

4. GLScene -- графический движок, использующий библиотеку OpenGL в качестве интерфейса программирования приложений. Входит в пакет CodeTyphon -- альтернативная сборка Lazarus, со множеством дополнительных пакетов и компонентов.

5. Greengnome (англ.) -- свободная среда рабочего стола для Microsoft Windows (аналог рабочего стола GNOME для Linux).

6. PeaZip -- свободный и бесплатный кроссплатформенный портативный архиватор и графическая оболочка для других архиваторов.

7. Ubuntu Control Center -- центр управления операционной системой ubuntu.

8. Transmission Remote GUI -- Front-end программа для управления BitTorrent клиентской программой Transmission, работающая под Linux, Microsoft Windows и Mac OS X.

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

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

1. создание новой базы данных;

2. открытие базы из файла;

3. сохранение базы в файл;

4. добавление записей (в любую позицию, указанную пользователем);

5. удаление записей;

6. редактирование записей;

7. поиск записей по одному (или нескольким) полям;

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

9. вывод базы данных на экран;

10. вывод отчета на экран и в текстовый файл.

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

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

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

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

Информация о выставках:

1. название выставки;

2. фамилия владельца выставки;

3. дата начала выставки;

4. дата окончания выставки;

5. цена билета;

6. экспонаты, представленные на выставке.

Информация об экспонатах:

1. название экспоната;

2. автор экспоната;

3. тип экспоната;

4. время создания экспоната;

5. подлинность экспоната.

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

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

2. Проектирование программы

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

Для работы с информацией должно быть реализовано:

1. добавление информации в любую позицию;

2. удаление информации;

3. редактирование уже имеющейся информации;

4. поиск среди имеющейся информации с возможностью дальнейшего редактирования;

5. сортировка информации по различным полям.

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

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

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

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

1. просмотр выставок и экспонатов;

2. вызов процедур добавления, удаления и редактирования для каждого списка;

3. выбор поля сортировки, а так же ее направления, а так же вызов процедуры сортировки, в зависимости от выбранных параметров;

4. выбор поля для поиска, а так же его активацию;

5. просмотр экспонатов на каждой выставке;

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

7. просмотр отчета, с возможностью его сохранения в файл;

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

3. Реализация программы

Для разработки программы используется среда разработки Lazarus.

Стандартные модули Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Menus, Buttons позволяют создавать оконный интерфейс.

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

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

Создадим три списка: список экспонатов, список выставок, и список, который хранит в себе информацию о наличии экспонатов на той или иной выставке.

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

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

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

1.. exhibexp — файл, содержащий информацию об экспонатах;

2.. exhibvist — файл, содержащий информацию о выставках;

3.. exhiblink — файл, содержащий информацию о связях выставок и экспонатов.

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

Листинг 1 — процедура считывания информации об экспонатах из файла

procedure openexp (var f: spexp; var t: spexp; nam: string);

var el: exp;

begin

assignfile (fileexp, nam);

{$I-}

reset (fileexp);

{$I+}

r1: =ioresult;

if r1< >0 then showmessage ('Не найден файл '+nam) else

while not eof (fileexp) do begin read (fileexp, el); dob_v_konexp (f, t, el);

end;

closefile (fileexp);

end;

Программа реализована с использованием модулей.

Модули Main, DobExpUn, SpisExp, RedExp, SpisVist, DobVistUт, RedVist, AddExpToVist, Otchet, хранят в себе формы интерфейса программы.

Интерфейс разработан в виде обьектов и событий, которые могут вызываться кликом, двойным кликом, либо горячими клавишами.

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

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

В модуле Glob описаны типы, переменные и процедуры для работы со списками. Рассмотрим некоторые процедуры этого модуля.

Процедура dob_v_nachexp добавляет элемент в начало списка экспонатов.

Процедура dob_v_konexp добавляет элемент в конец списка экспонатов

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

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

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

Процедура clearexp использует процедуру удаления из начала для очистки всего списка.

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

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

Также в данном модуле содержатся процедуры для сортировки списков выставок и экспонатов по разным полям.

Процедура VistSortCode служит для сортировки списка выставок по коду сортировкой «пузырьком».

Листинг 2 — процедура сортировки списка выставок по кодам

procedure VistSortCode (var f: spvist; var t: spvist);

var i, j: integer;

elem1,elem2: spvist;

begin

cvist: =f;

for i: =1 to kolvist-1 do

begin

for j: =1 to kolvist-1 do

begin

elem1: =cvist;

elem2: =cvist^. next;

if elem2^. code<elem1^. code then swapvist (elem1,elem2);

cvist: =cvist^. next;

end;

cvist: =f;

end;

end;

Данная процедура использует в себе процедуру swapvist, которая меняет информацию между двумя элементами, если это необходимо. Эта процедура используется и в остальных процедурах сортировки.

Листинг 3 — процедура обмена информацией между двумя звеньями списка

procedure SwapVist (var el1: spvist; var el2: spvist);

var temp: vist;

begin

temp. name:=el1^. name; el1^. name:=el2^. name; el2^. name:=temp. name;

temp. pole:=el1^. pole; el1^. pole:=el2^. pole; el2^. pole:=temp. pole;

temp. start:=el1^. start; el1^. start:=el2^. start; el2^. start:=temp. start;

temp. ending:=el1^. ending; el1^. ending:=el2^. ending; el2^. ending:=temp. ending;

temp. price:=el1^. price; el1^. price:=el2^. price; el2^. price:=temp. price;

temp. code:=el1^. code; el1^. code:=el2^. code; el2^. code:=temp. code;

temp. found:=el1^. found; el1^. found:=el2^. found; el2^. found:=temp. found;

end;

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

При запуске программы появляется главное окно программы (рис. 1).

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

Окно разделено на две части.

При нажатии кнопки «Добавить» открывается окно добавления экспоната (рис. 2) или выставки (рис. 3)

В обоих окнах доступен выбор направления добавления. При выбранном «вниз» элементы будут добавляться либо в конец, либо после выделенного элемента.

Кнопка «Очистить поля» позволяет сделать все строки ввода пустыми.

При нажатии на кнопку «Добавить» происходит проверка на корректность ввода, а так же удаление лишних пробелов. Затем происходит создание нового звена с введенной информацией в указанном месте нужного списка. Сообщение о некорректном вводе будет выводиться при:

1. наличии любых символов, кроме русского и английского алфавитов, а так же пробела и дефиса в полях «Название», «Автор», «Тип»;

2. вводе любых символов, кроме цифр в поля «Год», «Дата начала», «Дата окончания», «Цена»;

3. вводе некорректной даты (прим. 30. 02. 2013);

4. дате окончания, более ранней, чем дата начала.

При нажатии кнопки «Показать список», открывается окно работы с выбранным списком (рис. 4).

Рис. 4 — Список экспонатов

В этом окне содержатся функции для работы со списком.

По нажатию на кнопку «Удалить» будет удален выбранный элемент.

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

По нажатию на кнопку «Очистить» появляется окно подтверждения. При нажатии «Да» список будет полностью удален из памяти.

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

Зона «Поиск» предлагает выбор поля, по которому будет происходить поиск элементов. При нажатии кнопки «Поиск» выбор другого поля поиска станет недоступным, а в окне будут выведены результаты поиска, с которыми можно продолжать работу (рис. 5). При нажатии на кнопку «Завершить» выбор поля становится доступным и выводится прежний список.

Двойной клик по выставке в списке выставок вызовет окно добавления экспонатов на выставку (рис. 6).

Кнопка «Показать информацию» выводит информацию о выставке, с которой происходит работа. Добавление экспонатов происходит при отметке экспонатов в правом окне и нажатии кнопки «< ---«, удаление — при отметке в левом оке, и нажатии «--->».

Кнопки «Выделить все» и «Снять выделение», выделяют и отменяют выделение в соответствующих окнах.

Рис. 5 — Поиск

Рис. 6 — Окно добавления экспонатов на выставку

Меню «Файл» главного состоит из пунктов:

1. «Создать» — очищает все списки, предварительно предлагая сохранить текущие данные;

2. «Сохранение» — вызывает окно сохранения списков (рис. 7);

3. «Загрузка» — вызывает окно, аналогичное окну сохранения, предварительно предлагая сохранить данные;

4. «Выход» — завершает работу приложения, предлагая сохранить данные перед выходом.

Рис. 7 — Изменение записи

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

Рис. 8 — Окно создания отчета

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

Заключение

В рамках данной курсовой работы было решено задание «реализация информационной системы „Выставочный зал“».

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

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

Реализовано:

1. Создание новой базы данных;

2. Добавление элемента с информацией в любую позицию списков;

3. Удаление элементов списков из любой позиции;

4. Очистка списков;

5. Добавление экспонатов на выставку;

6. Удаление экспонатов с выставки;

7. Сохранение всех списков в файлы;

8. Открытие базы данных из файлов;

9. Создание и сохранение отчета.

приложение список файл отчет

Список использованных материалов

1. Справочник — «Основы Delphi» [Электронный ресурс]. Режим доступа: http: //www. delphibasics. ru/ Дата доступа: 12. 05. 2012.

2. Форум программистов и сисадминов [Электронный ресурс]. Режим доступа: http: //www. cyberforum. ru/ Дата доступа: 12. 05. 2012.

3. Turbo Pascal — Тум Су [Электронный ресурс]. Режим доступа: http: //pascal. toom. su/ Дата доступа: 12. 05. 2012.

4. Lazarus. Секреты и советы [Электронный ресурс]. Режим доступа: http: //lazarus. su/ Дата доступа: 12. 05. 2012.

Приложение

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

Начало

Блок-схема 1. Алгоритм добавления элемента в список экспонатов

Блок-схема 2. Алгоритм открытия списка из файла

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