模拟超市系统2.

《模拟超市系统2.》由会员分享,可在线阅读,更多相关《模拟超市系统2.(18页珍藏版)》请在文档大全上搜索。
1、LOGO指指导教师导教师:于江德:于江德数数据据结构结构答答辩辩pptu 班班级级:物:物联网联网工程一班工程一班u 组员组员:郭珂珂:郭珂珂 李李龙龙 孙贝贝孙贝贝 齐齐佳佳佳佳u 项目名称:项目名称:用队列模拟一队通过丹尼斯超市交用队列模拟一队通过丹尼斯超市交 款处的顾客流款处的顾客流u 项目简介:项目简介:使用一个队列模拟一队通过丹尼斯超市交款处的顾客流。为了使用一个队列模拟一队通过丹尼斯超市交款处的顾客流。为了创建这个模拟,我们必须模拟排队时间和顾客通过流。我们可以通过一个循创建这个模拟,我们必须模拟排队时间和顾客通过流。我们可以通过一个循环模拟时间,每通过一个顾客代表一定的时间间隔环
2、模拟时间,每通过一个顾客代表一定的时间间隔例如,一分钟。我们例如,一分钟。我们可以使用一个队列模拟顾客流,队列中的一个数据项代表一位顾客。为了完可以使用一个队列模拟顾客流,队列中的一个数据项代表一位顾客。为了完成这个模拟,我们需要知道顾客加入交款处队列的频率、交款结算服务情况成这个模拟,我们需要知道顾客加入交款处队列的频率、交款结算服务情况和离开的频率和离开的频率u 问题分析:为了创建这个模拟系统,我们必须模拟排队时间和问题分析:为了创建这个模拟系统,我们必须模拟排队时间和 顾客通过流,在一定时间更新下列信息,即每一次通过循环。顾客通过流,在一定时间更新下列信息,即每一次通过循环。 完成交款服
3、务的总顾客数完成交款服务的总顾客数 这些顾客花费在排队等待的时间总和这些顾客花费在排队等待的时间总和 顾客花费在排队等待的最长时间顾客花费在排队等待的最长时间一一 项目的基本信息项目的基本信息二二 问题的分析问题的分析u第一部分第一部分我们可以通过一个循环模拟时间,每通过一个顾客代表我们可以通过一个循环模拟时间,每通过一个顾客代表一定的时间间隔。我们可以使用一个队列模拟顾客流,队列中的一定的时间间隔。我们可以使用一个队列模拟顾客流,队列中的一个数据项代表一位顾客。因此,我们需要知道顾客加入交款处一个数据项代表一位顾客。因此,我们需要知道顾客加入交款处队列的频率、交款结算服务情况和离开的频率。队
4、列的频率、交款结算服务情况和离开的频率。 在这里,我们调用了在这里,我们调用了srand()函数来产生随机数,系统在调用函数来产生随机数,系统在调用rand()之前都会自动调用()之前都会自动调用srand(),如果用户在,如果用户在rand()之之前曾调用过前曾调用过srand()给参数给参数seed指定了一个值,那么指定了一个值,那么 rand()就就 会将会将seed的值作为产生的值作为产生伪随机数伪随机数的初始值;而如果用户在的初始值;而如果用户在rand()前没有调用过前没有调用过srand(),那,那 么系统默认将么系统默认将1作为伪随机作为伪随机数的初始值。如果给了一个定值,那么
5、每次数的初始值。如果给了一个定值,那么每次rand()产生的随机产生的随机 数序列都是一样的。数序列都是一样的。二二 问题的分析问题的分析u所以为了避免上述情况的发生我们通常用所以为了避免上述情况的发生我们通常用srand(unsigned)time(0)或者或者srand(unsigned)time(NULL)来来 产生种子。如果仍然觉得时间间隔太小,产生种子。如果仍然觉得时间间隔太小,可可 以在以在(unsigned)time(0)或者或者(unsigned)time(NULL)后面乘上某后面乘上某个合适的整数。个合适的整数。u例如例如srand(unsigned)time(NULL)*1
6、0).功能模块及数据结构描述功能模块及数据结构描述u 功能模块:功能模块:u Status OpenForDay(EventList &ev, QCuEvent en, QCupp &q);/开门开门u Status CustomerArrived(EventList &ev, QCupp &q, QCuEvent en);/顾客到达顾客到达u Status CustomerDeparture(EventList &ev, QCupp &q, QCuEvent en);/顾客离开顾客离开u void CloseForDay();/关门关门u Status OrderInser(EventLis
7、t &ev, QCuEvent en);/按时间顺序插入事件到事件表按时间顺序插入事件到事件表u int QLength(QCustomerp qn);/求窗口队列长度求窗口队列长度u int MinCuQueue(QCupp q);/求队最短的窗口求队最短的窗口功能模块及数据结构描述功能模块及数据结构描述u Status DelFirstEvent(EventList &ev);/删除事删除事件表中的第一个事件件表中的第一个事件u Status InitCuQueue(QCustomerp &qn);/初始初始化窗口队列化窗口队列u Status EnCuQueue(QCustomerp &
8、qn,QEptr Q);/进入队列进入队列u Status DeCuQueue(QCustomerp &qn,QCuElem &Q);/删除队列中的元素删除队列中的元素u Status GetQHead(QCustomerp qn,QCuElem &Q);/获得队列中的第一个元素获得队列中的第一个元素u Status DestoryQueue(QCustomerp qn);/销毁销毁队列队列u void Print_QStatus(QCustomerp QCu);/打打印队列长度印队列长度u void Bank_SimulationFunc();u void test(char str);u