《自动售货机仿真》实验报告问题描述①有一种自动售货机VM,可售三种商品:可乐(每听$),咖啡(每听$),餐巾纸(每包$)。每种商品的示意图形下方都有一个按钮。一台VM中最多能够容纳NC听可乐、NF听咖啡、NT包餐巾纸。②顾客使用VM购买商品时,先从投币口投入硬币(共有三种硬币:$;$;$),在投入的硬币总值达到或超过其欲购商品之价格后,再按下对应商品的按钮,VM即从出货口自动吐出一件商品,并从找币口找零。③如果顾客在其投入的硬币总值没有达到其欲购商品之价格时就按下了对应商品的按钮,或者最近一次投币30秒后既不继续投币,也不按下商品按钮,VM均从找币口吐出与该顾客已投入的硬币总值等值的硬币,但不吐出商品。④如果顾客欲购之商品已经售完,则在顾客按下该商品的按钮后,VM从找币口吐出与该顾客已投入的硬币总值等值的硬币。⑤当某种商品还剩NL听/包时,VM即自动发出短信,将VM的代号和缺货的商品名称通知管理人员。管理人员将在时间TM后收到短信,再用时间TS到达VM,并使VM的所有商品存货都达到最大容纳量,取走VM中的硬币,并留有找零的硬币:$、$、$、C10、C25枚。须仿真的活动及开发结果的行为特征1、开始仿真时,应随机产生VM中三种商品的存货量(不能超过其最大容纳量)和VM中三种硬币的数量(分别不小于C5、C10、C25枚)。2、仿真中,应随机产生前来购物的顾客,随机产生其欲购买的商品种类,随机产生顾客的投币行为(包括③描述的行为),按问题域概述给出的要求进行VM自动售货活动的仿真。3、NC、NF、NT、NL、C5、C10、C25的值应在运行仿真程序时用命令行给出,或者在开始仿真时从界面输入。4、实时显示各种商品的当前存货量。5、出现情况⑤时,应显示所发的短信内容,并随机决定TM和TS的值。在管理人员到达VM之前,应照常进行顾客购物的仿真。管理人员加货和取款的持续时间可忽略不计。6、仿真开始后,应自动记销售流水帐。该流水帐的每一行对应着一次售货,记录着所售出的商品名称和售出时间。7、仿真结束时,应自动产生销售报表。该报表应给出本次模拟过程中:每种商品的销售总量与价值合计;所有售出商品的价值总计;每种商品的库存量;模拟开始、结束时各自的库存金额;管理人员每次加货的时间、各商品加货量、取走的硬币总额。程序设计过程从实际问题中抽象类仿真过程关注的事物有:VM,商品(Goods),顾客(Customer),管理员(Administrator)。程序设计过程中考虑过以下问题:管理员类建立的必要性。若不设计管理员类,而是在VM类中设两变量TS,TM,VM自动计时,到时间后自动加货,可实现同样输出。从程序外观上看管理员类的建立与否没有影响。而考虑到自动加货并不是VM的本身属性,而是通过与管理员通信完成的,故建立管理员类。在VM中建立响应管理员加货的方法,而管理员的内部实现也正是调用了VM的此方法。商品基类建立的必要性。曾考虑过将Goods类设计为虚基类,提供所有商品的共有接口,再从这个虚基类派生处各具体商品,最后运用多态性原理设计实现细节。考虑到这个问题中各商品所不同的地方只是商品名,价格等数据成员不同,类内部方法完全相同。且此程序中一个Goods对象代表一组同种商品,即找不到一个个单独的商
自动售货机仿真实验报告 来自淘豆网m.daumloan.com转载请标明出处.