当前位置:文档之家› 软件工程课程设计(自动售货机)

软件工程课程设计(自动售货机)

《软件工程》课程设计报告
一、问题描述
(一)关于自动售货机
自动售货机像磁卡电话、银行柜员机一样,以方便、新颖、文明、昼夜服务等特点,成为发达国家不可缺少的便民配套设施。

如今的自动售货机可以为顾客提供多种服务。

顾客可以根据自己的需要选择商品并投入钱币,售货机接收钱币,售出商品。

(二)自动售货机的设计
自动售货机系统是一种无人售货系统。

售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。

有效的硬币是一元币、五角币、一角币、五分币和一分币。

其它货币都被认为是假币。

机器拒收假币,并将其从退币孔退出。

当机器接收了有效的硬币之后,将之送入硬币储藏器。

顾客支付的货币根据硬币的面值进行累加。

自动售货机装有货物分配器,每个分配器中包含0 个或多个价格相同的货物。

顾客通过选择货物分配器来选择货物。

如果有货,且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将找零返回到退币孔。

如果无货,则和顾客支付的货币值相等的硬币将被送到退币孔。

如果顾客支付的货币值小于所选货物的价格,机器将等待顾客投进更多的货币。

如果顾客决定不买所选择的货物,他投放进的硬币将从退币孔中退出。

二、需求分析
(一)UML自动售货机系统功能需求:
自动售货机系统是一种无一元等3个硬币投币口。

顾客确认购货后,售货机可根据硬币的面值进行累加。

自动售货机装有货物分配器。

每个货物分配器中包含零个或多个价格相同的货物。

顾客通过
选择货物分配器来选择货物。

如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返回到退币孔。

如果分配器是空的,则和顾客支付的货币值相等的硬币将被送加到退币孔。

如果顾客支付的货币值少于所选择的分配器中的货物的价格,机器将等待顾客投进更多的货币。

如果顾客决定不买所选择的货物,将所投硬币从退币孔退出。

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

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.报警系统:
报警系统如果是非故障报警,只要通过网络通知送液车或者送币车即可。

但是如果是故障报警则需要通知维修人员到现声进行维修。

同时停止服务,避免造成顾客的损失。

三、各种UML图型及其分析
(一)用例图
1.顾客的用例图
chooseSoda
inputCoin
Customer
2.自动售货机的用例图
Dispenser
SodaMachine
1.理想状态(不找零钱)的序列图
2.没有货物的序列图
3.需找零钱的序列图
4.没有零钱找给顾客
5.完整的序列图
(四)协作图
1. 理想状态的协作图
: Customer
3: getCustomerInput()9: checkAvailability()
11: releaseSoda()
2. 没有货物的协作图
1: inputCoin()
3.需找零钱的协作图
1: inputCoin()
4.没有零钱找给顾客的协作图
1: inputCoin()
5.完整的协作图
29: End()
33: End()
35: End()
(五)状态图
(六)活动图1.投币的活动图
2.选择货物的活动图
3.前端的活动图
4.货币记录仪的活动图
5.分配器的活动图
(七)组件图
DB_0
(八)配置图
(九)数据模型图。

相关主题