Цель работы
Изучение стандартной библиотеки шаблонов STL
(Standard Template Library).
Лабораторное задание
Для базового класса реализовать структуру данных в
соответствии с лабораторным заданием. В базовом классе все строковые данные
представить с использованием классов string/wstring.
Программа должна выполнить следующее:
– заполнить структуру данных;
– вывести структуру данных на экран;
– удалить все элементы из структуры данных.
Листинг
Файл 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)
{
wprintf( L"|%-18ws|%-18ws|%-20ws|%-19ws|\n",
m_szNazvanie.c_str(),
m_szMaterial.c_str(),
m_szNaznachenie.c_str(),
m_szProizvodstvo.c_str());
wprintf( L"+------------------+------------------+--------------------+-------------------+\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, содержат данные о детали.
Комментариев нет:
Отправить комментарий