Лабораторная работа по C++ библиотека STL

Цель работы

Изучение стандартной библиотеки шаблонов STL (Standard Template Library).

 Лабораторное задание

Для базового класса реализовать структуру данных в соответствии с лабораторным заданием. В базовом классе все строковые данные представить с использованием классов string/wstring.
Программа должна выполнить следующее:
– заполнить структуру данных;
– вывести структуру данных на экран;
– удалить все элементы из структуры данных.
Структура данных - set


Листинг

Файл Detal.h

#include <string>
#include <iostream>
#include <iomanip>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <set>
#include <locale>

using namespace std;
class Detal
{
public:
    Detal(void);
      Detal(wchar_t* nazv, wchar_t* nazn, wchar_t* mater, wchar_t* proizv);
      ~Detal(void);

      void Input(void);
      void Output(void);
      bool operator <(const Detal& _Left) const;
      void Add();

private:
    wstring m_szNazvanie;
      wstring m_szNaznachenie;
      wstring m_szMaterial;
      wstring m_szProizvodstvo;
};
void textmenu(int &choice);
void add(set <Detal> &mylist);

void prt(set <Detal> &mylist);

Файл Main.cpp

#include "Detal.h"

void main(void)
{
      setlocale (LC_CTYPE, ".866");

      set <Detal> mylist;
      int choice=0;

      while(1)
      {
            textmenu(choice);
            switch(choice)
            {
            case 1:
                  wcout << L"..... Добавление Детали в список .....\n";
                  add(mylist);
                  break;
            case 2:
                  wcout << L"..... Вывод таблицы на экран .....\n";
                  prt(mylist);
                  break;
            case 3:
                  wcout <<L"..... Очистка списка .....\n";
                  mylist.clear();
                  break;
            }    
      }          

}

Файл Detal.cpp

#include "Detal.h"
void prt(set<Detal> &mylist)
{

      wcout << L"\n+==================+==================+====================+===================+\n";
      wcout <<   L"|     Название     |     Материал     |     Назначение     |    Производство   |\n";
      wcout <<   L"+==================+==================+====================+===================+\n";

      set <Detal>::iterator i;
     
      for (i=mylist.begin();i!=mylist.end();++i)
      {
            i->Output();
      }
}
void add(set <Detal> &mylist)
{
      Detal tmp;
      tmp.Input();
      mylist.insert(tmp);
}
void textmenu(int &choice)
{
      wcout << L"\n ********** Выберите пункт меню *********** \n";
      wcout <<   L"| 1-Добавить детали                        |\n";
      wcout <<   L"| 2-Вывод таблицы деталей                  |\n";
      wcout <<   L"| 3-Очистить список деталей                |\n";
      wcout <<   L" ****************************************** \n";
      cin >> choice;
      fflush(stdin);
      system("CLS");
}
Detal::Detal(void)
{
            m_szNazvanie+= L"Nazv";
            m_szNaznachenie+= L"Nazn";
            m_szMaterial+= L"Mat";
            m_szProizvodstvo+= L"Proizv";
}

Detal::Detal(wchar_t* nazv,wchar_t* nazn, wchar_t* mater, wchar_t* proizv)
{
      m_szNazvanie+=*nazv;
      m_szNaznachenie+=*nazn;
      m_szMaterial+=*mater;
      m_szProizvodstvo+=*proizv;
}

Detal::~Detal(void)
{
}

void Detal::Input(void)
 {   
      wcout << L"Ввод данных:\n";
      wchar_t buf[20];

      wcout << L"    Название детали: ";
      _getws(buf);
      m_szNazvanie=buf;
     
      wcout << L"    Назначение детали: ";
      _getws(buf);
      m_szNaznachenie=buf;
     
      wcout << L"    Материал детали: ";
      _getws(buf);
      m_szMaterial=buf;
     
      wcout << L"    Производство детали: ";
      _getws(buf);
      m_szProizvodstvo=buf;
 }

void Detal::Output(void)
{

      wprintfL"|%-18ws|%-18ws|%-20ws|%-19ws|\n", m_szNazvanie.c_str(), m_szMaterial.c_str(), m_szNaznachenie.c_str(), m_szProizvodstvo.c_str());
      wprintfL"+------------------+------------------+--------------------+-------------------+\n");
}
bool Detal::operator <(const Detal& _Right) const
{
      return (this->m_szNazvanie < _Right.m_szNazvanie);
}

Пояснительный текст к программе

Переменная i – счетчик цикла, Detal – класс, переменные m_szNazvanie, m_szNaznachenie, m_szMaterial, m_szProizvodstvo, содержат данные о детали.

Результаты работы программы

Комментариев нет:

Отправить комментарий