Создание базы данных пассажиров

Автор: Пользователь скрыл имя, 29 Марта 2013 в 00:30, курсовая работа

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

Главное нововведение C++ - механизм классов, дающий возможность определять и использовать новые типы данных. Программист описывает внутреннее представление объекта класса и набор функций-методов для доступа к этому представлению. Одной из заветных целей при создании C++ было стремление увеличить процент повторного использования уже написанного кода. Концепция классов предлагала для этого механизм наследования. Задание: На основе знаний языка С++ реализовать программу для работы с базой данных пассажиров в аэропорту при заказе билетов.В программе предусморены функции : добавление пассажиров по 3-м категориям, сотрировка по 4 категориям, поиск, удаление по 3-м категориям,запись в файл и чтение из него.

Содержание

1.Введение…………………..............................................................................3
2.Поставленая задача…………………………………………………..….......5
3.Структура данных…………………………………………………………...5
4.Диаграмма классов .………………………………………………………..6
5.Описание классов……………………………………………………………7
6.Скриншоты к программе…………………………………………………...12
7.Заключение………………………………………………………………….13
8.Список использованной литературы...…………………………………….13
9.Приложение…………………………………………………………………14

Работа содержит 1 файл

ООП Расчетная работа.docx

— 350.41 Кб (Скачать)

}

if(size>20)

{

throw exp_2("\nПревышение размерноести");

}

else

{

break;

}

}

catch(exp_2 ob)

{

if(cin.rdstate())

{

ob.show();

cin.clear();

cin.sync();

}

}

catch(exp_4 ob)

{

if(cin.rdstate())

{

ob.show();

cin.clear();

cin.sync();

}

}

}

while(1)

{

cout << "\nИмя: ";

try

{

int size;

input >> num.name;

size=strlen(num.name);

if(strpbrk(num.name,"1234567890!@#$%^&*()_+{}~`[]#№;:><.,'"))

{

throw exp_4("\nВведены недопустимые символы");

}

if(size>20)

{

throw exp_2("\nПревышение размерноести");

}

else

{

break;

}

}

catch(exp_2 ob)

{

if(cin.rdstate())

{

ob.show();

cin.clear();

cin.sync();

}

}

catch(exp_4 ob)

{

if(cin.rdstate())

{

ob.show();

cin.clear();

cin.sync();

}

}

}

while(1)

{

cout << "\nОтчество: ";

try

{

int size;

input >> num.middle_name;

size=strlen(num.middle_name);

if(strpbrk(num.middle_name,"1234567890!@#$%^&*()_+{}~`[]#№;:><.,'"))

{

throw exp_4("\nВведены недопустимые символы");

}

if(size>20)

{

throw exp_2("\nПревышение размерности");

}

else

{

break;

}

}

catch(exp_2 ob)

{

if(cin.rdstate())

{

ob.show();

cin.clear();

cin.sync();

}

}

catch(exp_4 ob)

{

if(cin.rdstate())

{

ob.show();

cin.clear();

cin.sync();

}

}

}

while(1)

{

cout << "\nМесто: ";

input >> num.mesto ;

try

{

int flags;

flags = cin.rdstate();

if(flags &ios::failbit)

{

throw exp_1("\nДолжны быть введены цифры ");

}

if( num.mesto >= 300 )

{

throw exp_6("\nНедопустимое количевство пассажиров");

}

else

break;

}

}

catch(exp_1 ob)

{

ob.show();

cin.clear();

cin.sync();

}

catch(exp_3 ob)

{

ob.show();

cin.clear();

cin.sync();

}

}

return input;

}

 

 

ofstream &operator << ( ofstream &output, const Pass &num )

{

output << num.n << endl;

output << num.family_name << endl;

output << num.name << endl;

output << num.middle_name << endl;

output << num.mesto << endl;

output << num.price << endl;

output << num.klass << endl;

output << endl;

return output;

}

 

 

ifstream &operator >> ( ifstream &input, Pass &num )

{

input >> num.n;

input >> num.family_name;

input >> num.name;

input >> num.middle_name;

input >> num.mesto;

input >> num.price;

input >> num.klass;

return input;

}

 

 

bool  operator<( const Pass &pas1, const Pass &pas2)

{

if (Pass::q == 1)

return (pas1.mesto < pas2.mesto);

if (Pass::q == 2)

return (pas1.mesto < pas2.mesto);

if (Pass::q == 3)

return (pas1.n < pas2.n);

if (Pass::q == 4)

return (pas1.n < pas2.n);

}

 

 

bool  operator>( const Pass &pas1, const Pass &pas2)

{

if (Pass::q == 1)

return (pas1.mesto > pas2.mesto);

if (Pass::q == 2)

return (pas1.mesto > pas2.mesto);

if (Pass::q == 3)

return (pas1.n > pas2.n); 

if (Pass::q == 4)

return (pas1.n > pas2.n);

}

 

 

Comfort_Class :: Comfort_Class ( )

{

this->price = 1500;

strcpy_s (this->klass, "Comfort_Class" );

}

Comfort_Class :: ~Comfort_Class () {}

 

 

 

Business_Class :: Business_Class ( )

{

this->price = 2500;

strcpy_s (this->klass, "Business_Class" );

}

Business_Class :: ~Business_Class () {}

 

 

 

Economy_Class :: Economy_Class ( )

{

this->price = 500;

strcpy_s (this->klass, "Economy_Class" );

}

Economy_Class :: ~Economy_Class () {}

 

 

void Pass::Prosm_Deque ( deque<Pass> &pas , int &flaq )

{

system("cls");

deque<Pass>::iterator iter;

cout <<"\nКоличество пассажиров в списке - " << flaq - 1  << endl;

for(iter=pas.begin(); iter!=pas.begin() + flaq -1  ; iter++)

{

cout << "\nЭлементы из списка 1"<< *iter;

}

}

 

void Pass::Zap_Text_File(deque<Pass> &pas , int &flaq)

{

system("cls");

deque<Pass>::iterator iter;

ofstream outfile("deque.txt");

for (iter = pas.begin (); iter!=pas.begin() + flaq - 1; iter ++)

{

outfile << *iter << endl;

}

outfile.close ();

cout <<"\nСписок занесён в файл";

}

 

void Pass::Prosm_Text_File( deque<Pass> &pas , int &flaq)

{

Pass temp;

pas.clear ();

flaq = 1;

ifstream infile("deque.txt");

infile.seekg(ios::beg,0);

while (1)

{

infile >> temp;

if (infile.eof ())

break;

pas.push_back (temp);

flaq++;

 

}

infile.close ();

cout <<"\nСписок пассажиров с файла прочитан";

}

 

void Pass::Poisk( deque<Pass> &pas , int &flaq , int &poisk , int &shet_poisk)

{

system("cls");

if (flaq > 1)

{

deque<Pass>::iterator iter;

cout <<"\nПоиск по номеру в списке ";

cout << "\nВведите номер пассажира: ";

cin >> poisk;

for (iter = pas.begin();iter != pas.end (); iter ++)

{

 

if (iter->getN () == poisk)

{

cout << "\n Искомый пассажир с номером "<< poisk <<" в списке:" << endl;

cout << *iter << endl;

shet_poisk = 1;

}

}

if (shet_poisk == 0)

{

cout << "\nПассажир с таким номером отсутствует";

}

shet_poisk = 0;

}

else

cout << "\nСписок пуст";

}

 

void Pass::Sort_Mesto_Max( deque<Pass> &pas , int &flaq)

{

system("cls");

sort(pas.begin(), pas.begin() + flaq -1);

cout <<"\nСписок отсортирован по местам (возростание) пассажиров в салоне";

}

 

void Pass::Sort_Mesto_Min (  deque<Pass> &pas , int &flaq )

{

system("cls");

sort( pas.rbegin() , pas.rend() );

cout <<"\nСписок отсортирован по местам (убывание) пассажиров в салоне";

}

 

void Pass::Sort_Nomer_Max ( deque<Pass> &pas , int &flaq )

{

system("cls");

sort(pas.begin(), pas.begin() + flaq -1 );

cout <<"\nСписок отсортирован по номеру (возростание)в списке";

}

 

void Pass::Sort_Nomer_Min ( deque<Pass> &pas , int &flaq )

{

system("cls");

sort( pas.rbegin(), pas.rend() );

cout <<"\nСписок отсортирован по номеру (убывание) в списке";

}

 

void Pass::Udal_Elem_Nach( deque<Pass> &pas , int &flaq )

{

if(flaq > 1)

{

pas.pop_front();

cout << "\nЭлемент удален из списка";

flaq--;

}

else

{

cout <<"\nСписок пуст";

}

}

 

void Pass::Udal_Elem_Kon( deque<Pass> &pas , int &flaq )

{

if(flaq > 1)

{

pas.pop_back();

cout << "\nЭлемент удален из списка";

flaq--;

}

else

{

cout <<"\nСписок пуст";

}

}

 

void Pass::Udal_Deque ( deque<Pass> &pas , int &flaq )

{

if(flaq > 1)

{

pas.clear();

cout << "\nЭлементы удалены из списка";

flaq = 1;

}

else

{

cout <<"\nСписок пуст";

}

}

 

void Comfort_Class::Dobav_Comfort_Class( deque<Pass> &pas, deque<Comfort_Class> &ob2 , int &flaq , int &flaq2 )

{

deque<Comfort_Class>::iterator iter2;

system ("cls");

cout<<"\<_____Введите данные о пассажире_____>"<< endl;

for(iter2=ob2.begin() + flaq2 - 1; iter2!=ob2.begin() + flaq2; iter2++)

{

cout << "\n Обьект ";

cin >> *iter2;

}

pas.insert(pas.begin()  + flaq - 1,ob2.begin() + flaq2 - 1 ,ob2.end());

flaq2++;

flaq++;

}

 

void Business_Class::Dobav_Business_Class( deque<Pass> &pas, deque<Business_Class> &ob3 , int &flaq , int &flaq3 )

{

system ("cls");

deque<Business_Class>::iterator iter3;

cout<<"\<_____Введите данные о пассажире_____>"<< endl;

for(iter3=ob3.begin() + flaq3 - 1; iter3!=ob3.begin() + flaq3; iter3++)

{

cout << "\n Обьект ";

cin >> *iter3;

}

pas.insert(pas.begin() + flaq - 1,ob3.begin() + flaq3 - 1 ,ob3.end());

flaq3++;

flaq++;

}

 

void Economy_Class::Dobav_Economy_Class( deque<Pass> &pas, deque<Economy_Class> &ob4 , int &flaq , int &flaq4 )

{

system ("cls");

deque<Economy_Class>::iterator iter4;

cout<<"\<_____Введите данные о пассажире_____>"<< endl;      

for(iter4=ob4.begin() + flaq4 - 1; iter4!=ob4.begin() + flaq4; iter4++)

{

cout << "\n Обьект ";

cin >> *iter4;

}

pas.insert(pas.begin()  + flaq - 1,ob4.begin() + flaq4 - 1,ob4.end());

flaq4++;

flaq++;

}

 

Exception.h

#include "stdafx.h"

#include <iostream>

#include "string.h"

 

 

 

using namespace std;

 

class exp

{

public:

exp(){cout <<"\nПовторите ввод"<< endl;};

virtual ~exp(){};

};

 

 

class exp_1:public exp

{

char error1[50];

public:

exp_1(char *error_1)

{

strcpy(error1,error_1);

};

void show()

{

cout << error1 << endl;

}

 

~exp_1(){};

};

 

 

class exp_2:public exp

{

char error2[50];

public:

exp_2(char *error_2)

{

strcpy(error2,error_2);

};

void show()

{

cout << error2 << endl;

}

~exp_2(){};

};

 

 

class exp_3:public exp

{

char error3[50];

public:

exp_3(char *error_3)

{

strcpy(error3,error_3);

};

void show()

{

cout << error3 << endl;

}

~exp_3(){};

 

};

 

 

class exp_4:public exp

{

char error4[50];

public:

exp_4(char *error_4)

{

strcpy(error4,error_4);

};

void show()

{

cout << error4 << endl;

}

~exp_4(){};

};

 

 

class exp_5:public exp

{

char error5[50];

public:

exp_5(char *error_5)

{

strcpy(error5,error_5);

};

void show()

{

cout << error5 << endl;

}

~exp_5(){};

};

 

 

class exp_6:public exp

{

char error6[50];

public:

exp_6(char *error_6)

{

strcpy(error6,error_6);

};

void show()

{

cout << error6 << endl;

}

~exp_6(){};

};

 

 

main.cpp

#include "stdafx.h"

#include "metody.h"

 

 

using namespace std;

 

 

int _tmain(int argc, _TCHAR* argv[])

{

SetConsoleCP(1251);

    SetConsoleOutputCP(1251);

Pass ob_1;

Comfort_Class ob_2;

Business_Class ob_3;

Economy_Class ob_4;

deque<Pass> pas(300);

deque<Pass>::iterator iter;

deque<Comfort_Class> ob2(50);

deque<Comfort_Class>::iterator iter2;

deque<Business_Class> ob3(100);

deque<Business_Class>::iterator iter3;

deque<Economy_Class> ob4(150);

deque<Economy_Class>::iterator iter4;

int flaq = 1 , flaq2 = 1, flaq3 = 1, flaq4 = 1  , vibor, vibor_1 ,vibor_2 , vibor_3 = 1 , vibor_4 = 1 , vibor_5 = 1, vibor_6 ,shet_poisk = 0 ,poisk;

 

while ( 1 )

{

system ("cls");

cout << "<_______Операции с пассажирами_______>";

cout << "\n1)Добавление пассажиров";

cout << "\n2)Просмотр пассажиров ";

cout << "\n3)Очистка списка пассажиров ";

cout << "\n4)Сортировка списка пассажиров ";

cout << "\n5)Запись в файл данных списка ";

cout << "\n6)Чтение из файла данных в список";

cout << "\n7)Поиск в списке пассажира";

cout << "\n0)Выход\n";

 

cin >> vibor_1;

 

switch ( vibor_1 )

{

case 1 :

{

while ( vibor_3 == 1 )

{

system ("cls");

cout << "<_____Выберите класс обслуживания_____>";

cout << "\n1)Комфорт";

cout << "\n2)Бизнес";

cout << "\n3)Эконом";

cout << "\n0)Выход в главное меню" << endl;

 

cin >> vibor_2;

switch ( vibor_2 )

{

case 1:

{

ob_2.Dobav_Comfort_Class( pas , ob2 , flaq , flaq2 ); 

_getch();

                 break;

}

case 2:

{

ob_3.Dobav_Business_Class( pas , ob3 , flaq , flaq3 );        

          _getch();

                 break;

}

case 3:

{

ob_4.Dobav_Economy_Class( pas , ob4 , flaq , flaq4 );

_getch();

                 break;

}

case 0:

{

vibor_3 = 0;

}

}   

}

vibor_3++;

_getch();

break;

}

case 2:

{

ob_1.Prosm_Deque( pas , flaq);    

_getch();

break;

}

case 3:

{

if(flaq > 1)

{

while ( vibor_5 == 1)

{

system("cls");

cout << "\nВыберите способ удаления";

cout <<"\n1)Удалить первого пассажира в списке";

cout <<"\n2)Удалить последнего пассажира в списке";

cout <<"\n3)Удалить весь список";

cout <<"\n0)Выход в главное меню" << endl;

cin >> vibor_6;

switch( vibor_6 )

{

case 1:

{

ob_1.Udal_Elem_Nach(pas , flaq);

_getch();

break;

}

case 2:

{

ob_1.Udal_Elem_Kon(pas , flaq);

_getch();

break;

}

case 3:

{

ob_1.Udal_Deque( pas , flaq );

_getch();

break;

}

case 0:

{

vibor_5 = 0;

_getch();

break;

}

}

}

vibor_5++;

_getch();

break;

}

else

{

cout <<"\nСписок пуст" << endl;

}

_getch();

break;

}

case 4:

{

if(flaq > 1)

{

while ( vibor_4 == 1)

{

system("cls");

cout << "\nВыберите категорию сортировки";

cout <<"\n1)По месту пассажира в салоне по возростанию";

cout <<"\n2)По месту пассажира в салоне по убыванию";

cout <<"\n3)По номеру в списке по возростанию";

cout <<"\n4)По номеру в списке по убыванию";

cout <<"\n0)Выход в главное меню" << endl;

cin >> vibor;

Pass::q = vibor;

switch( vibor )

{

case 1:

{

ob_1.Sort_Mesto_Max( pas ,flaq);       

_getch();

break;

}

case 2:

{

ob_1.Sort_Mesto_Min(  pas,flaq);

_getch();

break;

}

case 3:

{

ob_1.Sort_Nomer_Max( pas ,flaq);

_getch();

break;

}

case 4:

{

ob_1.Sort_Nomer_Min( pas ,flaq);

_getch();

break;

}

case 0:

{

vibor_4 = 0;

_getch();

break;

}

}

}

vibor_4++;

_getch();

break;

}

else

{

cout <<"\nДанные для сортировки отсутсвуют" << endl;

}

_getch();

break;

}

case 5:

{

ob_1.Zap_Text_File( pas , flaq );

}

_getch();

break;

case 6:

{

ob_1.Prosm_Text_File( pas , flaq);

_getch();

break;

 

}

case 7:

{

 

ob_1.Poisk( pas , flaq , poisk , shet_poisk);

_getch();

break;

}

case 0:

{

return 0;

}

}

}

_getch();

   return 0;

}

 


Информация о работе Создание базы данных пассажиров