1、自动售货机软件系统的设计与实现 设计人 目录 一 自动售货机需求分析 1.1实验设计分工 11.2产品介绍 11.3产品面向的用户群体 11.4产品应当遵循的标准或规范 11.5产品范围 11.6产品的系统需求 11.7产品的非功能性需求 2二 概要设计说明2.1引言 32.2总体设计 42.3接口设计 52.4运行设计 62.5系统出错处理设计 6三 详细设计说明 3.1引言 73.2程序系统的结构 73.3自动售货机AVM(主程序)设计说明 83.4投币模块设计说明 103.5物品栏处理模块设计说明 10 3.6购物车处理模块设计说明 113.7出货模块说明 12四 测试分析报告4.1引言
2、 134.2测试概要 144.3对软件功能的结论 154.4分析摘要 16五项目开发总结报告5.1引言 175.2实际开发结果 185.3开发工作评价 195.4经验与教训 20 一 自动售货机需求分析1.1. 实验设计分工:彭明强负责设计购买出货管理系统,韩宾负责设计修改单价管理系统,袁哲坤负责设计添加新商品管理系统,段一帆负责设计删除商品管理系统,马光圆负责设计添加货物管理系统。其中的图形界面由大家商议并由彭明强同学完成代码。1.2. 产品介绍:a) 自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。有效的硬币是一元币、五角币
3、、一角币、五分币、二分币和一分币。其他货币都被认为是假币。机器拒绝接受假币,并将其从退币孔退出。当机器接收了有效的硬币之后,就把硬币送入硬币储藏器中。顾客支付的货币根据硬币的面值进行累加。b) 自动售货机装有货物分配器。每个货物分配器中包含零个或多个价格相同的货物。顾客通过选择货物分配器来选择货物。如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返回到退币孔。如果分配器是空的,则和顾客支付的货币值相等的硬币将被送回到退币孔。如果顾客支付的货币值少于所选择的分配器中货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货
4、物,他投放进的货币将从退币孔中退出。1.3. 产品面向的用户群体:自动售货机面向的对像主要是大众消费者,包括各种文化程度以用各种年龄阶段的人,它并没有特别的针对性,它的使用者可能是成人,也可能只是个什么都不太懂的孩子,因此自动售货机的操作应尽可能的定义简单一点。1.4. 产品应当遵循的标准或规范:鉴于自动售货机面向对象的复杂性,自动售货机不应做的太过复杂,应该越简单越好,不好操作的自动售货机是不会受到大家的欢迎的1.5. 产品范围该产品适合在自助餐厅,人流密度较大的路边,学校等地方摆设,且应有工作人员定期更新或补充货物。自动售货机只能部分的替代货物的也售功能,使用者不能完全依赖这种设备来营利。
5、1.6. 产品的系统需求根据售货机自动控制系统的流程如下图可以知道自动售货机的主要系统包括:计币系统、选择系统、饮料供应系统、退币系统、报警系统,对于工作人员来说,还应有控制系统。a) 计币系统:当有顾额色买饮料时,投入的钱币经过感应器,感应器记忆投币的个数关且传送到检测系统(即电子天平)和计币系统。只有当电子天平测量的重量少于误差值时,允许计币系统进行叠加钱币,叠加的钱币数据存放在数据寄存器D2中。如果不正确时,认为是假币。既定出投币,既定出系统,等待新顾客。b) 选择系统:当按下汽水或咖啡选择时,会有相应的指示告诉你你选择了什么货物,当选择完毕后可以确定自己的选择再按确定。c) 饮料供应系
6、统:当按下选择按钮时,相应的电磁阀(Y4或Y6)和电机(Y3或Y5)同时启动。在饮料输出的同时,减去相应的购买钱币数。当饮料输出达到8秒时,电磁阀首先关断,小电机继续工作0.5秒后停机。此小电机的作用是:在输出饮料时,加快输出。在电磁阀关断时,给电磁阀加压作用,加速电磁阀的关断。(注:由于该售货机是长期使用,电磁阀使用过多时,返回弹力减少,不能完全关断会出现漏饮料的现象。此时电机Y3和Y5延长工作0.5秒起到电磁阀加压的作用,使电磁阀可以完好的关断。)自动控制系统的流程d) 退币系统:当顾客购完饮料后,多余的钱币只要按下退币按钮。系统就会把数据寄存器D2内的钱币数首先除以10得到整数部分,是1
7、元钱需要退回的数量,存放在D10里。余数存放在D11里。再用D11除以5得到的整数部分是5角钱需要退回的数量,存放在D12里。余数存放在D13里。最后D13里面的数值,就是1角钱需要退回的数量。在选择退币的同时启动3个退币电机。3个感应器开始计数,当感应器记录的个数等于数据寄存器退回的币数时,退币电机停止运转。e) 报警系统:报警系统如果是非故障报警,只要通过网络通知送液车或者送币车即可。但是如果是故障报警则需要通知维修人员到现声进行维修。同时停止服务,避免造成顾客的损失。f) 控制系统:当货物数量为0时就要添加货物,有时候一种货物长期滞销,我们就应该把它从货架上取下来,为了更多的营利,货物的
8、价格也应是随着时间变化的,因此 要有一个完整的控制系统。1.7 产品的非功能性需求a) 界面要求:软件的界面要求简单明了,货物选择最好是直接点击商品就能实现,或者是提供简单的选择系统(比如行用字母表示,列用数字表示)。货物的名称可以直接用汉字,也可以用汉字加图片的方式, 在每一个货物上应该明确标明价格信息和数量,尤其是当货物数量为空时,要能够提醒用户并作出正确的判断。 在用户界面上,还要有用户所选货物的信息以便用户确认,在用户确认选择的货物后,要求售货机能给出相应的货物。此外,用户界面应做得尽量美观多彩,以吸引更多的用户前来使用。b) 软伯环境需求:所设计的自动售货机要求能在WINDOW各版本
9、下运行。二 概要设计说明书2引言2.1.1编写目的此概要说明书主要说明了自动售货机的软件编程设计过程和总共包含的模块,各个模块的功能都做了介绍,使客户读者能够了解相关的设计思想和所完成的功能。2.1.2背景a. 待开发软件系统的名称:自动售货机软件系统的设计与实现;b. 本软件基于Matlab软件开发而出,算法及图形界面均基于此。2.1.3定义goods:商品。 name:商品的名称。 price:商品的价格。num,原词组number:记录商品的货物量。 tip:指点。2.2总体设计2.2.1需求规定对本系统的主要的输入是计币和选择物品,两者均由按钮响应来实现。输出主要由图片显示和退币系统组
10、成,两者在购物后触发显示。处理的功能有用于客户的投币及选择所需的物品,可以一次选择多个物品,将这些物品放入所设计的购物车中,并且在购物车中的物品还可以按客户的喜好随意的删除不想购买的物品,并且当即会退回相应的钱。在确认购买后,就会退出余额并显示出物图片。当钱额不够时就会提醒用户钱不够,请用户继续投币。本系统还为后台服务人员提供了相应的功能,添加新商品功能可以方便其对新购入的货物加入售货机。删除物品功能 可心方便其对过期的货物进行删除。修改物品的单价功能可以方便其根据物价修改单价。添加物品功能可以方便其对卖完的物品进行添加。2.2.2运行环境本系统的运行环境为Matlab.2.2.3基本设计概念
11、和处理流程等待用户点击主界面上的按钮用户点击选购货物按钮用户点击投币按钮用户点击确认购买按钮投币子程序相应处理选购货物子程序相应处理确认购买子程序相应处理2.2.4尚未问决的问题尚未完成的功能有各物品的图片在所用的按钮中显示,以及相应的按钮声音出货图片的掉落过程。2.3接口设计2.3.1用户接口用户点投币按钮,显示框中会显示相应的钱数。用户按选择按钮时会在货物显示区显示相应的物品名称。2.3.2外部接口本系统同外界的软件与硬件之间无接口、本系统应用Matlab软件的编程功能。2.3.3内部接口 主模块与各程序模块之间通过参数 goods name price num 等来控制。2.4运行设计2
12、.4.1运行模块组合说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块组合,说明每种运行所历经的内部模块和支持软件。2.4.2运行控制说明每一种外界的运行控制的方式方法和操作步骤。2.4.3运行时间运行模块组合占用各种资源的时间比较短。2.5系统出错处理设计2.5.1出错信息系统没有操作上的出错,各种操作情况都会有相应的提示语句。2.5.2系统维护设计系统维护采用保证相关的传递参数的正确性,以及程序的完整性。三 详细设计说明书3.1引言3.1.1编写目的基于自动售货机的工作方式,完成用户投币,选购货物以及确认购买并取得物品的功能,同时为了方便用户以及对于软件实现的功能多样化,实现了可
13、以对货物进行取消购买的选项以及对于自动售货机工作人员工作的软件化,即对于商品可以进行处理:添加,删除以及更改等多种操作。3.1.2背景a 待开发软件系统的名称:自动售货机b 开发者:彭明强 c 用户和运行该程序系统的计算中心:matlab R2009a。3.1.3定义自动售货机系统 GUI 人机界面3.1.4参考资料 精通GUI图形用户界面编程(matlab) 施晓红 周佳 北京大学出版社3.2程序系统的结构3.3 自动售货机AVM(主程序)设计说明3.3.1程序描述 此模块对应整个系统的主模块,主要完成的是对其他子模块的调度,以及一些全局变量的使用说明。3.3.2功能启动程序之后,进入主界面
14、面板,等待用户进行操作,并进行相应的响应,一般的响应都是进入另外一个子程序,响应的操作在子程序中完成,子程序修改相应的变量,完成之后再返回主程序。3.3.3性能可靠性要求高,主界面比较直观,能够准确的响应用户的操作。3.3.4输出项错误提示:在主界面的提示显示框中显示相应的出错信息,如:钱不够,商品已经卖完等。操作界面:进入子模块的程序界面。3.3.5算法显示主界面,等待用户操作如果点击相应的投币按钮 进入投币模块如果点击相应的物品栏按钮 进入物品处理模块如果点击相应的购物车按钮 进入购物车处理模块如果点击确认按钮 进入出货模块 3.3.6流程逻辑等待用户点击主界面上的按钮用户点击选购货物按钮
15、用户点击投币按钮用户点击确认购买按钮投币子程序相应处理选购货物子程序相应处理确认购买子程序相应处理3.3.7存储分配物品的信息(名称,单价,数量)占据整个存储空间。3.3.8测试计划首先采取白箱方式测试系统,各种可能的输入方式都进行测试,包括各种错误的操作,再要求同学进行各种误操作测试。3.3.9尚未解决的问题主程序界面图形化没有做到与真实的售货机的形似,与现实的还是有很大的差别的。3.4投币模块设计说明3.4.1模块描述与功能此模块对应用户投币,用户投入钱币后,对总钱数的处理。3.4.2设计方法(算法)用户点击按钮 钱的总量相应增加并显示在显示区。3.4.3流程逻辑等待用户点击投币按钮总钱数
16、加上相应的投币值总钱数显示区加上相应的值3.4.4限制条件 投入的总的钱的数额不能超过最大的数值65536。3.5物品栏处理模块设计说明3.5.1模块描述与功能 此模块实现用户购买物品时,选购了该物品但是并没有确定是否最终购买与否的功能。此时物品栏的物品数量相应减去一件,当该物品已经售完时,应在提示显示框中显示相应的提示信息,并等待用户重新选择。3.5.2设计方法(算法)流程图等待用户选购物品用户选购的商品数量是否为0相应的商品数量减1,总钱数减去相应的单价YN3.6购物车处理模块设计说明3.6.1模块描述与功能 此模块实现当用户已经选购了相应的商品时,可以将不想购买的商品退掉,即从购物车里将
17、其删除,这是相应的商品的数量以用户的前的总数都要进行相应的增加。3.6.2设计方法(算法)流程图等待用户选择要移除的商品物品并单击移除相应的商品数量加1,总钱数加上相应的单价3.7出货模块设计说明3.7.1模块描述与功能 此模块处理用户点击确认购买后的图形处理程序,首先由出货口将货物弹出,同时将用户的余额退还,再显示相应的提示信息(欢迎下次光临)。将总钱数置零,购物车内货物清空。等待下一位客户。3.7.2设计方法(算法)流程图用户点击确认按钮货物从出货口弹出退还用户余额显示提示信息总钱数置零,购物车内物品清空3.7.3尚未解决的问题 货物从出货口弹出的图形化设计没有做到与实际相符合,在实际中应
18、该是物品有一个下落的过程,以及噔的响声,以及其他的一些更加人性化的东西。四 测试分析报告4引言4.1.1编写目的编写测试分析报告是为了达到以下目的:把测试的结果写成文档,并对测试结果进行分析,纠正软件中的BUG。把测试阶段的工作进程通报给编写程序的同学,以便对下一步工作做出调整。4.1.2背景被测试系统名称:自动售货及仿真系统软件任务提出者:江国星老师软件开发者:彭明强 韩宾 袁哲坤 段一帆 马光圆用户:普通消费人群测试环境是在测试人员的个人计算机上,实际运行环境则是在自动售货机上。两种环境下存在的差异:测试环境下只是一个仿真软件,不涉及硬件参与;在实际的自动售货机上设计硬件系统与软件系统的结
19、合问题。在计算机上运行仿真程序速度会更快一些。4.1.3定义自动售货及仿真系统:在电脑上模拟出自动售货机的各种功能和动作。4.1.4参考资料测试分析报告(GB856788)4.2测试概要测试标识符测试内容实际与计划的差别存在差别的原因1角点击一下显示栏钱数加0.1与计划一致5角点击一下钱数显示栏加0.5与计划一致1元点击一下钱数显示栏加1与计划一致货物名称点击一下显示栏钱数减少单价数,右方购物车出现商品名称与计划一致移除点击一下所选中货物被移除,显示栏钱数增加商品单价与计划一致OK键点击一下视为正式购买商品,出货口会有动态显示与计划一致Cancel键点击一下视为退出该次仿真程序与计划一致4.3
20、对软件功能的结论4.3.1功能一:投币4.3.1.1能力该功能是模拟自动售货机中的投硬币功能,它能让系统中的钱数按规定的数额增加,0.1、0.5、1,这三个固定数值。投币功能只能是钱数增加不能减少。4.3.1.2限制该功能只能按着规定的额度增加,不能减少,数值分别为0.1,0.5,1。缺陷在于没有真实投币过程中的声音和形象。4.3.2功能二:选货4.3.2.1能力该功能可以让用户选择自己想要的产品,产品由售货机提供,每次选货后商品进入购物车中待定。选货是点击按钮的方式。4.3.2.2限制选货点击次数是handles.num的值,有一定限制。选货没有图形参考,且没有选货过程的动态显示。4.3.3
21、功能三:购物车4.3.3.1能力该功能是让已选择的物品进入一个“待定席”,给用户可以退货的选择。当用户点击“移除”按钮时,相应的商品会被退还到货架上,handles.num也会增加1,钱数也增加相应商品的单价。4.3.3.2限制选中的商品只有名称没有图形化显示,商品排列是按顺序一个挨一个名称来的,而不是简便的名称加数量。测试中可以满足所有商品的待定,即数值从0到所有商品的handles.num的总值。4.3.4功能四:OK4.3.4.1能力该功能是确认购买所选商品,点击后将会获得商品和剩余的钱数。4.3.4.2限制该功能缺少出货的动态场景。4.4分析摘要4.4.1能力经测试,证实了本软件具有:
22、投币、选货、购物车、确认功能。测试环境为PC机而实际环境为自动售货机,两者之间的差别主要是在视觉观察效果上。PC机测试环境之提供了运行软件的环境,没有硬件的支持;而售货机有软件和硬件的结合。如测试中的投币功能在PC环境中是按钮实现,而在实际的自动售货机中则是以真实投币动作实现。测试中的出货功能是以图片的移动来表示出货,在实际的自动售货机环境下则是以真实货物掉出而实现。4.4.2缺陷和限制经测试,本软件存在以下缺陷:1、货物没有图标显示,与实际中的售货机不相符。2、出货没有货物显示,没动态效果。3、背景换面过于简单化,给用户的亲切感不够。综上缺陷会让本软件的仿真程度降低,与实际自动售货机的界面相
23、差比较大。4.4.3评价 经测试,本软件以达到预期目标,可以交付使用。五 项目开发总结报告5.1引言5.1.1编写目的为明确软件设计、安排项目规划与进度的完成情况,撰写本文档。本文档供项目管理员、设计人员、开发人员参考。5.1.2背景项目名称:自动售货及仿真系统软件任务提出者:江国星老师软件开发者:彭明强 韩宾 袁哲坤 段一帆 马光圆用户:普通消费人群5.1.3定义无5.1.4参考资料有关资料:a. 项目开发计划;b. 需求规格说明书;c. 概要设计说明书;d. 详细设计说明书; e. 用户操作手册;f. 测试计划;g. 测试分析报告;撰写文档时所参考资料:软件工程实训教程清华大学出版社 李铁
24、顺 5.2实际开发结果5.2.1产品a. 程序系统中各个程序的名字即它们之间的层次关系:自动售货及仿真系统修改单价管理系统 添加新商品管理系统 删除商品管理系统 添加货物管理系统 购买出货管理系统 b.程序名称、源程序行数(包括注释行):1 修改单价管理系统.2 添加新商品管理系统 3 删除商品管理系统4 添加货物管理系统5 购买出货管理系统 5.2.2主要功能和性能本软件产品所实际具有的主要功能:1. 投币:该功能是模拟自动售货机中的投硬币功能,它能让系统中的钱数按规定的数额增加,0.1、0.5、1,这三个固定数值。软件能基本实现此功能。2. 选货:该功能可以让用户选择自己想要的产品,产品由
25、售货机提供,每次选货后商品进入购物车中待定。选货是点击按钮的方式。软件能基本实现此功能。3. 购物车:该功能是让已选择的物品进入一个“待定席”,给用户可以退货的选择。当用户点击“移除”按钮时,相应的商品会被退还到货架上,handles.num也会增加1,钱数也增加相应商品的单价。软件能基本实现此功能。4. ok键:该功能是确认购买所选商品,点击后将会获得商品和剩余的钱数。软件能基本实现此功能。5.2.3基本流程 5.2.4进度实际进度比原定计划进度提前了3天。主要原因由于分组讨论次数比较多,很多观点内部比较同意,在编程的工程中就显得得心应手,同时在程序设计过程中采取了科学有效的方法,从而提高了
26、效率。5.2.5费用基本无费用收入和支出。5.3开发工作评价5.3.1对生产效率的评价给出实际生产效率,包括: 1. 程序的平均生产效率,即每人天生产的行数560行;比与原订计划数500行,多出60行; 2. 文件的平均生产效率,即每人天生产的千字数10.3千字;比与原订计划数10千字,多出0.3千字。5.3.2对产品质量的评价测试中检查出来的程序编制中的错误发生率2。5.3.3对技术方法的评价开发中所使用的技术、工具的评价:开发中使用MATLAB 7.4.0作为开发工具。5.3.4出错原因的分析错误的原因:程序员的疏忽和遗漏导致的语法错误和需求分析中的遗漏错误。5.4经验与教训本项开发工作中得到经验:在此文档编写过程中出现了模块的遗漏,造成了文档编写的不完善,经需求分析人员的协商,最总补救了这项错误,顺利的完成了各项任务。 开发工作中得到的教训: 经过这次错误,给了我们不少的经验和教训, 使我们明白应该全面的发挥团队精神,这样不仅有利于项目的开发和完成,而且可以减少不少的时间和工时,做到又好又快的完成。