Курсовая: Разработка программного обеспечения для работы с базой данных с использованием технологии объектно-ориентированного программирования
Предмет: Технология програмирования.
Тема: Разработка програмного обеспечения для работы с базой данных с
использованием технологии объектно-ориентарованного програмирования
Реферат
В курсовом проекте содержится: страниц 18.
Ключевые слова: объектно-ориентарованное програмирование, файл, массив,
основное меню, режим, структура файла, нормализация, функция, классы,
деструктор.
В курсовом проекте выполненна разработка програмного обеспечения для
работы с базой данных с использованием технологии
объектно-ориентарованного програмирования. Разработан алгоритм и
программа.
Содержание:
Введение.
Постановка задачи.
Информационное обеспечение.
Алгоритм решения задачи.
Программное обеспечение.
Заключение.
Литература.
Приложение.
Введение
Объектно-ориентированное программирование (ООП) - это взгляд на
програмирование, сосредоточенный на данных; в котором данные и поведение
жестко связаны. Данные и поведение представлены в виде классов,
экземпляры которых - объекты. Например, полином может иметь диапазон
допустимых значений, и на эти значения могут действовать такие операции,
как сложение и умножение.
Для обозначения пользовательских расширений встроенных типов данных,
доступных из языка, мы будем использовать термин абстрактные типы данных
(АТД). Они составлены из множества значений и коллекции операций,
которые могут работать с этими значениями. Например, С не имеет чисел
комплексного типа, а C++ позволяет добавить такой тип и объединяет ею с
существующими типами данных.
Объекты - это переменные класса. ООП позволяет легко создавать и
использовать АТД. Для удобства создания нового ти'па из уже существующих
типов, определенных пользователем ООП использует механизм нacледoвания.
В ООП объекты отвечают за свое поведение. Например, все полиномиальные
объекты, объекты комплексных чисел, объекты целых чисел и объекты числа
с плавающей точкой поддерживают операцию сложения. Каждый тип имеет код
для выполнения сложения. Компилятор обеспечивает правильный код для
целых чисел и чисел с плавающей точкой. Полиномиальный АТД имеет
функцию, определяющую сложение, специфическое для его реализации.
Создатель АТД должен будет подключить код для любого поведения, которое
обычно сможет понять объект. Наличие объекта, отвечающего за свое
поведение, облегчает задачу кодирования для пользователя этого объекта.
Рассмотрим класс объектов, называемых фигурами. Если мы хотим рисовать
фигуры на экране, то мы должны знать, где находится центр фигуры и как
ее рисовать. Некоторые фигуры, такие как многоугольники, рисовать
относительно несложно, однако основная процедура рисования фигуры может
быть и очень дорогостоящей, требующей запоминания большого числа
характерных граничных точек. Избежать этого для случая многоугольника
несомненно полезно. Если объект характерной фигуры лучше знает, как себя
нарисовать, то программисту, использующему такие фигуры, необходимо лишь
передать объекту сообщение “рисовать” (draw).
Новая конструкпия C++ - класс - обеспечивает механизм инкапсуляции для
реализации АТД. Инкапсуляция включает как детали внутренней реализации
специфического типа, так и доступные извне операции и функции, которые
могут оперировать объектами этого типа. Детали реализации могут делать
недоступным для пользователя код, который использует тип. Например, стек
может быть реализован как массив фиксированной длины, при этом
общедоступные операции будут включать выталкивание (push) и вталкивание
(pop). Изменение внутренней реализации в связанном списке не будет
влиять на то, как будут извне использоваться push и pop. Реализация
стека в данном случае скрыта от его пользователей.
Термин ООП включает в себя следующие концепции:
моделирование деятельности мира;
наличие типов, определяемых пользователем;
сокрытие деталей реализации;
повторное использование кода через наследование;
разрешение интерпретации вызова функции во время выполнения.
Некоторые из этих концепций неясны, некоторые абстрактны, а некоторые
обобщены. ООП также часто подразумевает идеологическую точку зрения на
процесс программирования.
Постановка задачи
В данном курсавом проекте разрабатывается программа, которая будет
позволять работать с базой данных склада фирмы торгующей
металлопродукцией. Программа разрабатывается на языке
объектно-ориентированного програмирования С++. Программы будет работать
с жестким диском, на котором будет сохранятся вся необходимая
информация. Она будет иметь меню с несколькими основными пунктами,
такими как,
Создание файла и ввод информации.
Просмотр данных и их корректировка.
Сортировка отгрузки металла.
Удалить файл с данными.
И естественно выход из программы. Будет установленна защита от
несанкционированного доступа путем установки пароля при старте. Работа с
пользователем будет осуществленна при помощи меню, и подсказок.
Информационное обеспечение
Разработанная программа может работать на любом IBM-совместимом
компьютере начиная от 80286 и выше. Работа программы не ограничена
объемом ОЗУ или жесткого диска, но рекомендуется иметь не меньше 2
мегабайт свободного дискового пространства. При увеличении объема базы
данных необходимо увеличить емкость используемого ЖМД. Вся информация
вводится при помощи клавиатуры. Контроль введенной информации
осуществляется при помощи дисплея.
Необходимая входная информация:
Код поставщика
Код потребителя
Код металла
Отзрузка за сутки
Отзрузка за месяц
Отзрузка за год
После ввода информации возможно ее редактирование и удаление. Ввод можно
осуществлять в любом порядке, поскольку осуществлена функция сортировки.
Данные вводятся в виде таблицы.
В результате выполнения программы мы имеем файл на ЖМД с нашей базой
данных. Возможен просмотр введенной информации, а также редактирование и
удаление не нужных пунктов.
Диалоговая информация:
Для запуска программы по обработке данных необходимо запустить
загрузочный файл. После запуска загрузочного файла появится надпись
“ Введите пароль: “
Если пользователь ввел неверный пароль, программа выдает сообщение :
“Неверно”
и будет произведен краткий звуковой сигнал. После чего снова будет
предложено ввести пароль.
После ввода верного пароля на экране появится основное меню:
Для продолжения работы необходимо выбрать один из пунктов меню , набрав
на клавиатуре цифру 1,2,3 или 4 в зависимости от того, что пользователь
хочет сделать , и нажать клавишу “Enter”.
После выбора первого пункта меню “ Создание файла “ на экране появляется
сверху надпись
“ Ввод информации в файл “
и под надписью выводится шапка таблицы и курсор устанавливается в
начальное положение , откуда пользователь должен начать ввод данных.
Внизу экрана высвечивается подсказка
“ Выход - 0 в графе” N склада””.
После введения последнего элемента данных и ввода “0” в графе “N склада”
программа возвращает пользователя в главное меню.
После выбора 2 пункта меню “ Просмотр данных и их корректировка.“ и
нажатия клавиши “Enter” пользователь видит на экране вверху строку
“ Просмотр данных в файле “
под которой высвечивается таблица с введенными данными.
Внизу еще одна таблица, метаал с наибольшей отгрузкой за сутки.
И меню:
“1- Добавить 2- Удалить 3- Изменить др. - Выйти в меню”
После выбора пункта “1. Добавить.” Программа просить ввести данные.
“Введите код пост., код потр., код мет., отгрузка за сутки, месяц, год.”
Новые данные добавляются в конец таблицы и снова выводятся на экран.
После выбора пункта “2. Удалить.” Программа запрашивает код металла по
котрому нужно удалить запись. И на экран выводится обновденная таблица.
После выбора пункта “3. Изменить.” Программа запрашивает код металла по
которому следует изменить запись, и просить ввести новые данные:
“Введите код пост., код потр., код мет., отгрузка за сутки, месяц, год.”
Затем выводится обновленная таблица.
Для выхода из просмотра необходимо нажать любую клавишу.
После нажатия любой клавиши программа возвращает пользователя в главное
меню.
Когда пользователь выбирает 3 пункт меню “ Сортировка отгрузки металла.
“и нажимает “Enter”, перед ним на экране появляется строка:
“ Введите имя файла “.
Пользователь должен ввести имя файла и нажать “Enter “. Если сортировка
прошла успешно пользователь увидит надпись:
“Сортировка произошла успешно. Нажмите любую клавишу.”
Когда пользователь выбирает 4 пункт меню “Удалить файл с данными.” Перед
ним появляется строка:
“Введите пожалуйста название файла ”
Пользователь должен ввести имя файла подлежащего удалению и нажать
“Enter”.
Когда пользователь выберет 4 пункт меню “ Выход “ , программа завершит
работу и выйдет в операционную систему.
Алгоритм решения задачи.
Начало программы:
Очищаем экран.
Выводим на экран запрос пароля.
Если пароль не верный – сообщаем об ошибке и повторяем запрос.
Если пароль верный, очищаем экран и выводим меню:
Создание файла и ввод информации.
Просмотр данных и их корректировка.
Сортировка отгрузки металла.
Удалить файл с данными.
Выход.
Если выбран пункт 1. Создание файла и ввод информации, то очищаем экран
и запрашиваем имя файла с которым будем работать.
После ввода имени файла проверям, можем ли создать файл.
В случае если не возможно создать файл пишем об ошибке, и выходим в
меню.
Если файл создан, то очищаем экран и выводим шапку базы.
Начинам безконечный цикл и вводим последовательно все элементы БД.
В случае если в коде поставщика введен 0, то записываем информацию в
файл.
Если невоможно записать данные в фал, то сообщаем об ошибке.
Если запись прошла успешно, то закрываем файл и выводим сообщение, что
все впорядке.
Ждем нажатия клавиши и выходим в меню.
Если выбран пункт 2. Просмотр данных и их корректировка, то очищаем
экран и запрашиваем имя файла с БД.
Открываем файл только для чтения.
В случае если невозможно его открыть, то выводим сообщение об ошибке и
выходим в меню.
В противном случае - очищаем экран и выводим шапку базы.
Считываем данные из файла и подставляем их в таблицу.
Если данные не обноружены то выводимсообщение об ошибке – Файл пуст!
Если все впорядке, то выводим таблицу о металле с наибольшей отгрузкой
за сутки.
Затем закрываем файл.
Организуем диалог:
Добавить
Удалить
Изменить
Др. Выйти в меню
Если выбран пункт 1- добавить, то открываем файл для записи в конец.
Выводим на экран: Введите код пост., код потр., код мет.,отгрузка за
сутки, месяц, год
Записываем введенную информацию в файл.
Закрываем файл.
Если выбран пункт 2- удалить, то запрашиваем код металла который
необходимо удалить.
Открываем одновременно два файла, один для чтения (с базой) другой для
записи (временный).
Переписываем одну за другой записи из первого во второй.
Проверяем, чтобы шифр продукции не совпадал с заданным числом.
Затем удаляем файл 1 и переименовываем 2 в 1
Выводим сообщение об успешном окончании действия.
Если выбран пункт 3 – изменить, то очищаем экран.
Запрашиваем код металла с информацией для изменения.
Открываем файл для чтения и записи.
Считываем все элементы данных.
Если элемент не найден, то сообщаем об ошибке и закрываем файл.
Если все впорядке, то сообщаем что нужный элемент найден.
Запрашиваем подтверждение на изменение записи.
Если не подтверждено, то закрываем файл и выходим в меню.
В противном случае просим ввести новые данные.
Затем заменяем новые данные на старые.
Записываем изменения в файл и закрываем его.
Если нажата какая-либо другая клавиша, то выходим в меню.
Если выбран пункт 3. Сортировка отгрузки металла, то очищаем экран.
Запрашиваем имя нужного файла.
Если файл не найден, выдаем сообщение об ошике.
В противном случае открываем его только для чтения.
Считываем последовательно данные из файла в новый массив.
Затем сравниваем каждые два элемента и ставим вперед больший.
Записываем отсортированные данные в файл.
Выводим сообщение об окончании процесса.
Очищаем память.
Если был выбран пункт 4. Удалить файл с данными, то очищаем экран.
Запрашиваем имя файла.
Удаляем файл.
Если файл невозможно удалить, то сообщаем об ошибке.
Если все впрорядке, то выходим в меню.
Конец программы.
5. Программное обеспечение.
В самом простом виде класс определяется в Си++ как структура, работа
с элементами которой возможна только через элементы-функции. В
отличие от структуры класс имеет "приватную" (личную) часть, элементы
которой не могут быть доступны иначе как через другие элементыфункции, и
"публичную" (общую) часть, элементы
которой могут быть использованы непосредственно. Объектом называется
определяемая в программе переменная, тип которой определен
// Опред-ние переменных a,b // Опред-ние объектов a,b класса dat
dat a,b; dat a,b;
a.day = 5; // Непосредственное использование
a.month = 12; // приватной части объекта запрещено
bAA.SetDat("12,12,1990"); b.Setdat("12,12,1990");
} }
"Приватная" часть класса не обязательно должна следовать в начале
определения класса. Для ее обозначения в произвольном месте
определения класса можно использовать служебное слово private.
Tаким образом в первом приближении класс отличается от структуры
четко определенным интерфейсом доступа к его элементам.
Объекты класса обладают всеми свойствами переменных, в том числе
такими, как область действия и класс памяти (время жизни).
Последнее свойство наиболее интересно, так как процессы создания и
уничтожения объектов класса могут сопровождаться вызовом функций
(конструктор и деструктор). По классам памяти (и времени жизни) в Си
различаются переменные:
- статические (внешние), создаваемые в статической памяти
программы и существующие в течение всего времени работы программы;
- автоматические, создаваемые в стеке в момент вызова функции и
уничтожаемые при ее завершении;
- динамические, создаваемые и уничтожаемые в свободной памяти
задачи в моменты вызова функций malloc() и free() или выполнения
операторов new и delete.
Соответственно в программе возможно определение статических,
автоматических и динамических объектов одного класса:
class dat
{ ....... }
dat a,b; // Статические объекты
dat *p; // Ссылка на объект
void main()
{
dat c,d; // Автоматические объекты
p = new dat; // Динамический объект
...
delete p; // Уничтожение динамического объекта
} <---------------------// Уничтожение автоматических объектов
Процесс создания и уничтожения объектов класса ассоциируется при
объектном программировании с созданием и уничтожением соответствующих
им физических объектов. Поэтому с этими действиями необходимо
связывать определяемые программистом функции для установки начальных
значений, резервирования памяти и т.д.. Неявно вызываемые функции при
создании и уничтожении объектов класса называются конструкторами и
деструкторами. Они определяются как элементы-функции класса и имена их
совпадают с именем класса.
Конструкторов для данного класса может быть сколь угодно много, если
они отличаются формальными параметрами, деструктор же всегда
один и имеет имя ~<имя класса>.
С процессом создания объектов связано понятие их инициализации.
Инициализировать объекты обычным способом нельзя. Их инициализация
осуществляется либо явным присваиванием (копированием) другого
объекта, либо неявным вызовом конструктора. Если конструктор
имеет формальные параметры, то в определении переменной после ее имени
должны присутствовать в скобках значения фактических параметров.
Момент вызова конструктора и деструктора определяется временем создания
и уничтожения объектов:
- для статических объектов - конструктор вызывается перед
входом в main(), деструктор - после выхода из main(). Конструкторы
вызываются в порядке опредлеления объектов, деструкторы - в
обратном порядке;
- для автоматических объектов - конструктор вызывается при
входе в функцию (блок), деструктор - при выходе из него;
- для динамических объектов - конструктор вызывается при выполнении
оператора new, деструктор - при выполнении оператора delete.
В Си++ возможно определение массива объектов класса. При этом
конструктор и деструктор вызываются для каждого элемента массива и не
должны иметь параметров. При выполнении оператора delete для ссылки
на массив объектов необходимо также указывать его размерность.
Конструктор для массива объектов должен быть без параметров.
Заключение
Центральным элементом ООП является инкапсуляция соответствующего
множества типов данных и действий над ними. Класс создается из его
функций-членов и членов-данных, обеспечивающих соответствующее
инструментальное средство программирования. Переменные класса - это
объекты, которыми можно манипулировать.
Классы также обеспечивают сокрытие данных. Можно управлять привилегиями
и ограничением доступа любой группы функций, нуждающихся в до ступе к
деталям реализации. Благодаря этому, поддерживается модульность и
надежность.
Другая важная концепция ООП - это поддержка повторного использования
кода через механизм наследования. Это механизм порождения нового класса
от ухе существующего, называемого базовым классом. Базовый класс может
расширяться или изменяться для создания производного класса. Таким
образом, появляется возможность создавать иерархию родственных типов
данных, совместно использующих код.
Множество полезных структур данных являются вариантами друг друга, и
обычно утомительно писать для каждой один и тот же код. Производный
класс наследует описание базового класса, Затем он может быть изменен
добавлением дополнительных членов, перегрузкой существующих
функций-членов и модификацией привилегий доступа. Без этого механизма
повторного использования, каждое незначительное изменение будет
требовать повторения кода.
Программистские задачи ООП часто более сложны, чем для обычного
процедурного программирования, использующего С, так как добавляют, по
крайней мере, один дополнительный этап проектирования перед кодированием
алгоритмов. Он касается иерархии типов, соответствующей решаемой задаче.
При этом часто решаются проблемы более общие, чем' необходимо в
конкретном случае. Это приносит дивиденды несколькими путями: решение
более инкапсулировано и таким образом лучше и легче поддерживается и
изменяется; решение более пригодно для повторного использования.
Например. там, где в коде понадобится стек, его будет легче заимствовать
из уже существующего кода. В обычном процедурном языке такая структура
данных часто зашита в алгоритм и не может быть экспортирована.
Все эти преимущества особенно важны для реализации больших проектов,
которые требуют координации усилий многих программистов. Здесь
возможность иметь файлы-заголовки (.h-файлы), описывающие общий
интерфейс Для различных классов, позволяют каждому программисту работать
над индивидуальными сегментами кода с высокой степенью независимости и
надежности.
7. Литература
Фейсон Г. Объектно-ориентированное програмирование на Borland C++. – К.:
Диалектика 1996
Пол Ирэ Объектно-ориентированное програмирование с использованием С++. –
К.: НИПФ 1995
Буга Г. Объектно-ориентированное програмирование с примерами применения.
– М. – Конкорд, 1992