嗖嗖移动业务大厅

嗖嗖移动业务大厅提供用户登录、注册、话费充值、账单查询等功能。用户登录后可进入二级菜单,包括套餐变更、打印消费详情等。项目涉及套餐费用、超出费用计算规则,并涵盖多种业务场景,对数据库操作和异常处理有一定要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.项目背景

2.项目介绍及代码

2.1 用户登录

2.2 用户注册

2.3 使用嗖嗖

2.4 话费充值

2.5 资费说明

2.6 退出系统

2.7 本月账单查询

2.8 套餐余量查询

2.9 打印消费详情

2.10 套餐变更

2.11 办理退网

3.项目重点模块及代码

4.项目中的问题及解决方案

5.项目的收获

6.建议采纳


1.项目背景

        中国移动,中国联通,中国电信是国内3大通信运营商,每个运营商都提供了不同的品牌套餐来应对不同的用户群,比如北京移动主要有全球通,神州行,动感地带等3大品牌套餐,每种套餐的内容和费用不同,嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各种套餐所包含的服务内容及费用如下列表:

品牌套餐 话痨套餐 网虫套餐 超人套餐
通话时长(分钟) 600 0 300
上网流量(GB) 0 20 10
短信条数(条) 100 0 50
费用(元/月) 58 68 78

如实际使用中超出套餐内包含的通话时长,短信条数和上网流量,则按以下规则计费:

1.超出的通话:0.2/

2.超出的短信:0.1/

3.超出的上网流量:0.1/MB

2.项目介绍及代码

        嗖嗖移动业务大厅包括用户登录、用户注册、使用嗖嗖、话费充值、资费说明、退出系统、本月账单查询、套餐余量查询、打印消费详情、套餐变更、办理退网十一个基本功能。其分为两个菜单,一个是主菜单,一个为二级子菜单。主菜单包括用户登录、用户注册、使用嗖嗖、话费充值、资费说明、退出系统。用户输入正确的账号和密码登录后,进入二级子菜单,二级子菜单包括本月账单查询、套餐余量查询、打印消费详单、套餐变更、办理退网。

2.1 用户登录

(1)功能介绍

输入正确的手机号码和密码进入二级菜单列表;

(2)代码

private static void doLogin(){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入手机号:");
        String cardNum = input.nextLine();
        System.out.println("请输入密码:");
        String password = input.nextLine();
        MoboleCardDao mc = new MoboleCardDaoImpl();
        try {
            mc.login(cardNum,password);
            cardNumber1 = cardNum;
            submenu();
        } catch (CardNumberAndPasswordException e) {
            System.out.println(e.getMessage());
        }
    }

(3)运行结果

 

2.2 用户注册

(1)功能介绍

        录入信息并开卡,用户输入的信息包括:选择卡号,选择套餐类型,输入用户和密码,预存话费金额(预存话费金额必须满足以支付所选套餐的一个月的费用)。

(2)代码

private static void register(){

        Scanner input = new Scanner(System.in);
        System.out.println("*******可选卡号为********");
        List<Card> status = new CardDaoImpl().status();
        List<String> cardNum = new ArrayList<>();
        Date date = DateUtil.getCurrentMonthFirstDay();
        MCRecordsDao mrd = new MCRecordsDaoImpl();
        for(int i = 0;i < status.size();i++){
            if(status.get(i).getStatus() == 0){
                cardNum.add(status.get(i).getCardNumber());
            }
        }
        for(int i = 0;i < cardNum.size();i++) {
            System.out.print((i + 1) + "." + cardNum.get(i) + "\t");
            if((i+1) % 3 == 0){
                System.out.println();
            }
        }
        System.out.println("请选择您的卡号:");
        int number = input.nextInt();
        String cardNum1 = "";
        for(int i = 0;i < cardNum.size();i++){
            if(number == (i+1)){
                cardNum1 = cardNum.get(i);
            }
        }
        for(int i = 0;i < status.size();i++){
            if(status.get(i).getCardNumber().equals(cardNum1)){
                CardDao cardDao = new CardDaoImpl();
                cardDao.update(status.get(i));
            }
        }
        SerPackageTypeDao serPackageTypeDao = new SerPackageTypeDaoImpl();
        List<SerPackageType> serPackageTypes = serPackageTypeDao.querySerPackageTypeAll();
        for(int i = 0;i < serPackageTypes.size();i++){
            System.out.print((i+1) + "." + serPackageTypes.get(i).getName() + "\t");
        }
        System.out.println("请选择套餐:");
        int number2 = input.nextInt();
        SerPackageType serPackageType = serPackageTypes.get(number2 - 1);
        System.out.println("请输入姓名:");
        String username = input.next();
        System.out.println("请输入密码:");
        String password = input.next();
        double money1 = 0;
        RechargeRecordDao rrd = new RechargeRecordDaoImpl();
        Date date2 = new Date(System.currentTimeMillis());
        while(true){
            System.out.println("请输入预存花费金额:");
            double money = input.nextDouble();
            if(serPackageType.getId() == 1){
                if(money < new SerPackageDaoImpl().queryByType(serPackageType.getId()).get(0).getPrice()){
                    System.out.println("您预存话费不足以支付本月套餐资费,请重新输入");
                }else{
                    money1 = money - new SerPackageDaoImpl().queryByType(serPackageType.getId()).get(0).getPrice();
                    rrd.insertInto(money,date2,cardNum1);
                    break;
                }
            }else if (serPackageType.getId() == 2){
                if(money < new SerPackageDaoImpl().queryByType(serPackageType.getId()).get(0).getPrice()){
                    System.out.println("您预存话费不足以支付本月套餐资费,请重新输入");
                }else{
                    money1 = money - new SerPackageDaoImpl().queryByType(serPackageType.getId()).get(0).getPrice();
                    rrd.insertInto(money,date2,cardNum1);
                    break;
                }
            }else if (serPackageType.getId() == 3){
                if(money < new SerPackageDaoImpl().queryByType(serPackageType.getId()).get(0).getPrice()){
                    System.out.println("您预存话费不足以支付本月套餐资费,请重新输入");
                }else{
                    money1 = money - new SerPackageDaoImpl().queryByType(serP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值