
Спецификация программы
Обозначение |
Наименование |
Примечание |
stdafx.cpp |
Файл проекта |
Исходный файл, содержащий только стандартные включаемые модули
|
Авиабилеты. cpp |
Файл модуля проекта |
определяет точку входа для консольного приложения.
|
Текст программы
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <ctime>
#include <string>
using namespace std;
typedef struct zajfka{ // информация о заявках на авиабилеты:
char point[100]; //- пункт назначения;
int number; //- номер рейса;
char name1[20]; //- фамилия пассажира;
char name2[20]; //- имя
char name3[20]; //- отчество
int time_t,date,L; //- желаемая дата вылета;
struct zajfka * next; // указатель на структуру заявка.
}Node;
void addNode( Node *& list ); // - добавление заявок в список;
void deleteNode( Node *& list, const int num ); // - удаление заявок по заданному номеру рейса
void outNodeNum( const Node * list, int num ); // - вывод заявок по заданному номеру рейса
void outNodeDate( const Node * list ); // - вывод заявок по дате вылета
void outNode( const Node * list ); // - вывод всех заявок.
void out( const Node * list ); // вывод одной заявки
bool if_end( char * ch, wchar_t *str = L"" );
//_________ MAIN_________________
int main(int argc, char *argv[])
{
Node * list = NULL;
wcout.imbue(locale(".866"));
addNode( list );
outNode( list );
int num;
wcout << L"\n\nВведите номер рейса для просмотра заявок этого рейса > ";
cin >> num; getchar();
wcout << L"\n\nЗаявки с номером рейса "; cout << num;
outNodeNum( list, num );
wcout << L"\n\nУдаление заявок по заданному номеру рейса > ";
cin >> num; getchar();
deleteNode( list, num );
wcout << L"\n\nОставшиеся заявки:";
outNode( list );
wcout << L"\n\nНажмите клавишу Enter для выхода из программы";
getchar(); // пауза
return 0;
}
//________ END MAIN ______________
void addNode( Node *& list ){
wcout << L"Введите данные о заявках:\n";
wcout << L"Для выхода введите слово \"end\"\n\n";
int L,num = 0;
while(1){
num++;
wcout << L"\nДанные о заявке № " << num << endl;
Node * n = new Node;
if( if_end( n->point,L"Введите пункт назначения > " )) break;
wcout << L"Введите номер рейса > ";
cin >> n->number;
getchar();
if( if_end( n->name1, L"Введите фамилию пассажира > " )) break;
if( if_end( n->name2, L"Введите имя пассажира > " )) break;
if( if_end( n->name3, L"Введите отчество пассажира > " )) break;
wcout << L->date, "Введите желаемую дату вылета > ";
cin >> n->date; // вводим дату
n->next = list; // "пристыковываемся" в список
list = n;
}
}
bool if_end( char * ch, wchar_t *str ){
wcout << str;
gets( ch );
if( strcmp( ch, "end" )) return false;
return true;
}
void out( const Node * list, int num ){
wcout << L"\n\nЗаявка № " << num;
wcout << L"\nПункт назначения > " << list->point;
wcout << L"\nНомер рейса > "; cout << list->number;
wcout << L"\nФамилия пассажира > " << list->name1;
wcout << L"\nИмя пассажира > " << list->name2;
wcout << L"\nВведите отчество пассажира > " << list->name3;
wcout << L"\nЖелаемая датa вылета > " << list->date;
}
void outNode( const Node * list ){
int n = 1;
for(; list ; list = list->next ){
out( list, n );
n++;
}
}
void outNodeNum( const Node * list, int num ){
int n = 1;
for(; list ; list = list->next ){
if( list->number == num )
out( list, n++ );
}
}
void deleteNode( Node *& list, const int num ){
int n = 1;
Node *x, *y = list, *begin = list;
wcout << L"\n\n_____ Удаление: ________";
while( list ){
if( list->number == num ){
x = list->next;
out( list, n );
n++;
if( list != y ){
delete list;
y->next = list = x;
}end if( list != y ){ else{
delete list;
y = list = x;
}end; if( list != y ){
} end; if( list->number == num ){
else{
y = list;
list = list->next;
} end; else if( list->number == num )
}end; while();
list = begin;
} end deleteNode();
}