重庆10086手机话费充值系统设计与实现(Scala代码示例)
{"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技术要求:使用控制台输入。\n使用scala语言写一个代码内容:以下是使用Scala语言编写的代码示例:\n\nscala\nimport scala.io.StdIn\n\n// 手机号类\nclass Cq10086(val cellPhoneNumber: String, val cellPhoneNumberFriend: String) {}\n\n// 抽象类\nabstract class CqAbstract {\n def sendMultimediaMessage(multimediaMessageMoney: Double): Unit\n def supplementMoney(supplementMoney: Double): Unit\n def sendMessage(): Unit\n}\n\n// 实现类\nclass CqImpl extends CqAbstract {\n override def sendMultimediaMessage(multimediaMessageMoney: Double): Unit = {\n println(s"发送彩信,本地扣除彩信费 $multimediaMessageMoney 元")\n }\n \n override def supplementMoney(supplementMoney: Double): Unit = {\n println(s"进行充值,冲值金额 $supplementMoney 元")\n }\n \n override def sendMessage(): Unit = {\n println("发送短信")\n }\n}\n\n// 测试类\nobject CqTest {\n def main(args: Array[String]): Unit = {\n val cqAbstract: CqAbstract = new CqImpl()\n \n println("请选择业务类型:")\n println("0. 话费充值")\n println("1. 发送短信")\n println("2. 发送彩信")\n val choice = StdIn.readInt()\n \n choice match {\n case 0 =>\n println("请输入手机号码:")\n val phoneNumber = StdIn.readLine().trim\n if (phoneNumber.matches("[0-9]{11}")) {\n println("请输入充值金额:")\n val money = StdIn.readDouble()\n if (money >= 50) {\n cqAbstract.supplementMoney(money)\n } else {\n println("外地手机号至少冲值50元")\n }\n } else {\n println("手机号码格式不正确")\n }\n case 1 =>\n cqAbstract.sendMessage()\n case 2 =>\n println("请输入手机号码:")\n val phoneNumber = StdIn.readLine().trim\n if (phoneNumber.matches("[0-9]{11}")) {\n println("请输入彩信费用:")\n val money = StdIn.readDouble()\n if (money >= 1) {\n cqAbstract.sendMultimediaMessage(money)\n } else {\n println("外地手机号彩信费用至少1元")\n }\n } else {\n println("手机号码格式不正确")\n }\n case _ =>\n println("请选择正确的业务类型")\n }\n }\n}\n\n\n使用控制台输入选择业务类型和输入相关参数进行测试。
原文地址: https://www.cveoy.top/t/topic/pwIh 著作权归作者所有。请勿转载和采集!