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

Автор: Пользователь скрыл имя, 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 Кб (Скачать)

void indexing() {

    elem * tmp;

unsignedint id = 0;

tmp = head;

// проход  по всему списку и изменение  нумерации

while (tmp) {

      tmp->index = id++;

tmp = tmp->next;

    }

  } 

// получение  указателя на элемент в списке по его номеру в списке

elem * getElem(unsignedint index) {

elem * tmp = head; 

// если  индекс не корректный, возвращаем NULL

if (index >= N || index < 0)

return NULL;

// ищем  в списке элемент

while (tmp) {

if (index == tmp->index) // если нашли, возвращаем указатель на него

return tmp;

      tmp = tmp->next;

}

return NULL;

  } 

// добавление  элемента в список

void addElem(elem * element) {

unsignedint

id = 0;

    elem

      * f = NULL; 

if (N && element->index == UINT_MAX/* максимальное значение беззнакового целого */) { // вставляем в конец непустого списка

element->prev = tail;

      tail->next = element;

      tail = element;

    }

elseif (!N) { // вставляемвпустойсписок

      head = tail = element;

}

elseif (N && !element->index) { // вставляем в начало непустого списка

element->next = head;

      head->prev = element;

head = element;

    }

else { // вставляем в середину списка

/*if (!(f = getElem(element->index)))

        throw new exception("index is not valid");*/

      element->prev = f->prev;

      element->next = f;

      f->prev->next = element;

      f->prev = element;

}

      indexing(); // проводим индексацию элементов

    N++;

  } 

/* поиск  элемента, содержащего указанный  город назначения

  параметры  - строка поиска, с какого элемента  начинать поиск

  возвращает  указатель на элемент в списке*/

elem * findCity(constchar * const city, unsignedint& id) {

    elem

      * tmp = NULL; 

//if (!id)

//tmp = head;

//else

      tmp = getElem(id);

while (tmp) {

if (!strcmp(tmp->city, city)) {

        id = tmp->index;

return tmp;

      }

      tmp = tmp->next;

    }

    id = 0;

return NULL;

  } 
 
 

public:

// конструкторсписка

  list() {

    head = tail = NULL;

    N = 0;

  } 

// деструкторсписка

  ~list() {

    elem

      * tmp = NULL;

// проход  по всем элементам списка и их удаление

while (head) {

      tmp = head->next;

delete head;

      head = tmp;

    }

    N = 0;

} 

// добавление  элемента

// параметры

// телефон  для вызова, телефон абонента, ФИО,  вызываемый город, время соединения, в какую позицию вставить

void add(constchar * const teleph, constchar * const tel, constchar * const name, constchar * const city, constunsignedint time, constunsignedint index) {

    elem

      * tmp = NULL; 

if ((index > 1 && index >= N) || index < 0)

      cout <<"неверныйномер!";

/* if (!teleph || !tel || !name || !city)

cout << "параметры  заданы неполностью или неверно!";*/

if (time <= 0)

      cout <<"время указано неверно";

// создаем  новый элемент списка и копируем  в него все необходимые параметры

tmp = new elem();

    strcpy(tmp->teleph, teleph);

    strcpy(tmp->tel, tel);

    strcpy(tmp->name, name);

    strcpy(tmp->city, city);

    tmp->time = time;

    tmp->index = index - 1;

    addElem(tmp);

} 

// удаление  из списка элемента по его  индексу

void remove(constunsignedint index) {

// if (index > N || index <= 0)

// cout << "неверноуказанномер!";

     elem

      * tmp = NULL,

      * tmp2 = NULL; 

if (!(tmp = getElem(index-1)));

      cout <<"неттакогономера!"; 

if (tmp->prev != NULL) {

      tmp2 = tmp->prev;

     tmp2->next = tmp->next;

    }

else {

      head = tmp->next;

    }

if (tmp->next != NULL) {

      tmp2 = tmp->next;

      tmp2->prev = tmp->prev;

    }

else {

      tail = tmp->prev;

    }

delete tmp;

indexing();

    N--; 

  } 

// перегрузка  оператора вывода списка

friend ostream &operator<< (ostream & stream, list & ls) {

    elem

      * tmp = ls.head;

    stream << setiosflags(ios::left); // устанавливаемвыравниваниеслева

// выводим  табличкой данные

    stream <<"\n-------------------------------------------------------------------------------\n";

    stream << setw(7) <<"№"<< setw(15) <<"ФИО"<< setw(15) <<"Город"<< setw(15) <<"С номера"<< setw(15) <<"На номер"<< setw(7) <<"Время"<<"Ед.";

stream <<"\n-------------------------------------------------------------------------------\n";

while (tmp) {

      stream << setw(7) << tmp->index + 1 << setw(15) << tmp->name << setw(15) << tmp->city << setw(15) << tmp->tel << setw(15) << tmp->teleph << setw(7) << tmp->time <<"сек.\n";

      tmp = tmp->next;

    }

   stream <<"-------------------------------------------------------------------------------\n";

return stream;

  } 

// сортировка  списка по времени разговора

void sortTime() {

    elem

      * f = NULL,

      * t = NULL,

      srt,

      * tmp = NULL,

     * tmp2 = NULL;

    f = head;

if (!f)

return;

while (f->next) {

      tmp = f;

      t = f->next;

while (t) {

        tmp2 = t;

if (tmp->time > tmp2->time) {

// здесь  происходит копирование данных, сортировка пузырьком

srt = *tmp;

          *tmp = *tmp2;

          *tmp2 = srt;

        }

        t = t->next;

      }

      f = f->next;

}

  } 

// 

// вывод  на консоль элементов списка, содержащих указанный город

void printCallsToCity(constchar * const city) {

unsignedint

      i = 0,

      id = 0;

    elem

      * tmp = NULL; 

if (!city)

      cout <<"нет такого города";

tmp = findCity(city, id);

    cout << setiosflags(ios::left);

    cout <<"\n-------------------------------------------------------------------------------\n";

    cout << setw(7) <<"N"<< setw(15) <<"ФИО"<< setw(15) <<"Город"<< setw(15) <<"Сномера"<< setw(15) <<"Наномер"<< setw(7) <<"Время"<<"Ед.";

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