接口实现飞机订票系统的一个需求(托运价格计算),需求如下:

news/2024/12/2 7:04:01/

(1) 乘客可以免费托运重量不超过30kg(含30kg)的行李。
(2) 假设行李超过30kg,其收费标准为:

  • 头等舱国内乘客,超重部分每千克收费4元。
  • 其他舱国内乘客,超重部分每千克收费6元。
  • 外国乘客:超重部分每千克比国内乘客多1倍。
  • 残疾乘客:为正常价格的半价。

(3) 行李重量超出部分,不满1kg的按照1kg计算。

代码实现如下:

1、main方法:

package Ticket;public class Test {public static void main(String[] args) {ICalcTicket ct = new CalcTicketImpl();ct.CalcTicket();}
}

2、接口( ICalcTicket.java ):

package Ticket;public interface ICalcTicket {void CalcTicket();int levelselect(int x, int y, int level, int moreweight);int TotalMoney(double weight, int nation, int health, int level);int IsTrue(int flag);}

3、接口实现类( CalcTicketImpl.java ):

package Ticket;import java.util.Scanner;import static java.lang.Math.ceil;public class CalcTicketImpl implements ICalcTicket {private int flag = 0;private int money = 0;private double weight;private int moreweight;Scanner scanner = null;int[] a = new int[3];FormatJudge fj = new FormatJudge();public void CalcTicket() {while (true) {scanner = new Scanner(System.in);System.out.println("Please enter weight in KG (with two decimal places):");try {weight = scanner.nextDouble();break;} catch (Exception e) {System.out.println("输入信息不符合要求,请重新输入!");}}if (weight < 30) {System.out.println("Your luggage will be free to carry!");} else {//调用IsTrue方法输入国籍,健康状况,舱位等级,并将返回值存入数组,作为调用TotalMoney时传入的三个参数for (flag = 0; flag <= 2; flag++) {int input = IsTrue(flag);a[flag] = input;}money = TotalMoney(weight, a[0], a[1], a[2]);System.out.println("You should pay ¥ " + money + " .");}}//舱位等级判断public int LevelSelect(int x, int y, int level, int moreWeight) {switch (level) {case 1:  //first classmoney = moreWeight * x;break;case 2:  //other classesmoney = moreWeight * y;break;default:break;}return money;}//计算运费public int TotalMoney(double weight, int nation, int health, int level) {moreweight = (int) ceil(weight - 30);if (nation == 1) {    //domesticif (health == 1) {    //disabledmoney = LevelSelect(2, 3, level, moreweight);} else {    //healthymoney = LevelSelect(4, 6, level, moreweight);}} else {  //foreignerif (health == 1) {  //disabledmoney = LevelSelect(4, 6, level, moreweight);} else {  //healthymoney = LevelSelect(8, 12, level, moreweight);}}return money;}//输入国籍,健康状况,舱位等级三个参数并捕捉输入异常public int IsTrue(int flag) {int input;this.flag = flag;while (true) {scanner = new Scanner(System.in);if (flag == 0) {System.out.println("Please enter '1' or '2' (1:domestic, 2:foreigner):");} else if (flag == 1) {System.out.println("Please enter '1' or '2' (1:disabled, 2:healthy):");} else if (flag == 2) {System.out.println("Please enter '1' or '2' (1:first class, 2:other classes):");}//捕捉两个异常,一个是scanner.nextInt异常,一个是自定义异常try {input = scanner.nextInt();fj.judge(input);break;} catch (Exception e) {System.out.println("输入信息不符合要求,请重新输入!");}}return input;}
}

4、自定义异常类( FormatException.java ):

package Ticket;//自定义异常
public class FormatException extends Exception {public FormatException() {super();}
}//将输入的值是int类型但不是1或2的异常抛出
class FormatJudge {public void judge(int m) throws FormatException {if (m != 1 && m != 2) {throw new FormatException();}}
}

http://www.ppmy.cn/news/811716.html

相关文章

Java编程题2

Java一些常见的练习题 将一个四位整数的个位数&#xff0c;十位数&#xff0c;百位数和千位数取出并输出。 输入一个数&#xff0c;求他的阶乘 猜数字游戏&#xff0c;根据提示输入数字&#xff0c;要在三次之内才出来。超出三次游戏结束 主题&#xff1a;设计简单的飞机行李托…

出国去美国行李托运方式有哪些?

访问学者出行去美国一般都是航空出行&#xff0c;但行李托运方式有多种选择。无论你是乘坐飞机还是其他交通工具&#xff0c;下面将为您介绍一些常见的行李托运方式。 1. 飞机托运&#xff1a;乘坐飞机是最常见的去美国的交通方式之一。在登机前&#xff0c;您可以将行李托运至…

c#设计简单飞机行李托运计费系统

利用C#的if……else语句设计简单的飞机行李托运计费系统&#xff0c;程序运行效果图如下&#xff0c;这里假设飞机上个人拖运行李的条件是&#xff1a;行李重量在20公斤以下&#xff0c;免费托运&#xff1b;20 ~ 30公斤超出部分30元、公斤&#xff1b;30-40公斤超出部分40元/公…

openpnp - 负压传感器DP102的设置

文章目录 openpnp - 负压传感器DP102的设置概述笔记上电后的画面查看模式进入设置模式输出1检测模式输出2检测模式输出1和输出2的常态(常开/常闭状态)设置动作响应时间输出动作颜色的设置压力单位的设置回到正常的运行模式输出1下限的设置输出1上限的设置输出2下限的设置输出2上…

iPhone抓包stream

安装stream app store中下载stream 下一步&#xff1a;允许访问网络 下一步&#xff1a;允许添加VPN配置 安装证书 安装CA证书 进入 设置–通用–VPN和设备管理 信任证书 进入 设置–通用–关于本机–证书信任设置 开启 完成 抓包 打开stream&#xff0c;点击开…

iphone计算机显示过程,如何将视频从iPhone传输到计算机(PC和Mac)

通常,您在iPhone上保存了两种视频:一种是由iTunes导入的,另一种是由iPhone相机拍摄的。如果您的iOS设备空间不足,则可以将视频复制到计算机或外部硬盘驱动器上,以回收更多存储空间。 如何将视频从iPhone传输到PC 在本文中,我们将与您分享将视频,照片视频/录像从iPhone传…

fiddler证书 iphone_Fiddler实现iPhone手机抓包

最近某小程序大火&#xff0c;许多非专业人员也在跃跃欲试&#xff0c;但是在查找自己的session_id的时候卡住了&#xff0c;本文只从技术方面介绍如何通过通过Fiddler来抓取手机的数据&#xff0c;不涉及如何作弊。。。 1、电脑上安装Fiddler抓包工具&#xff0c;百度一搜就可…

如何从macOS Catalina向iPhone添加自定义铃声

Studio Monkey/Shutterstock.com Studio Monkey / Shutterstock.com Creating your own iPhone ringtones isn’t as easy as it should be, but it’s still relatively straightforward. You can do it using the new Music app in macOS Catalina, which replaces iTunes. 创…