嗖嗖移动大厅项目(源码+详解)

该项目涉及5G通信,使用Java编程语言,并在Eclipse环境中开发。主要包含ConsumInfo类、MobileCard类、NetPackage接口、NetService接口、ServicePackage类、SupPackage类以及Mainnume类等核心组件,详细解释了移动大厅的功能实现。
摘要由CSDN通过智能技术生成
package gongJu;

import shiTi.*;
import shiTi.CallService;
import shiTi.NetService;
import shiTi.SendService;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

import java.util.*;


public class CardUtil {
    private static Map<String, MobileCard> cards=new HashMap<>();

    private static Map<String, List<ConsumInfo>> consumInfos=new HashMap<>();
    private List<Scene> scenes = new ArrayList<>();
    Scanner sc=new Scanner(System.in);

    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("上网", 90, "跟女朋友视频聊天两个小时了"));
        scenes.add(new Scene("上网", 80, "看游戏直播四个小时15G"));
    }

    public static void init(){
        MobileCard card1=new MobileCard("13901234567", "小陈", "123456", new TalkPackage(), 58,30,600,30,0 );
        MobileCard card2=new MobileCard("13908765431", "小许", "987654", new NetPackage(), 68,200,0,0,0);
        MobileCard card3=new MobileCard("13092322791", "小薛", "123123", new SuperPackage(), 78,300,0,0,0);
        cards.put(card1.getCardNumber(),card1);
        cards.put(card2.getCardNumber(),card2);
        cards.put(card3.getCardNumber(),card3);

        //卡1消费记录
        List<ConsumInfo> c1= new ArrayList<>();
        c1.add(new ConsumInfo(card1.getCardNumber(),"通话",100));
        card1.setRealTalkTime(card1.getRealTalkTime()+100);
        consumInfos.put(card1.getCardNumber(),c1);
        //卡2消费记录
        List<ConsumInfo> c2= new ArrayList<>();
        c2.add(new ConsumInfo(card2.getCardNumber(),"上网",1024));
        card2.setRealFlow(card2.getRealFlow()+1024);
        consumInfos.put(card2.getCardNumber(),c2);
        //消费记录卡3
        List<ConsumInfo> c3= new ArrayList<>();
        c3.add(new ConsumInfo(card3.getCardNumber(),"通话",100));
        c3.add(new ConsumInfo(card3.getCardNumber(),"上网",1024));
        c3.add(new ConsumInfo(card3.getCardNumber(),"发短信",20));
        card3.setRealTalkTime(card3.getRealTalkTime()+100);
        card3.setRealFlow(card3.getRealFlow()+1024);
        card3.setRealSMSCount(card3.getRealSMSCount()+20);
        consumInfos.put(card3.getCardNumber(),c3);
    }
    //注册卡
    public void addCard(MobileCard card1){
        MobileCard card=new MobileCard();
        ServicePackage sp = null;
        String counts[]=getNewNumbers(9);
        System.out.println("************可选择的卡号**************");
        for (int i = 0; i < counts.length; i++) {
            System.out.print((i+1)+"."+counts[i]+"\t\t");
            if((i+1)%3==0){
                System.out.println();
            }
        }
        System.out.print("请选择卡号:(1~9)");
        int cardNum=sc.nextInt();
        if(cardNum>=0&&cardNum<10){
            card.setCardNumber(counts[cardNum - 1]);
        }
        while ((cardNum-1)>=counts.length||(cardNum-1)<0){
            System.out.print("请输入正确的序号:");
            cardNum=sc.nextInt();
        }
        System.out.println("请选择套餐:1.话痨套餐(58元/月) 2.网虫套餐(68元/月) 3.超人套餐(78元/月)(请输入序号):");
        int choice=sc.nextInt();
        while (choice<=0||choice>3){
            System.out.println("请输入正确的套餐序号");
            choice=sc.nextInt();
        }
        switch (choice){
            case 1:
                sp=new TalkPackage();
                break;
            case 2:
                sp=new NetPackage();
                break;
            case 3:
                sp=new SuperPackage();
                break;
            default:
                break;
        }
        card.setSerPackage(sp);
        System.out.print("请输入姓名:");
        String name=sc.next();
        card.setUserName(name);
        System.out.print("请输入密码:");
        String password=sc.next();
        card.setPassWord(password);
        System.out.print("请输入预存花费金额:");
        double money=sc.nextDouble();
        card.setMoney(money);
        System.out.println(card);
//        card=new MobileCard(counts[cardNum - 1], name, password,sp, ( money-sp.getPrice()));
        while(card.getMoney()<0){
            System.out.print("您预存的花费金额不足以支付本月固定套餐资费,请重新充值:");
            money=sc.nextDouble();
            card.setMoney(money-sp.getPrice());
        }
        System.out.println("注册成功!");
        cards.put(card.getCardNumber(),card);
        card.showMeg();

//        System.out.println(cards.put(card.getCardNumber(),card));


    }


    /**
     * 判断手机号
     * @param
     * @return
     */
    public boolean isExistCard(String number){
        Set<String> numbers = cards.keySet();
        Iterator<String> it = numbers.iterator();
        boolean flag=false;
        while (it.hasNext()){
            String searchNum = it.next();
            if(searchNum.equals(number)){
                flag=true;
            }
        }
        return flag;
    }
    //创建手机号的
    public String createNumber(){
        String fixedNum="188";
        String cardNumber="";
        Random rand=new Random();
        String randNumber="";
        for (int i = 0; i < 8; i++) {
            randNumber+=rand.nextInt(10);
        }
        cardNumber=fixedNum+randNumber;
        return cardNumber;
    }


    public String[] getNewNumbers(int count){
        String[] numbers=new String[count];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i]=createNumber();
            if(isExistCard(numbers[i])){
                i--;
            }
            for (int j = 0; j < i; j++) {
                if(numbers[i].equals(numbers[j])){
                    i--;
                    break;
                }
            }
        }
        return numbers;
    }

    //验证账号密码
    public boolean isExistCard(String number,String passWord){
        Set<String> numbers = cards.keySet();
        Iterator<String> it = numbers.iterator();
        boolean flag=false;
        while (it.hasNext()){
            String searchNum = it.next();
            if(searchNum.equals(number) && (cards.get(searchNum)).getPassWord().equals(passWord)){
                flag=true;
            }

        }
        return flag;

    }

//充值
    public void chargeMoney(String number,double money){
        if(cards.get(number)!=null){
            if(money>=5
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉心i929

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值