Автор работы: Пользователь скрыл имя, 20 Июля 2015 в 18:55, курсовая работа
Разработать алгоритм и составить программу обработки списка данных «Гостиница», выполнив следующие этапы:
1. Представление (построение, создание) списка данных в виде линейного однонаправленного списка с элементами сложного типа
2. Выполнить удаление из исходного списка сведений о гостиницах, в которых нет свободных номеров
3. Выполнить перемещение в начало исходного списка сведений о пятизвёздочных гостиницах
Полученный результат
Вывод: полученный результат совпал с ожидаемым
Шаг 1. Выбрать в меню пункт сортировка массива(8);
Шаг 2. Проверить результаты сортировки;
Ожидаемый результат:
Название |
Класс |
Общее количество мест |
Количество свободных мест |
Минимальная Цена |
Gomer |
1 |
15 |
2 |
100 |
Gagas |
1 |
20 |
1 |
80 |
Lelik |
2 |
30 |
10 |
120 |
Oleg |
1 |
30 |
25 |
100 |
Fox |
2 |
45 |
11 |
500 |
Toll |
1 |
50 |
21 |
200 |
Kira |
1 |
50 |
10 |
150 |
Max |
3 |
100 |
22 |
400 |
GHOST |
5 |
120 |
32 |
5000 |
Milana |
4 |
120 |
32 |
2000 |
Kiska |
4 |
120 |
32 |
2000 |
Kinder |
3 |
130 |
22 |
200 |
Apple |
2 |
200 |
35 |
220 |
Dobi |
3 |
250 |
65 |
400 |
Toto |
4 |
250 |
13 |
1300 |
Gosha |
2 |
250 |
21 |
1200 |
Lumos |
4 |
250 |
34 |
4600 |
Alex |
4 |
300 |
23 |
5500 |
Ermak |
3 |
320 |
23 |
150 |
jIjI |
3 |
320 |
23 |
4500 |
Pappa |
3 |
330 |
125 |
2000 |
Polli |
5 |
450 |
65 |
3500 |
Sandra |
3 |
450 |
35 |
4000 |
Hippo |
4 |
450 |
125 |
2000 |
Evas |
4 |
500 |
12 |
1200 |
GoGs |
5 |
550 |
36 |
5000 |
Reg |
5 |
600 |
254 |
5500 |
Finnish |
4 |
600 |
32 |
6000 |
Rex |
4 |
600 |
36 |
6000 |
UFO |
5 |
750 |
32 |
6000 |
Frank |
5 |
777 |
120 |
5000 |
Полученный результат:
Вывод: полученный результат совпал с ожидаемым.
Шаг 1. Выбрать в меню пункт копирование из файла (9);
Шаг 2. Проверить результаты загрузки
Ожидаемый результат:
Полученный результат:
Вывод: полученный результат совпал с ожидаемым.
Заключение
В данной курсовой работе были разработаны и обработаны массивы структур. Программа курсовой работы даёт возможность обработать данные одномерных списков. Все полученные результаты совпали с ожидаемыми, а именно: при выводе списка на экран были показаны все те данные, что вводились при создании; удалены данные, в соответствии с пустыми турами; страны были упорядочены по возрастанию количества билетов. Следовательно, программа работает правильно.
Список используемой литературы
Приложение А
// Курсовая_Отель.cpp : main project file.
#include <malloc.h>//для динамических массивов
#include <iostream>//для cin cout
#include <conio.h>//для getch()
#include <fstream>//для файлов
#include <stdio.h>//стандартный ввод вывод
#include <string.h>//библиотека работы со строками
using namespace std;
typedef struct data_{char nazvanie[255];//название гостиницы
int class_;//класс гостиницы 1-5
int kolichestvo_o;//количество
int kolichestvo_s;//количество
int cena;//стоимость номера в сутки
};
typedef struct spisok{data_ data; //структура однонаправленного списка
spisok* next;
};
spisok *BegQ,*EndQ,*Q;//BegQ-начало списка,EndQ-конец списка//Q-основной список
data_ Data;//Data-для ввода данных
data_ *c;//динамическая переменная для массива
data_ *d;//дополнительный массив для сортировки
long nn;//количество элементов в массиве
class sspisok {public:
void form(void);//процедура
void add_data(data_);//добавления элемента в конец списка список
void show_sp(void);//просмотр
void delete_data(long);//удаление
void sp_copy_mas();//процедура
void sort_mas(long);//процедура
void show_mas(long);//вывод массива
void find_data(char*);//поиск в массиве,т.к.линейный
void sp_copy_file(void);//
void file_copy_sp();//процедура заполнения списка из файла
void peremesh();//перемещение 5-ти звёздочных гостиниц в начало списка
void udalenie();//удаление
};
void sspisok::form(void)//
//так как спискок кольцевой
начало списка обозначим
{Q=new spisok;//создание самого списка
BegQ=new spisok;//создание указателя на начало
EndQ=new spisok;//создание указателя на конец
BegQ->next=EndQ;//начало
EndQ->next=NULL;//списорк ссылается в конец,а конец в никуда
Q=BegQ;//список лежит в начале
Q->next=EndQ;//след. эл. ссылается в конец
BegQ->data.kolichestvo_o=NULL;
EndQ->data.kolichestvo_o=NULL;
cout<<"Sozdan spisok"<<endl;
}
void sspisok::add_data(data_ Data)//добавление данных
{spisok *p;//для добавления элемента
//для первого элемента
if((BegQ->data.kolichestvo_o==
{Q->data=Data;//заполняем поле данных
Q->next=NULL;//указатель
Приложение А(продолжение)
BegQ=Q;//начало списка
Q=BegQ;//список переносим в начало списка
EndQ=BegQ;//конец
EndQ=Q;//конец списка
BegQ->next=EndQ;//начало ссылается на конец
EndQ->next=NULL;//списорк
}
else
//для всех остальных
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"spisok ne sozdan"<<endl;
}
else
{p=new spisok;//создаем переменную динамическую
p->data=Data;//в поле данных заносим данные
p->next=NULL;
EndQ->next=p;//следующий
EndQ=p;//смещаем конец на добавленный элемент
};
}
void sspisok::delete_data(long n)//удаление n-ного элемента списка
{spisok *p;//
long i;//счетчик
if((BegQ!=NULL)&&(EndQ!=NULL)&
{p=BegQ;//передача адреса
for(i=0;i<n-2;i++)
{p=p->next;//смещение
}
p->next=p->next->next;//
cout<<"bil udalen "<<n<<"-ii element "<<endl;
};
//на случай удаления первого элемента
if((BegQ!=NULL)&&(EndQ!=NULL)&
{BegQ=BegQ->next;
cout<<"bil udalen "<<n<<"-ii element "<<endl;
};
if((BegQ==NULL)&&(EndQ==NULL))
Приложение А(продолжение)
{cout<<"Spisok pustoi ili ne sozdan"<<endl;
}
else
if((BegQ->data.kolichestvo_o==
{cout<<"Spisok pustoi"<<endl;//вывод соотв. сообщения
};
}
void sspisok::show_sp(void)//
{ Q=BegQ;//смещение указателя
if(Q->data.kolichestvo_o!=
{cout<<" Nazvanie Klass Kol-vo obshee Kol-vo svobodnoe Cena"<<endl<<endl;
while(Q!=NULL)//пока не
{
cout.width(8);
cout<<Q->data.nazvanie;
cout.width(10);
cout<<Q->data.class_;
cout.width(10);
cout<<Q->data.kolichestvo_o;
cout.width(18);
cout<<Q->data.kolichestvo_s;
cout.width(20);
cout<<Q->data.cena<<endl;
Q=Q->next;//переход на
}
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;//вывод соотв. сообщения
}
else
if((BegQ->data.kolichestvo_o==
{cout<<"Spisok pustoi"<<endl;//вывод соотв. сообщения
};
}
void sspisok::sp_copy_mas()//
{long i,n;//n-для определения
количества элементов в списке,
//если в списке что то есть
Q=BegQ;//смещение указателя
n=0;//обнуление количества
while(Q!=NULL)//пока не
{n++;
Q=Q->next;//переход на
}
c=(data_*)malloc(n*sizeof(
nn=n;//передача количества элементов списка в глобальную переменную для сортировки
Q=BegQ;
//копирование списка в массив
for(i=0;i<n;i++)
{c[i]=Q->data;
Q=Q->next;
}
//если элементы не обнаружены
if((BegQ->data.kolichestvo_o==
{cout<<"Spisok ne sozdan"<<endl;
}
else
if((BegQ->data.kolichestvo_o==
{cout<<"Spisok pustoi"<<endl;
};
};
void sspisok::sort_mas(long n)//сортировка массива
// сортировка
{data_ tmp;
for (int i = 1; i < n; i++) {
for (int j = 0; j < n-i; j++) {
if (c[j].kolichestvo_o > c[j+1].kolichestvo_o) {
tmp = c[j];
c[j] = c[j+1];
c[j+1] = tmp;
}
}
}
};
void sspisok::show_mas(long n)//вывод массива
{long i;//счетчик
//вывод массива по циклу
cout<<" Nazvanie Klass Kol-vo obshee Kol-vo svobodnoe Cena"<<endl<<endl;
for(i=0;i<n;i++)
{ cout.width(8);
cout<<c[i].nazvanie;
cout.width(10);
cout<<c[i].class_;
cout.width(10);
cout<<c[i].kolichestvo_o;
cout.width(18);
cout<<c[i].kolichestvo_s;
cout.width(20);
cout<<c[i].cena<<endl;
}
cout<<endl;//переход на новую строчку
}
void sspisok::find_data(char Data[255])
{long t;//t-количество найденных элементов