Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2020, 13:45   #1
андрей1107
Пользователь
 
Регистрация: 30.09.2015
Сообщений: 15
По умолчанию Не отображается информация в консольном приложении

Всем доброго времени суток.

Имеется следующая задача.
Составить программу, которая содержит текущую информацию о заявках на
авиабилеты.
Каждая заявка содержит определенные поля.
Программа должна обеспечивать:
-хранение заявок в виде списка
-добавление заявок в список
-удаление заявок
-вывод заявки по заданному номеру рейса и дате
-вывод всех заявок

Код к данной задаче:

Код:
#include <iostream>
#include <string>
#include <iomanip>
#include "windows.h"
using namespace std;
 
struct Node
{
    char point[20];    //- пункт назначения;
    int reis;        //- номер рейса;
    char name[12];    //- фамилия;
    char surname[12];    //- имя
    char patr[12];    //- отчество
    char date[12];  //- желаемая дата вылета;
    Node* next;    // указатель на структуру заявка.
};
 
void Menu();
Node* addNode(Node* first); // - добавление заявок в список;
Node* deleteNode(Node* first); // - удаление заявок по заданному номеру рейса
void outNode(Node* first); // - вывод всех заявок.
void outNodeNum(Node* first); // вывод одной заявки
 
int main()
{
    //setlocale(LC_ALL, "Russian");
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    //Node *first = new Node;
    //int n = 1;
    //cout << "-------Данные о заявке-------\n\n";
    //cout << "Введите пункт назначения > ";
    //cin >> first->point;
    //cout << "Введите номер рейса > ";
    //cin >> first->reis;
    //cout << "Введите фамилию пассажира > ";
    //cin >> first->name;
    //cout << "Введите имя пассажира > ";
    //cin >> first->surname;
    //cout << "Введите отчество пассажира > ";
    //cin >> first->patr;
    //cout << "Введите дату вылета > ";
    //cin >> first->date;
    //cout << "\n";
    //first->next = NULL;
    Node* first = new Node; 
    Node* f1 = new Node;     
    Node* f2 = new Node;     
    Node* f3 = new Node;    
    first->next = f1;

    f1->next = f2;
    f2->next = f3;
    f3->next = NULL;
    ////////////////////////////////////////////////////////
    int k = 5;
    while (k != 6)
    {
        switch (k)
        {
        case 1: first = addNode(first); break;
        case 2: outNode(first); break;
        case 3: outNodeNum(first); break;
        case 4: first = deleteNode(first); break;
        case 5: Menu(); break;
        case 6: break;
        default: cout << "  ОШИБКА! Числа от 1 до 6.\n";
        }
        cout << "\nВведите нужный пункт: ";
        cin >> k;
    }
    getchar(); // пауза    
    return 0;
}
 
void Menu()
{
    system("cls");
    cout << "\n";
    cout << "1 - Добавить заявку\n";
    cout << "2 - Вывести все заявки\n";
    cout << "3 - Вывести заявку по номеру рейса и дате вылета\n";
    cout << "4 - Удалить заявку\n";
    cout << "5 - Очистить экран\n";
    cout << "6 - Выход\n";
}
 
Node* addNode(Node* first)
{
    cout << "______________________________________________\n";
    Node* pv = new Node;
    cout << "Данные о заявке: \n";
    cout << "Введите пункт назначения > ";
    cin >> pv->point;
    cout << "Введите номер рейса > ";
    cin >> pv->reis;
    cout << "Введите фамилию пассажира > ";
    cin >> pv->name;
    cout << "Введите имя пассажира > ";
    cin >> pv->surname;
    cout << "Введите отчество пассажира > ";
    cin >> pv->patr;
    cout << "Введите дату вылета > ";
    cin >> pv->date;
    cout << "\n";
    pv->next = NULL;
    cout << "______________________________________________\n";
    if (first == NULL)
    {
        first = pv;
    }
    else
    {
        Node* p = first;
        while (p->next != NULL)
        {
            p = p->next;
        }
        p->next = pv;
    }
    return first;
}
 
void outNode(Node* first)
{
    //Node *pv = first;
    //while (pv)
    //{
    //  cout << "\nДанные о заявке \n";
    //  cout << "\nПункт назначения > " << pv->point;
    //  cout << "\nНомер рейса > "; cout << pv->reis;
    //  cout << "\nФамилия пассажира > " << pv->name;
    //  cout << "\nИмя пассажира > " << pv->surname;
    //  cout << "\nОтчество пассажира > " << pv->patr;
    //  cout << "\nДата вылета > " << pv->date << "\n\n\n";
    //  pv = pv->next;
    //}
 
    cout << setiosflags(ios::right);
    cout << "_________________________________________________________________\n";
    cout << "Данные по заявкам:\n";
    cout << "       Пункт  Номер    Фамилия      Имя      Отчество        Дата\n";
    cout << "  назначения  рейса  --------- ДАННЫЕ ПАССАЖИРА -----      вылета\n";
 
    Node* pv = first;
    while (pv)
    {
        cout << setw(12) << pv->point << setw(7) << pv->reis << setw(11) << pv->name;
        cout << setw(10) << pv->surname << setw(13) << pv->patr << setw(12) << "12.11.2017" << endl;
        pv = pv->next;
    }
    cout << "_________________________________________________________________\n";
}
 
void outNodeNum(Node* first)
{
 
    int i = 0;
    int num;
    string dat;
    Node* pv = first;
    cout << "Введите номер рейса: ";
    cin >> num;
    cout << "Введите дату: ";
    cin >> dat;
    for (pv = first; (pv->next) != NULL; pv = pv->next) //цикл просмотра элементов
    {
        if ((pv->reis == num) && (pv->date == dat)) //условие поиска элемента
        {
            /*в случае совпадения выводится элемент:*/
            cout << "Zayavka naidena:" << "\n";
            cout << "Pynkt Nazna4enya:" << setw(8) << "Reis:" << setw(13)
                << "FIO:" << setw(15) << "Data vileta:" << endl;
            cout << setw(17) << pv->point << setw(8) << pv->reis << setw(13)
                << pv->name << setw(15) << pv->date << "\t" << "\n" << endl;
            i++; //счетчик количества найденных заявок
        } //конец if
    } //конец for

    if (i) cout << "Nichego ne naideno!" << "\n" << endl; 
 
}
 
 
    /*int n = 1, fl = 0;
    while (pv)
    {
        
        pv = pv->next;
    }
*/
 
Node* deleteNode(Node* first)
{
    cout << "______________________________________________\n";
    cout << "Номер рейса, заявку по которому удалить: ";
    int num;
    cin >> num;
 
    Node* temp = first;
    int k = -1;
    int N = 0;
    while (temp)
    {
        if (temp->reis == num)
        {
            k = N;
        }
        temp = temp->next;
        N++;
    }
    N--;
    if (k != -1)
    {
        temp = first;
     
        if (k == 0 && N == 0)
        {
            delete first;
            cout << "  Удаление прошло успешно!\n";
            cout << "______________________________________________\n";
            return NULL;
        }
       
        if (k == 0 && N > 0)
        {
            temp = temp->next;
            delete first;
            cout << "  Удаление прошло успешно!\n";
            cout << "______________________________________________\n";
            return temp;
        }
      
        Node* el = first;
        temp = first->next;
        while (temp->next)
        {
            if (temp->reis == num)
            {
                el->next = temp->next;
                delete temp;
                cout << "  Удаление прошло успешно!\n";
                cout << "______________________________________________\n";
                return first;
            }
            el = el->next;
            temp = temp->next;
        }
        // если нужно удалить последний узел
        el->next = NULL;
        delete temp;
        cout << "  Удаление прошло успешно!\n";
        cout << "______________________________________________\n";
        return first;
    }
    else
    {
        cout << "  Такого рейса нет или список пуст!\n";
        cout << "______________________________________________\n";
        return first;
    }
}
Программа не выводит данные по номеру и дате рейса.

Подскажите пожалуйста, что и где не так, если не сложно.
Заранее благодарен.
андрей1107 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню в консольном приложении GoOFee C# (си шарп) 1 29.05.2016 16:17
IdTelnetClient + консольном приложении nikcpp Работа с сетью в Delphi 0 16.05.2016 17:06
фрактал в консольном приложении с++ Дж.Лондон Помощь студентам 2 27.08.2015 11:15
Информация в консольном приложении demigod82 Общие вопросы C/C++ 1 10.03.2012 09:26
PopupMenu в консольном приложении anger Общие вопросы Delphi 7 08.09.2011 13:56