问题描述1.1关于自动售货机。 自动售货机与磁卡电话、银行柜员机一样,以其方便、新颖、文明、全天候服务等特点,成为发达国家不可或缺的便民设施。 如今的自动售货机可以为顾客提供多种服务。 顾客可以根据自己的需求选择产品并投入硬币,自动售货机接收硬币并出售产品。 1.2 饮料自动售货机设计本设计模拟自动售货机的工作原理和方法,完成售货、收币、找零等功能。 有两种类型的人与系统交互:送货人员和顾客。 送货员每周固定时间检查自动售货机内的饮料和硬币数量,并根据计划添加饮料和硬币或取走适当的硬币。 同时,配送员还可以根据需要添加饮品种类或修改饮品价格。 顾客根据需要选择饮料,投入硬币,然后等待自动售货机的响应。 自动售货机(设计的系统)的响应:如果自动售货机中没有该饮料,则顾客投入的硬币将被退回,交易将失败。 否则,如果自动售货机里有这种饮料,就会判断顾客投入的硬币是否足够。 如果没有,则会提示客户交易失败,并退回币。 如果顾客投入足够的硬币(不需要找零),饮料就会被售出,交易就会结束。 如果需要改变,则确定是否有适当的改变可用。 如果是,则饮料被售出,找到零钱,交易完成。 否则,币将被退回,交易将失败。 当然,现实生活中的自动售货机可能功能更强大,处理更完善。 这里我们只是模拟一个自动售货机系统,所以我们只是实现其核心原理并练习和提高问题分析和编程能力。
用例模型和分析类图的描述; 2.1 系统功能模块划分 图1:模块划分 2.2 系统用例模型描述 系统中涉及的角色有:顾客和送货员。 系统用例模型如下图所示: 2.3 类分析 系统中涉及到的类都是类,主要实现这个功能。 并且继承这个类,并且各自实现一定的功能。 类和类各有自己的属性,可以通过一些操作进行转化。 显示信息。 设计类图、核心用例序列图和状态图、组件图等的描述; 3.13.2 核心用例序列图 图4:“注册新送货员”序列图 序列图分析: 发送 店员输入新的用户名和密码并确认。 对话框控件接收输入并将信息传递到自动售货机系统,请求生成新的数据记录。 系统检查用户名是否有效。 如果无效,则拒绝生成新的送货员。 如果有效,则会将新记录添加到数据库中,并成功生成送货员的用户名和密码。 图 5:“检查价格”序列图 序列图分析:顾客或送货员请求查看饮料的价格。 对话框控件接收输入并请求自动售货机系统查询价格信息。 系统在数据库中浏览,通过饮料名称查出该饮料的价格,并返回对话框界面。 图6:顾客“购买饮料”序列图 序列图分析:接口接收顾客的输入(包括饮料名称和币种数量),并传递给自动售货机系统。
系统访问数据库检查饮料是否已售完。 如果已售完,则提示并退回金币。 否则,查询数据库中该饮料的价格,判断顾客投入的钱是否足够购买该饮料。 如果足够,则计算所需的更改并查询数据库以查看是否有足够的更改。 如果没有合适的找零,客户的币将会被退回并提示。 如果有合适的零钱,则通知数据库更新饮料和货币信息,并出售饮料并找零。 图7:送货员“登录”时序图 时序图分析:送货员输入用户名和密码登录系统。 UI界面将其传递给自动售货机系统。 系统查询数据库中的配送员信息,验证用户名和密码是否正确。 如果错误,则会提示用户。 否则,向配送员显示配送员区域界面。 图8:“添加饮料”时序图 时序图分析:UI界面接收配送员输入的需要添加的饮料种类和数量,并传递给自动售货机系统。 系统生成新的数据记录并通知数据库修改饮料。 数量信息。 修改成功后,界面返回当前饮料信息。 图9:“查看饮料”序列图 序列图分析:UI界面接受送货员点击“查看饮料”按钮,并将收到的消息传递给自动售货机系统。 系统查询数据库中的饮料信息并显示。 。 图10:“取币”序列图 序列图分析:UI界面接收送货员输入的硬币类型和数量,并将其传递给自动售货机系统。 系统访问数据库来查看是否可以拿走该类型的硬币数量。 如果没有,则拒绝取币,并通知UI界面提示送货员。
否则,通知数据库修改币种信息,并将修改后的新信息返回给接口。 3.3 状态图 图11 状态图信息代码设计、数据库设计、输入设计、输出设计说明 4.1 信息代码设计 (1) 设计采用基于对话框的实现方式。 (2)首先创建“欢迎”对话框,这是初始界面。 然后根据用户身份分为顾客和送货员,从而分别创建两个“特殊区域”。 (3)“客户区”是针对新的对话框进行修改的,因此需要创建一个名为“客户区”的类,并添加相应的控件。 顾客可以一次选择一种饮料,因此使用单选按钮来实现它。 投入硬币时,这里模拟用输入法来解释顾客投入硬币的面值和数量。 顾客确认输入后,系统调用数据库中的信息判断是否有顾客选择的饮品,并计算顾客的硬币输入是否足够,是否需要找零。 之后系统会弹出提示框,提醒顾客当前交易状态——分三种情况:没有该饮品,提示选择另一款;有该饮品,但没有合适的零钱,金币被退回,交易成功。 (4)送货人需要通过“登录”对话框验证身份后才能进入“送货人区域”。 登录用户名和密码分别为0000。 “送货员区域”也是一个新的对话框,因此创建一个类并添加控件。
送货员可以添加任何种类的饮料或瓶子,因此请使用复选框选择您要添加的饮料类型,然后使用编辑框输入要添加的数量。 确认后,数据添加到数据库中,通过“查看饮料”可以查看当前的饮料信息。 同时,送货员可以选择“放置硬币”或“取硬币”来放置或取走硬币。 这里还使用了复选框和编辑框来实现对硬币面值和数量的操作。 确认并“查看硬币”以查看当前硬币状态。 4.2 数据库设计 图12:ER图 数据库描述: 硬币有两个属性:面值和数量。 其中,颜值是主要属性。 送货员有两个属性:用户名和密码。 用户名是主要属性。 添加新的送货员时,如果用户名已存在,则会出现错误。 饮料具有三个属性:类型、数量和价格。 其中 type 是主要属性。 该数据库按名称存储了许多不同的饮料。 送货员可以放置或拿走一些硬币,还可以添加饮料。 4.3 输入输出设计 (1) 创建数据库后,首先对其进行初始化,将金币和饮料的数量设置为0,并设置默认的饮料价格。 在送货员信息表中,首先注册一个送货员,用户名和密码为0000。 (2) 输入花样。 送货员登录时设计了两种情况:输入正确的登录信息和错误的登录信息。 并且在添加饮料时输入饮料数量时,设计输入的是正确的数字和错误的其他符号。 在放入/取出硬币时,它旨在取出小于现有数量的硬币和大于现有数量的硬币。
当送货员添加新的送货员时,添加的用户名被设计为与现有的用户名相同或不同。 对于顾客来说,在购买饮料时,设计选择已售完的饮料和未喝完的饮料。 投资金币时,设计为投资小于饮料价格、等于饮料价格、大于饮料价格的金币。 (3)预期产出。 每一次正确的输入,系统都能正确响应,或者能够顺利进入下一个界面,或者能够成功修改数据库,或者能够显示新的信息,或者能够提示操作成功。 用户界面设计和处理流程设计的描述; 5.1 用户界面设计: 图13:系统欢迎界面 界面说明: 用户选择任一身份并确认后,将进入相应的操作界面。 图14:送货员登录界面 界面说明:送货员输入用户名和密码。 登录成功后,将进入送货员区域进行相应操作。 图15:外卖小哥功能区界面说明:在第一组中,外卖小哥可以选择饮品,并在右侧编辑框中输入饮品数量。 第二组中,送货员首先要选择对硬币的具体操作类型,然后选择硬币的面值,输入硬币的数量,然后才能完成对硬币的操作。 第三组和第四组主要用于响应“查看按钮”和“查看硬币”,显示数据库中现有的饮料和硬币信息。 第五组中,配送员可以输入用户名和密码来添加新的配送员。 图16:顾客功能区界面说明:顾客每次可以选择饮品并投入金币。
为了模拟硬币输入,使用编辑框允许客户输入硬币的数量。 5.2 用户界面设计说明 (1) 在“选择身份”中选择“客户”单选按钮并确认后,将进入“客户区”。 如果您选择“送货员”,则会弹出登录对话框。 盒子。 让送货员输入用户名和密码,验证信息并做出相应响应。 (2)当送货员想要向系统添加饮料或放置或提取硬币时,需要先登录。 输入您的用户名和密码,验证通过后继续下一步。 这里设置了送货员。 登录成功后,他可以在“添加送货员”中添加其他送货员。 (3)送货员可以添加饮料,使用勾选按钮选择添加的饮料类型,并在后面的编辑框中输入添加的饮料数量。 确认后,首先验证输入是否合法。 如果是合法的输入,就会生效。 同时,送货员可以通过选择放置硬币或取硬币并设置数量来向自动售货机添加或减少硬币。 (4)当送货员点击“查看饮品”时,上面的列表框中会显示现有的饮品信息,包括名称、数量和价格。 “查看硬币”按钮可以在下面的列表框中显示自动售货机中硬币的类型和数量。 (5)顾客可以选择饮品,并选择投入的硬币种类和金额。系统会判断是否有该饮品、投入的硬币是否足够、是否有适当的零钱等,以供顾客选择。完成销售。
(6)由于顾客投币的方式有很多种,找零的组合也有很多种,设计起来比较麻烦,所以这里只介绍几种投币和找零的方法。 (当然,如果实际的自动售货机没有这个功能,可以设计成只能放入1元或0.5元的硬币,系统会判断放入的硬币是否等于商品的价格)饮料。如果不相等,饮料将被拒绝出售。并退回硬币)假设顾客购买“百事可乐”并投资10元,那么他需要找零6.5元。 因此,如果有5元*1、0.5元*1、或者0.5元*1的组合,就可以购买成功。 此处假定其他组合是“不合适的”。 同样,如果您投资5元,则需要获得1.5元的零钱。 若有+0.5元*1的组合或0.5元*3的组合即可购买成功。 购买其他类型的饮料也是如此。 (3)假设客户投资10元(或5元)后,不再投资任何其他面额的硬币。 (由于购买饮料的界面设计为单选,顾客一次只能购买一杯饮料,所需金币不到5元) 软件测试方法和测试结果。 6.1 初始化 首先初始化数据库中的数据,设置四种饮料,每种价格固定,数量为0。设置四种金币,每种数量也为0。 6.2 添加饮料和金币。 首先,送货员将饮料和硬币添加到自动售货机中。 假设添加的饮料数量分别为:5、2、4、0。 投入的硬币数量为:0、2、5、8。 图17:添加饮料和硬币 6.3 购买饮料 现在顾客可以购买饮料。
(1)假设顾客A购买“百事可乐”并投入10元硬币。 图18:购买成功 购买成功。 现在你可以在系统中查看饮料和货币信息(当然作为送货员):你可以看到“百事可乐”的数量减少到了4个,硬币的数量也相应发生了变化。 图19:查看饮料和硬币信息 (2)假设顾客B购买“可口可乐”,投入1元*2硬币。 可见投入的币是不够的。 系统弹出对话框提示客户投入的币种不足。 图20:如果金币不够,可以查看现有饮料和现有金币。 可以发现数据并没有被修改。 (3)假设顾客C购买“雪碧”并投入5元硬币。 作为一名送货员,你可以看到自动售货机中没有“雪碧”饮料,因此会提示用户选择其他饮料。 图21:没有饮料 (4)配送员登记新的配送员信息。 使用初始用户名和密码登录的送货员将在系统中添加新的送货员。 用户名“”,密码0504,添加成功。 您以后可以使用该用户名和密码登录。 图22:添加送货员 (5) 注册新的送货员信息时,仍使用该用户名。 可见添加并不能成功。 这里会出现提示: 图23:添加同名外卖小哥的特点、缺点、收获和心得。 7.1 设计特点及不足 通过程序模拟自动售货机,完成添加饮料、投币、取币、购买饮料等基本功能。
而且设计可以流通面值大于饮料价格的硬币(如10元、5元硬币)。 这样的设计更适合自动售货机未来的发展趋势,即可以找零。 送货员可以查看现有的饮料和货币信息,从而了解一周内各种饮料的销售情况,以便适当调整各种饮料的供应量,以实现利润最大化。 当需要找零时,系统自动浏览数据库中的币种信息,计算各种可能的组合,判断是否可以找零,并提示成功或失败。 当送货员取走硬币时,判断是否有足够的硬币可以取走。 配送员可以添加信息生成新的配送员,这样其他人就可以成为自动售货机的配送员进行操作。