Электронный журнал

Автор: Пользователь скрыл имя, 18 Декабря 2011 в 13:44, курсовая работа

Описание работы

Программа обеспечивает возможность создания файла и хранения в нем информации о вызываемом городе, заказываемом номере телефона, ФИО заказчика, номере телефона заказчика и длительности оплаченного разговора а также выполнение требуемых функций по работе с этими данными. Курсовая содержит руководство пользователя, описание разработанных функций, листинг и тестирование программы, блок-схемы алгоритмов всех используемых функций и тестирование программы.

Содержание

Введение………………………………………………………………….…… 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.Математическое обеспечение:

  1. Описание  ограничений на входную информацию
    1. Time> 0
    2. Index > 0
    1. Структурная декомпозиция.

Формирование  списка.

  1. Прием заказа
  2. Удаление заказа
  3. Включение заказа в список
  4. Вывод списка на экран
  5. Формирование списка в указанный город и вывод списка
  6. Сортировка по времени разговора и вывод списка
  7. Организация интерфейса пользователя
    1. Описание  алгоритма решения.
  1. drawMenu
    1. Применяем оператор Switch
    2. Описываем все возможные варианты работы с меню
  2. main
    1. Описываем переменные, присваиваем значения.
    2. Вызов функции drawmenu уровня 0
    3. Оператор Switch
    4. Работа с блоком «Управление списком»
    5. Вызов функции drawmenu уровня 1
    6. Цикл пока key≠0
      1. Оператор switch
      2. Добавление заказа
        1. Ввод данных
        2. Вызов функции add
      3. Добавление срочного заказа
        1. Ввод данных
        2. Вызов функции add
      4. Удаление заказа
        1. Выбор порядкового номера заказа для удаления
        2. Вызов функции remove
      5. Формирование общего списка
        1. Вывод списка на экран
      6. Формирование списка в указанный город
        1. Ввод названия города из списка
        2. Вызов функции printCallsToCity
      7. Сортировка относительно длительности разговора
        1. Вызов функции sortTime
        2. Вывод списка на экран
      8. Конец цикла
    7. Работа с блоком «О программе»
    8. Вызов функции drawmenu уровня 2
    9. Цикл пока key ≠ 0
    10. Блок выхода из меню
    11. Цикл пока не нажата клавиша esc
      1. Если нажат enter возврат к меню
  3. indexing
    1. Объявляем переменные
    2. Проходим по списку и изменяем нумерацию
  4. getElem
    1. Объявляем переменные
    2. Если индекс некорректен (>=Nили<0) то возвращаем NULL
    3. Цикл пока не конец списка
      1. Если нашли номер, возвращаем указатель на него
      2. В противном случае идем дальше
    4. Возвращаем NULL
  5. addElem
    1. Объявление переменных
    2. Если конец списка
      1. Делаем новый элемент «Хвостом» списка
    3. Если список пуст
      1. Вставляем элемент
    4. Если начало списка
      1. Делаем новый элемент «Головой» списка
    5. В противном случае вставляем элемент перед указанным номером
    6. Вызов функции indexing
    7. Увеличиваем число элементов списка на 1
  6. findCity
    1. Объявляем переменные
    2. Указатель на элемент в списке при помощи функции getElemставим на номер искомого элемента
    3. Цикл пока есть список
      1. Если название совпадает с искомым
        1. описываем его номер
        2. Возвращаем указатель на элемент в списке
      2. Переставляем указатель на следующий элемент
    4. Зануляем номер элемента с которого надо начинать поиск
  7. аdd
    1. Объявляем переменные
    2. Проверяем условия, при которых могут возникнуть ошибки
    3. Создаем новый элемент списка
    4. Копируем в него все необходимые параметры
    5. Применяем функцию addElem
  8. remove
    1. Объявляем переменные
    2. Если не найден номер, то выводим сообщение о том, что номер не найден
    3. Если указатель на предыдущий элемент не NULL, то при помощи двух указателей «затираем дырку» в списке
    4. В противном случае, если конец списка, делаем «хвостом» предыдущий элемент
    5. Затираем указатель
    6. Вызов функции indexing
  9. operator<<
    1. Объявляем переменные
    2. Устанавливаем выравнивание слева
    3. Выводим табличкой данные
  10. sortTime
    1. Объявление переменных
    2. Ставим указатель на начало списка, в «голову»
    3. Цикл пока можно передвинуть указатель на следующий элемент
      1. Приравниваем два указателя: один к указателю, указанному как «голова», другой к указателю на элемент, следующий за «головой»
      2. Цикл пока есть следующий элемент
        1. Ставим указатель на позицию элемента, следующего за «головой»
        2. Сравниваем время
          1. Сортировка пузырьком
        3. Передвигаем указатель на следующую позицию
        4. Конец цикла
      3. Передвигаем указатель на следующую позицию
    4. Конец цикла
  11. printCallsToCity
    1. Объявляем переменные
    2. Если не найден город, выводим сообщение об ошибке
    3. Вызываем функцию findCity
    4. Выравниваем по левому краю
    5. Выводим табличку на экран

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.        Параметры – отсутствуют
Идентификатор Тип Описание
  index Целочисленный беззнаковый Номер позиции
       
5.3.        Локальные переменные
Идентификатор Тип Описание
tmp elem Указатель на элемент списка
2 Tmp2 elem Указатель на элемент списка
       
6.     Функция operator<<–для вывода списка в виде таблицы на экран.
6.1.        Возвращаемые значения
Идентификатор Тип Описание
1 stream оstream (системный  класс для управления выводом) Переменная  для вывода на экран
       
 
6.2.        Параметры
Идентификатор Тип Описание
stream оstream (системный  класс для управления выводом) Переменная  для вывода на экран
2 ls list Список  звонков
       
6.3.        Локальные переменные
Идентификатор Тип Описание
1 tmp elem Указатель на элемент списка
 
 
 
 
7.     ФункцияsortTime–для сортировки списка по времени разговора
7.1.        Возвращаемые значения - отсутствуют
7.2.        Параметры - отсутствуют
7.3.        Локальные переменные
Идентификатор Тип Описание
tmp elem Указатель на элемент списка
2 tmp2 elem Указатель на элемент списка
3 f elem Указатель на элемент списка
4 t elem Указатель на элемент списка
5 srt elem Переменная  для сортировки данных
       
8.     ФункцияprintCallsToCity – для выводазвонков в указанный город
8.1.        Возвращаемые значения - отсутствуют
8.2.        Параметры
Идентификатор Тип Описание
  City символьный Указатель на город
       
8.3.        Локальные переменные
Идентификатор Тип Описание
1     i Целочисленный Универсальный счетчик
беззнаковый
2 id Целочисленный Номер элемента
беззнаковый
       
 
 
 
 
 
 
9.     ФункцияdrawMenu - для отрисовки меню
9.1.        Возвращаемые значения - отсутствуют
9.2.        Параметры
Идентификатор Тип Описание
1     Level Целочисленное беззнаковое Уровень вложенности
       
9.3.        Локальные переменные
Идентификатор Тип Описание
1      i Целочисленный Универсальный счетчик
беззнаковый

Информация о работе Электронный журнал