
Добавил:
nyan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:C++ / ЛАБА
.txt// Создать структуру для базы данных авиабилетов :
//Компания, пункт назначения, номер рейса, стоимость
//билета. Ввести с клавиатуры данные о нескольких
//проданных билетах. Распечатать данные о проданных
//билетах заданной компании. Вывести данные о количестве
//проданных билетов на указанный рейс.
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <time.h>
#define N 10
using namespace std;
typedef struct AviaDB
{
char *Company;
char *Destination;
int FlightNumber;
int Price;
} AviaDB;
AviaDB* init(int n);
void Tictets(AviaDB* DataBase, int n);
void Print(AviaDB DataBase);
void PrintByCompany(AviaDB* DataBase, int n);
void DEL(AviaDB* DataBase, int n);
int main()
{
int Num=1;
setlocale(LC_ALL, "Russian");
srand(time(0));
cout << "Ввести с клавиатуры данные о нескольких" << endl <<
"проданных билетах. Распечатать данные о проданных" << endl <<
"билетах заданной компании. Вывести данные о количестве" << endl <<
"проданных билетов на указанный рейс" << endl;
while (Num==1)
{
int n=0; //количество элементов
while (n<=0)
{
cout << "Введите количество элементов базы данных" <<endl;
cin >> n;
if (n <=0)
cout << "Количество элементов должно быть положительным" << endl;
}
AviaDB* DataBase = init(n);
PrintByCompany(DataBase, n);
Tictets(DataBase, n);
DEL(DataBase, n);
n=0;
cout << "Продолжить? (1/0)" << endl;
cin >> Num;
}
return 0;
}
AviaDB* init(int n)
{
char buff[50];
AviaDB *DataBase= new AviaDB [n];
cout << "Заполните базу данных:" << endl;
for (int i=0;i<n;i++)
{
cout << "Компания:" << endl;
cin>>buff;
DataBase[i].Company = new char[strlen(buff)+1];
strcpy(DataBase[i].Company, buff);
cout << "Пункт назначения" << endl;
cin>>buff;
DataBase[i].Destination = new char[strlen(buff)+1];
strcpy(DataBase[i].Destination, buff);
DataBase[i].Destination;
cout << "Номер рейса" << endl;
cin >> DataBase[i].FlightNumber;
cout << "Цена билета" << endl;
cin >> DataBase[i].Price;
}
return DataBase;
}
void Print(AviaDB DataBase)
{
cout << DataBase.Company;
cout << "\t";
cout << DataBase.Destination;
cout << "\t";
cout << DataBase.FlightNumber;
cout << "\t";
cout << DataBase.Price;
cout << "\n";
}
void PrintByCompany(AviaDB* DataBase, int n)
{
char Company[50];
cout << "Введите название компании " << endl;
cin >> Company;
printf("Компания\tПункт назначения\tНомер рейса\tЦена билета\n");
for (int i=0; i<n; i++)
if (strcmp(Company,DataBase[i].Company)==0) //если строки совпадают, то выводим
Print(DataBase[i]);
cout << endl;
}
void Tictets(AviaDB* DataBase, int n)
{
int Flight;
int count=0;
cout << "Введите номер рейса";
cin >> Flight;
printf("Компания\tПункт назначения\tНомер рейса\tЦена билета\n");
for (int i=0; i<n; i++)
if (Flight == DataBase[i].FlightNumber)
{
Print(DataBase[i]);
count++;
}
cout << "На рейс " << Flight << " продано " << count << " билетов\n";
}
void DEL(AviaDB* DataBase, int n)
{
for (int i=0; i < n; i++)
{
delete DataBase->Destination;
delete DataBase->Company;
}
delete []DataBase;
DataBase = NULL;
}
Соседние файлы в папке C++