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

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
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Java嗖嗖移动业务大厅项目中,序列化操作是指将对象转换为字节流的过程,以便在网络传输或存储到磁盘中使用。该项目中可能会用到序列化的地方有以下几个方面: 1. 网络传输:项目中可能需要将一些对象通过网络传输给其他服务或客户端。这时候可以使用序列化将对象转换为字节流,在网络传输过程中传输字节流,接收方再将字节流反序列化为对象进行处理。 2. 缓存:为了提高系统的性能,项目中可能会使用缓存技术来存储一些频繁读取的数据。这时候可以将这些数据对象序列化后存储到缓存中,下次需要读取的时候直接反序列化获取对象,避免了频繁的数据库读取操作。 3. 持久化:项目中可能会需要将对象永久性地存储到磁盘中,以保证数据的持久性。这时候可以将对象序列化后写入文件,下次需要读取的时候再将文件反序列化为对象进行操作。 在Java中,序列化操作可以通过实现Serializable接口来实现。该接口是一个标记接口,只需要在要序列化的类中加入implements Serializable即可。同时,需要注意的是需要使用ObjectOutputStream类将对象序列化为字节流,使用ObjectInputStream类将字节流反序列化为对象。 总结起来,Java嗖嗖移动业务大厅项目中的序列化操作主要用于网络传输、缓存、持久化等场景。通过实现Serializable接口,并使用相关的类进行序列化和反序列化操作,可以方便地实现对象的转换和传输,提高系统的性能和数据的持久化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凉心i929

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

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

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

打赏作者

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

抵扣说明:

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

余额充值