(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();}}
}

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

  1. C/C++飞机订票系统

    C/C++飞机订票系统 设计一个飞机订票系统,通过此系统可以实现如下功能: (1) 录入:可以录入航班信息(具体内容自定); (2) 查询:可以查询某个航线的情况; (3) 订票:可以订票,如果该航班 ...

  2. 飞机订票系统的html模板,飞机订票系统程序设计

    <飞机订票系统程序设计.doc>由会员分享,可免费在线阅读全文,更多与<飞机订票系统程序设计>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1.\ ...

  3. 【性能测试】Loadrunner12.55(二)-飞机订票系统-脚本录制

    1.1 飞机订票系统 Loadrunner 12.55不会自动安装飞机订票系统,要自己手动安装. 我们需要下载Web Tools以及一个小插件strawberry https://marketplac ...

  4. c语言飞机订票信息查询,C语言飞机订票系统

    <C语言飞机订票系统>由会员分享,可在线阅读,更多相关<C语言飞机订票系统(11页珍藏版)>请在人人文库网上搜索. 1.课程设计课程:数据结构专业班级:XX软件工程XX班姓名: ...

  5. 软件测试剧场订票系统背景,软件测试教学资源学生作品飞机订票系统的功能测试项目报告...

    软件测试教学资源学生作品飞机订票系统的功能测试项目报告 <软件测试>课程项目库学生作品 项目名称飞机订票系统的功能测试 院 系计算机与软件学院 专 业 软件技术(测试) 班 级软件 093 ...

  6. 飞机订票系统c语言大作业,C语言知识学习飞机订票系统

    C语言知识学习飞机订票系统 课程设计 课程:数据结构 专业班级:xx软件工程 xx班 姓名:xx 学号:xxx 姓名:xxx 学号:xxx 设计时间:xxx 指导老师:xxx 课程设计题:飞机订票系统 ...

  7. Java版飞机订票系统

    数据结构课程设计题目:          [飞机订票系统]            通过此系统可以实现如下功能: 录入:可以录入航班情况(数据存储在一个数据文件中,数据结构和具体数据自定) 查询:可以查 ...

  8. 课程设计---飞机订票系统

    1. 题目 本课程设计的题目为:飞机订票系统. 2. 项目描述 基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票 ...

  9. 飞机订票系统(C语言版)

    目录 飞机订票系统 一.问题描述 二.功能要求 三.算法提示 四.测试数据 五.其它 六.代码段                                          飞机订票系统    ...

最新文章

  1. g标签 怎么设置svg_SVG(可缩放矢量图形)图片添加、高斯模糊、渐变与g标签
  2. Android kotlin DataBinding 之 unresolved reference: BR
  3. java -jar 找不到引用类_怎么解决java -jar找不到主类问题
  4. 取消android所有动画,android studio 取消BottomNavigationView的动画等
  5. 10 岁研究计算机,电脑神童“不务正业”的技术路
  6. 【Android Fragment】解决Fragment多层嵌套时onActivityResult无法正确回调的问题
  7. Objective-C:NSArray的常见操作
  8. 【网络流24题】 No.3 最小路径覆盖问题 (网络流|匈牙利算法 -最大二分匹配)...
  9. 理解 Nginx HTTP 代理, 负载均衡, Buffering, Caching
  10. FFmpeg源代码简单分析:结构体成员管理系统-AVClass
  11. 基于php的宠物领养系统
  12. Unity 3D游戏五:打飞碟
  13. libcef.dll丢失怎么办
  14. 栈判断字符串是否为中心对称_数据结构 Stacks 栈
  15. 理解马尔可夫决策过程
  16. 光耦合器 工作原理 作用 应用场合
  17. CSS中absolute和relative
  18. 用计算机怎么刷试听量,QQ音乐怎么刷播放次数,快速增加播放量
  19. 生物统计分析之ROC曲线分析
  20. 使用fastjson解析json抓取新浪新闻文章

热门文章

  1. YGG SEA 投资 5 万美元,购买 ARPG 游戏《变形机甲》中的 NFT 资产
  2. kubernetes hpa源码分析
  3. 充电池中热敏电阻作用
  4. Java多线程之JUC
  5. 当当网窘境:快电商容不下慢当当
  6. 基于IIC的温度传感器实验
  7. 常见模块设计--权限管理(一)
  8. Java设计模式七大原则-单一职责原则
  9. mysql leng() 与 char_length() 的区别,注意一下。
  10. Key Points about ActiveSupport::Concern