#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
#include<windows.h>
using namespace std;
enum GoodsType//商品类别
{
Food=1,//食品
Cosmetic,//化妆品
Commodity,//日用品
Drink//饮料
};
struct Date
{
int year;
int month;
int day;
};
struct Goods//商品基本信息
{
string code;//商品编号
string name;//商品名称
string brand;//生产厂家
double price;//商品价格
int num;//商品数量
GoodsType type;//商品类别
Date date;//入库时间
Goods *next;
};
class GoodsManage//商品管理
{
public:
GoodsManage();
~GoodsManage(){}
void DisplayMainMenu();//主菜单显示
void AddGoodsInfo();//添加商品信息
void DisplayGoodsInfo();//浏览商品信息
void SearchByCode();//按照商品编号搜索商品信息
void SearchByName();//按照商品名称搜索商品信息
void SearchByType();//按照商品类别搜索商品信息
void SearchByBrand();//按照商品品牌搜索商品信息
void EditGoodsInfo();//编辑商品信息
void DeleteGoodsInfo();//删除商品信息
void SellGoodsInfo();//出售商品信息
void SaveGoodsInfo();//保存商品信息
private:
int amount;//商品量
int DeleteAmount;
Goods *head;
Goods *DeleteHead;
};
GoodsManage::GoodsManage()//定义构造函数
{
amount=0;
DeleteAmount=0;
head=new Goods;
head->next=NULL;
DeleteHead=new Goods;
DeleteHead->next=NULL;
}
void GoodsManage::DisplayMainMenu()//定义主菜单函数
{
cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 欢迎使用商品库存管理系统 ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【商品进货】…(a) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【商品编辑】…(b) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【商品删除】…(c) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ ┋ 【按照编号查询】…(d) ┋\n";
cout<<" ┋ ┋ ┋\n";
cout<<" ┋ ┋ 【按照名称查询】…(e) ┋\n";
cout<<" ┋ 【商品查询】┋ ┋\n";
cout<<" ┋ ┋ 【按照类别查询】…(f) ┋\n";
cout<<" ┋ ┋ ┋\n";
cout<<" ┋ ┋ 【按照品牌查询】…(g) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【商品出货】…(h) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【商品统计】…(i) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 【信息保存】…(j) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ ┋\n";
cout<<" ┋ 退出系统…(k) ┋\n";
cout<<" ┋ ┋\n";
cout<<" ━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆┈━═☆━═☆\n";
cout<<"\n 请输入你要进行的操作编号:";
}
void GoodsManage::AddGoodsInfo()//定义添加商品信息函数
{
char c,c1;
Goods *tail=head,*p;
bool flag;
cout<<" ☆☆☆☆☆☆现在进行商品信息的添加☆☆☆☆☆☆ "<<endl;
while(tail->next!=NULL)
tail=tail->next;//令tail指向链表中最后一个节点
do
{
flag=0;
p=new Goods;
cout<<"请选择商品类别:"<<endl;
cout<<"1.食品 2.化妆品 3.日用品 4.饮料"<<endl;
cout<<"请输入相应编号:";
do
{
cin>>c1;
if(c1>='1'&&c1<='4')//判断用户输入编号是否存在
flag=1;
else
{
cout<<"您输入的编号不存在!"<<endl;
cout<<"请选择正确的商品类别:"<<endl;
}
}while(flag==0);//输入编号存在时跳出循环
if(c1=='1')p->type=Food;
if(c1=='2')p->type=Cosmetic;
if(c1=='3')p->type=Commodity;
if(c1=='4')p->type=Drink;
cout<<"商品类别("<<p->type<<")"<<endl;//表示商品类别
cout<<"请输入商品编号: ";
cin>>p->code;
do
{
Goods *q=head->next;
while(q!=NULL&&q->code!=p->code)//当q指向NULL或输入的编号与之前编号重复时跳出循环
q=q->next;
if(q==NULL)//当p指向NNULL且编号不重复时
flag=1;
else//编号重复时
{
cout<<"存在该编号的货物!!!请重新输入编号:";
cin>>p->code;
}
}while(flag==0);
cout<<"请输入商品名称:";
cin>>p->name;
cout<<"请输入生产厂家:";
cin>>p->brand;
cout<<"请输入商品价格:";
cin>>p->price;
cout<<"请输入商品数量:";
cin>>p->num;
cout<<"请输入入库时间(年/月/日):";
cin>>p->date.year>>p->date.month>>p->date.day;
tail->next=p;//将p插入链表
p->next=NULL;
tail=p;
amount++;//商品量加一
cout<<"数据输入成功!!!想继续添加吗(y/n):";
cin>>c;
while(c!='y'&&c!='n')
{
cout<<"指令错误!!!!!<请输入y/n>"<<endl;
cout<<"数据添加成功!!!想继续输入吗(y/n):";
cin>>c;
}
}while(c=='y');
cout<<endl;
cout<<"……信息处理完毕……"<<endl;
cout<<"……按任意键返回主菜单……"<<endl;
getchar();
getchar();
}
void GoodsManage::DisplayGoodsInfo()//定义商品信息浏览函数
{
Goods *p=head;
cout<<" ☆☆☆☆☆☆现在进行商品信息的浏览☆☆☆☆☆☆ "<<endl;
cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<
"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
while(p->next!=NULL)//直到p指向链表中最后一个结点
{
p=p->next;
cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;
cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
}
cout<<endl;
cout<<"……信息统计完毕……"<<endl;
cout<<"……按任意键返回主菜单……"<<endl;
getchar();
getchar();
}
void GoodsManage::SearchByCode()//按照商品编号查找商品信息
{
Goods *p;
bool flag;
string FoundCode;
cout<<" ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆ "<<endl;
p=head;
flag=0;
cout<<"请输入您要查找的商品编号:";
cin>>FoundCode;
while(p->next!=NULL)
{
p=p->next;
if(p->code==FoundCode)//找到相应编号的商品
{
flag=1;
cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<
"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间"<<endl;
cout<<setiosflags(ios::left)<<setw(10)<<p->code<<setw(16)<<p->name;
cout<<setw(10)<<p->brand<<setw(10)<<p->price<<setw(10)<<p->type;
cout<<setw(10)<<p->num<<p->date.year<<"/"<<p->date.month<<"/"<<p->date.day<<endl;
break;
}
}
if(flag==0)
{
cout<<"对不起,您查询的商品不存在!!!"<<endl;
}
cout<<endl;
cout<<"……信息查找完毕……"<<endl;
cout<<"……按任意键返回主菜单……"<<endl;
getchar();
getchar();
}
void GoodsManage::SearchByName()//按照商品名称查找商品信息
{
Goods *p;
bool flag;
string FoundName;
cout<<" ☆☆☆☆☆☆现在进行商品信息的查找☆☆☆☆☆☆ "<<endl;
p=head;
flag=0;
cout<<"请输入您要查找的商品名称:";
cin>>FoundName;
while(p->next!=NULL)
{
p=p->next;
if(p->name==FoundName)//找到相应名称的商品
{
flag=1;
cout<<setiosflags(ios::left)<<setw(10)<<"编号"<<setw(16)<<"名称"<<setw(10)<<"生产厂家"<<setw(10)<<"价格"<<setw(10)<<
"商品类别"<<setw(10)<<"数量"<<setw(10)<<"入库时间