功能及要求描述:
(1) 公司主要包括三类设备需要管理:电视机、DVD、带DVD的电视机;
(2) 设备主要包含的信息:编号、类别、名称、价格、库存数量;
(3) 添加各类设备信息;
(4) 删除设备信息;
(5) 查找设备信息;
(6) 修改设备信息;
(7) 输出所有设备信息;
(8) 将信息保存到文件;
#include<iostream>
#include<sstream>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<string>
#include<iomanip>
#include<iterator>
#include<algorithm>
#include<conio.h>
#include<Windows.h>
using namespace std;
string itos(int a)
{
ostringstream os;
os<<a;
return os.str();
}
int stoi(string s)
{
istringstream is(s);
int x;
is>>x;
return x;
}
void inline pause()
{
system("pause");
}
void inline error(string str)
{
cout<<str<<endl;
pause();
}
char getSelect(char min,char max,string errorInfo)
{
char cmd;
cout<<"[ ]\b\b";
cmd=_getch();
cout<<cmd<<endl;
while(cmd<min||cmd>max)
{
cout<<errorInfo<<endl;
cout<<"[ ]\b\b";
cmd=_getch();
cout<<cmd<<endl;
}
return cmd;
}
class Device
{
private:
string _No;
string _kind;
string _name;
double _price;
public:
friend vector<Device>;
friend class Devices;
friend istream& operator>>(istream &in,Device &d);
friend ostream& operator<<(ostream &out,Device &d);
Device(string No="",string kind="",string name="",double price=0)
{
_No=No;
_kind=kind;
_name=name;
_price=price;
}
string &getNo()
{
return _No;
}
string &getKind()
{
return _kind;
}
string &getName()
{
return _name;
}
double &getPrice()
{
return _price;
}
};
istream& operator>>(istream &in,Device &d)
{
cout<<"请输入设备编号:"<<endl;
in>>d._No;
cout<<"请输入设备类别(DVD、电视机或带DVD的电视机):"<<endl;
in>>d._kind;
if(d.getKind()!="DVD"&&d.getKind()!="电视机"&&d.getKind()!="带DVD的电视机")
while(d.getKind()!="DVD"&&d.getKind()!="电视机"&&d.getKind()!="带DVD的电视机")
{
cout<<"请确认输入的类别无误!"<<endl;
cout<<"请输入设备类别(DVD、电视机或带DVD的电视机):"<<endl;
in>>d._kind;
}
cout<<"请输入设备名称:"<<endl;
in>>d._name;
cout<<"请输入设备价格(>0):"<<endl;
in>>d._price;
if(d._price<=0)
while(d._price<=0)
{
cout<<"请确认输入的价格无误!"<<endl;
cout<<"请输入设备价格(>0):"<<endl;
in>>d._price;
}
return in;
}
ostream &operator <<(ostream &out,Device &d)
{
out<<setw(15)<<d.getNo()<<setw(15)<<d.getKind()<<setw(15)<<d.getName()<<setw(15)<<d.getPrice();
return out;
}
bool cmpByNo(Device d1,Device d2)
{
return d1.getNo()<d2.getNo();
}
bool cmpByKind(Device d1,Device d2)
{
return d1.getKind()<d2.getKind();
}
bool cmpByName(Device d1,Device d2)
{
return d1.getName()<d2.getName();
}
bool cmpByPrice(Device d1,Device d2)
{
return d1.getPrice()<d2.getPrice();
}
class Devices
{
private:
int _DVDAmount;
int _TVAmount;
int _DVDTVAmount;
vector<Device> v;
void printTitle()
{
cout<<setw(15)<<"设备编号"<<setw(15)<<"设备类别"<<setw(15)<<"设备名称\t"<<setw(15)<<"设备价格"<<endl;
}
void changeAmount(string kind,bool add)
{
int change=add?1:-1;
if(kind=="DVD")
_DVDAmount+=change;
else if(kind=="电视机")
_TVAmount+=change;
else if(kind=="带DVD的电视机")
_DVDTVAmount+=change;
}
void showMenu();
public:
Devices()
{
_DVDAmount=0;
_TVAmount=0;
_DVDTVAmount=0;
}
~Devices()
{