某快餐店供应若干种快餐和饮料(5种以上),早晨6:00开始营业,晚上11:00打烊。前一天已经安排了若干工人上班,快餐店的用餐位是固定的,每种食物的成本和销售价格是确定的,每种食物的总量是确定的,储存事先准备好的各种食物的空间是确定的,顾客人数和顾客到达的时间是随机的,每人点餐的时间为一分钟,顾客用餐的时间是随机的。营业时间里,其中7:00—9:00、11:00—13:00、17:00—19:00是用餐高峰期。
食物可以事先准备好,但是每种食物有不同的保鲜期,超过保鲜期的食物将被丢弃。顾客到达后排队点餐,可能因为想要的某种食物没有准备好而等待,也可能因为准备好的食物时间较长(未过保鲜期)而等待现做的;可能因为食物售完或要等待而换成其他食物,抑或离开。如果店里没有空位,顾客可选择等待或离开。
编写一个模拟该快餐店一天运行情况的应用程序,要求:
设计系统需要的输入数据,并通过文本文件输入这些数据;
生成一天模拟运行(数据信息)的报告,该报告存储在数据文件中,具体信息包括:
1. 每种食物的销售数量、丢弃数量和利润(扣除成本后的收入)以及快餐店一天的总利润;
2. 顾客因为食物售完或其他原因离开的人数,因为没有用餐位离开的人数;
3. 顾客等待用餐位置的时间;
4. 顾客等待食物的时间(每种食物一个数据);
5. 每种食物不能满足顾客点餐要求的次数;
6. 高峰期和非高峰期餐位的利用率。
程序测试时应该应用多组参数,并产生不同的结果,从中判断系统结果是否符合实际,如增加用餐位,顾客等待用餐位置的时间会减少,非高峰期餐位的利用率会降低等
1. 评分标准
可以运行的小课题程序将获得该题基本分(见题目文件)。采用面向对象设计完成,加3分,否则不加分;正确性和可靠性加0-3分;界面友好性加0-3分;课题汇报加0-2分;文档和算法加0-2分(教师评分)。以上各项加分独立给分,(基本分+加分)*4=小组总分。
#include
#include
using namespace std;
int generate_peak(int k);
int generate_low(int k);
int f1(int j);
int f2(int l);
bool choose_quit();
class Food
{
private:
int cost;
int price;
int total;
int space;
int make;
int fresh;
int amount;
int birth;
public:
Food();
void sift();
void project();
};
Food::Food(int c,int p,int t,int s,int m,int f,int a,int b)
{
cost=c;
price=p;
total=t;
space=s;
make=m;
fresh=f;
amount=a;
birth=b;
}
void Food::sift()
{
int thr=0;
Food d[50];
Food f[j];
if(i==d[1].birth+f[j].fresh)
{
thr++;
f[j].a--;
for(int l=0;l1380)
{
cout<<"Error!";
return false;
}
else if((n>=420&&i<=540)||(n>=660&&i<=780)||(n>=1020&&i<=1140))
generate_peak(m);
else
generate_low(m);
}
if(m>=1)
int p=f1(p);//j是所点食物种类的数量
for(int P=p;P>=1;P--)
{
out[l]=false;
int t_max=0;
do
{
int l=f2(l);//l是所点食物在食物类中的位置
int T=food[l].order(amount);
if(T==-1)
{
out[l]=true;
if(choose_quit())
{
Q1++;
break;
}
else
{
out[l]=false;
break;
}
}
else
{
int t=food[l].order(amount);
Q2++;
if(t>t_max)
t_max=t;
return t_max;
out[l]=true;
}
}
while(out[l]==false);
}
}
return 0;
}
专业程序代写c++程序代写