Разработка программы «Телефонный справочник»

Автор работы: Пользователь скрыл имя, 30 Марта 2014 в 11:24, курсовая работа

Краткое описание

Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:
1. Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект.
2. Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.

Прикрепленные файлы: 1 файл

Курсовоая ООП.doc

— 266.50 Кб (Скачать документ)

Воронежский институт высоких технологий – АНОО ВПО

 

 

Факультет: ФЗ и ПО

 

Специальность: Информационные системы и технологии

 

 

 

 

 

 

 

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

 

 

по дисциплине «Объектно-ориентированное программирование»

 

на тему: Разработка программы «Телефонный справочник»

          

 

 

 

 

 

 

 

 

Выполнил: ________________

Группа: ___________________

Проверил: _________________

 

 

 

Дата защиты:

 «____»_____________201__г.

 

Оценка: __________________

 

 

 

 

 

 

 

Воронеж 2011

Содержание

 

 

 

 

 

Введение

Объектно-ориентированное программирование (ООП) – основная парадигма программирования 80-90-х годов, которая по всей видимости сохранится и в течение текущего десятилетия. Она является результатом тридцатилетнего опыта и практики, которые берут начало в языке Симула 67 и продолжаются в языках Смолток, Эйфель, Турбо Паскаль, Объектный Паскаль, С++, Ява, C# и др. ООП – это стиль, который фиксирует поведение реального мира так, что детали его составных частей скрыты, и тот, кто решает задачу, мыслит в терминах, присущих самой задаче, а не языку программирования.

Объектно-ориентированный  язык программирования характеризуется тремя основными свойствами:

1. Инкапсуляция. Комбинирование записей с процедурами и  функциями, манипулирующими полями этих записей, формирует  новый тип данных - объект.

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

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

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

 

 

 

 

 

  1. Анализ и проектирование

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

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

    1. Алгоритм решения

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

Класс - это тип. Этот производный тип вводится в программу с помощью специального оператора объявления класса. В объявлении класса используется ранее описанный инструментальный набор средств для построения и преобразования производных типов.

Очередное множество форм Бэкуса-Наура определяет синтаксис объявления класса.

Объявление ::= [СписокСпецификаторовОбъявления] [СписокОписателей];

СписокСпецификаторовОбъявления

          ::= [СписокСпецификаторовОбъявления] СпецификаторОбъявления

СпецификаторОбъявления ::= СпецификаторТипа

                       ::= *****

СпецификаторТипа ::= СпецификаторКласса

                 ::= УточнённыйСпецификаторТипа

                 ::= *****

УточнённыйСпецификаторТипа ::= КлючевоеСловоКласса ИмяКласса

                           ::= КлючевоеСловоКласса Идентификатор

                           ::= enum ИмяПеречисления

КлючевоеСловоКласса ::= union

                    ::= struct

                    ::= class

ИмяКласса ::= Идентификатор

СпецификаторКласса ::= ЗаголовокКласса {[СписокЧленов]}

ЗаголовокКласса

           ::= КлючевоеСловоКласса [Идентификатор] [СпецификацияБазы]

           ::= КлючевоеСловоКласса  ИмяКласса [СпецификацияБазы]

КлючевоеСловоКласса ::= union

                    ::= struct

                    ::= class

ИмяКласса ::= Идентификатор

Спецификатор класса представляет то, что называется объявлением класса. Уточнённый спецификатор типа объявляет расположенный за ним идентификатор именем класса. Уточнённый спецификатор обеспечивает неполное предварительное объявление класса и перечисления.

Предварительное объявление обеспечивается уточнённым спецификатором типа и является своеобразным прототипом класса или перечисления. Его назначение - сообщение транслятору предварительной информации о том, что существует (должно существовать) объявление класса (или перечисления) с таким именем. Идентификатор, используемый в контексте уточнённого спецификатора имени становится именем класса (или именем перечисления).

Класс считается объявленным даже тогда, когда в нём полностью отсутствует информация о членах класса (пустой список членов класса). Неименованный класс с пустым множеством членов - уже класс!

Имя класса можно употреблять как имя (имя типа) уже в списке членов этого самого класса.

Класс может быть безымянным.

Мы продолжаем формальное определение класса. Теперь рассмотрим синтаксис объявления членов класса.

СписокЧленов ::= ОбъявлениеЧленаКласса [СписокЧленов]

             ::= СпецификаторДоступа : [СписокЧленов]

ОбъявлениеЧленаКласса ::= [СписокСпецификаторовОбъявления]

                                      [СписокОписателейЧленовКласса];

                      ::= ОбъявлениеФункции

                      ::= ОпределениеФункции [;]

                      ::= КвалифицированноеИмя;

СписокОписателейЧленовКласса ::= ОписательЧленаКласса

                             ::= СписокОписателейЧленовКласса,

                                                 ОписательЧленаКласса

ОписательЧленаКласса ::= Описатель [ЧистыйСпецификатор]

                     ::= [Идентификатор] : КонстантноеВыражение

ЧистыйСпецификатор ::= = 0

КвалифицированноеИмяКласса ::= ИмяКласса

                          ::= ИмяКласса :: КвалифицированноеИмяКласса

СпецификаторДоступа ::= private

                    ::= protected

                    ::= public

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

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

Функции-члены могут определяться вне списка членов класса. При определении функции-члена класса за пределами данного класса, в списке членов класса размещается прототип функции-члена. А при определении функции-члена используется квалифицированное имя. Квалифицированное имя состоит из последовательности имён классов, разделённых операциями разрешения области видимости. Эта последовательность имён завершается именем определяемой функции. Последовательность имён классов в квалифицированных именах определяется степенью вложенности объявлений классов.

Класс - это то, что делает C++ объектно-ориентированным языком. На основе классов создаются новые производные типы и определяются функции, которые задают поведение типа.

Тип – класс с информацией об абоненте




 

 

 

 

Формат данных:

ФИО абонента – символьные поля длиной 20 символов.

Адрес абонента – символьное поле длиной 50 символов.

Дата рождения – поле дат.

Номер телефона – символьное поле длиной 20 символов.

Рассмотрим пошаговый алгоритм работы программы

1. Вывод главного окна программы.

2. Выбор режима путем нажатия кнопки на главном окне.

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

4. Если нажата кнопка просмотра  базы данных, переходим к окну  вывода. Здесь возможен вывод  как неотсортированного списка  абонентов, так и отсортированного  по выбираемому пользователем  критерию (по ФИО абонента, адресу, номеру телефона. Для сортировки использовался алгоритм простого выбора.

Простейшая сортировка посредством выбора сводится к следующему.

I Найти наименьший ключ, переслать соответствующую запись в область вывода и заменить ключ значением ¥ (которое по предположению больше любого реального ключа).

II Повторить шаг (I). На этот раз будет выбран ключ, наименьший из оставшихся, так как ранее наименьший ключ был заменен значением ¥.

III Повторять шаг (I) до тех пор, пока не будут выбраны N записей.

    1. Структурная модель

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

 



 










 



 


 




 

 

  1. Структурная модель

После начала работы управление передается блоку «Работа со справочником абонентов». Здесь вводятся данные по абонентам. Блок выборок производит отбор абонентов по заданному критерию – ФИО, адресу или номеру телефона. Он содержит блоки, выполняющие необходимые выборки записей. Блок «Просмотр базы данных» выполняет сортировки - упорядочивает записи по выбранному критерию.

    1. Объектная модель

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


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

  1. Объектная модель

f – фамилия абонента;

fn – имя абонента;

sn – отчество абонента;

dr – дата рождения;

adr – адрес;

tel – номер телефона;

TelBook – конструктор, заполняет поля объекта;

FilterFIO – выборка абонентов по  заданным ФИО;

FilterAdr - выборка абонентов по  заданному адресу;

FilterTel - выборка абонентов по заданному номеру телефона.

 

 

 

 

  1. Разработка программы

    1. Назначение программы

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

    1. Системные требования

Программа может работать в среде операционных систем от Windows 98 до Windows 7. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти – 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для установки необходимо приблизительно 400 Кбайт).

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

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

    1. Выбор языка программирования

Для написания программы была использована среда визуального программирования C++ Builder версии 6.0.

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

С# – это новый язык, разработанный Мiсгоsоft для сетевой платформы. По существу С# является разновидностью С++, и несмотря на ряд принципиальных отличий, языки С# и С++ совпадают примерно на 90%. Вероятно, пройдет немало времени, прежде чем язык С# составит серьезную конкуренцию языку С++; но даже если это и произойдет, то знание языка С++ окажется существенным преимуществом.

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

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

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

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

Информация о работе Разработка программы «Телефонный справочник»