课程设计已经结束,下边是一些代码,还存在很多问题希望大家指正
#include<iostream.h>
#include<string.h>
#include<fstream.h>
const int N=10; // 每个货架可放商品的数目
const int K=5; // 货架数目
class xinxi
{
public:
char pinzhong; //商品名称
int shouchu;
xinxi * getmessage();
xinxi *next;
xinxi()
{
pinzhong='\0';
shouchu=0;
}
~xinxi()
{
}
};
class times
{
public:
int totaltime; //工作总时间
int pjget,pjput; //放货与取货时间
times()
{
totaltime=0;
pjget=0;
pjput=0;
}
~times(){}
};
class link:public times
{
public:
long stack[N]; //虚拟货架
char pinzhong;
int counter; //记录该商品的销售量
link *next;
link()
{
counter=0;
pinzhong='\0';
for(int t=0;t<N;t++)
stack[t]=0;
}
~link()
{
}
link *inilink();
};
link *hlink;
int M=0;
link *link::inilink() //初始化货架
{
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->pinzhong;
cout<<"该商品平均取货时间:";
cin>>s->pjget;
cout<<"该商品平均上货时间:";
cin>>s->pjput;
for(int j=0;j<N;j++)
{
cout<<"输入第"<<j+1<<"件货物的日期,格式如“20051020”表示2005年10月20日";
cin>>s->stack[j];
}
q->next=s;
q=s;
i++;
}
return hlink;
}
xinxi *xinxi::getmessage() //获取销售信息串
{
xinxi *p,*a,*q;
char ch;
int count;
q=p=new xinxi;
cout<<"请输入商品的销售情况,如果结束输入,则在商品名称处输入 “ # ”回车既可"<<endl;
cout<<"商品名称:";
cin>>ch;
while(ch!='#')
{
link *s=hlink->next;
a=new xinxi;
a->next=NULL;
a->pinzhong=ch;
cout<<"售出数量:";
cin>>count;
M+=count;
while(s!=NULL)
{
if((a->pinzhong)==(s->pinzhong)) //计算出现在信息串中的每种商品的销售数量
{
s->counter+=count;
break;
}
s=s->next;
}
a->shouchu=count;
q->next=a;
q=a;
cout<<endl;
cout<<"商品名称:";
cin>>ch;
}
return p;
}
void shanghuo(xinxi *a) //上货操作
{
int i,j=0;
int get=0;
link *p;
xinxi *q;
q=a->next;
p=hlink->next;
while(q!=NULL)
{
while(p!=NULL)
{
if((q->pinzhong==p->pinzhong)) //扫描信息串中与货架中的商品名称相同时进行上货取货操作
{
long tempstack[N];
int x=q->shouchu;
for(i=0;i<N-x;i++)
{
tempstack[i]=p->stack[i];
get++;
}
cout<<"请输入上货的货物的生产日期:"<<endl;
for(;i<N;i++)
{
cout<<"请输入商品"<<q->pinzhong<<"上货的第"<<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->pjget*get+p->pjput*N; //计算完成该次上货与取货所花去的总时间
get=0;
break;
}
else
p=p->next;
}
p=hlink->next;
q=q->next;
}
}
void main()
{
xinxi *xx,*a;
link *p,*q,*hlinks;
int totime=0,totaltime=0;
char get;
cout<<"假设总共有放5种不同商品的货架,且每种货架都可容纳10件商品,商品存放位子编号自上到下依次增大!";
hlinks=p->inilink();
B: a=xx->getmessage();
shanghuo(a);
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->pinzhong<<" 销售的总量为"<<s->counter<<endl;
s=s->next;
}
}
cout<<"今天所有商品的销售总量为:"<<M<<endl;
}