JavaOOP项目 - 嗖嗖移动业务大厅

JavaOOP项目 - 嗖嗖移动业务大厅


项目目录结构

在这里插入图片描述


服务接口

  • 通讯服务接口
package ServicePackage;
//通讯服务
public interface CallService {
    int call(int minCount);
}
  • 短信服务接口
package ServicePackage;
//短信服务
public interface SendService {
    int sendMessage(int count);
}

  • 网络服务接口
package ServicePackage;
//上网服务
public interface NetService {
    int netPlay(int flow);
}

套餐类

  • 基本套餐类
package ServicePackage;
//套餐类
public abstract class ServicePackage implements NetService,CallService,SendService{
    private String type;//套餐类型
    private double price;//资费
    private int flow;//流量
    private int talkTime;//通话时长
    private int smsCount;//短信条数
    int Sjs;//随机数

    public ServicePackage() { }

    public String getType() {
        return type;
    }

    void setType(String type) {
        this.type = type;
    }

    public double getPrice() {
        return price;
    }

    void setPrice(double price) {
        this.price = price;
    }

    public int getFlow() {
        return flow;
    }

    public void setFlow(int flow) {
        this.flow = flow;
    }

    public int getTalkTime() {
        return talkTime;
    }

    public void setTalkTime(int talkTime) {
        this.talkTime = talkTime;
    }

    public int getSmsCount() {
        return smsCount;
    }

    public void setSmsCount(int smsCount) {
        this.smsCount = smsCount;
    }

    public int getSjs() {
        return Sjs;
    }

    public abstract void showInfo();//资费信息

    //生成使用数据
    public void showSjs(){
        Sjs =  (int)((Math.random()*9)+1);
    }

    @Override
    public int call(int minCount) {
        showSjs();
        System.out.println("打了个电话,使用了"+Sjs+"分钟通话时长");
        return minCount - Sjs;//返回使用后的剩余数据
    }

    @Override
    public int netPlay(int flow) {
        showSjs();
        System.out.println("上了个网,使用了"+Sjs+"G流量");
        return flow - Sjs;
    }

    @Override
    public int sendMessage(int count) {
        showSjs();
        System.out.println("发了一手短信,使用了"+Sjs+"条短信");
        return count - Sjs;
    }
}
  • 网虫套餐
package ServicePackage;
//网虫套餐
public class NetPackage extends ServicePackage implements NetService{

    public NetPackage(){
        setType("网虫套餐");//套餐类型
        setFlow(40);//流量
        setPrice(19);//费用
    }

    @Override
    public void showInfo() {
        System.out.println("套餐类型:" + getType());
        System.out.println("上网流量:" + getFlow() + "G/月");
        System.out.println("月租:" + getPrice() + "元/月");
    }

    @Override
    public int netPlay(int flow) {
        showSjs();
        System.out.println("网上冲浪看mm,使用了"+Sjs+"G流量");
        return flow - Sjs;
    }
}
  • 话痨套餐
package ServicePackage;
//话痨套餐
public class TalkPackage extends ServicePackage implements CallService,SendService{

    public TalkPackage() {
        setType("话痨套餐");//套餐类型
        setTalkTime(300);//通话时长
        setSmsCount(100);//短信条数
        setPrice(66);//资费信息
    }

    @Override
    public void showInfo() {
        System.out.println("套餐类型:" + getType());
        System.out.println("通话时长:" + getTalkTime() + "分钟/月");
        System.out.println("短信条数:" + getSmsCount() + "条/月");
        System.out.println("月租:" + getPrice() + "元/月");
    }

    @Override
    public int call(int minCount) {
        showSjs();
        System.out.println("和好老表唠了会嗑,使用了"+Sjs+"分钟通话时间");
        return minCount - Sjs;
    }

    @Override
    public int sendMessage(int count) {
        showSjs();
        System.out.println("给MZ发短信,使用了"+Sjs+"条短信");
        return count - Sjs;
    }
}
  • 超人套餐
package ServicePackage;
//超人套餐
public class SuperPackage extends ServicePackage implements CallService,NetService,SendService{

    public SuperPackage() {
        setType("超人套餐");//套餐类型
        setTalkTime(500);//通话时长
        setSmsCount(200);//短信条数
        setFlow(80);//流量
        setPrice(199);//资费信息
    }

    @Override
    public void showInfo() {
        System.out.println("套餐类型:" + getType());
        System.out.println("通话时长:" + getTalkTime() + "分钟/月");
        System.out.println("短信条数:" + getSmsCount() + "条/月");
        System.out.println("上网流量:" + getFlow() + "G/月");
        System.out.println("月租:" + getPrice() + "元/月");
    }

    @Override
    public int call(int minCount) {
        showSjs();
        System.out.println("和好老表唠了会嗑,使用了"+Sjs+"分钟通话时间");
        return minCount - Sjs;
    }

    @Override
    public int netPlay(int flow) {
        showSjs();
        System.out.println("网上冲浪看抖音,使用了"+Sjs+"G流量");
        return flow - Sjs;
    }

    @Override
    public int sendMessage(int count) {
        showSjs();
        System.out.println("给MZ发短信,使用了"+Sjs+"条短信");
        return count - Sjs;
    }
}

手机卡类

package SosoMgr;

import ServicePackage.ServicePackage;

//手机卡,用户
public class MobileCard {
    private String UserName;//用户名
    private String Password;//用户密码
    private String CardNum;//卡号
    private ServicePackage SerPackage;//套餐
    private double consumAmount;//累计消费金额
    private double money;//余额(可用)
    private int realTalkTime;//语言时长(可用)
    private int realSMSCount;//短信条数(可用)
    private int realFlow;//流量(可用)

    public MobileCard() {}

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String userName) {
        UserName = userName;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getCardNum() {
        return CardNum;
    }

    public void setCardNum(String cardNum) {
        CardNum = cardNum;
    }

    public ServicePackage getSerPackage() {
        return SerPackage;
    }

    public void setSerPackage(ServicePackage serPackage) {
        SerPackage = serPackage;
    }

    public double getConsumAmount() {
        return consumAmount;
    }

    public void setConsumAmount(double consumAmount) {
        this.consumAmount = consumAmount;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public int getRealTalkTime() {
        return realTalkTime;
    }

    public void setRealTalkTime(int realTalkTime) {
        this.realTalkTime = realTalkTime;
    }

    public int getRealSMSCount() {
        return realSMSCount;
    }

    public void setRealSMSCount(int realSMSCount) {
        this.realSMSCount = realSMSCount;
    }

    public int getRealFlow() {
        return realFlow;
    }

    public void setRealFlow(int realFlow) {
        this.realFlow = realFlow;
    }
}

消费信息

package SosoMgr;

//消费信息
public class ConsumInfo {
    private String cardNumber;//卡号
    private String type;//套餐类型
    private String consumData;//消费数据

    public ConsumInfo() {}

    public ConsumInfo(String cardNumber, String type, String consumData) {
        this.cardNumber = cardNumber;
        this.type = type;
        this.consumData = consumData;
    }

    public String getCardNumber() {
        return cardNumber;
    }

    public void setCardNumber(String cardNumber) {
        this.cardNumber = cardNumber;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getConsumData() {
        return consumData;
    }

    public void setConsumData(String consumData) {
        this.consumData = consumData;
    }
}

注册系统

package SosoMgr;

import ServicePackage.ServicePackage;

import java.util.*;

//注册系统
public class RegistSystem {
    private String CardNumber;//所选卡号
    private ServicePackage tcSP;//所选套餐
    private String UserName;//用户名
    private String Password;//用户密码
    private double money;//预存话费

    private RegistSystem(){}

    static MobileCard RegistSys(List<ServicePackage> SerPack){
        Scanner SR = CardUtil.SR;
        RegistSystem rs = new RegistSystem();
        System.out.println("******************可选择卡号******************");
        List<String> cards = new ArrayList<>(rs.cardSJ());//生成可用卡号
        for(int i = 0;i < cards.size();i++){//遍历可用卡号集
            System.out.print((i+1)+"、"+cards.get(i)+"\t");//输出可用卡号
            if((i+1)%3==0){//每打印三次后换行
                System.out.print("\n");
            }
        }
        do{
            String Z_card = "[1-9]";
            System.out.print("请选择卡号(输入1-9的序号):");
            String xzCard = SR.next();//选择卡号序号
            if(xzCard.matches(Z_card)){
                int xzCardI = Integer.parseInt(xzCard);
                rs.CardNumber = cards.get(xzCardI-1);//获取对应序号的号码
                break;
            }else{
                System.out.println("输入错误,无此选项!");
            }
        }while(true);

        System.out.println("******************可选套餐******************");
        for(int i = 0;i < SerPack.size();i++){//遍历套餐集
            System.out.print((i+1)+"、"+SerPack.get(i).getType()+"\n");
        }
        do{
            String Z_card = "[1-"+ SerPack.size() +"]";
            System.out.print("请选择套餐:");
            String xzTaoCan = SR.next();//选择套餐
            if(xzTaoCan.matches(Z_card)){
                int tcI = Integer.parseInt(xzTaoCan);
                rs.tcSP = SerPack.get(tcI-1);//获取对应序号的套餐
                break;
            }else{
                System.out.println("输入错误,无此选项!");
            }
        }while(true);
        System.out.println("-----------------------------------------------");
        do{
            System.out.print("请设置姓名:");
            String Z_Name = "[\\D&&\\S]{2,6}";
            String userName = SR.next();//设置名字
            if(userName.matches(Z_Name)){
                rs.UserName = userName;//保存名字
                break;
            }else{
                System.out.println("名字不符合规范!\n名字中不能含有数字,并大于2个不大于6个字符");
            }
        }while(true);

        do{
            System.out.print("请设置密码:");
            String Z_password = "\\S{6,16}";
            String password = SR.next();//设置密码
            if(password.matches(Z_password)){
                rs.Password = password;//保存密码
                break;
            }else{
                System.out.println("密码不符合规范!\n密码要大于6位不大于16位");
            }
        }while(true);

        do{
            System.out.print("预存话费金额:");
            String Z_money = "\\d*";
            String S_money = SR.next();//输入存入话费
            if(S_money.matches(Z_money)){
                double mon = Double.parseDouble(S_money);
                if(mon > rs.tcSP.getPrice()){//判断存入话费是否大于所选套餐资费
                    rs.money = mon;//保存存入话费
                    break;
                }else{
                    System.out.println("存入的话费必须大于套餐月租!");
                }
            }else{
                System.out.println("输入错误!请输入数字!");
            }
        }while(true);

        MobileCard mCard = rs.caedSet();//制作手机卡,并接收制作好的手机卡
        System.out.println("注册成功!\n卡号:"+mCard.getCardNum()
                +" 、用户名:"+mCard.getUserName()
                +" 、余额(已扣除月租):"+mCard.getMoney());//打印客户信息
        rs.tcSP.showInfo();//打印套餐信息
        return mCard;//返回制作完成的手机卡
    }

    //手机卡制作系统,将数据刻录入手机卡,并返回制作好的手机卡
    private MobileCard caedSet(){
        MobileCard mCard = new MobileCard();//获取初始(空白)手机卡
        mCard.setCardNum(CardNumber);//给手机卡设置号码
        mCard.setUserName(UserName);//给手机卡设置名字
        mCard.setPassword(Password);//给手机卡设置密码
        mCard.setSerPackage(tcSP);//给手机卡设置套餐
        //设置手机卡初始余额,扣除套餐月租
        double price = mCard.getSerPackage().getPrice();//获取手机卡套餐月租
        mCard.setMoney(money-price);//将月租扣除,并设置余额
        mCard.setConsumAmount(price);//记录已扣除费用
        mCard.setRealTalkTime(mCard.getSerPackage().getTalkTime());//设置手机卡初始语音时长
        mCard.setRealSMSCount(mCard.getSerPackage().getSmsCount());//设置手机卡初始短信条数
        mCard.setRealFlow(mCard.getSerPackage().getFlow());//设置手机卡初始流量

        //返回用户信息
        return mCard;
    }

    //卡号生成系统
    private Set cardSJ(){
        CardUtil cu = CardUtil.cuObject();//工具类对象
        Set<String> Cards = new HashSet<>();//可用卡号集
        for(int a = 0;a<9;a++){//生成9个可用号码
            String cardnum = "199";//初始卡号开头
            for(int i = 0;i<8;i++){//随机生成8位整数
                cardnum += (int)(Math.random()*10);
            }
            boolean ja = false;
            if(!cu.cards.containsKey(cardnum)){//判断新生成的手机号是否已存在
                ja = Cards.add(cardnum);//将手机号添加进集合
            }
            if(!ja){//若手机号添加失败,则重新进行添加
                a--;
            }
        }
        return Cards;
    }
}

工具类

package SosoMgr;

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

//工具类
public class CardUtil {
    public static Scanner SR = new Scanner(System.in);
    List<ServicePackage> SerPack = new ArrayList<>();//套餐集
    Map<String,MobileCard> cards = new HashMap<>();//手机卡集、手机号 对应 手机卡
    Map<String,List<ConsumInfo>> ConsumInfos = new HashMap<>();//消费信息集、手机号 对应 消费信息
    {
        //将套餐存入套餐集
        SerPack.add(new NetPackage());
        SerPack.add(new TalkPackage());
        SerPack.add(new SuperPackage());
    }
    private CardUtil(){}
    private static CardUtil cu = new CardUtil();//工具类对象
    public static CardUtil cuObject(){
        return cu;//返回工具类对象
    }

    //注册,将手机卡存入手机卡集
    void registCard(){
        MobileCard mCard = RegistSystem.RegistSys(SerPack);//启动注册系统,传入套餐集,并接收制作好的手机卡
        cards.put(mCard.getCardNum(),mCard);//将手机号与对应的手机卡存入集合
        //给手机号绑定消费记录集
        List<ConsumInfo> consumInfos = new ArrayList<>();//消费信息集
        ConsumInfos.put(mCard.getCardNum(),consumInfos);//将手机号与与消费信息集存入集合
    }

    //登录
    MobileCard LoginMenu(String monbileNumber){//传入手机号
        boolean Pcn = cards.containsKey(monbileNumber);//判断手机卡集中是否存在此手机号
        if(Pcn){
            MobileCard card = cards.get(monbileNumber);//获取指定手机号对应的手机卡
            System.out.print("请输入密码:");
            String passwd = SR.next();
            if(card.getPassword().equals(passwd)){
                return card;//密码输入正确后返回对应手机卡
            }else{
                System.out.println("密码错误!");
            }
        }else{
            System.out.println("此号码不存在!");
        }
        return null;
    }

    //充值话费
    public void InputMoney(String monbileNumber){
        if(cards.containsKey(monbileNumber)){//判断手机卡集中是否存在此手机号
            System.out.print("请输入充值金额:");
            double inputMoney = 0;
            try {
                Scanner s = new Scanner(System.in);
                inputMoney = s.nextDouble();
                //s.close();
            }catch(Exception e){}
            if(inputMoney > 0){
                MobileCard card = cards.get(monbileNumber);//获取指定手机号对应的手机卡
                card.setMoney(card.getMoney() + inputMoney);//将充值金额加入余额
                System.out.println("卡号:"+monbileNumber+"的用户,充值成功!\n余额:"+card.getMoney());
            }else{
                System.out.println("充值失败!");
            }
        }else{
            System.out.println("此号码不存在!");
        }
    }

    //使用嗖嗖
    public void RunSoso(String monbileNumber){
        //调用功能传入剩余用量,使用功能后扣除使用量,返回剩余用量
        boolean Pcn = cards.containsKey(monbileNumber);//判断手机卡集中是否存在此手机号
        if(Pcn){
            MobileCard card = cards.get(monbileNumber);//获取传入手机号对应手机卡
            ServicePackage SerPac = card.getSerPackage();//获取手机卡的套餐
            if(card.getMoney() > 0){//判断是否还有余额
                //记录消费信息
                List<ConsumInfo> coninf = ConsumInfos.get(monbileNumber);//获取对应手机号的消费记录集
                ConsumInfo Con = new ConsumInfo(monbileNumber,SerPac.getType(),"");
                coninf.add(Con);
                System.out.println("\t1.拨打电话");
                System.out.println("\t2.发送短信");
                System.out.println("\t3.网上冲浪");
                System.out.println("**********************************");
                System.out.print("请输入:");
                String xzSo = SR.next();
                switch(xzSo){
                    case "1":
                        int TalkTime = SerPac.call(card.getRealTalkTime());//调用通话方法,传入可用通话时长,返回使用后的时长
                        int T = SerPac.getSjs();//消耗的时长
                        if(TalkTime < 0){//判断是否还有剩余用量
                            double M = T * 0.2;//用超出的时长 乘以 每次超出1的费用 得出超出的费用
                            card.setConsumAmount(card.getConsumAmount() + M);//记录消费金额
                            card.setMoney(card.getMoney() - M);//用原有的钱扣除使用的钱,得出余额
                        }
                        card.setRealTalkTime(TalkTime);//更改使用后的时长

                        Con.setConsumData("号码:"+Con.getCardNumber()+" 套餐:"+Con.getType()+" 使用了电话功能 使用时长:"+T+"分钟");
                        break;
                    case "2":
                        int SMSCount = SerPac.sendMessage(card.getRealSMSCount());
                        int S = SerPac.getSjs();
                        if(SMSCount < 0){
                            double M = S * 0.1;
                            card.setConsumAmount(card.getConsumAmount() + M);//记录消费金额
                            card.setMoney(card.getMoney() - M);
                        }
                        card.setRealSMSCount(SMSCount);

                        Con.setConsumData("号码:"+Con.getCardNumber()+" 套餐:"+Con.getType()+" 使用了短信功能 使用条数:"+S+"条");
                        break;
                    case "3":
                        int Flow = SerPac.netPlay(card.getRealFlow());
                        int F = SerPac.getSjs();
                        if(Flow < 0){
                            double M = F * 3;
                            card.setConsumAmount(card.getConsumAmount() + M);//记录消费金额
                            card.setMoney(card.getMoney() - M);
                        }
                        card.setRealFlow(Flow);

                        Con.setConsumData("号码:"+Con.getCardNumber()+" 套餐:"+Con.getType()+" 使用了上网功能 使用流量:"+F+"G");
                        break;
                    default:
                        System.out.println("返回上一级...");
                }
            }else{
                System.out.println("余额不足!请尽快缴费!");
            }
        }else{
            System.out.println("此号码不存在!");
        }
    }

    //打印消费详单
    public void OutXF(String cardNum){
        List<ConsumInfo> Conl = ConsumInfos.get(cardNum);//获取手机号对应的套餐集
        if(!Conl.isEmpty()){
            File fi = new File("消费记录");
            fi.mkdirs();
            File f = new File(fi , cardNum +"消费记录单.txt");
            try {
                Writer w = new FileWriter(f);
                for(ConsumInfo i : Conl){
                    w.write(i.getConsumData()+"\n");
                    w.flush();//强制让输出流输出数据
                }
                System.out.println("打印成功,请在消费记录目录下查看详单");
                w.close();
            } catch (IOException e) {
                System.out.println("出错,打印失败!");
            }
        }else{
            System.out.println("暂无消费记录,无法打印!");
        }
    }

    //资费说明
    public void PriceInfo(){
        System.out.println("\n*****************资费说明*****************");
        for(ServicePackage ser : SerPack){
            ser.showInfo();
            System.out.println("-----------------------");
        }
        System.out.println("超出套餐计费:");
        System.out.println("通话时长:0.2元/分钟");
        System.out.println("短信条数:0.1元/条");
        System.out.println("上网流量:3元/G");
    }

    //手机号判断
    public Object[] cardNumIf(){
        Object[] StrBoo = new Object[2];//Object类型数组,储存手机号与布尔值
        String Z_cardNum = "[0-9]{11}";//11位并只能为0-9中的数字
        System.out.print("请输入手机卡号:");
        String cardNum = SR.next();
        if(cardNum.matches(Z_cardNum)){
            StrBoo[0] = cardNum;//存入手机号
            StrBoo[1] = true;
        }else{
            StrBoo[0] = "手机号必须为11位整数";
            StrBoo[1] = false;
        }
        return StrBoo;
    }
}

业务大厅

package SosoMgr;

import ServicePackage.ServicePackage;

import java.util.Scanner;

//嗖嗖移动业务大厅
public class SosoMgr {
    Scanner SR = CardUtil.SR;
    CardUtil cu = CardUtil.cuObject();//工具类对象
    public static void main(String[] args) {
        SosoMgr sm = new SosoMgr();
        boolean FH_SouYie = false;//用于判断是否返回大厅首页
        do{
            FH_SouYie = sm.mainMenu();//启动主菜单
        }while(FH_SouYie);
        sm.SR.close();
    }

    //主菜单
    private boolean mainMenu() {
        System.out.println("\n******************欢迎使用嗖嗖移动业务大厅******************");
        System.out.println("\t1.用户登录");
        System.out.println("\t2.用户注册");
        System.out.println("\t3.使用嗖嗖");
        System.out.println("\t4.话费充值");
        System.out.println("\t5.资费说明");
        System.out.println("\t6.退出系统");
        System.out.println("*********************************************************");
        System.out.print("请选择:");
        String SY_XuanZe = SR.next();
        //首页选择
        switch (SY_XuanZe){
            case "1"://用户登录
                Object[] StrBoo = cu.cardNumIf();
                String Card_Ts = (String)StrBoo[0];
                boolean bool = (boolean)StrBoo[1];
                if(bool){
                    MobileCard card = cu.LoginMenu(Card_Ts);
                    if(card != null){
                        cardMenu(card);
                    }
                }else{
                    System.out.println(Card_Ts);
                }
                return true;
            case "2"://用户注册
                cu.registCard();//调用工具类中注册系统
                return true;
            case "3"://使用嗖嗖
                System.out.println("\n*****************使用嗖嗖*****************");
                Object[] StrBoo3 = cu.cardNumIf();
                String Card_Ts3 = (String)StrBoo3[0];
                boolean bool3 = (boolean)StrBoo3[1];
                if(bool3){
                    cu.RunSoso(Card_Ts3);
                }else{
                    System.out.println(Card_Ts3);
                }
                return true;
            case "4"://话费充值
                Object[] StrBoo4 = cu.cardNumIf();
                String Card_Ts4 = (String)StrBoo4[0];
                boolean bool4 = (boolean)StrBoo4[1];
                if(bool4){
                    cu.InputMoney(Card_Ts4);
                }else{
                    System.out.println(Card_Ts4);
                }
                return true;
            case "5"://资费说明
                cu.PriceInfo();
                return true;
            case "6"://退出系统
                System.out.println("感谢您使用嗖嗖移动业务");
                return false;
            default:
                System.out.println("无此选项!");
                return true;
        }
    }

    //登录菜单
    private void cardMenu(MobileCard card){
        boolean xzPD = false;
        String cardNum = card.getCardNum();//手机号
        String Uname = card.getUserName();//用户名
        do{
            System.out.println("*******嗖嗖移动用户菜单*******");
            System.out.println("\t1.本月账单查询");
            System.out.println("\t2.套餐余量查询");
            System.out.println("\t3.打印消费详单");
            System.out.println("\t4.套餐更变");
            System.out.println("\t5.办理退网");
            System.out.println("*****************************");
            System.out.print("请选择:");
            String loginXZ = SR.next();
            switch(loginXZ){
                case "1":
                    System.out.println("******本月账单查询******");
                    System.out.println("卡号:" + cardNum + "的用户:" + Uname + "你好!");
                    System.out.println("当月账单:");
                    System.out.println("\t套餐资费:" + card.getSerPackage().getPrice() + "元");
                    System.out.println("\t累计消费:" + Double.valueOf(String.format("%.1f" , card.getConsumAmount())) + "元");
                    System.out.println("\t账户余额:" + Double.valueOf(String.format("%.1f",card.getMoney())) + "元");
                    xzPD = true;
                    break;
                case "2":
                    System.out.println("******套餐余量查询******");
                    System.out.println("卡号:" + cardNum + "的用户:" + Uname + "你好!");
                    System.out.println("套餐内剩余(负数代表超出):");
                    System.out.println("\t通话时长:" + card.getRealTalkTime() + "分钟");
                    System.out.println("\t短信条数:" + card.getRealSMSCount() + "条");
                    System.out.println("\t可用流量:" + card.getRealFlow() + "G");
                    xzPD = true;
                    break;
                case "3":
                    System.out.println("******打印消费详单******");
                    cu.OutXF(cardNum);
                    xzPD = true;
                    break;
                case "4":
                    System.out.println("******套餐更变******");
                    for(int i = 0;i<cu.SerPack.size();i++){//遍历套餐集
                        System.out.print((i+1)+"、"+cu.SerPack.get(i).getType()+"  ");
                    }
                    System.out.println("\n********************");
                    System.out.print("请选择:");
                    String Z_card = "[1-"+ cu.SerPack.size() +"]";
                    String xzGBs = SR.next();
                    if(xzGBs.matches(Z_card)){
                        int xzGB = Integer.parseInt(xzGBs);
                        String YcardT = card.getSerPackage().getType();//获取现套餐类型
                        ServicePackage SerPac = cu.SerPack.get(xzGB-1);//获取所选套餐
                        if(card.getMoney() >= SerPac.getPrice()){//判断当前手机卡余额,是否可抵扣要更换套餐的月租
                            card.setSerPackage(SerPac);//更改套餐
                            card.setRealTalkTime((card.getRealTalkTime()<0?0:card.getRealTalkTime()) + card.getSerPackage().getTalkTime());//加入更改套餐的语音时长
                            card.setRealSMSCount((card.getRealSMSCount()<0?0:card.getRealSMSCount()) + card.getSerPackage().getSmsCount());//加入更改套餐的短信条数
                            card.setRealFlow((card.getRealFlow()<0?0:card.getRealFlow()) + card.getSerPackage().getFlow());//加入更改套餐的流量
                            card.setMoney(card.getMoney() - card.getSerPackage().getPrice());//扣除更改套餐的月租
                            System.out.println("更变套餐成功!" + YcardT + " --> " + card.getSerPackage().getType());
                        }else{
                            System.out.println("套餐更变失败!可用余额不足以抵扣月租");
                        }
                    }else{
                        System.out.println("无此套餐!");
                    }
                    xzPD = true;
                    break;
                case "5":
                    System.out.println("******办理退网******");
                    cu.cards.remove(cardNum);//删除指定手机号与对应手机卡
                    System.out.println("卡号:"+cardNum+"的用户,办理退网成功!\n谢谢使用");
                    xzPD = false;
                    break;
                default:
                    System.out.println("返回上级菜单...");
                    xzPD = false;
            }
        }while(xzPD);
    }
}
  • 18
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值