📄 商品管理.cpp
字号:
#include<iostream>
#include<string>
#include<fstream>
#include "Time.h"
#include "Manager.h"
using namespace std;
link *link::InitLink(int K,int N) //初始化货架
{
link *q,*s;
int i=1;
q=hlink=new link;
cout<<"总共有"<<K<<"个货架"<<endl;
while(i<=K)
{
s=new link;
s->next=NULL;
cout<<"输入第"<<i<<"个货架的商品名称代号(为一个字符):";
cin>>s->kind;
cout<<"该商品平均取货时间:";
cin>>s->getTime;
cout<<"该商品平均上货时间:";
cin>>s->putTime;
for(int j=0;j<N;j++)
{
cout<<"输入第"<<j+1<<"件货物的日期,格式如20051020()"<<"表示2005年10月20日"<<endl;
cin>>s->stack[j];
}
q->next=s;
q=s;
i++;
}
return hlink;
}
Manager *Manager::GetMessage() //获取销售信息串
{
Manager *p,*a,*q;
char ch;
int count;
q=p=new Manager;
cout<<"请输入商品的销售情况,如果结束输入,则在商品名称处输入#"<<"回车既可"<<endl;
cout<<"商品名称:"<<endl;
cin>>ch;
while(ch!='#')
{
link *s=hlink->next;
a=new Manager;
a->next=NULL;
a->kind=ch;
cout<<"售出数量:"<<endl;
cin>>count;
M+=count;
while(s!=NULL)
{
if((a->kind)==(s->kind)) //计算出现在信息串中的每种商品的销售数量
{
s->counter+=count;
break;
}
s=s->next;
}
a->sold=count;
q->next=a;
q=a;
cout<<endl;
cout<<"商品名称:";
cin>>ch;
}
return p;
}
void OnShell(Manager *a,int N) //上货操作
{
int i,j=0;
int get=0;
link *p;
Manager *q;
q=a->next;
p=hlink->next;
while(q!=NULL)
{
while(p!=NULL)
{
if((q->kind==p->kind)) //扫描信息串中与货架中的商品名称相同时进行上货取货操作
{
int tempStack[MAX_SIZE];
int x=q->sold;
for(i=0;i<N-x;i++)
{
tempStack[i]=p->stack[i];
get++;
}
cout<<"请输入上货的货物的生产日期:"<<endl;
for(;i<N;i++)
{
cout<<"请输入商品"<<q->kind<<"上货的第"<<i+1<<"件的生产日期"<<endl;
cin>>tempStack[i];
}
for(i=0;i<N;i++) //日期由大到小排列
for(int j=i+1;j<N;j++)
{
if(tempStack[i]<tempStack[j])
{
long temp;
temp=tempStack[i];
tempStack[i]=tempStack[j];
tempStack[j]=temp;
}
}
for(i=0;i<N;i++)
{
p->stack[i]=tempStack[N-i-1];
cout<<"第"<<i+1<<"件商品的生产日期是: "<<p->stack[i]<<endl;
}
p->totaltime=p->getTime*get+p->putTime*N; //计算完成该次上货与取货所花去的总时间
get=0;
break;
}
else
p=p->next;
}
p=hlink->next;
q=q->next;
}
}
void main()
{
Manager *shelf,*a;
link *p,*q,*hlinks;
int toTime=0,totaltime=0,i,N,K; // N每个货架可放商品的数目;K货架数目
char get;
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl<<endl;
cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl<<endl;
cout<<"********************************"<<"商品货架管理"<<"************************************"<<endl<<endl;
cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl<<endl;
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<endl;
do{
cout<<" **********"<<endl;
cout<<" ***功能菜单***"<<endl;
cout<<" **********"<<endl<<endl<<endl;
cout<<"**@进入营业状态:1"<<endl<<endl;
cout<<"**@营业结束:All Other"<<endl;
cout<<"========================================"<<endl;
cin>>i;
switch(i)
{
case 1:{
cout<<"请输入货架数:"<<endl;
cin>>K;
cout<<"请输入货架容纳货数:"<<endl;
cin>>N;
cout<<"假设总共有放"<<N<<"种不同商品的货架且每种货架都可容纳"<<K<<"件商品"<<endl<<"商品存放位子编号自上到下依次增大!";
p=new link;
shelf=new Manager;
hlinks=p->InitLink(K,N);
B:a=shelf->GetMessage();
OnShell(a,N);
q=hlinks->next;
while(q!=NULL)
{
toTime+=q->totaltime;
q=q->next;
}
cout<<"是否停止今天的营业,并且进行统计,y/n?"<<endl;
cin>>get;
if((get=='n')||(get=='N'))
goto B;
else
{
cout<<"员工工作总花费的时间是:"<<toTime<<"销售商品总量是:"<<M<<endl;
link *s=hlinks->next;
while(s!=NULL)
{
cout<<"商品"<<s->kind<<" 销售的总量为"<<s->counter<<endl;
s=s->next;
}
}
cout<<"今天所有商品的销售总量为:"<<M<<endl;
}break;
default:cout<<"GoodBye!"<<endl;
}
}while(i==1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -