标签:System else 零钱 static print 软件测试 out
有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下:
若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币。
实验步骤:
①编写程序
②分析原因与结果
③画出因果图
④转化为决策表
⑤根据决策表设计测试用例,得到测试用例表
- 程序
import java.util.Random;
import java.util.Scanner;
public class Money {
static Scanner sc;
static double money;
static String goods;
static String e;
static String[] sdate= {"【零钱找完】灯灭","【零钱找完】灯亮"};
//【零钱找完】灯灭时,此时可以投币1元
public static void light() {
sc=new Scanner(System.in);
System.out.print("请投币:");
money=sc.nextDouble();
if(money==0.5) {
pentagon();
}else if(money==1){
System.out.print("请选择橙汁还是啤酒:");
goods=sc.next();
if(goods.equals("橙汁")) {
System.out.println("恭喜您购买成功!您选择了橙汁!给您找零5角钱!");
return;
}else if(goods.equals("啤酒")) {
System.out.println("恭喜您购买成功!您选择了啤酒!给您找零5角钱!");
return;
}else {
System.out.println("对不起!此柜无此货源!");
return;
}
}else {
System.out.println("投币错误!");
}
}
//投入五角时机器反应
public static void pentagon() {
System.out.print("请选择橙汁还是啤酒:");
goods=sc.next();
if(goods.equals("橙汁")) {
System.out.println("恭喜您购买成功!您选择了橙汁!");
return;
}else if(goods.equals("啤酒")) {
System.out.println("恭喜您购买成功!您选择了啤酒!");
return;
}else {
System.out.println("对不起!此柜无此货源!");
return;
}
}
//【零钱找完】灯亮时,无法找零,此时不可投币1元
public static void close_light() {
sc=new Scanner(System.in);
System.out.print("请投币:");
money=sc.nextDouble();
if(money==0.5) {
pentagon();
}else if(money==1){
System.out.println("对不起!零钱已找完,1元退还给您!");
return;
}else {
System.out.println("投币错误!");
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Random rd=new Random();
for(int x=1;true;x++) {
int k=rd.nextInt(sdate.length);
e=sdate[k];
System.out.println("当前机器状态:"+e);
if(e.equals("【零钱找完】灯灭")) {
light();
// return; //是否循环执行购买
}
if(e.equals("【零钱找完】灯亮")){
close_light();
// return; //是否循环执行购买
}
}
}
}
分析原因和结果
原因:1.售货机有零钱
2.投入1元硬币
3.投入5角硬币
4.按下橙汁按钮
5.按下啤酒按钮
结果:21.售货机【零钱找完】灯亮
22.退还1元硬币
23.退还5角硬币
24.送出橙汁
25.送出啤酒
画出因果图
决策表
用例序列 |
1 |
2 |
3 |
4 |
5 |
|
条件 |
1 |
1 |
1 |
1 |
0 |
0 |
2 |
1 |
0 |
0 |
1 |
0 |
|
3 |
0 |
1 |
0 |
0 |
1 |
|
4 |
0 |
0 |
0 |
0 |
1 |
|
5 |
1 |
1 |
1 |
1 |
0 |
|
结果 |
21 |
0 |
0 |
0 |
1 |
1 |
22 |
0 |
0 |
0 |
1 |
0 |
|
23 |
1 |
0 |
0 |
0 |
0 |
|
24 |
0 |
0 |
0 |
0 |
1 |
|
25 |
1 |
1 |
0 |
0 |
0 |
测试用例表
序号 |
输入 |
输出 |
1 |
有零钱/投入一元/按啤酒 |
退出5毛/退出啤酒
|
2 |
有零钱/投入5毛/按啤酒 |
退出啤酒 |
3 |
有零钱/按啤酒 |
请投入硬币 |
4 |
无零钱/投入一元/按啤酒 |
没有零钱/退出一元 |
5 |
无零钱/投入5毛/按橙汁 |
退出橙汁 |
航空服务查询问题:根据航线,仓位,飞行时间查询航空服务。
假设一个中国的航空公司规定:
① 中国去欧美的航线所有座位都有食物供应,每个座位都可以播放电影。
② 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影。
③ 中国国内的航班的商务仓有食物供应,但是不可以播放电影
④ 中国国内航班的经济仓只有当飞行时间大于2小时时才有食物供应,但是不可以播放电影。
- 程序
import java.util.Scanner;
public class plane {
static Scanner sc;
static String hx;
static String cs;
static float time;
public static void fly(){
sc=new Scanner(System.in);
System.out.print("请输入航线");
hx=sc.next();
System.out.print("请输入舱室");
cs=sc.next();
System.out.print("请输入时间");
time=sc.nextFloat();
if(hx.equals("欧美")){
System.out.print("本航班提供食物和电影");
}else if (hx.equals("非欧国外")){
if(cs.equals("商务舱")){
System.out.print("本次航班提供食物和电影");
}else {
System.out.print("本次航班只提供食物");
}
}else {
if(cs.equals("商务舱")){
System.out.print("本次航班只提供食物");
}else{
if(time>=2){
System.out.print("本次航班只提供食物");
}else{
System.out.print("本次航班不提供任何服务");
}
}
}
}
public static void main(String[] args){
fly();
}
}
决策表
规则桩 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
C1:航线 |
欧美 |
欧美 |
欧美 |
欧美 |
非欧 |
非欧 |
非欧 |
非欧 |
国内 |
国内 |
国内 |
国内 |
C2:仓位 |
经济舱 |
商务舱 |
经济舱 |
商务舱 |
经济舱 |
商务舱 |
经济舱 |
商务舱 |
经济舱 |
商务舱 |
经济舱 |
商务舱 |
C3:飞行时间 |
<2h |
<2h |
>=2h |
>=2h |
<2h |
<2h |
>=2h |
>=2h |
<2h |
<2h |
>=2h |
>=2h |
A1:电影 |
Y |
Y |
Y |
Y |
N |
Y |
N |
Y |
N |
N |
N |
N |
A2:食物 |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
Y |
N |
Y |
Y |
Y |
用例表
用例 |
1 |
2 |
3 |
4 |
5 |
6 |
C1 |
欧美 |
非欧 |
国内 |
国内 |
国内 |
国内 |
C2 |
- |
- |
经济舱 |
商务舱 |
经济舱 |
商务舱 |
C3 |
- |
- |
<2h |
<2h |
>=2h |
>=2h |
A1 |
Y |
N |
N |
N |
N |
N |
A2 |
Y |
Y |
N |
Y |
Y |
Y |
标签:System,else,零钱,static,print,软件测试,out 来源: https://www.cnblogs.com/Akko/p/16054816.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。