Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++ / ЛАБА

.txt
Скачиваний:
9
Добавлен:
13.05.2017
Размер:
3.28 Кб
Скачать
// Создать структуру для базы данных авиабилетов : 
//Компания, пункт назначения, номер рейса, стоимость 
//билета. Ввести с клавиатуры данные о нескольких 
//проданных билетах. Распечатать данные о проданных 
//билетах заданной компании. Вывести данные о количестве
//проданных билетов на указанный рейс. 
#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++