logo
Автор: unreal
Описание: Как-то так
Язык: C++
/* 
 * File:   main.cpp
 * Author: unreal
 *
 * Created on 17 Февраль 2011 г., 20:42
 */

#include <cstdlib>
#include <stdlib.h>
#include <iostream>
#define ITEM_BUF_SIZE 256

using namespace std;

struct item * list_store();
void list_find(struct item *head);           // Поиск по наименованию
void item_print(struct item *curr);          // Вывод информации о одной записи
void list_print(struct item *head);          // Вывод информации о всех запиях
void del_item(struct item *head);            // Удаление записи
struct item * add_item(struct item *head);   // Добавление записи в начало списка
/*
 *
 *
 */
struct item{
    char data_arriv[ITEM_BUF_SIZE]; // Дата прихода товара
    char data_outho[ITEM_BUF_SIZE]; // Дата отправки товара
    char name[ITEM_BUF_SIZE];       // Наименование товара
    int num;                        // Колличество
    struct item *next;              // Указатель на следующую структуру

} *lhead;

int main(int argc, char** argv) {
    short temp;
    do{
        cout << "*** Главное меню ***" << endl;
        cout << "[1] Создание списка" << endl;
        cout << "[2] Добавить запись" << endl;
        cout << "[3] Удалить запись" << endl;
        cout << "[4] Просмотреть список" << endl;
        cout << "[5] Поиск по наименованию" << endl;
        cout << "[6] Выход" << endl;
        cin >> temp;

        switch(temp){
            case 1:
                lhead = list_store();
                break;
            case 2:
                lhead = add_item(lhead);
                break;
            case 3:
                del_item(lhead);
                break;
            case 4:
                list_print(lhead);
                break;
            case 5:
                list_find(lhead);
                break;
            case 6:
                return 0;
            default: cout << "ERROR" << endl;
        }

    } while(1);
    return 0;
}

struct item *list_store(){
    struct item *prior, *temp;
    char ctemp;
    lhead = prior = temp = new struct item;

    cout << "Создание списка. Ввод данных: " << endl;
    cout << "Дата прихода(Год.Месяц.День/Часы.Минуты):"; cin >> temp->data_arriv;
    cout << "Дата отправления(Год.Месяц.День/Часы.Минуты):"; cin >> temp->data_outho;
    cout << "Наименование товара: "; cin >> temp->name;
    cout << "Количество: "; cin >> temp->num;
    cout << "Завершить?(Y/N): ";
    cin >> ctemp;
    if (ctemp != 'Y'){
    do{
        temp = new struct item;
        cout << "Ввод данных: " << endl;
        cout << "Дата прихода(Год.Месяц.День/Часы.Минуты):"; cin >> temp->data_arriv;
        cout << "Дата отправления(Год.Месяц.День/Часы.Минуты):"; cin >> temp->data_outho;
        cout << "Наименование товара: "; cin >> temp->name;
        cout << "Количество: "; cin >> temp->num;

        prior->next = temp;
        prior = temp;

        cout << "Завершить? (Y/N) :";
        cin >> ctemp;
    } while(ctemp != 'Y');
    } else {
        temp->next = NULL;
    }
    return lhead;
}

void list_find(struct item *head){
    struct item *curr = head;
    char temp[ITEM_BUF_SIZE];
    cout << "Введите наименование товара: ";
    cin >> temp;
    while(curr != NULL){
        if(!strcmp(curr->name, temp)){
            item_print(curr);
        }
        curr = curr->next;
    }
}

void item_print(struct item *curr){
    cout << "Дата прихода(Год.Месяц.День/Часы.Минуты):" << curr->data_arriv << endl;
    cout << "Дата отправления(Год.Месяц.День/Часы.Минуты):" << curr->data_outho << endl;
    cout << "Наименование товара: " << curr->name << endl;
    cout << "Количество: " << curr->num << endl;
}

void list_print(struct item *head){
    struct item *curr = head;
    int i = 1;
    cout << "*** Список товаров ***" << endl;
    while(curr != NULL){
        cout << "*** Запись " << i << "***"<< endl;
        item_print(curr);
        curr = curr->next;
        i++;
    }
}

void del_item(struct item *head){
    struct item *curr = head, *temp;
    char ctemp[ITEM_BUF_SIZE];
    cout << "Введите наименование товара: "; cin >> ctemp;

    if(curr){
        if(!strcmp(curr->name, ctemp)){
            lhead = curr->next;
            free(curr);
            return;
        }
    }
    while(curr){
        if((temp = curr->next) && !strcmp(temp->name, ctemp)){
            curr->next = curr->next->next;
            free(temp);
        }
        curr = curr->next;
    }
}

struct item * add_item(struct item *head){
    struct item *curr = head, *temp;
    temp = new struct item;

    cout << "Ввод данных: " << endl;
    cout << "Дата прихода(Год.Месяц.День/Часы.Минуты):"; cin >> temp->data_arriv;
    cout << "Дата отправления(Год.Месяц.День/Часы.Минуты):"; cin >> temp->data_outho;
    cout << "Наименование товара: "; cin >> temp->name;
    cout << "Количество: "; cin >> temp->num;

    temp->next = lhead;
    return temp;
}
Последние размещения:
123123123 (PHP)
ksurent (Perl)
ksurent (Bash)
guata (Plain Text)
biophreak (Plain Text)
Raik (PHP)
MUSbKA (Plain Text)
MUSbKA (Plain Text)
nekitozzz (C++)
nekitozzz (Plain Text)
nekitozzz (C++)
ksurent (Perl)
MUSbKA (C++)
stalin_alex (C++)
dzantiev (Plain Text)
unreal (C++)
eug2b (Plain Text)
Мы не несем ответственности за текст, размещенный пользователем.
netsago.paste.β © 2009—2012 Neunica