{"title":"需求分析\n\t重庆10086手机话费充值,及业务描述,充值时外地卡至少充值50元,本地至少20元,发送短信全国一角每条,彩信本地5角,外地一块每条,如果不符合要求不能进行充值\n思路分析\n1、创建手机号类(Cq10086)分析实体类中需要哪些属性,如:(本人手机号(cell_phone_number),对方手机号(cell_phone_number_friend分别实现get,set方法)\n2、有哪几种业务(如:发送短信,发送彩信,话费充值),这三种业务中短信费用是固定不变的,而充值与彩信发送根据不同的地区收费的标准,与冲值的金额不同,所以我们可以使用抽象类(CqAbsert)完成(如:我们须要建立两个未实现方法分别为(发送彩信(multimedia_message_money)话费充(supplement_money),一个实现方法(发送短信message_money())\n3、创建抽象类的实现类并继承抽象类(CqAbsert),分别实现相应的方法;\n4、创建一个测试类,在测试类中传入一个构造属性让用户选择业务类型,然后在构造方法中可以使用Switch语句进行判断,如当为0时冲值,1时发送短信,2时发送彩信。业务分别有如下几种\n1、如果进行充值,判断手机号归属地,外地至少冲值50元,本地至少充值20元。\n2、如果发送彩信,判断手机号归属地,外地扣除彩信费1元,本地扣除彩信费5角。\n3、如果发送短信,可以直接调用实现类中发送短信的方法即可,也可做相应判断。\n注:\n1、为了让我们写的程序封装性更好,在测试类中采用抽象类指向实现类,不要直接得到实现类的对象.\n2、要做好相应判断,如外地冲值话费时至少50元,如果用户输入的金额小于50元,冲值失败。电话号码11位,只能输入数字\n技术要求:使用控制台输入,用scala代码\n实现内容:手机号类(Cq10086)的属性:\n\n- 本人手机号(cell_phone_number):String\n- 对方手机号(cell_phone_number_friend):String\n\n抽象类(CqAbsert)的方法:\n\n- 发送彩信(multimedia_message_money):抽象方法\n- 话费充值(supplement_money):抽象方法\n- 发送短信(message_money):具体实现方法\n\n抽象类的实现类:\n\n- 充值类(RechargeCq):继承CqAbsert,实现supplement_money方法\n- 彩信类(MultimediaMessageCq):继承CqAbsert,实现multimedia_message_money方法\n\n测试类:\n\n1. 创建一个构造方法,让用户选择业务类型(充值、发送短信、发送彩信)。\n2. 在构造方法中使用Switch语句根据用户选择的业务类型进行相应的操作:\n - 如果选择充值业务,判断手机号归属地,外地至少冲值50元,本地至少充值20元。如果不符合要求,输出充值失败。\n - 如果选择发送彩信业务,判断手机号归属地,外地扣除彩信费1元,本地扣除彩信费5角。\n - 如果选择发送短信业务,直接调用发送短信的方法即可。\n3. 在测试类中创建一个实例对象,调用构造方法并传入用户选择的业务类型。\n\n代码实现:\n\nscala\nimport scala.io.StdIn\n\n// 手机号类\nclass Cq10086(val cell_phone_number: String, val cell_phone_number_friend: String)\n\n// 抽象类\nabstract class CqAbsert {\n def multimedia_message_money(): Unit\n def supplement_money(): Unit\n def message_money(): Unit = {\n println("发送短信成功")\n }\n}\n\n// 充值类\nclass RechargeCq(cell_phone_number: String, cell_phone_number_friend: String) extends CqAbsert {\n override def supplement_money(): Unit = {\n // 判断手机号归属地\n if (cell_phone_number.startsWith("023")) {\n // 本地至少充值20元\n if (cell_phone_number_friend.toInt < 20) {\n println("充值失败,本地至少充值20元")\n } else {\n println("充值成功")\n }\n } else {\n // 外地至少冲值50元\n if (cell_phone_number_friend.toInt < 50) {\n println("充值失败,外地至少充值50元")\n } else {\n println("充值成功")\n }\n }\n }\n\n override def multimedia_message_money(): Unit = {}\n}\n\n// 彩信类\nclass MultimediaMessageCq(cell_phone_number: String, cell_phone_number_friend: String) extends CqAbsert {\n override def supplement_money(): Unit = {}\n\n override def multimedia_message_money(): Unit = {\n // 判断手机号归属地\n if (cell_phone_number.startsWith("023")) {\n println("彩信费用:本地5角")\n } else {\n println("彩信费用:外地1元")\n }\n }\n}\n\n// 测试类\nobject TestCq10086 {\n def main(args: Array[String]): Unit = {\n println("请选择业务类型:1.充值 2.发送短信 3.发送彩信")\n val choice = StdIn.readInt()\n println("请输入本人手机号:")\n val cell_phone_number = StdIn.readLine()\n println("请输入对方手机号:")\n val cell_phone_number_friend = StdIn.readLine()\n\n val cq10086: CqAbsert = choice match {\n case 1 => new RechargeCq(cell_phone_number, cell_phone_number_friend)\n case 2 => new CqAbsert {\n override def multimedia_message_money(): Unit = {}\n\n override def supplement_money(): Unit = {}\n\n override def message_money(): Unit = {\n println("发送短信成功")\n }\n }\n case 3 => new MultimediaMessageCq(cell_phone_number, cell_phone_number_friend)\n case _ => null\n }\n\n cq10086.message_money()\n cq10086.multimedia_message_money()\n cq10086.supplement_money()\n }\n}\n\n\n注意:\n\n1. 为了封装性更好,在测试类中使用抽象类指向实现类,不直接获取实现类的对象。\n2. 要做好相应的判断,如外地充值话费至少50元,如果用户输入的金额小于50元,则充值失败。电话号码为11位,只能输入数字。


原文地址: https://www.cveoy.top/t/topic/pxAJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录