Автор работы: Пользователь скрыл имя, 20 Июля 2015 в 18:55, курсовая работа
Разработать алгоритм и составить программу обработки списка данных «Гостиница», выполнив следующие этапы:
1. Представление (построение, создание) списка данных в виде линейного однонаправленного списка с элементами сложного типа
2. Выполнить удаление из исходного списка сведений о гостиницах, в которых нет свободных номеров
3. Выполнить перемещение в начало исходного списка сведений о пятизвёздочных гостиницах
Q=BegQ;//указатель списка в начало
t=0;//обнулнение счетчика
while(Q!=NULL)//пока не конец списка
{if(stricmp(Q->data.nazvanie,
{cout<<"nazavanie - "<<Q->data.nazvanie<<"
class - "<<Q->data.class_<<endl;//
t++;//увеличение счетчика
}
Q=Q->next;//переход на
}
if(t>0)//если элемент списка равен искомому
{cout<<"Zapis' naidena "<<t<<" raz(a)"<<endl;
}
else
{cout<<"Zapis' ne naidena"<<endl;
}
}
void sspisok::sp_copy_file(void)//
{ofstream file("C:\\ftext_from.txt");//с
Q=BegQ;//смещение указателя
while(Q!=NULL)//пока не конец списка
{file<<"Nazvanie - "<<Q->data.nazvanie<<" Klass - "<<Q->data.class_<<" kol-vo_o - "<<Q->data.kolichestvo_o<<" kol-vo_s - "<<Q->data.kolichestvo_s<<" Cena - "<<Q->data.cena<<endl;//печать элемента в файл
Q=Q->next;//переход на
}
}
void sspisok::file_copy_sp()//
{data_ x;//переменная для считывания из файла
ifstream file("C:\\ftext_in.txt");//отк
if(file!=NULL)
{cout<<"File Soderzhit sleduiushie elementi:"<<endl;
cout<<" Nazvanie Klass Kol-vo obshee Kol-vo svobodnoe Cena"<<endl<<endl;
while(!file.eof())//пока не
{
file>>x.nazvanie;
cout.width(8);cout<<x.
file>>x.class_;
cout.width(10);cout<<x.class_;
file>>x.kolichestvo_o;
cout.width(10);cout<<x.
file>>x.kolichestvo_s;
cout.width(18);cout<<x.
file>>x.cena;
cout.width(20);cout<<x.cena<<
sspisok::add_data(x);//вызов
}
}
else
{cout<<"File C:\\ftext_in.txt ne naiden"<<endl;
}
}
void sspisok::peremesh()
{int n=0;
spisok *Q2;//буфер
Q2=new spisok;
Q=BegQ;//смещение указателя
while(Q->next!=NULL)//пока не начало списка
{ n++;
if(Q->next->data.class_==5)
{ cout<<" n="<<n<<endl;
Q2=Q->next;
Q->next=Q->next->next;
Q2->next=BegQ;
BegQ=Q2;
}
Q=Q->next;//переход на
}
}
void sspisok::udalenie()
{spisok *p;
int n=0;
if((BegQ!=NULL)&&(EndQ!=NULL))
{
p=BegQ;
while(p!=NULL)
{n++;
if(p->data.kolichestvo_s==0)
{sspisok::delete_data(n);
n--;//возврат индекса к предыдущему элементу
}
p=p->next;
};
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok pustoi ili ne sozdan"<<endl;
}
else
Приложение А(продолжение)
if((BegQ->data.kolichestvo_o==
{cout<<"Spisok pustoi"<<endl;//вывод соотв. сообщения
};
}
int main(array<System::String ^> ^args)
{sspisok x;//объект класса
int vibor;//для меню
long i,n;//i-для циклов,n-для количесва
long j;//для прочих целей
BegQ=NULL;//обнуление
EndQ=NULL;//обнуление
Q=NULL;//обнуление указателя
//////////////////////////меню
while(vibor!=0)
{system("cls");
cout<<"Menu"<<endl;
cout<<"1.Sformirovat spisok"<<endl;
cout<<"2.Dobavit zapis'"<<endl;
cout<<"3.Udalit' zapis'"<<endl;
cout<<"4.Otobrazit spisok"<<endl;
cout<<"5.Skoirovat v Fail"<<endl;
cout<<"6.Skopirovat v Massiv"<<endl;
cout<<"7.Otobrazit Massiv"<<endl;
cout<<"8.Sortirovat Massiv"<<endl;
cout<<"9.Skopirovat iz Faila"<<endl;
cout<<"10.Nayti zapis' v spiske"<<endl;
cout<<"11.Udalenie otelei bez svobodnih nomerov"<<endl;
cout<<"12.Peremeshenie 5-ti zvezdochnih gostinic"<<endl;
cout<<"0.Vyhod"<<endl;
cout<<endl<<endl;
cout<<"Vyberite:_";
cin>>vibor;
system("cls");
if(vibor==1)//формирование списка
{x.form();//формирование
}
if(vibor==2)//ввод данных
{if((BegQ!=NULL)&&(EndQ!=NULL)
{cout<<"Skolko Zapisey vvesti"<<endl;
cout<<"n=";
cin>>n;//ввод количества
for(i=0;i<n;i++)
{
cout<<"Nazvanie -";
cin>>Data.nazvanie;//ввод данных
cout<<"Klass-";
cin>>Data.class_;
cout<<"Obshee kolichestvo-";
cin>>Data.kolichestvo_o;//ввод данных
cout<<"Kolichestvo svobodnih-";
cin>>Data.kolichestvo_s;//ввод данных
cout<<"Cena-";
cin>>Data.cena;
x.add_data(Data);//добавление
}
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==3)//удаление элемента
{if((BegQ!=NULL)&&(EndQ!=NULL)
{cout<<"Vvedite nomer zapisi kotoruyu nuzhno udalit"<<endl;
cout<<"n=";
cin>>j;//ввод номера
x.delete_data(j);//удаление
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==4)//вывод элементов на экран
{x.show_sp();//вывод списка на экран
}
Приложение А(продолжение)
if(vibor==5)//копировать в
{if((BegQ!=NULL)&&(EndQ!=NULL)
{cout<<"Dannie skopirovani v fail, po adresu C:\\ftext_from.txt"<<endl;
x.sp_copy_file();//
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==6)//копировать в массив
{if((BegQ!=NULL)&&(EndQ!=NULL)
{x.sp_copy_mas();//копирание
cout<<"V spiske "<<nn<<"
- elementov"<<endl;//вывод
cout<<"Spisok skopirovan v massiv"<<endl;
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==7)//вывод массива
{if((BegQ!=NULL)&&(EndQ!=NULL)
{cout<<"Vivod massiva"<<endl;
x.show_mas(nn);//вывод массива на экран
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==8)//сортировать массив
{if((BegQ!=NULL)&&(EndQ!=NULL)
{x.sort_mas(nn);//сортировка
cout<<"Massiv otsortirovan"<<endl;
x.show_mas(nn);//вывод массива на экран
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}}
Приложение А(продолжение)
if(vibor==9)//сформировать фай
{if((BegQ!=NULL)&&(EndQ!=NULL)
{x.file_copy_sp();
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==10)//найти элемент в массиве
{if((BegQ!=NULL)&&(EndQ!=NULL)
{cout<<"Vvedite nazvanie gostinici kotoruiu nuzhno naiti:_"<<endl;
cout<<"Gostinica-";
cin>>Data.nazvanie;//ввод данных
x.find_data(Data.nazvanie);//п
}
if((BegQ==NULL)&&(EndQ==NULL))
{cout<<"Spisok ne sozdan"<<endl;
}
}
if(vibor==11)
{if((BegQ!=NULL)&&(EndQ!=NULL)
{ x.udalenie();
cout<<"Gostinici bez svobodnyh nomerov udaleny"<<endl;
x.show_sp();
}
}
if(vibor==12)
{if((BegQ!=NULL)&&(EndQ!=NULL)
{ x.peremesh(); x.peremesh();
cout<<"5-ti zvezdochnie gostinici v nachalo spiska"<<endl;
x.show_sp();
}
}
getch();
}
}
Приложение Б
Рисунок Б.1 – Блок-схема основной части программы
Рисунок Б.2- блок-схема функции «form ()»
Рисунок Б.3- блок-схема функции «add_data ()»
Рисунок Б.4- блок-схема функции « delete_data ()»
Рисунок Б.5- блок-схема функции « show_sp ()»
Рисунок Б.6- блок-схема функции «sp_copy_file()»
Рисунок Б.7- блок-схема функции «sp_copy_mass()»
Рисунок Б.8- блок-схема функции «show_mass()»
Рисунок Б.9- блок-схема функции «sort_mass()»
Рисунок Б.10- блок-схема «file_copy_sp()»
Рисунок Б.11- блок-схема функции «find_data()»
Рисунок Б.12- блок-схема функции «udalenie ()»
Рисунок Б.13- блок-схема функции «peremesh ()»
Размещено на Allbest.ur