package Util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import business.Menu;
import entity.CallService;
import entity.ConsumInfo;
import entity.MobileCard;
import entity.NetPackage;
import entity.NetService;
import entity.Scene;
import entity.SendService;
import entity.ServicePackage;
import entity.SuperPackage;
import entity.TalkPackage;
public class CardUtil {
public Map<String,MobileCard> cards=new HashMap<String,MobileCard>();
public Map<String,List<ConsumInfo>> consumInfos=new HashMap<String,List<ConsumInfo>>();
//MobileCard mc=new MobileCard();
List<Scene> scenes=new ArrayList<Scene>();
public void Exist(){
ServicePackage s1=new NetPackage(68,3);
MobileCard m1=new MobileCard("13956286483","老王","123",Common.netPackage,68.0,99.0,5,10,1);
MobileCard m2=new MobileCard("13986923598","老毛","123",Common.superPackage,78.0,99.0,5,10,1);
cards.put(m1.cardNumber, m1);
cards.put(m2.cardNumber, m2);
}
// public MobileCard(String cardNumber, String userName, String passWord,
// ServicePackage serPackage, double consumAmount, double money,
// int realTalkTime, int realSMSCount, int realFlow) {
// super();
// this.cardNumber = cardNumber;
// this.userName = userName;
// this.passWord = passWord;
// this.serPackage = serPackage;
// this.consumAmount = consumAmount;
// this.money = money;
// this.realTalkTime = realTalkTime;
// this.realSMSCount = realSMSCount;
// this.realFlow = realFlow;
// }
/*
* 卡是否存在
*/
public boolean isExistCard(String number,String passWord)
{
Set<String> numbers=cards.keySet();
Iterator<String> it=numbers.iterator();
while(it.hasNext())
{
String searchNum=it.next();
if(searchNum.equals(number)&&(cards.get(searchNum)).getPassWord().equals(passWord))
{
return true;
}
}
return false;
}
/*
* 创建新卡
*/
public String createNumber(){
boolean isExist=false;//记录现有用户是否存在
String number="";
int temp=0;
do{
isExist=false;
do{
temp=(int)(Math.random()*100000000);
}while(temp<10000000);
number="139"+temp;
Set<String> cardNumbers=cards.keySet();
for(String cardNumber : cardNumbers)
{
if(number.equals(cardNumber))
{
isExist=true;
break;
}
}
}while(isExist);
return number;
}
/*
* 得到创建好的新卡
*/
public String[] getNewNumber(int count)
{
String[] number=new String[count];
for(int i=0;i<number.length;i++){
number[i]=createNumber();
}
return number;
}
/*
* 获取卡的类型
*/
public ServicePackage createPack(int count){
ServicePackage s=null;
switch (count) {
case 1:
s=Common.talkPackage;
break;
case 2:
s=Common.netPackage;
break;
case 3:
s=Common.superPackage;
break;
default:
break;
}
return s;
}
/*
* 添加新卡
*/
public void addCard(MobileCard card){
cards.put(card.cardNumber, card);
}
public void showAmountDetail(String searchNumber)
{
MobileCard card;
StringBuffer meg=new StringBuffer();
card=cards.get(searchNumber);
meg.append("您的卡号:"+card.getCardNumber()+",当月账单:\n");
meg.append("套餐资费:"+card.getSerPackage().getPrice()+"元\n");
meg.append("合计:"+Common.dataFormat(card.getConsumAmount())+"元\n");
meg.append("账户余额:"+Common.dataFormat(card.getMoney())+"元");
System.out.println(meg);
}
/**
* 套餐余量查询
*/
public void showRemainDetail(String searchNumber) {
// MobileCard mobileCard = cards.get(searchNumber);
MobileCard card;
int remainTalkTime;
int remainSmsCount;
int remainFlow;
StringBuffer meg = new StringBuffer();
card = cards.get(searchNumber);
meg.append("您的手机号码是" + searchNumber + ",餐套内剩余:\n");
ServicePackage pack = card.getSerPackage();
//向下转型超人类型
if (pack instanceof TalkPackage) {
TalkPackage cardPack = (TalkPackage) pack;
//查询套餐内剩余的通话时长
remainTalkTime = cardPack.getTalkTime() > card.getRealTalkTime() ? cardPack.getTalkTime() - card.getRealTalkTime() : 0;
meg.append("通话时长:" + remainTalkTime + "分钟\n");
//查询套餐内剩余的短信条数
remainSmsCount = cardPack.getSmsCount() > card.getRealSMSCount() ? cardPack.getSmsCount() - card.getRealSMSCount() : 0;
meg.append("短信条数:" + remainSmsCount + "条\n");
} else if (pack instanceof NetPackage) {
NetPackage cardPack = (NetPackage) pack;
//查询套餐内剩余的流量
remainFlow = cardPack.getFlow() > card.getRealFlow() ? cardPack.getFlow() - card.getRealFlow() : 0;
meg.append("上网流量:" +Common.dataFormat( remainFlow *1.0/1024)+ "GB\n");
//向下转型话痨
} else {
SuperPackage cardPack = (SuperPackage) pack;
//查询套餐内剩余的通话时长
remainTalkTime = cardPack.getTalkTime() > card.getRealTalkTime() ? cardPack.getTalkTime() - card.getRealTalkTime() : 0;
meg.append("通话时长:" + remainTalkTime + "分钟\n");
//查询套餐内剩余的短信条数
remainSmsCount = cardPack.getSmsCount() > card.getRealSMSCount() ? cardPack.getSmsCount() - card.getRealSMSCount() : 0;
meg.append("短信条数:" + remainSmsCount + "条\n");
//查询套餐内剩余的流量
remainFlow = cardPack.getFlow() > card.getRealFlow() ? cardPack.getFlow() - card.getRealFlow() : 0;
meg.append("上网流量:" +Common.dataFormat( remainFlow *1.0/1024)+ "GB\n");
//向下转型上网套餐
}
System.out.println(meg);
}
// /**
// * 打印消费记录
// */
//
public void printConsumInfo(String number){
Writer fileWriter = null;
try {
fileWriter = new FileWriter(number+"消费记录.txt");
Set<String> numbers = consumInfos.keySet();
Iterator<String> it = numbers.iterator();
List<ConsumInfo> infos = new ArrayList<ConsumInfo>();//存储指定卡所有消费记录
boolean isExist = false; // 现有消费列表中是否存在此卡号消费记录,是:true 否:false
while (it.hasNext()) {
String num=it.next();
if(num.equals(number))
{
infos=consumInfos.get(num);
isExist=true;
break;
}
}
if(isExist){
//存在 此卡消费记录,写入文本文件
StringBuffer content = new StringBuffer("******"+number+"消费记录******\n");
content.append("序号\t类型\t数据(通话(条)/上网(MB)/短信(条))\n");
for(int i=0;i<infos.size();i++){
ConsumInfo info = infos.get(i);
content.append((i+1)+".\t"+info.getType()+"\t"+info.getConsumData()+"\n");
}
fileWriter.write(content.toString());
fileWriter.flush();
System.out.println("消费记录打印完毕!");
}else{
System.out.println("对不起,不存在此号码的消费记录,不能打印!");
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fileWriter!=null){
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//
// /**
// * 添加记录
// */
public void addConsumInfo(String number,ConsumInfo info)
{
//MobileCard card=cards.get(number);
List<ConsumInfo> infos=new ArrayList<ConsumInfo>();
//infos.add(info);
//consumInfos.put(number, value)
//Map<String,List<ConsumInfo>> consumInfos=new HashM