重庆10086手机话费充值系统开发需求分析 - 使用Scala语言实现
{"title":"需求分析","content":"\n重庆10086手机话费充值,及业务描述,充值时外地卡至少充值50元,本地至少20元,发送短信全国一角每条,彩信本地5角,外地一块每条,如果不符合要求不能进行充值\n\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语言\n\n内容:需求分析:\n1. 创建一个手机号类Cq10086,包含本人手机号和对方手机号的属性,并实现get和set方法。\n2. 创建一个抽象类CqAbstract,包含发送短信、发送彩信和充值话费的方法。发送短信和发送彩信的费用是固定的,而充值话费的费用根据不同的地区和金额而定,所以这两个方法需要在子类中实现。\n3. 创建两个子类,分别实现发送短信和发送彩信的方法,并根据不同的地区和金额进行费用计算。\n4. 创建一个测试类,接收用户选择的业务类型,并根据用户选择调用相应的方法进行操作。\n\n思路分析:\n1. 创建手机号类Cq10086,包含本人手机号和对方手机号的属性,并实现get和set方法。\n2. 创建一个抽象类CqAbstract,包含发送短信、发送彩信和充值话费的方法。发送短信和发送彩信的费用是固定的,而充值话费的费用根据不同的地区和金额而定,所以这两个方法需要在子类中实现。\n3. 创建一个发送短信的子类CqMessage,实现发送短信的方法,费用为固定值。\n4. 创建一个发送彩信的子类CqMultimediaMessage,实现发送彩信的方法,根据不同的地区和金额进行费用计算。\n5. 创建一个充值话费的子类CqRecharge,实现充值话费的方法,根据不同的地区和金额进行费用计算,并判断是否符合要求。\n6. 创建一个测试类CqTest,接收用户选择的业务类型,并根据用户选择调用相应的方法进行操作。\n\n代码实现:\nscala\n// 手机号类\nclass Cq10086 {\n private var selfPhoneNumber: String = _\n private var friendPhoneNumber: String = _\n\n def getSelfPhoneNumber: String = selfPhoneNumber\n\n def setSelfPhoneNumber(phoneNumber: String): Unit = selfPhoneNumber = phoneNumber\n\n def getFriendPhoneNumber: String = friendPhoneNumber\n\n def setFriendPhoneNumber(phoneNumber: String): Unit = friendPhoneNumber = phoneNumber\n}\n\n// 抽象类\nabstract class CqAbstract {\n def sendMessage(): Unit\n\n def sendMultimediaMessage(): Unit\n\n def recharge(): Unit\n}\n\n// 发送短信子类\nclass CqMessage extends CqAbstract {\n override def sendMessage(): Unit = {\n println("发送短信")\n }\n\n override def sendMultimediaMessage(): Unit = {}\n\n override def recharge(): Unit = {}\n}\n\n// 发送彩信子类\nclass CqMultimediaMessage extends CqAbstract {\n override def sendMessage(): Unit = {}\n\n override def sendMultimediaMessage(): Unit = {\n println("发送彩信")\n }\n\n override def recharge(): Unit = {}\n}\n\n// 充值话费子类\nclass CqRecharge extends CqAbstract {\n override def sendMessage(): Unit = {}\n\n override def sendMultimediaMessage(): Unit = {}\n\n override def recharge(): Unit = {\n println("充值话费")\n }\n}\n\n// 测试类\nobject CqTest {\n def main(args: Array[String]): Unit = {\n val cq10086 = new Cq10086()\n val choice = scala.io.StdIn.readInt()\n choice match {\n case 0 => // 充值\n val recharge = new CqRecharge()\n recharge.recharge()\n case 1 => // 发送短信\n val message = new CqMessage()\n message.sendMessage()\n case 2 => // 发送彩信\n val multimediaMessage = new CqMultimediaMessage()\n multimediaMessage.sendMultimediaMessage()\n case _ => println("无效选择")\n }\n }\n}\n\n\n注:\n1. 为了简化代码,只实现了发送短信、发送彩信和充值话费三种业务。\n2. 实际项目中,可能需要更多的业务和相关判断,需要根据具体需求进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/pwyU 著作权归作者所有。请勿转载和采集!