您的当前位置:首页正文

软件工程饮料自动售货机系统

来源:帮我找美食网
软件工程课程大作业

饮料自动售货机系统

姓名:

班级

学号:

专业:

二零一一年 十一月二十九日

目录

一、 饮料自动售货机描述 ............................................................................................................. 2 1.1关于饮料自动售货机 ............................................................................................................ 2 1.2饮料自动售货机的设计 ........................................................................................................ 2 二、 需求分析 ................................................................................................................................. 3 2.1 饮料自动售货机系统功能需求: ....................................................................................... 3 2.2 饮料自动售货机系统控制要求: ....................................................................................... 3 2.3业务流程图 ............................................................................................................................ 5 2.4数据流程图 ............................................................................................................................ 6 三、 各种UML图型及其分析 ....................................................................................................... 7 3.1用例图 .................................................................................................................................... 7 3.2类图 ........................................................................................................................................ 8 3.3序列图 .................................................................................................................................... 9 3.4协作图 .................................................................................................................................. 14 3.5状态图 .................................................................................................................................. 17 3.6活动图 .................................................................................................................................. 19 四、 结论....................................................................................................................................... 21 五、参考文献 ................................................................................................................................. 21

一、饮料自动售货机描述

1.1关于饮料自动售货机

自动售货机像磁卡电话、银行柜员机一样,以方便、新颖、文明、昼夜服务等特点,成为发达国家不可缺少的便民配套设施。如今的自动售货机可以为顾客提供多种服务。顾客可以根据自己的需要选择商品并投入钱币,售货机接收钱币,售出商品。

1.2饮料自动售货机的设计

该设计模拟自动售货机的工作原理和方式,完成出售商品、接收钱币、找零钱等功能。 与系统交涉的人有两类:送货员和顾客。 送货员在每周固定时间查看售货机中的饮料数量和钱币数量情况,并根据计划适当添加饮料、钱币或取走适当的钱币。同时送货员也可以根据需要增加饮料的种类或修改饮料的价格。 顾客根据需要选择饮料,投入钱币,并等待售货机的响应。售货机(所设计的系统)所做的响应:如果售货机中没有该种饮料,则退回顾客所投钱币,交易失败。否则,如果售货机中有该种饮料,则判断顾客所投钱币是否足够,如果不够,则提示顾客交易失败,并退回钱币。如果顾客所投的钱币刚好够(不需要找零钱),则售出饮料,交易结束。如果需要找零钱,则判断是否有适当的零钱可以找,如果有,则售出饮料,找出零钱,交易结束。否则,退回钱币,交易失败。 当然,实际生活中的售货机可能有更加强大的功能和更完善的处理,这里只模拟一个售货机系统,所以只实现其核心原理,并练习和提高分析问题能力和编程能力。

二、需求分析

2.1 饮料自动售货机系统功能需求:

自动售货机系统是一种无一元等3个硬币投币口。顾客确认购货后,售货机可根据硬币的面值进行累加。

自动售货机装有货物分配器。每个货物分配器中包含零个或多个价格相同的货物。顾客通过选择货物分配器来选择货物。如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返回到退币孔。如果分配器是空的,则和顾客支付的货币值相等的硬币将被送加到退币孔。如果顾客支付的货币值少于所选择的分配器中的货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,将所投硬币从退币孔退出。

2.2 饮料自动售货机系统控制要求:

根据售货机自动控制系统的流程可以知道自动售货机的主要系统包括:计币系统、比较系统、选择系统、饮料供应系统、退币系统和报警系统。

1.计币系统:

当有顾额色买饮料时,投入的钱币经过感应器,感应器记忆投币的个数关且传送到检测系统(即电子天平)和计币系统。只有当电子天平测量的重量少于误差值时,允许计币系统进行叠加钱币,叠加的钱币数据存放在数据寄存器中。如果不正确时,认为是假币。既定出投币,既定出系统,等待新顾客。

2.比较系统:

投入完毕后,系统会把钱币数据和可以购买饮料的价格进行区间比较,当投入的钱币小于2元时,指示灯亮,显示投入的钱币不足。此时可以再投币或选择退币。当投稿的钱币在2~3元之间时,汔水选择指示灯长亮。当大于3元时,汔水和咖啡的指示灯同时长亮。此时可以选择饮料或选择退币。

3.选择系统:

比较电路完成后选择电路指示灯是长亮的,当按下汽水或咖啡选择时,相应的选择指示灯由长亮转为以1秒为周期闪烁。当饮料供应完毕时,闪烁同时停止。

4.饮料供应系统:

当按下选择按钮时,相应的电磁阀(Y4或Y6)和电机(Y3或Y5)同时启动。在饮料输出的同时,减去相应的购买钱币数。当饮料输出达到8秒时,电磁阀首先关断,小电机继续工作0.5秒后停机。此小电机的作用是:在输出饮料时,加快输出。在电磁阀关断时,给电磁阀加压作用,加速电磁阀的关断。(注:由于该售货机是长期使用,电磁阀使用过多时,返回弹力减少,不能完全关断会出现漏饮料的现象。此时电机Y3和Y5延长工作0.5秒起到电磁阀加压的作用,使电磁阀可以完好的关断。)

5.退币系统:

当顾客购完饮料后,多余的钱币只要按下退币按钮。系统就会把数据寄存器D2内的钱币数首先除以10得到整数部分,是1元钱需要退回的数量,存放在D10里。余数存放在D11里。再用D11除以5得到的整数部分是5角钱需要退回的数量,存放在D12里。余数存放在D13里。最后D13里面的数值,就是1角钱需要退回的数量。在选择退币的同时启动3个退币电机。3个感应器开始计数,当感应器记录的个数等于数据寄存器退回的币数时,退币电机停止运转。

6.报警系统:

报警系统如果是非故障报警,只要通过网络通知送液车或者送币车即可。但是如果是故障报警则需要通知维修人员到现声进行维修。同时停止服务,避免造成顾客的损失。

2.3业务流程图

钱币记录仪对钱币进行识别前端接受顾客投的币判断退出钱币发送信息到分配器判断没有货物时发送信息到前端发送货物

2.4数据流程图

钱币钱币记录仪对钱币进行计算分配器反钱币与货物价格进行比较货物发放取走零钱与购买的货物

三、各种UML图型及其分析

3.1用例图

1. 顾客的用例图

inputCoinchooseSodaCustomer

2. 自动售货机的用例图

RegisterDispenserFrontSodaMachine

3.2类图

3.3序列图

1. 理想状态(不找零钱)的序列图

:Front : Customer1: inputCoin():Register:Dispenser2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: releaseSoda()

2. 没有货物的序列图

:Front : Customer1: inputCoin():Register:Dispenser2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: displayPrompt()12: sendReturnCoin()13: returnCoinToFront()14: returnCoin()

3. 需找零钱的序列图

:Front : Customer1: inputCoin():Register:Dispenser2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: sendSodaPrice()12: checkForChange()13: releaseChange()14: receiveSoda()15: receiveChange()

4. 没有零钱找给顾客

:Front : Customer1: inputCoin():Register:Dispenser2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: sendSodaPrice()12: checkForCharge()13: returnNoCharge()14: returnCoinToFront()15: displayPrompt()16: returnSodaToDispenser()17: returnCoin()

5. 完整的序列图

:Front : Customer1: inputCoin():Register:Dispenser2: accept()3: getCustomerInput()4: checkForSoda()5: returnNoCharge()6: returnCoinToFront()7: displayPrompt()8: returnCoin()9: End()10: returnSodaFree()11: displayPrompt()12: chooseSoda()13: sendChooseToDispenser()14: checkAvailability()15: returnUnavailability()16: displayPrompt()17: sendReturnCoin()18: returnCoinToFront()19: returnCoin()20: End()21: releaseSoda()22: sendSodaFrice()23: checkForCharge()24: returnNoCharge()25: returnCoinToFront()26: displayPrompt()27: returnSodaToDispenser()28: returnCoin()29: End()30: releaseCharge()31: receiveSoda()32: receiveCharge()33: End()34: receiveSoda()35: End()

3.4协作图

1. 理想状态的协作图

3: getCustomerInput()9: checkAvailability()4: checkForSoda():Register:Dispenser8: sendChooseToDis()2: accept()1: inputCoin()7: chooseSoda():Front6: displayPrompt() : Customer11: releaseSoda()5: returnSodaFree()10: releaseSoda()

2. 没有货物的协作图

1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()11: displayPrompt()14: returnCoin()13: returnCoinToFront()2: accept()12: sendReturnCoin()3: getCustomerInput()8: sendChooseToDis()5: returnSodaFree()10: releaseSoda()9: checkAvailability()4: checkForSoda():Register:Dispenser

3. 需找零钱的协作图

1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()14: receiveSoda()15: receiveChange()13: releaseChange()2: accept()8: sendChooseToDis()5: returnSodaFree()10: releaseSoda()3: getCustomerInput()12: checkForChange()9: checkAvailability()4: checkForSoda():Register11: sendSodaPrice():Dispenser

4. 没有零钱找给顾客的协作图

1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()15: displayPrompt()17: returnCoin()13: returnNoCharge()14: returnCoinToFront()2: accept()3: getCustomerInput()12: checkForCharge()8: sendChooseToDis()16: returnSodaToDispenser()5: returnSodaFree()10: releaseSoda()9: checkAvailability()4: checkForSoda():Register11: sendSodaPrice():Dispenser

5. 完整的协作图

29: End()33: End()35: End()1: inputCoin()12: chooseSoda():Front : Customer7: displayPrompt()8: returnCoin()11: displayPrompt()16: displayPrompt()19: returnCoin()26: displayPrompt()28: returnCoin()31: receiveSoda()32: receiveCharge()34: receiveSoda()5: returnNoCharge()6: returnCoinToFront()18: returnCoinToFront()24: returnNoCharge()25: returnCoinToFront()30: releaseCharge()2: accept()17: sendReturnCoin()13: sendChooseToDispenser()27: returnSodaToDispenser()10: returnSodaFree()15: returnUnavailability()21: releaseSoda()14: checkAvailability():Dispenser4: checkForSoda()3: getCustomerInput()23: checkForCharge()22: sendSodaFrice():Register

3.5状态图

提示投币do/ 请求投币do/ 提示是假币假币do/ 检查硬币真币否购买do/ 存储硬币,计算货币总值do/ 确认投完硬币有do/ 请求选择商品选择货品do/ 检测货品存量do/ 提示无货无货有货计算do/ 比较货币总值和货物价值小于do/ 提示货币不足不小于确认do/ 确认顾客购买do/ 送出货品,请求取货有零钱退币无零钱do/ 请求退币不购买显示do/ 提示交易完成

3.6活动图

投币【金额不足】金额累加【金额足够】【饮料不足】售完灯亮选择灯亮【取消交易】拉动退币杆【继续交易】选择饮料掉出饮料结算找钱

四、结论

在这个实验过程中思考了很多问题,其中一个就是想到顾客可能在投币不够的情况下退币,然后我就想在顾客活动图中体现并画出来,即金额累加器判断金额不足后顾客也可以拉动退币杆,但在画的过程中画图工具告诉我不允许有相同的活动。所以就放弃画这一活动了。 我在判断每一个步骤的时候,首先会考虑某些意外情况。因为自动售货机允许顾客在按下选择键前的任意时刻拉动退币杆取消交易,所以该饮料自动售货机必须能够在顾客按选择键前实现退币。否则该自动饮料售货机就不实用

五、参考文献

软件工程——原理、方法与应用(第三版)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top