嗖嗖移动大厅--部分代码
public class Sosomain { private static final String String = null; Scanner input=new Scanner(System.in); CardUtil util=new CardUtil(); public static void main(String[] args) { Sosomain sosomain=new Sosomain(); sosomain.menu(); } private void menu() { boolean isExit=false; int num=-1; util.init(); System.out.println("~~~~~~~~~~~~欢迎使用搜搜移动大厅~~~~~~~~~~~~"); do{ System.out.println("1、登录注册"); System.out.println("2、用户注册"); System.out.println("3、使用嗖嗖"); System.out.println("4、话费充值"); System.out.println("5、资费说明"); System.out.println("6、退出系统"); System.out.print("请选择你需要的操作:"); int choose=input.nextInt(); switch(choose){ case 1: //System.out.println("1、登录注册"); System.out.print("请输入手机卡号:"); String mobileNumber=input.next(); System.out.print("请输入密码:"); String password=input.next(); //将用户输入的卡号和密码和数组中的内容进行比较 if(util.isExistCard(mobileNumber,password)){ System.out.println("登陆成功!"); //登录成功之后显示二级菜单 show(mobileNumber); }else{ System.out.println("登陆失败!"); } break; case 2: //System.out.println("2、用户注册"); /** * 1、选号码 */ //1.1创建号码 String [] newNumbers=util.getNewNumbers(9); //1.2显示号码 for(int i=0;i<newNumbers.length;i++){ System.out.println((i+1)+":"+newNumbers[i]); } //1.3提示用户选择号码 System.out.print("请选择您要的号码编号:"); String numNum=newNumbers[input.nextInt()-1]; /** * 2、选套餐 */ System.out.println("1:话痨套餐 2:网虫套餐 3:超人套餐"); System.out.print("请选择您需要的套餐编号:"); int taocan=input.nextInt(); ServicePage pack=util.createPack(taocan); /** * 3、注册 */ System.out.print("请输入姓名:"); String name=input.next(); System.out.print("请输入密码:"); String pwd=input.next(); /** * 4、缴费 */ System.out.print("请输入缴费金额:"); double money=input.nextDouble(); //充值金额小于套餐金额,提醒用户缴费不足 while(pack.getPrice()>money){ System.out.println("缴费不足,请从新充值!"); money=input.nextDouble(); } /** * 将数据增加到MAP集合中 */ //1卡号、2姓名、3密码、4所属套餐、5当月消费金额、6当前余额:充值金额-当月消费金额 MobileCard card=new MobileCard(numNum, name, pwd, pack, pack.getPrice(), money-pack.getPrice()); //增加到集合中 util.addCard(card); break; case 3: //System.out.println("3、使用嗖嗖"); break; case 4: //System.out.println("4、话费充值"); System.out.print("请输入需要充值的卡号:"); String numer=input.next(); System.out.print("请输入您需要充值的金额:"); double money1=input.nextDouble(); util.chargeMoney(numer, money1); break; case 5: //System.out.println("5、资费说明"); show2(); break; case 6: isExit=true; break; default: isExit=true; break; } if(!isExit){ System.out.println("输入0返回上一级"); num=input.nextInt(); }else{ break; } } while(num==0); System.out.println("谢谢使用!"); } public void show(String mobileNumber){ System.out.println("------嗖嗖移动菜单--------"); do{ System.out.println("1、本月账单查询"); System.out.println("2、套餐余量查询"); System.out.println("3、打印消费详单"); System.out.println("4、套餐变更"); System.out.println("5、办理退网"); System.out.print("请选择您要的操作:"); int choose=input.nextInt(); switch(choose){ case 1: System.out.println("-----------显示本月账单信息------------"); util.showDescription(mobileNumber); break; case 2: break; case 3: break; case 4: System.out.print("请输入您需要更换套餐的卡号:"); String cardNumber=input.next(); System.out.print("请选择您需要更换的套餐编号:"); String tcNumber=input.next(); util.changingPack(cardNumber, tcNumber); break; case 5: break; default: break; } }while(true); } //读取文件 public void show2(){ File file =new File("zifei.txt"); FileInputStream fis=null; try { fis=new FileInputStream(file); byte [] s =new byte[1000]; int len; while((len=fis.read(s))!=-1){ String str=new String(s,0,len); System.out.println(str); } } catch (Exception e) { e.printStackTrace(); }finally{ try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//方法(部分)
public class CardUtil<ConsumInfo> { Map<String, MobileCard> cards = new HashMap<String, MobileCard>(); // 所有手机卡的列表 List<Scene> scenes = new ArrayList<Scene>(); //初始化场景 //初始化用户 public void init(){ MobileCard card1=new MobileCard("13813811111","卢本伟","123",new TalkPackage(),58.0,42.0); MobileCard card2=new MobileCard("13813822222","张三","123", new NetPackage(),68.0,32.0); MobileCard card3=new MobileCard("13813833333","PDD","123",new SuperPackage(),78.0,22.0); MobileCard card4=new MobileCard("13813866666","大司马","123",new TalkPackage(),78.0,2.0); cards.put("13813811111", card1); cards.put("13813822222", card2); cards.put("13813833333", card3); cards.put("13813866666", card4); } //初始话场景 public void initScence(){ Scene s=new Scene("通话",90,"问候客户,谁知其如此难缠 通话90分钟"); Scene s1=new Scene("通话",30,"询问妈妈身体状况 本地通话30分钟"); Scene s2=new Scene("短信",5,"参与环境保护实施方案问卷调查 发送短信5条"); Scene s3=new Scene("短信",50,"通知朋友手机换号,发送短信50条"); Scene s4=new Scene("上网",1*1024,"和女友微信视频聊天 使用流量1G"); Scene s5=new Scene("上网",2*1024,"晚上手机在线看韩剧,不留神睡着啦! 使用流量 2G"); scenes.add(s); scenes.add(s1); scenes.add(s2); scenes.add(s3); scenes.add(s4); scenes.add(s5); } //是否存在此卡用户 public boolean isExistCard(String number,String passWord){ //使用迭代器遍历集合 Set<String> keySet = cards.keySet(); Iterator<String> itor=keySet.iterator(); while(itor.hasNext()){ //如果有值就进行卡号和密码的对比 String searchNumer=itor.next();//集合中找到的电话号码 //找到的电话号码入的一样并且卡号的 if(searchNumer.equals(number)&&cards.get(searchNumer).getPassword().equals(passWord)){ return true; } } return false; } //是否已注册 public boolean isExistCard(String searchNumber){ Set<String> numbers=cards.keySet(); for(String number:numbers){ if(number.equals(searchNumber)){ return true; } } return false; } //创建卡号 private String createNumber(){ Random random=new Random(); // 记录现有用户中是否存在此卡号用户 是:true 否:false int temp=0; String newNum=null; boolean flag=false; do{ flag=false; do{ temp=random.nextInt(100000000); }while(temp<10000000); //手机号码组成 newNum="139"+temp; //产生的随机数和已有的号码相同则不要 Set<String> keySet=cards.keySet(); for(String oldNum:keySet){ if(oldNum.equals(newNum)){ flag=true; } } }while(flag); return newNum; } //生产指定个数的新卡号列表 public String[] getNewNumbers(int count){ String []newNums=new String[count]; //循环给newNUms 赋值 for(int i=0;i<count;i++){ newNums[i]=createNumber(); } return newNums; } //添加新卡 public void addCard(MobileCard card){ System.out.println("注册成功!"); cards.put(card.getCardNumber(),card); card.showMeg(); } //指定卡号办理退网 public void delCard(String delNumber){ } //查询指定卡套餐余量 public void showRemainDetail(String serachNumber){ } //查询指定卡当月消费账单 public void showAmountDetail(String searchNumber){ } //指定卡号换套餐 public void changingPack(String number,String packNum){ // 指定的手机卡 MobileCard card; // 要换的套餐 ServicePage pack; if(isExistCard(number)){ card=cards.get(number); switch(packNum){ case "1": pack=new TalkPackage(); break; case "2": pack=new NetPackage(); break; default: pack=new SuperPackage(); break; } //判断用户现有套餐和更换套餐是否相同 if(!(card.getSerPackage().getClass().getName().equals(pack.getClass().getName()))){ // 该卡余额中减去当月套餐资费 //卡里余额大于套餐资费 if(card.getMoney()>=pack.getPrice()){ card.setMoney(card.getMoney()-pack.getPrice()); //更换套餐 card.setSerPackage(pack); //当月使用数据清零 card.setRealFlow(0); card.setRealSMSCount(0); card.setRealTalkTime(0); //当月套餐金额设置为更换后的套餐资费 card.setConsumAmount(pack.getPrice()); System.out.println("更换套餐成功!"); pack.showInfo(); } }else{ System.out.println("对不起,您已是该套餐用户,无法更换!"); } }else{ System.out.println("对不起,您的卡号未注册,不可以更换套餐!"); } } //为指定卡号充值 public void chargeMoney(String number,double money){ MobileCard card; Set<String> key=cards.keySet(); for(String s:key){ if(s.equals(number)){ if(money<50){ System.out.println("对不起,最低充值50"); break; }else{ card=cards.get(number); card.setMoney(card.getMoney()+money); System.out.println("充值成功,当前余额为:"+card.getMoney()+"元"); break; } }else{ System.out.println("您输入的卡号不存在!"); break; } } }public void showDescription(String mobileNumber){ //根据电话号码的这个key查询到对应的value,在根据需要获取其中的属性 MobileCard card=cards.get(mobileNumber); System.out.println("您的卡号"+mobileNumber+"的月账单"); System.out.println("套餐资费:"+card.getSerPackage().getPrice()); System.out.println("合计"+card.getConsumAmount()+"元/月"); System.out.println("余额"+card.getMoney()+"元"); } public ServicePage createPack(int taocan) { ServicePage pack=null; switch (taocan) { case 1: pack=new TalkPackage(); break; case 2: pack=new NetPackage(); break; case 3: pack=new SuperPackage(); break; default: System.err.println("暂时没有其他套餐!"); break; } return pack; } }

浙公网安备 33010602011771号