Электронный журнал
Курсовая работа, 18 Декабря 2011, автор: пользователь скрыл имя
Описание работы
Программа обеспечивает возможность создания файла и хранения в нем информации о вызываемом городе, заказываемом номере телефона, ФИО заказчика, номере телефона заказчика и длительности оплаченного разговора а также выполнение требуемых функций по работе с этими данными. Курсовая содержит руководство пользователя, описание разработанных функций, листинг и тестирование программы, блок-схемы алгоритмов всех используемых функций и тестирование программы.
Содержание
Введение………………………………………………………………….…… 3
Глава 1. Выбор метода реализации……………………...………………... 5
1.1 Обоснование выбора языка программирования………………………... 5
Техническое описание языка программирования……………………… 6
1.3 Технические требования к компьютеру для решения задачи …………. 7
Глава 2. Теоретические основы……………………...…………………… 8
2.1Динамические массивы …………………………………………………... 8
2.2Динамическое распределение памяти …………………………………… 9
2.3 Классы …………………………………………………………………….. 9
2.4 Структуры ……………………...…………………………………………. 10
Глава 3. Руководство программиста……………………...……………… 12
Глава 4. Руководство пользователя ……………………...………………. 15
Глава 5. Математическое и программное обеспечение ………………. 16
5.1.Математическое обеспечение……………………...………………………................................. 16
5.2.Спецификация функций ……………………...………………………….. 19
Глава 6. Тестирование программы ……………………...……………….. 25
Заключение…………………………………………………...………………. 31
Список литературы………………………
Работа содержит 1 файл
КУРСОВАЯ ВМИП.doc
— 864.00 Кб (Скачать)
Динамическое выделение памяти
– это получение программной памяти
во время ее выполнения. Благодаря этой
системе программа может создавать переменные
во время выполнения, причем в нужном (в
зависимости от ситуации) количестве.
Динамическое выделение памяти для тех
или иных целей – важная составляющая
почти всех реальных программ.
2.3
Классы
Класс определяет новый тип данных, который задает формат объекта. Класс включает как данные, так и код, предназначенный для выполнения над этими данными. Следовательно, класс связывает данные с кодом. В С++ спецификация класса используется для построения объектов. Объекты – это экземпляр класса. По сути, класс представляет собой набор планов, которые определяют, как строить объект. Важно помнить, что класс – это логическая абстракция, которая реально не существует до тех пор, пока не будет создан объект этого класса, то есть то, что станет физическим представлением этого класса в памяти компьютера.
Определяя класс, объявляются данные которые он содержит, и код, который выполняется над этими данными.
В классе данные объявляются в виде переменных, а код оформляется в виде функций. Функции и переменные, составляющие класс, называются его членами. Таким образом, переменная, объявленная в классе, называется членом данных, а функция, объявленная в классе, называется функцией-членом.
Объявление класса начинается с ключевого слова class.
Объявление класса синтаксически подобно объявлению структуры.
По умолчанию члены класса
являются закрытыми (private-
В С++ класс создает новый тип
данных, который можно использовать
для создания объектов. В частности,
класс создает логическую
2.4
Структуры
Структура – это группа
В С++ структура представляет собой коллекцию объединенных общим именем переменных, которая обеспечивает удобное средство хранения родственных данных в одном месте. Структуры – это совокупный тип данных, поскольку они состоят из нескольких различных, но логически связанных переменных. По тем же причинам их иногда называют составными или конгломератными типами данных.
Прежде чем будет создан
Член структуры – это
В общем случае все члены структуры должны быть логически связанны
друг
с другом.
Глава 3. Руководство программиста
Описание
разработанных функций
3.1.Информационное
обеспечение
Таблица 1. Перечень классов
| № | Идентификатор | Описание | |
| 1 | elem | Класс, содержащий элементы списка | |
| 2 | list | Класс, содержащий непосредственно список с элементами и функции, обеспечивающие работу с ним | |
| Таблица 2. Описание функций класса elem | |||
| № | Идентификатор | Тип данных | Описание |
| 1 | operator = | elem | Функция, осуществляющая перегрузку оператора копирования элементов |
| Таблица 3. Описание других элементов класса elem | |||
| № | Идентификатор | Тип данных | Описание |
| Общедоступные (public) | |||
| 1 | teleph | Символьный | заказываемый номер телефона |
| 2 | tel | Символьный | номер телефона заказчика |
| 3 | name | Символьный | ФИО заказчика |
| 4 | city | Символьный | вызываемый город |
| 5 | time | Целочисленный беззнаковый | длительность оплаченного разговора, в секундах |
| 6 | index | Целочисленный беззнаковый | Номер заказа в общей очереди |
| 7 | next | elem | указатель на следующий элемент списка |
| 8 | prev | elem | указатель на предыдущий элемент списка |
| Таблица 4. Описание функцийкласса list | |||
| № | Идентификатор | Тип данных | Описание |
| 1 | indexing | Функция, не возвращающая значение | Функция по изменению нумерации списка в связи со вставкой или удалением элемента |
| 2 | getElem | elem | Функция, осуществляющая получение указателя на элемент в списке по его номеру в списке |
| 3 | addElem | Функция, не возвращающая значение | Функция, осуществляющая добавление элемента в список |
| 4 | findCity | elem | Функция, осуществляющая поиск номера заказа для заданного города |
| 5 | removeElem | Функция, не возвращающая значение | Функция, осуществляющая удаление элемента по его номеру |
| 6 | add | Функция, не возвращающая значение | Функция по добавлению заказа в список |
| 7 | remove | Функция, не возвращающая значение | Функция, осуществляющая удаление элемента по его номеру |
| 8 | operator<< | Поток вывода (ostream) | Функция, осуществляющая перегрузку оператора вывода списка |
| 9 | sortTime | Функция, не возвращающая значение | Функция, осуществляющая сортировку списка по длительности разговора |
| 10 | printCallsToCity | Функция, не возвращающая значение | Функция, осуществляющая вывод списка звонков в указанный город |
| Таблица 5. Описание других элементов класса list | |||
| № | Идентификатор | Тип данных | Описание |
| Защищенные члены (private) | |||
| 1 | head | elem | указатель на начальный элемент списка |
| 2 | tail | elem | указатель на конечный элемент списка |
| 3 | N | Целочисленное беззнаковое | количество элементов в списке |
| Таблица 6.Описание входных данных | |||
| № | Идентификатор | Тип данных | Описание |
| 1 | teleph | Символьный | заказываемый номер телефона |
| 2 | tel | Символьный | номер телефона заказчика |
| 3 | name | Символьный | ФИО заказчика |
| 4 | city | Символьный | вызываемый город |
| 5 | time | Целочисленный беззнаковый | длительность оплаченного разговора, в секундах |
| 6 | index | Целочисленный беззнаковый | Порядковый номер элемента |
| Таблица 7. Описание выходных данных | |||
| № | Идентификатор | Тип данных | Описание |
| 1 | ls | list | Список заказов |
Глава
4.
Руководство пользователя
Необходимо создать автоматизированное рабочее место (АРМ) диспетчера междугородней телефонной станции (МТС). Диспетчер МТС работает с ЭВМ в режиме меню. Поступающие заказы хранятся в памяти ЭВМ, то есть ведется электронный журнал.
Требования к решению задачи.
По каждому заказу хранятся:
- вызываемый город;
- заказываемый номер телефона;
- ФИО заказчика;
- номер телефона заказчика;
-
длительность оплаченного
Задача должна решаться с помощью диалоговой системы, позволяющей выполнить :
- прием заказа;
-
исполнение очередного заказа(
- определение номера заказа в общей очереди заказов;
- определение номера заказа для заданного города;
- включение срочного заказа в очередь под номером N;
- формирование списка заказов в заданный город;
- упорядочение
заказов по возрастанию
Глава 5. Математическое и программное обеспечение
Алгоритм решения задачи
1.Математическое обеспечение:
- Описание ограничений на входную информацию
- Time> 0
- Index > 0
- Структурная декомпозиция.
Формирование списка.
- Прием заказа
- Удаление заказа
- Включение заказа в список
- Вывод списка на экран
- Формирование списка в указанный город и вывод списка
- Сортировка по времени разговора и вывод списка
- Организация интерфейса пользователя
- Описание алгоритма решения.
- drawMenu
- Применяем оператор Switch
- Описываем все возможные варианты работы с меню
- main
- Описываем переменные, присваиваем значения.
- Вызов функции drawmenu уровня 0
- Оператор Switch
- Работа с блоком «Управление списком»
- Вызов функции drawmenu уровня 1
- Цикл пока key≠0
- Оператор switch
- Добавление заказа
- Ввод данных
- Вызов функции add
- Добавление срочного заказа
- Ввод данных
- Вызов функции add
- Удаление заказа
- Выбор порядкового номера заказа для удаления
- Вызов функции remove
- Формирование общего списка
- Вывод списка на экран
- Формирование списка в указанный город
- Ввод названия города из списка
- Вызов функции printCallsToCity
- Сортировка относительно длительности разговора
- Вызов функции sortTime
- Вывод списка на экран
- Конец цикла
- Работа с блоком «О программе»
- Вызов функции drawmenu уровня 2
- Цикл пока key ≠ 0
- Блок выхода из меню
- Цикл пока не нажата клавиша esc
- Если нажат enter возврат к меню
- indexing
- Объявляем переменные
- Проходим по списку и изменяем нумерацию
- getElem
- Объявляем переменные
- Если индекс некорректен (>=Nили<0) то возвращаем NULL
- Цикл пока не конец списка
- Если нашли номер, возвращаем указатель на него
- В противном случае идем дальше
- Возвращаем NULL
- addElem
- Объявление переменных
- Если конец списка
- Делаем новый элемент «Хвостом» списка
- Если список пуст
- Вставляем элемент
- Если начало списка
- Делаем новый элемент «Головой» списка
- В противном случае вставляем элемент перед указанным номером
- Вызов функции indexing
- Увеличиваем число элементов списка на 1
- findCity
- Объявляем переменные
- Указатель на элемент в списке при помощи функции getElemставим на номер искомого элемента
- Цикл пока есть список
- Если название совпадает с искомым
- описываем его номер
- Возвращаем указатель на элемент в списке
- Переставляем указатель на следующий элемент
- Зануляем номер элемента с которого надо начинать поиск
- аdd
- Объявляем переменные
- Проверяем условия, при которых могут возникнуть ошибки
- Создаем новый элемент списка
- Копируем в него все необходимые параметры
- Применяем функцию addElem
- remove
- Объявляем переменные
- Если не найден номер, то выводим сообщение о том, что номер не найден
- Если указатель на предыдущий элемент не NULL, то при помощи двух указателей «затираем дырку» в списке
- В противном случае, если конец списка, делаем «хвостом» предыдущий элемент
- Затираем указатель
- Вызов функции indexing
- operator<<
- Объявляем переменные
- Устанавливаем выравнивание слева
- Выводим табличкой данные
- sortTime
- Объявление переменных
- Ставим указатель на начало списка, в «голову»
- Цикл пока можно передвинуть указатель на следующий элемент
- Приравниваем два указателя: один к указателю, указанному как «голова», другой к указателю на элемент, следующий за «головой»
- Цикл пока есть следующий элемент
- Ставим указатель на позицию элемента, следующего за «головой»
- Сравниваем время
- Сортировка пузырьком
- Передвигаем указатель на следующую позицию
- Конец цикла
- Передвигаем указатель на следующую позицию
- Конец цикла
- printCallsToCity
- Объявляем переменные
- Если не найден город, выводим сообщение об ошибке
- Вызываем функцию findCity
- Выравниваем по левому краю
- Выводим табличку на экран
1.2.Спецификация функций
| 1. Функция indexing – для изменения нумерации списка в связи со вставкой или удалением элемента | |||||
| 1.1. Возвращаемые значения - отсутствуют | |||||
| 1.2. Параметры - отсутствуют | |||||
| 1.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент | ||
| 2 | id | Цилочисленноебеззнаковое | Номер элемента | ||
| 2. ФункцияgetElem–для получения указателя на элемент в списке по его номеру в списке | |||||
| 1.1. Возвращаемые значения | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент | ||
| 1.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | index | Целочисленное беззнаковое | Номер элемента в списке | ||
| 1.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 2. ФункцияaddElem–для добавления элемента в список | |||||
| 2.1. Возвращаемые значения - отсутствуют | |||||
| 2.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | element | elem | Указатель на новый элемент списка | ||
| 2.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | id | Целочисленное безнаковое | номер | ||
| 2 | f | elem | Указатель на элемент списка | ||
| 3. ФункцияfindCity–для поиска элемента по указанному городу | |||||
| 3.1. Возвращаемые значения | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 3.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | id | Целочисленное беззнаковое | номер | ||
| 2 | City | символьный | Указатель на искомый город | ||
| 3.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 4. Функцияadd - для добавления нового элемента в список | |||||
| 4.1. Возвращаемые значения - отсутствуют | |||||
| 4.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | Teleph | Символьный | Указатель на номер вызываемого абонента | ||
| 2 | Tel | Символьный | Указатель на номер вызывающего абонента | ||
| 3 | Name | Символьный | Указатель на имя абонента | ||
| 4 | city | Символьный | Указатель на город | ||
| 5 | time | Целочисленный беззнаковый | Время разговора | ||
| 6 | index | Целочисленный беззнаковый | Номер позиции, в какую необходимо добавить элемент списка | ||
| 4.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 5. Функцияremove–для удаления элемента по его номеру | |||||
| 5.1. Возвращаемые значения - отсутствуют | |||||
| 5.2. Параметры – отсутствуют | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | index | Целочисленный беззнаковый | Номер позиции | ||
| 5.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 2 | Tmp2 | elem | Указатель на элемент списка | ||
| 6. Функция operator<<–для вывода списка в виде таблицы на экран. | |||||
| 6.1. Возвращаемые значения | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | stream | оstream (системный класс для управления выводом) | Переменная для вывода на экран | ||
| 6.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | stream | оstream (системный класс для управления выводом) | Переменная для вывода на экран | ||
| 2 | ls | list | Список звонков | ||
| 6.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 7. ФункцияsortTime–для сортировки списка по времени разговора | |||||
| 7.1. Возвращаемые значения - отсутствуют | |||||
| 7.2. Параметры - отсутствуют | |||||
| 7.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | tmp | elem | Указатель на элемент списка | ||
| 2 | tmp2 | elem | Указатель на элемент списка | ||
| 3 | f | elem | Указатель на элемент списка | ||
| 4 | t | elem | Указатель на элемент списка | ||
| 5 | srt | elem | Переменная для сортировки данных | ||
| 8. ФункцияprintCallsToCity – для выводазвонков в указанный город | |||||
| 8.1. Возвращаемые значения - отсутствуют | |||||
| 8.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | City | символьный | Указатель на город | ||
| 8.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | i | Целочисленный | Универсальный счетчик | ||
| беззнаковый | |||||
| 2 | id | Целочисленный | Номер элемента | ||
| беззнаковый | |||||
| 9. ФункцияdrawMenu - для отрисовки меню | |||||
| 9.1. Возвращаемые значения - отсутствуют | |||||
| 9.2. Параметры | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | Level | Целочисленное беззнаковое | Уровень вложенности | ||
| 9.3. Локальные переменные | |||||
| № | Идентификатор | Тип | Описание | ||
| 1 | i | Целочисленный | Универсальный счетчик | ||
| беззнаковый | |||||