⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 haircut.cpp

📁 理发馆问题。基于vc的模拟试验.包括试验设计文稿。
💻 CPP
字号:
/************************************************************************************
  数据结构期中大作业   20032350 刘伊雯   20032379 杨婧怡
1。本文件为理发馆仿真模拟程序主入口文件

2。该模拟程序利用两种数据结构:
   1〉链表:存储进入理发序列的顾客信息,其中Event结构包括OccurTime和NType两个元素
			i)  如果顾客已开始理发,OccurTime存储理发时间,NType等于1
			ii) 如果未到关门时间,则链表第一个元素(即head.next指向元素)的
				OccurTime存储下一个顾客进门时间,NType等于0
   2〉队列:如果顾客数大于椅子数,队列存储排队顾客信息,其中QElemType结构包括:
			ArrivalTime,表示顾客进门时间
			Duration,表示顾客理发时间

3。头文件: 
   1〉simulation.h 理发仿真实现程序
   2〉linklist.h   链表操作集程序
   3〉queue.h      队列操作集程序
   4〉common.h     定义文件
*************************************************/
#include "common.h"
#include "Linklist.h"
#include "Queue.h"
#include "simulation.h"

void main()
{
    int t=0;
	char control;
	double income;

	//初始化链表、队列,读入椅子数及关门时间
	OpenForDay();
	if(CloseTime==0) 
		cout<<endl;
	else

	{	cout<<"随机产生数据请输入0,手动输入请输入1:"<<endl;
     	cin>>control;
    	if(control=='0')
		{   
			//随机生成顾客到达情况
			//如果用户选择显示顾客到达时刻表,则打印题头
		cout<<"4. 想查看顾客到达时刻表吗?(1是2否)";
	    cin>>ShowTbl;
	    cout<<endl;
    	if(ShowTbl==1)
		{
	    	cout<<"******************************************************************"<<endl<<endl;
	    	cout<<"                 〉    顾客到达时刻一览表    〈"<<endl<<endl;
		}

    	//循环判断如果链表非空,就继续处理(理发),直到关门时间不再有新顾客进入,
	    //并且完成收尾工作后,链表为空,一天工作结束
    	while(!ListEmpty(ev))
		{
		//取出链表第一个元素到en(表示将要纳入相应处理程序的顾客),同时从链表中删除之
		DelFirst(ev,en);

		if(en.NType==0)
		{
			//如果NType==0表示顾客en还未开始理发,将其纳入理发程序
			CustomerArrived1();
		}		
		else
		{
			//如果NType==1表示顾客en已理发完毕,将其纳入离店程序,同时检测是否有排队等候顾客
			CustomerDeparture();
		}
		}
		}
	
		else
		{   
			//手动输入顾客到达情况
	    	while(!ListEmpty(ev))        
			{
		        DelFirst(ev,en);           
	        	if(en.NType==0) CustomerArrived2();  
	        	else CustomerDeparture();           
			}
        }
		income=N*Totaltime;

	//如果用户选择显示顾客到达时刻表,则打印题尾
	if(ShowTbl==1)
	{
		cout<<endl<<"说明:"<<endl;
		cout<<"Durtime表示当前顾客所需理发时间;"<<endl;
		cout<<"Intertime表示下一个顾客到达的时间间隔;"<<endl;
	}

	//输出模拟结果
	cout<<endl<<"******************************************************************"<<endl<<endl;
	switch (CustomerNum/5)
	{
	case 0:
		cout<<"唉,生意不好做啊!今天才接待了"<<CustomerNum<<"个顾客……"<<endl;
		break;
	case 1:
		cout<<"嗯,今天还说得过去,接待了"<<CustomerNum<<"个顾客,总算没亏本……";
		cout<<"小赚RMB "<<income<<endl;
			break;
	default:
		cout<<"哈,太棒了!今天竟然接待了"<<CustomerNum<<"个顾客,大赚一笔……";
		cout<<"竟然赚了RMB "<<income<<endl;
		break;
	}
	cout<<endl<<"好,现在让我来具体算算:"<<endl;
	cout<<"1. 每个顾客平均在店里呆了"<<setprecision(3)<<Totaltime/CustomerNum<<"分钟"<<endl;
    cout<<"2. 让顾客排队等候理发的队伍长度平均是"<<Totallength/CustomerNum<<endl;
	t=(t1>=t2)?t1:t2;
	cout<<"3. 到关门时间后,又用了"<<t-CloseTime<<"分钟完成收尾工作"<<endl;
	cout<<endl<<"******************************************************************"<<endl<<endl;
}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -