目录
一. 项目需求
嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各种套餐所包含的服务内容及费用如下表:
品牌套餐 | 话痨套餐 | 网虫套餐 | 超人套餐 |
---|---|---|---|
通话时长(分钟) | 600 | 0 | 300 |
上网流量 | 0 | 20 | 10 |
短信条数(条) | 100 | 0 | 50 |
费用(元/月) | 58 | 68 | 78 |
如实际使用中超出套餐内包含的通话时长,短信条数和上网流量,则按一下规则计费:
-
超出的通话: 0.2元/分
-
超出的短信:0.1元/条
-
超出的上网流量:0.1元/MB
本任务实现的"嗖嗖移动业务大厅"提供了嗖嗖移动用户的常用功能,包括新用户注册,本月账单查询,套餐余量查询,打印消费详情,套餐变更,办理退网,话费充值,查看消费记录,查看话费说明等功能.另外,还可以模拟用户通话,上网,发送短信的场景进行相应的扣费并记录消费信息.各功能介绍如下表:
菜单级别 | 功能 | 描述 |
---|---|---|
主菜单 | 用户登录 | 输入正确的手机号码和密码进入二级菜单列表 |
主菜单 | 用户注册 | 录入信息并开卡,用户输入的信息包括:选择卡号,选择套餐类型,输入用户名和密码,预存话费金额(预存话费金额必须满足以支付所选套餐的一个月的费用) |
主菜单 | 使用嗖嗖 | 输入正确的手机号码和密码之后,随机进入本号码所属套餐可以支持的一个场景,消费套餐余量或者话费余额,并记录消费信息.当话费余额不足时,抛出异常提醒用户充值 |
主菜单 | 话费充值 | 输入正确的用户名和密码之后,可为该卡号充值 |
主菜单 | 资费说明 | 提供各品牌套餐所包含的通话时长,上网流量,短信条数,月费用等 |
主菜单 | 退出系统 | 提出本系统 |
二级菜单 | 本月账单查询 | 可查询该卡号的套餐费用,实际消费金额,账户余额 |
二级菜单 | 套餐余量查询 | 可查询该卡号的套餐余量 |
二级菜单 | 打印消费详情 | 输入正确的卡号和密码后,可打印当前卡号用户的消费详单, 使用输出流把用户信息输出到文件 |
二级菜单 | 套餐变更 | 可变更为其他套餐类型,变更后话费余额需减去变更后的套餐费用,余额不足时需要给出信息提示,套餐变更后重新统计卡中实际消费数据以及当月消费金额 |
二级菜单 | 办理退网 | 输入正确的卡号和密码后,可以从已注册的号码列表中删除本号码,并退出系统 |
二、项目使用的技术
-
面向对象的思想
-
封装,继承,多态,接口的使用
-
异常处理的合理使用
-
集合框架的使用
-
I/O 操作实现对文件的写
-
MySQL数据
-
JDBC操作数据库
三、项目实现
1. 菜单显示页面,以及登录
卡号或密码错误:
卡号被禁用:
登录成功:
2. 用户注册
3. 本月账单查询
4. 套餐余量查询
5. 添加和打印消費清单
如果没有消费记录:
6. 使用嗖嗖
功能分析
1) 模拟嗖嗖用户使用卡的过程,选择该功能后,输入当前卡号,通过验证后,可随机进入如下表的6个场景,要求所进入的场景的服务类型是该卡所属套餐支持的(如网虫套餐只能进入服务类型为"上网"的场景)
序号 服务类型 描述 0 通话 问候客户,谁知其如此难缠,通话90分钟 1 通话 询问妈妈身体状况,本地通话30分钟 2 短信 参与环境保护实施方案问卷调查,发送短信5条 3 短信 同时朋友本人已换手机号码,发送短信50条 4 上网 和女朋友微信视频聊天,使用流量1GB 5 上网 晚上手机在线追剧,一不留神睡着了,使用流量2GB
模拟消费,进入场景之后,将按场景的描述要求消费套餐余量,如果套餐余量不足,则需要按套餐外的费用规则扣费,成功消费后,添加一条消费记录
如果消费失败:
7. 办理退网
8 套餐变更
9. 话费充值
10.查看资费说明
查看嗖嗖移动大厅中所有的套餐的资费说明
四、项目重点
1.数据库的连接
因为本项目,涉及数据库的查询,修改等,所以必须成功连接上数据库。在本项目中使用JDBC操作MySQL数据库。
2.数据库事务的处理
在某些业务中涉及多张表的同时修改,插入的事务处理。需要通过封装的JdbcUtil工具类进行事务的开启,提交等功能。
3.项目分层
本项目对项目的各个部分功能进行分层处理,bean层封装实体类,dao层进行数据获取和修改,service进行业务处理等。
五、重点代码
1.soso移动用户业务实现类
package com.fs.service.impl;
import com.fs.bean.*;
import com.fs.dao.*;
import com.fs.dao.impl.*;
import com.fs.service.MoboleCardService;
import com.fs.util.JdbcUtil;
import java.util.Calendar;
import java.util.Date;
import java.sql.SQLException;
public class MoboleCardServiceImpl implements MoboleCardService {
private MoboleCardDao dao = new MoboleCardDaoImpl();
private CardDao cardDao = new CardDaoImpl();
private ConsuminfoDao consuminfoDao = new ConsuminfoDaoImpl();
private MonthlyConsumptionRecordsDao monthlyConsumptionRecordsDao
=new MonthlyConsumptionRecordsDaoImpl();
private SerPackageDao serPackageDao = new SerPackageDaoImpl();
private RechargeRecordDao rechargeRecordDao = new RechargeRecordDaoImpl();
@Override
public String login(String cardNumber, String password) {
try {
MoboleCard moboleCard = dao.findMoboleCardByCardNumber(cardNumber);
if(moboleCard == null){
return "账号未注册!";
}
if(!moboleCard.getPassword().equals(password)){
return "密码错误!";
}
if(moboleCard.getStatus() == 1){
return "账号已冻结!";
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return "登录成功!";
}
@Override
public String register(MoboleCard moboleCard) {
boolean value = false;
try {
JdbcUtil.beginTransaction();
boolean result = dao.addMoboleCard(moboleCard);
if(result){
value = cardDao.updateCardStatus(moboleCard.getCard_number(),1);
}
JdbcUtil.commitTransaction();
} catch (SQLException throwables) {
try {
JdbcUtil.rollBackTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
throwables.printStackTrace();
}
return value ? "注册成功!":"注册失败!";
}
@Override
public MoboleCard findMoleInfoByCardNumber(String cardNumber) {
try {
return dao.findMoboleCardByCardNumber(cardNumber);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
@Override
public boolean useSoso(String cardNumber, Scene scene, double money) {
try {
//开启事务
JdbcUtil.beginTransaction();
//添加消费记录
Consuminfo consuminfo = new Consuminfo();
consuminfo.setCard_number(cardNumber);
consuminfo.setType(scene.getType());
consuminfo.setConsum_data(scene.getData());
consuminfo.setConsume_date(new Date());
consuminfoDao.addConsuminfo(consuminfo);
//修改月消费记录,没有则插入
Calendar cl = Calendar.getInstance();
int year = cl.get(Calendar.YEAR);
int month = cl.get(Calendar.MONTH);
MonthlyConsumptionRecords records =
monthlyConsumptionRecordsDao.findCardNumberMonthlyRecord(cardNumber.trim(),year,month+1);
if(records == null){
records = new MonthlyConsumptionRecords();
records.setCard_number(cardNumber);
records.setConsum_amount(serPackageDao.findSerPackageByCardNumber(cardNumber).getPrice()+money);
records.setConsume_date(new Date());
if(scene.getType().equals("通话")){
records.setReal_talk_time(scene.getData());
}
if(scene.getType().equals("上网")){
records.setReal_flow(scene.getData());
}
if(scene.getType().equals("短信")){
records.setReal_SMS_count(scene.getData());
}
monthlyConsumptionRecordsDao.addMonthlyRecord(records);
}else {
records.setConsum_amount(records.getConsum_amount()+money);
if(scene.getType().equals("通话")){
records.setReal_talk_time(records.getReal_talk_time()+ scene.getData());
}
if(scene.getType().equals("上网")){
records.setReal_flow(records.getReal_flow() + scene.getData());
}
if(scene.getType().equals("短信")){
records.setReal_SMS_count(records.getReal_SMS_count()+ scene.getData());
}
records.setConsume_date(new Date());
monthlyConsumptionRecordsDao.updateMonthlyRecord(records);
}
//修改账户余额
MoboleCard moboleCard = dao.findMoboleCardByCardNumber(cardNumber);
moboleCard.setMoney(moboleCard.getMoney()-money);
dao.updateMoboleCard(moboleCard);
JdbcUtil.commitTransaction();
return true;
} catch (SQLException throwables) {
try {
JdbcUtil.rollBackTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
throwables.printStackTrace();
}
return false;
}
@Override
public boolean exitNetWork(String cardNumber) {
try {
JdbcUtil.beginTransaction();
dao.deleteMoboleCardByCardNumber(cardNumber);
cardDao.updateCardStatus(cardNumber,0);
JdbcUtil.commitTransaction();
return true;
} catch (SQLException throwables) {
try {
JdbcUtil.rollBackTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
throwables.printStackTrace();
}
return false;
}
@Override
public String serPackageChange(String carNumber,SerPackage serPackage) {
try {
JdbcUtil.beginTransaction();
MoboleCard moboleCard = dao.findMoboleCardByCardNumber(carNumber);
if(moboleCard.getSer_package() == serPackage.getId()){
JdbcUtil.commitTransaction();
return "您已是该套餐用户,无需更换!";
}
moboleCard.setSer_package(serPackage.getId());
if(moboleCard.getMoney()-serPackage.getPrice() < 0){
JdbcUtil.commitTransaction();
return "余额不足,请充值后变量套餐变更业务!";
}
moboleCard.setMoney(moboleCard.getMoney()-serPackage.getPrice());
//修改套餐信息
dao.updateMoboleCard(moboleCard);
//插入消费记录
Consuminfo consuminfo = new Consuminfo();
consuminfo.setCard_number(carNumber);
consuminfo.setConsume_date(new Date());
consuminfo.setConsum_data((int)(serPackage.getPrice()));
consuminfo.setType("套餐变更");
consuminfoDao.addConsuminfo(consuminfo);
//修改月消费信息
Calendar cl = Calendar.getInstance();
int year = cl.get(Calendar.YEAR);
int month = cl.get(Calendar.MONTH);
MonthlyConsumptionRecords records =
monthlyConsumptionRecordsDao.findCardNumberMonthlyRecord(carNumber,year,month+1);
if(records == null){
records = new MonthlyConsumptionRecords();
records.setCard_number(carNumber);
records.setConsum_amount(serPackage.getPrice());
records.setConsume_date(new Date());
monthlyConsumptionRecordsDao.addMonthlyRecord(records);
}else {
records.setConsum_amount(records.getConsum_amount()+serPackage.getPrice());
records.setConsume_date(new Date());
monthlyConsumptionRecordsDao.updateMonthlyRecord(records);
}
JdbcUtil.commitTransaction();
return "变更成功!";
} catch (SQLException throwables) {
try {
JdbcUtil.rollBackTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
throwables.printStackTrace();
}
return "未知错误,变更失败!";
}
@Override
public String moneyPay(String cardNumber, double money) {
try {
JdbcUtil.beginTransaction();
MoboleCard moboleCard = dao.findMoboleCardByCardNumber(cardNumber);
moboleCard.setMoney(moboleCard.getMoney()+money);
//修改移动用户信息
dao.updateMoboleCard(moboleCard);
//插入消费记录
RechargeRecord rechargeRecord = new RechargeRecord();
rechargeRecord.setAmount(money);
rechargeRecord.setCard_number(cardNumber);
rechargeRecord.setRecharge_date(new Date());
rechargeRecordDao.addRechargeRecord(rechargeRecord);
JdbcUtil.commitTransaction();
return "充值成功,卡上余额:"+moboleCard.getMoney()+"元!";
} catch (SQLException throwables) {
try {
JdbcUtil.rollBackTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
throwables.printStackTrace();
}
return "充值失败!";
}
}
2.界面视图类
package com.fs.view;
import com.fs.bean.*;
import com.fs.service.*;
import com.fs.service.impl.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;
public class SosoView {
private static MonthlyConsumptionRecordsService monthlyConsumptionRecordsService
= new MonthlyConsumptionRecordsServiceImpl();
private static CardService cardService = new CardServiceImpl();
private static SerPackageService serPackageService = new SerPackageServiceImpl();
private static MoboleCardService moboleCardService = new MoboleCardServiceImpl();
private static ConsuminfoService consuminfoService = new ConsuminfoServiceImpl();
private static SceneService sceneService = new SceneServiceImpl();
//当前登录的卡号
private static ThreadLocal<String> currentCard = new ThreadLocal<>();
public static void mainMenu(){
boolean flag = true;
while(flag){
Scanner input = new Scanner(System.in);
System.out.println("***************欢迎使用嗖嗖移动用户大厅***************");
System.out.println("1.用户登录 2.用户注册 3.使用嗖嗖 ");
System.out.println("4.话费充值 5.资费说明 6.退出系统 ");
System.out.println("请选择:");
String select = input.next();
switch (select){
case "1":
login();
break;
case "2":
register();
break;
case "3":
sosoMobole();
break;
case "4":
moneyPay();
break;
case "5":
serPackagePrint();
break;
case "6":
flag = false;
System.out.println("********感谢您使用搜搜移动业务大厅,再见!********");
break;
default:
System.out.println("输入错误,无此选项请重新输入!");
break;
}
}
}
public static void register(){
MoboleCard moboleCard = new MoboleCard();
while(true){
Scanner input = new Scanner(System.in);
System.out.println("*************** 可选择的卡号 ***************");
List<Card> cardList = cardService.findAllIsOk();
for(int i = 0 ; i < cardList.size();i++){
System.out.println((i+1)+"."+cardList.get(i).getCardNumber());
}
System.out.println("*************** 请选择你的卡号 ***************");
if(!input.hasNextInt()){
System.out.println("输入错误,请重新输入");
continue;
}
int select = input.nextInt();
if(select < 0 || select > cardList.size()){
System.out.println("序号错误,请重新输入");
continue;
}
//注册卡号
Card card = cardList.get(select-1);
//设置手机号
moboleCard.setCard_number(card.getCardNumber());
//获取所有套餐
List<SerPackage> serPackageList = serPackageService.findAllSerPackage();
for(int i = 0 ; i < serPackageList.size();i++){
System.out.print((i+1)+"."+serPackageList.get(i).getName());
}
System.out.println("*************** 请选择你的套餐 ***************");
if(!input.hasNextInt()){
System.out.println("输入错误,请重新输入");
continue;
}
select = input.nextInt();
if(select < 0 || select > serPackageList.size()){
System.out.println("序号错误,请重新输入");
continue;
}
//所选套餐
SerPackage serPackage = serPackageList.get(select-1);
//设置套餐
moboleCard.setSer_package(serPackage.getId());
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
moboleCard.setUsername(scanner.nextLine());
System.out.println("请输入密码:");
moboleCard.setPassword(scanner.nextLine());
System.out.println("请输入预存话费金额:");
if(!input.hasNextDouble()){
System.out.println("输入错误,请重新输入");
continue;
}
double money = input.nextDouble();
if(money < serPackage.getPrice()){
System.out.println("您预存话费不足以支付本月的套餐资费,请重新输入!");
continue;
}
moboleCard.setMoney(money-serPackage.getPrice());
moboleCard.setStatus(0);
//调用业务方法完成注册
System.out.println(moboleCardService.register(moboleCard));
System.out.println("卡号:"+moboleCard.getCard_number());
System.out.println("用户名:"+moboleCard.getUsername());
System.out.println("当前余额:"+moboleCard.getMoney());
System.out.println(serPackage.getName()+serPackage.getTalk_time()+"分钟/月");
return;
}
}
public static void login(){
Scanner input = new Scanner(System.in);
System.out.println("请输入手机号:");
String cardNumber = input.nextLine();
System.out.println("请输入密码:");
String password = input.nextLine();
String message = moboleCardService.login(cardNumber,password);
System.out.println("【友情提示】:"+message);
if("登录成功!".equals(message)){
currentCard.set(cardNumber);
userMenu();
}
}
public static void userMenu(){
while(true){
Scanner input = new Scanner(System.in);
System.out.println("**********嗖嗖移动用户菜单**********");
System.out.println("1.本月账单查询");
System.out.println("2.套餐余量查询");
System.out.println("3.打印消费详单");
System.out.println("4.套餐变更");
System.out.println("5.办理退网");
System.out.println("请选择:(输入1-5选择功能,其他键返回上一级)");
String select = input.next();
switch (select){
case "1":
selectCurrentMonthRecord();
break;
case "2":
serPackageSurplus();
break;
case "3":
printConsumInfo();
break;
case "4":
serPackageChange();
break;
case "5":
exitNetWork();
break;
default:
return;
}
}
}
public static void serPackageSurplus(){
String cardNumber = currentCard.get();
//查询该账号对应套餐
SerPackage serPackage = serPackageService.findSerPackageByCardNumber(cardNumber);
//查询该账号该月消费信息
Calendar cl = Calendar.getInstance();
//获取年月信息
int year = cl.get(Calendar.YEAR);
int month = cl.get(Calendar.MONTH) + 1;
MonthlyConsumptionRecords monthlyConsumptionRecords = monthlyConsumptionRecordsService.findCardNumberMonthlyRecord(cardNumber,year,month);
System.out.println("*********套餐余量查询**********");
System.out.println("您的卡号是"+cardNumber+",套餐内剩余:");
int talk_time = serPackage.getTalk_time() - monthlyConsumptionRecords.getReal_talk_time();
if(talk_time < 0 ){
talk_time = 0;
}
System.out.println("通话时长:"+talk_time+"分钟");
int sms_count = serPackage.getSms_count() - monthlyConsumptionRecords.getReal_SMS_count();
if(sms_count < 0 ){
sms_count = 0;
}
System.out.println("短信条数:"+sms_count+"条");
int flow = serPackage.getFlow()-monthlyConsumptionRecords.getReal_flow();
if(flow < 0 ){
flow = 0;
}
System.out.println("套餐流量:"+flow+"GB");
}
public static void selectCurrentMonthRecord(){
//获取当前登录的卡号
String cardNumber = currentCard.get();
Calendar cl = Calendar.getInstance();
//获取年月信息
int year = cl.get(Calendar.YEAR);
int month = cl.get(Calendar.MONTH) + 1;
MonthlyConsumptionRecords monthlyConsumptionRecords = monthlyConsumptionRecordsService.findCardNumberMonthlyRecord(cardNumber,year,month);
if(monthlyConsumptionRecords == null){
System.out.println("【友情提示】:尚未生成当前卡号的月消费账单信息!");
return;
}
//根据卡号查询套餐
SerPackage serPackage = serPackageService.findSerPackageByCardNumber(cardNumber);
System.out.println("您的卡号:"+cardNumber+",当月账单:");
System.out.println("套餐资费:"+serPackage.getPrice());
System.out.println("合计:"+(serPackage.getPrice()+monthlyConsumptionRecords.getConsum_amount()));
//根据卡号查询嗖嗖移动的用户信息
MoboleCard moboleCard = moboleCardService.findMoleInfoByCardNumber(cardNumber);
System.out.println("账户余额:"+moboleCard.getMoney());
}
public static void printConsumInfo(){
while(true){
System.out.println("***********消费详细查询***********");
System.out.println("请输入本年需要查询的月份(1-12):");
Scanner input = new Scanner(System.in);
if(!input.hasNextInt()){
System.out.println("【友情提示】:输入错误,请重新输入!");
continue;
}
int month = input.nextInt();
if(month <= 0 || month > 12){
System.out.println("【友情提示】:超出范围,请重新输入!");
continue;
}
String cardNumber = currentCard.get();
List<Consuminfo> consuminfoList = consuminfoService.findmMonthConsuminfoByCardNumber(cardNumber,month);
if(consuminfoList == null || consuminfoList.size() == 0){
System.out.println("【友情提示】:对不起,不存在该卡号"+month+"月消费记录!");
return;
}
System.out.println("序号\t类型\t数据\t日期");
for(int i = 0 ; i < consuminfoList.size();i++){
Consuminfo consuminfo = consuminfoList.get(i);
String date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(consuminfo.getConsume_date());
System.out.println((i+1)+"\t"+consuminfo.getType()+"\t"+consuminfo.getConsum_data()+"\t"+date);
}
}
}
private static void sosoMobole(){
System.out.println("请输入手机卡号:");
Scanner input = new Scanner(System.in);
String cardNumber = input.next();
//根据手机卡号,查看该卡号的套餐
SerPackage serPackage = serPackageService.findSerPackageByCardNumber(cardNumber);
//获取所有场景信息
List<Scene> sceneList = sceneService.findAllScene();
int type = -1;
if(serPackage.getName().equals("话痨套餐")){
type = (int)(Math.random()*4);
}
if(serPackage.getName().equals("网虫套餐")){
type = (int)Math.round(Math.random())+4;
}
if(serPackage.getName().equals("超人套餐")){
type = (int)(Math.random()*6);
}
double money = sceneAccount(cardNumber,type);
//查询账户余额是否足够
MoboleCard moboleCard = moboleCardService.findMoleInfoByCardNumber(cardNumber);
if(money > moboleCard.getMoney()){
System.out.println("【友情提示】:您的余额不足,请充值后使用!");
return;
}
if(moboleCardService.useSoso(cardNumber,sceneList.get(type),money)){
System.out.println(sceneList.get(type).getDescription());
}else{
System.out.println("【友情提示】:未知错误,消费失败");
} ;
}
/*计算场景消费金额*/
public static double sceneAccount(String cardNumber, int type) {
//根据手机卡号,查看该卡号的套餐
SerPackage serPackage = serPackageService.findSerPackageByCardNumber(cardNumber);
//获取所有场景信息
List<Scene> sceneList = sceneService.findAllScene();
Calendar cl = Calendar.getInstance();
int year = cl.get(Calendar.YEAR);
int month = cl.get(Calendar.MONTH)+1;
//当月消费信息查询出来
MonthlyConsumptionRecords monthlyConsumptionRecords =
monthlyConsumptionRecordsService.findCardNumberMonthlyRecord(cardNumber, year, month);
//当月没有消费记录
if(monthlyConsumptionRecords == null){
monthlyConsumptionRecords = new MonthlyConsumptionRecords();
}
//场景
Scene scene = null;
//场景产生的费用
double money = 0;
switch (type) {
case 0:
case 1:
scene = sceneList.get(type);
//总的通话时长是否超出套餐以外
if (monthlyConsumptionRecords.getReal_talk_time() > serPackage.getTalk_time()) {
//消费费用
money = 0.2 * scene.getData();
} else {
if (scene.getData() + monthlyConsumptionRecords.getReal_talk_time() > serPackage.getTalk_time()) {
money = (scene.getData() + monthlyConsumptionRecords.getReal_talk_time()
- serPackage.getTalk_time()) * 0.2;
}
}
break;
case 2:
case 3:
scene = sceneList.get(type);
//总的短信是否超出套餐以外
if (monthlyConsumptionRecords.getReal_SMS_count() > serPackage.getSms_count()) {
//消费费用
money = 0.1 * scene.getData();
} else {
if (scene.getData() + monthlyConsumptionRecords.getReal_SMS_count() > serPackage.getSms_count()) {
money = (scene.getData() + monthlyConsumptionRecords.getReal_SMS_count()
- serPackage.getSms_count()) * 0.1;
}
}
break;
case 4:
case 5:
scene = sceneList.get(type);
//总的流量是否超出套餐以外
if (monthlyConsumptionRecords.getReal_flow() > serPackage.getFlow()) {
//消费费用
money = 0.1 * scene.getData();
} else {
if (scene.getData() + monthlyConsumptionRecords.getReal_flow() > serPackage.getFlow()) {
money = (scene.getData() + monthlyConsumptionRecords.getReal_flow()
- serPackage.getFlow()) * 0.1;
}
}
break;
}
return money;
}
/*办理退网*/
private static void exitNetWork(){
String cardNumber = currentCard.get();
System.out.println("***********办理退网***********");
if(moboleCardService.exitNetWork(cardNumber)){
System.out.println("【友情提示】:卡号"+cardNumber+"办理退网成功!");
}else{
System.out.println("【友情提示】:卡号"+cardNumber+"办理退网失败!");
}
}
/*套餐变更*/
public static void serPackageChange(){
//获取当前登录的用户
String cardNumber = currentCard.get();
while(true){
System.out.println("***********套餐变更***********");
List<SerPackage> serPackageList = serPackageService.findAllSerPackage();
for(int i = 0 ; i < serPackageList.size();i++){
System.out.print((i+1)+"."+serPackageList.get(i).getName()+"\t");
}
System.out.println();
System.out.println("请选择(序号):");
Scanner input = new Scanner(System.in);
if(!input.hasNextInt()){
System.out.println("【友情提示】:输入错误,请重新输入!");
continue;
}
int index = input.nextInt();
if(index < 0 || index >= serPackageList.size()){
System.out.println("【友情提示】:选择错误,请重新输入!");
continue;
}
String msg = moboleCardService.serPackageChange(cardNumber,serPackageList.get(index-1));
System.out.println("【友情提示】:"+msg);
break;
}
}
/*话费充值*/
public static void moneyPay(){
while(true){
System.out.println("************话费充值*************");
Scanner input = new Scanner(System.in);
System.out.println("请输入充值卡号:");
String cardNumber = input.next();
System.out.println("请输入充值金额:");
if(!input.hasNextDouble()){
System.out.println("【友情提示】:输入错误,请重新输入!");
continue;
}
double money = input.nextDouble();
if(money <= 0){
System.out.println("【友情提示】:输入错误,请重新输入!");
continue;
}
String msg = moboleCardService.moneyPay(cardNumber,money);
System.out.println("【友情提示】:"+msg);
break;
}
}
/*资费说明*/
public static void serPackagePrint(){
System.out.println("************套餐说明************");
System.out.println("序号\t套餐名称\t通话时长(分/月)\t短信条数(条/月)\t上网流量(GB/月)");
List<SerPackage> serPackageList = serPackageService.findAllSerPackage();
for(int i = 0 ; i < serPackageList.size();i++){
SerPackage serPackage = serPackageList.get(i);
System.out.println((i+1)+"\t"+serPackage.getName()+"\t"+serPackage.getTalk_time()
+"\t"+serPackage.getSms_count()+"\t"+(serPackage.getFlow()/1024));
}
}
}