目录
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