一份研究生《面向对象技术》课程的作业,有兴趣的朋友可以试试
2005-05-15 09:30
337 查看
这是西安电子科技大学研究生专业课《面向对象技术》2005年的大作业,老师是 陈平。
贴出来有兴趣的朋友可以做做,我已经用C#完成了(自动售货机也是State模式的一个比较典型的例子,而且用了Observer模式也不需要用串行方式来模拟并发的活动),不过我的程序要到这学期结束后才能贴出来,因为作业规定“若发现雷同的结果,按成绩平分的规则处理。”
2005春上机作业
用面向对象方法和面向对象程序设计语言,实现满足下述要求的一个自动售货机仿真程序。问题域概述
① 有一种自动售货机VM,可售三种商品:可乐(每听$0.25),咖啡(每听$0.30),餐巾纸(每包$0.05)。每种商品的示意图形下方都有一个按钮。一台VM中最多能够容纳NC听可乐、NF听咖啡、NT包餐巾纸。② 顾客使用VM购买商品时,先从投币口投入硬币(共有三种硬币:$0.05;$0.10;$0.25),在投入的硬币总值达到或超过其欲购商品之价格后,再按下对应商品的按钮,VM即从出货口自动吐出一件商品,并从找币口找零。
③ 如果顾客在其投入的硬币总值没有达到其欲购商品之价格时就按下了对应商品的按钮,或者最近一次投币30秒后既不继续投币,也不按下商品按钮,VM均从找币口吐出与该顾客已投入的硬币总值等值的硬币,但不吐出商品。
④ 如果顾客欲购之商品已经售完,则在顾客按下该商品的按钮后,VM从找币口吐出与该顾客已投入的硬币总值等值的硬币。
⑤ 当某种商品还剩NL听/包时,VM即自动发出短信,将VM的代号和缺货的商品名称通知管理人员。管理人员将在时间TM后收到短信,再用时间TS到达VM,并使VM的所有商品存货都达到最大容纳量,取走VM中的硬币,并留有找零的硬币:$0.05、$0.10、$0.25分别留C5、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) 仿真结束时,应自动产生销售报表。该报表应给出本次模拟过程中:每种商品的销售总量与价值合计;所有售出商品的价值总计;每种商品的库存量;模拟开始、结束时各自的库存金额;管理人员每次加货的时间、各商品加货量、取走的硬币总额。
注意:界面能说明问题即可,切忌把主要精力放在界面上而忽视了实质问题。
提示
可能有些同学面临的问题是如何既要计时、又要改变相关对象的状态、还要展示出当前所有对象的相关状态。实际上,完全可以用串行方式来模拟并发的活动。[/b]建议大家想象一下动画片的原理:将多个固定和静止的画面定时、按顺序地放映出来,就变成了活动的画面。所以,可以在程序中定义一个主循环,在该循环外进行必要的初始化,进入后每秒钟执行一次,以遍历方式一一激励当前已经产生的对象,由它们根据自己的当前状态和相关的状态变化规则,决定是否需要改变、改变成什么样的下状态,以及按照上述行为特征的设计展示必要的对象状态。另外,顾客到达的概率本应服从泊松分布,但目前语言直接提供的伪随机数产生函数是服从均匀分布的,因此可以简化成均匀分布。
选作
学有余力的同学可在完成本作业的基础上,扩大自己的想象力,选作更接近实际要求的内容。例如,VM销售的商品种类与价格是在运行时设定的,而不是预先规定死的。相关文章推荐
- 一份Oracle DBA笔试题,有兴趣的朋友可以试试,有意外惊喜喔!
- 开通了新微博,有兴趣的朋友也可以试试
- 提供 Watir 入门 PPT 下载--有兴趣了解 Web 测试自动化的朋友可以看看
- [VB.NET]再次讨论向Excel插入图片方法,有兴趣的朋友可以进来看一下,帮我解决一下问题!谢了
- 正式定居博客圆,发些以前在Topcoder上的练习题,对算法和STL有兴趣的朋友可以看下:)
- 最近在开始捡起java,所以会定期更新写java 的一些组件,有兴趣的朋友可以看下
- 牛牛和15朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成26份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地,作为牛牛最好的朋友,你希望牛牛取得的田地价值和尽可能大,你知道这个值最大可以是多少吗? 输入两个整数n和m(1≤n,m≤75)表示田地的大小,接下来n行,每行包括m个0-9之间的数字,表示每块
- 研究生课程作业Computer ---A Good Friend
- .一道华为机试题,有兴趣的同学可以试试
- 百度空间:飘动的天空 有些看到的好文章收录在此处就不拷过来了 有兴趣的朋友可以看下
- 有兴趣的朋友可以look look
- 没有必要学完oldboy课程再找工作,现在就可以试试
- 第一次玩CSDN,专业计算机,学习java,有兴趣的朋友可以加我。
- 新作模板处理类,有兴趣的可以试试
- 选择器的朋友可以试试这个思路 延迟执行归并选择操作
- 我的博客在http://webzzy3571.blog.163.com/profile/ 有兴趣的朋友可以看下
- 计算机视觉进展二十年 (1995~2015) 转载~有兴趣的朋友可以看看哦
- google2009年在华南地区的两道笔试题目,有兴趣的可以试试
- 齐普夫定律的验证-----Python实现(北航研究生自然语言处理课程作业)
- OfficeWiki,喜欢的朋友可以试试啊