案例设计需求

有一个ATM取款系统,现对于取款功能进行了如何需求变更:碑只能取面额是100元(如取500,输出5张100元),现在功能修改为,可以取面额是10元、50元和100元的,其余功能不变,用户界面也没有任何变化,取款原则为“最优吐钞法”,有大额先吐大额,请根据需求变更进行案例设计。

参考测试用例

大额优先:

  1. 刚好整百的金额,吐出N张100元的
  2. 刚好为50元,吐出1张50元
  3. 刚好是50以内的整10元,吐出N张10元
  4. 取款金额是N百超过50元,吐出N张100元,1张50元,(M-5)张10元。例如380元,会吐出3张100元,1张50元,8-5张10元
  5. 如果是几十元,同时超过50元。那么会吐出1张50元,M-5张10元
  6. 取款金额是N百几十元,不超过50的,那么会吐出N张100元,M张10元

没有大额了:

  1. 如果没有50元了,那么会吐出N张100元,M张10元
  2. 如果没有100元,有50元,那会出吐出2N张50元,十位部分。如果十位部分不足50元,则会吐出M张10元。如果超过50元,则会吐出2N+1张50元,M-5张10元
  3. 如果100元和50元的都没有了,那么会吐出全额的10元
  4. 如果100元的不够用,会优先吐出全部的100元,再用50元进行折算
  5. 如果100元和50元都不够用了,会优先吐出全部的100元和50元,最后用10元的填补

无效场景:

  1. 钱不够了,无论是哪一种不够,这时候会报错说取款机余额不足
  2. 用户输入金额不正确,即有个数,那么也会报错用户输入不正确
  3. 用户未输入,提示报错

ATM取款机优化需求的用例设计的更多相关文章

  1. 深入浅出面向对象分析与设计读书笔记一&吉他搜索案例&吉他特性锚点集中&委托&重用&业务阶段&需求列表&用例

    案例:吉他搜索Guitar Inventory GuitarSpec需求变化:增加吉他弦数特性原始程序需要的变化: 1.修改GuitarSpec,构造,成员,getter 2.修改Guitar,构造, ...

  2. 第一周:设计一个简易ATM取款机简易程序(2)

    1.了解用户对ATM取款机功能需求如下: 2.新建一个login函数使用for循环方法和if选择方法编写登陆界面用来及设置ATM内用户的金额和取款机内的金额: 3.使用新建函数方法及if选择方法编写登 ...

  3. 大话JS面向对象之开篇万物皆对象------(ATM取款机引发的深思)

    一,总体概要 OO(面向对象)概念的提出是软件开发工程发展的一次革命,多年来我们借助它使得很多大型应用程序得以顺利实现.如果您还没有掌握并使用OO进行程序设计和开发,那么您无疑还停留在软件开发的石器时 ...

  4. 用例设计之APP用例覆盖准则

    基本原则 本文主要讨论APP功能用例的覆盖,基本原则: 用户场景闭环(从哪来到哪去) 遍历所有的实现逻辑路径 需求点覆盖 覆盖维度 APP功能用例设计主要使用传统的黑盒用例设计方法.同时,作为移动AP ...

  5. 服务端用例设计的思(tao)路!

    服务端的测试简单来说就是除了前端以外的的测试. 总的来说可以分为以下两类: 1.     WEB或者APP的提供业务逻辑的服务端接口测试 2.     数据库.缓存系统.中间件..jar包依赖.输入输 ...

  6. mysql数据库优化课程---3、数据库设计是什么

    mysql数据库优化课程---3.数据库设计是什么 一.总结 一句话总结: 就是设计各个字段及各个字段类型 1.char,varchar,text同存'ABC'的存储空间为多少? char(255): ...

  7. Oracle实战训练——ATM取款机业务

    ATM取款机的数据库模拟开发和实战总结 一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现 ...

  8. php : 单例设计演示

    单例 : 保证只有一个实例 <?php /* * 单例设计 */ // 单例: 只能"创造"出它的一个对象实例 class Single{ // 第一步: 私有化构造方法 p ...

  9. Spring容器-ApplicationContext的单例设计

    Spring容器-ApplicationContext的单例设计   每次通过new创建一个ApplicationContext容器,都会执行refresh方法,看源代码了解到这个refresh方法会 ...

随机推荐

  1. C语言:FILE p和FILE *p

    FILE p和FILE *p大概可以这么理解:1 . 前一个p指文件型变量,后一个p指文件地址型变量.2 . 前一个p的内存地址已定,后一个p内存地址未定. 前一个是声明类对象,后一个是声明一个可指向 ...

  2. C语言:宏定义

    #include <stdio.h> #define PI 3.14159265454454235432453245 main() { printf("%f\n",PI ...

  3. CSS从入门到喜欢,从喜欢到着魔

    如果把网页比作一个人的话,html就是他的骨架,而css是他的皮肤,javascript是神经控制着行动.html,css,javascript都是构建网页的核心技术. CSS简介 css指的是层叠样 ...

  4. Java基础00-学生管理系统16

    1. 学生管理系统 1.1 项目演示 1.2 实现思路 1.3 定义学生类 public class Student { private String sid; private String name ...

  5. aptitude软件状态标志i、v、p

    输出的结果分三栏,分别为状态.包名和描述.而状态则由p.i.v等字母表示.查询后才知道这些标识的含义是这样的: i - 包已经成功安装,并且所有依赖都满足. c - 包已经被移除,但是配置文件被保留. ...

  6. Raspberry pi 3b+ 安装dotnet5 VSCode Remote-SSH 远程开发

    前言 VSCode 安装Remote-SSH 配置好树莓派 VSCode 自带SSH控制台 终端输入命令 下载&安装 net5 下载wget https://dotnetcli.azureed ...

  7. 动态 DP

    一道入门 DP + 修改 = 动态 DP. 以模板题为例,多次询问树的最大独立集,带修改. 先有 naive 的 DP,记 \(f_{u,0/1}\) 表示 \(u\) 点不选/选时以 \(u\) 为 ...

  8. 开发工具IDE从入门到爱不释手(六)常用插件Git

    Git 环境准备 本地基本操作 本地文件关联git管理 文件提交git Ctrl+K:提交 关联远程仓库 先注册github账号 连接本地 git菜单 撤销提交 追加提交 Code Review

  9. 使用JavaMailSender 发送邮件

    使用JavaMailSender 发送邮件 package com.juvenxu.mvnbook.account.email; import javax.mail.MessagingExceptio ...

  10. noip模拟测试22

    考试总结:这次考试题,有好多部分分,导致了我在考试过程中一心想拿到这些部分分,对于正解没有留出时间进行思考,这是一个教训,在以后的考试中我一定要留出足够的思考时间,不要被部分分限制.还有,我的部分分也 ...