嗖嗖移动业务大厅小项目

package SOSO;

/**
 * CallService
 *
 * @author yaoxinxin
 * @version 1.0
 * @description 打电话接口
 * @date 2022/9/14 11:05
 */
public interface CallService {
    public int call(int minCount,MobileCard card) throws Exception;
}
package SOSO;

import com.sun.org.apache.xpath.internal.operations.String;

import java.io.*;
import java.util.*;

/**
 * CardUtil
 *
 * @author yaoxinxin
 * @version 1.0
 * @description 工具类
 * @date 2022/9/14 11:46
 */
public class CardUtil {
//    卡集合
    private static Map<java.lang.String, MobileCard> cards = new HashMap<java.lang.String, MobileCard>();
//    消费记录集合
    private static Map<java.lang.String, List<ConsumInfo>> consunmIofos = new HashMap<java.lang.String, List<ConsumInfo>>();
//    定义模拟的场景集合
    private List<Scene> scenes = new ArrayList<>();
//
    public static Map<java.lang.String, MobileCard> getCards(){
        return cards;
    }
//
    public static void setCards(Map<java.lang.String ,MobileCard> cards){
        CardUtil.cards = cards;
    }

    public static Map<java.lang.String, List<ConsumInfo>> getConsunmIofos() {
        return consunmIofos;
    }


    //
    //    静态块,用来初始化卡集合
    static{
        cards.put("13298201751",new MobileCard("13298201751","张飞","123456",new TalkPackage(58),100,80,100,10,0));
        cards.put("18657588538",new MobileCard("18657588538","关羽","123456",new NetPackage(3072),100,80,100,10,0));
        cards.put("12345678901",new MobileCard("12345678901","刘备","123456",new SuperPackage(78),100,200,10,10,10));
    }
//    普通初始化块,初始化当前对象时,自动调用(执行构造方法之前执行)
    {
        initScene();
    }
//    初始化场景
    public void initScene(){
        scenes.add(new Scene("通话",90,"问候客户,谁知其如此难缠 通话 90 分钟"));
        scenes.add(new Scene("通话",30,"询问妈妈身体状况 本地通话 30 分钟"));
        scenes.add(new Scene("短信",5,"参与环境保护实施方案问卷调查 发送短信 5 条"));
        scenes.add(new Scene("短信",50,"通知朋友手机换号,发送短信 50 条"));
        scenes.add(new Scene("上网",1024,"和女友微信视频聊天 使用流量 1G"));
        scenes.add(new Scene("上网",2048,"晚上手机在线看韩剧,不留神睡着啦! 使用流量 2G"));
    }
//    根据用户和密码查询用户
    public boolean isExistCard(java.lang.String number, java.lang.String password){
        MobileCard mobileCard = cards.get(number);
        if(mobileCard!= null){
            if(mobileCard.getPassWord().equals(password)){
                return true;
            }
        }
        return false;
    }
//    根据卡号查询卡是否存在
    public boolean isExistCard(java.lang.String num){
        return cards.containsKey(num);
    }
    /**
     * 创建卡号
     * @return
     * 139开头的11位号码
     * 该号码是新号,没有被注册过
     */
    public java.lang.String createNumber(){
        Random random = new Random();
        java.lang.String s = null;
        do{
            int i = random.nextInt(100000000);
            long header = 13900000000L;
            s = header+i+"";
            //System.out.println(s);
        }while(isExistCard(s));
        return s;
    }
//    判断产生的号码是否在数组中
    public boolean isExistInNumbers(java.lang.String number, java.lang.String[] numbers){
        for (int i = 0; i < numbers.length; i++) {
            if (number.equals(numbers[i])){
                return true;
            }
        }
        return false;
    }
//    获得一组新卡号
//    号码之间不重复
    public java.lang.String[] getNewNumbers(int count){
//        新建数组
        java.lang.String[] numbers = new java.lang.String[count];
        java.lang.String number = null;
        for (int i = 0; i < count; i++) {
//            判断该号是否在数组中
            do {
                 number = createNumber();

            }while (isExistInNumbers(number,numbers));

            numbers[i] = number;
        }
        return numbers;
    }
//    注册卡
    public void addCard(MobileCard card){
        cards.put(card.getCardNumber(),card);
    }
//    根据卡号返回套餐
public ServicePackage getPackage(java.lang.String phoneNumber){
    MobileCard mobileCard = cards.get(phoneNumber);
    ServicePackage serPackage = mobileCard.getSerPackage();
    return serPackage;
}
//    根据序号获得套餐
    public ServicePackage getPackage(int number){
        switch (number){
            case 1:
                return new TalkPackage(58);
            case 2:
                return new NetPackage(68);
            case 3:
                return new SuperPackage(78);
        }
        return null;
    }
//    注销卡
    public void delCard(String num){
        cards.remove(num);
    }
//    显示账单
    public void showAmountDetail(java.lang.String number){
        if(!isExistCard(number)){
            System.out.println("该卡号不存在,请重新输入");
        }else {
            MobileCard mobileCard = cards.get(number);
            System.out.println("您的卡号:"+number+"\n当月账单:");
            System.out.println("套餐资费"+mobileCard.getSerPackage().getPrice()+"元\n账户余额:"+(mobileCard.getConsumerAmount()-mobileCard.getMoney()));
        }
    }

    /**
     * 显示套餐余量
     * 套餐中包含的数据是不变的,
     * 消费的数据是记录在卡上的realXXX属性上
     * 套餐余量 = 套餐原始数据 - 卡的实际消费数据
     * @param number
     */
    public void showRemainDetail(java.lang.String number){
//        首先获得卡
        MobileCard mobileCard = cards.get(number);
        if(mobileCard == null){
            System.out.println("该号码没有注册!");
        }else {
//            获得卡的套餐
            ServicePackage serPackage = mobileCard.getSerPackage();
//            每个套餐包含的数据是不同的,需要判断套餐类型
            if(serPackage instanceof SuperPackage){//超人套餐
                SuperPackage superPackage = (SuperPackage) serPackage;
                int talkTime = superPackage.getTalkTime()-mobileCard.getRealTalkTime();
                int smsCount = superPackage.getSmsCount() - mobileCard.getRealSMSCount();
                int flow = superPackage.getFlow() - mobileCard.getRealFlow();
                if (talkTime>0){
                    System.out.println("套餐通话时间剩余"+talkTime+"分钟");
                }else {
                    System.out.println("套餐通话时长剩余不足!");
                }
                if (smsCount>0){
                    System.out.println("套餐剩余信息:"+smsCount+"条");
                }else {
                    System.out.println("信息剩余不足!");
                }
                if(flow>0){
                    System.out.println("套餐剩余流量:"+flow+"M");
                }else {
                    System.out.println("套餐流量不足");
                }
            }else if(serPackage instanceof TalkPackage){//话痨套餐
                TalkPackage talkPackage = (TalkPackage) serPackage;
                int talkTime = talkPackage.getTalkTime()-mobileCard.getRealTalkTime();
                int smsCount = talkPackage.getSmsCount() - mobileCard.getRealSMSCount();
                if (talkTime>0){
                    System.out.println("套餐通话时间剩余"+talkTime+"分钟");
                }else {
                    System.out.println("套餐通话时长剩余不足!");
     
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值