首先当我们拿到超市会员卡管理系统这个题的时候,可能会绝对哇,好高大上,其实不然,我们要从心里鄙视它,你很low,等我干掉你!!
然后我们去分析这个题我们用面向对象怎么去解决:
一,超市会员卡?
一个卡绝对会有的属性: 卡号,,姓名,,开卡时间,,密码,,积分是不是??
那么我门就可以先把这个卡类给建立出来
public class CarVip { //首先 我们要建立会员卡的属性 姓名 卡号 密码 积分 开卡时间 private String name; private int carId; private String password; private int socre; private String registDate; //空参构造 public CarVip() { } //有参构造 public CarVip(String name, int carId, String password, int socre, String registDate) { this.name = name; this.carId = carId; this.password = password; this.socre = socre; this.registDate = registDate; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCarId() { return carId; } public void setCarId(int carId) { this.carId = carId; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getSocre() { return socre; } public void setSocre(int socre) { this.socre = socre; } public String getRegistDate() { return registDate; } public void setRegistDate(String registDate) { this.registDate = registDate; } }
二,会员卡绝对会有业务类去实现会员卡这个类
它的方法都有哪些呢?根据要求总共五个方法:
1,开卡
2,存积分
3,查询积分
4,兑换积分
5,修改密码
6,退出系统
public class CarVipDao { Scanner sc = new Scanner(System.in); List<CarVip> carVipList = new ArrayList(); public void startVip() { System.out.println("================================"); System.out.println("1,开卡 2,存积分 3,积分查询 4,积分兑换 5,修改密码 6.退出系统"); System.out.println("================================"); System.out.println("请选择:"); } public void start() { do { //让程序进入界面交互部分 startVip(); int choose = sc.nextInt();//让键盘录入去接收 switch (choose) { case 1: //1,开卡 openNewCarId(); continue; case 2: //2,存积分 if(cunScore()){ System.out.println("恭喜你,积分累计成功"); }else{ System.out.println("对不起,积分累计失败"); } continue; case 3: //3,查询积分 chaScore(); continue; case 4: //4,积分兑换 if(duiScore()){ System.out.println("恭喜你,积分兑换成功"); }else{ System.out.println("对不起,积分兑换失败"); } continue; case 5: //5,修改密码 if(checkPas()){ System.out.println("恭喜你,密码修改成功"); }else{ System.out.println("对不起,你的输入有误"); } continue; case 6: //6退出系统 // System.exit(1); break; default: System.out.println("对不起,你的输入有误,请重新输入:"); continue; } break; } while (true); } /** * 1,开卡 */ public void openNewCarId() { CarVip carVip = new CarVip();//新建卡类对象 System.out.println("请输入姓名:"); carVip.setName(sc.next()); //随机生成卡号 carVip.setCarId(this.openNew()); //输入密码 System.out.println("请输入您的密码:"); boolean flag = false; String pas; do { pas = sc.next(); if (pas.length() < 6) { System.out.println("对不起,您输入错误,请重新输入:"); } else { carVip.setPassword(pas); flag = true; } } while (!flag); //开卡成功后送积分100 carVip.setSocre(100); //显示开卡时间 Date date = new Date();//系统时间 String s = new SimpleDateFormat("yyyy-MM-dd").format(date); carVip.setRegistDate(s); carVipList.add(carVip); System.out.println("恭喜您,开卡成功,为了感谢你对我们的支持,送你100积分,你的会员卡号是:" + carVip.getCarId()); } /** * 生成随机卡号 * * @return */ private int openNew() { Random r = new Random(); int i = r.nextInt(99999999); for (CarVip vip : carVipList) { if (i == vip.getCarId()) { i = r.nextInt(99999999); } } return i; } /** * 2,存积分 */ public boolean cunScore() { CarVip vip = new CarVip(); System.out.println("请输入您的卡号:"); vip.setCarId(sc.nextInt()); System.out.println("请输入密码:"); vip.setPassword(sc.next()); if ((vip=hascar(vip))!=null) { System.out.println("请输入你消费的金额:(1元换1积分)"); int i = sc.nextInt(); vip.setSocre(vip.getSocre()+i); return true; }else{ System.out.println("对不起,您输入的账号密码不匹配,请重新输入"); } return true; } /** * 判断输入的卡号和密码是否正确 * @param carVip * @return */ private CarVip hascar(CarVip carVip) { if (carVip.getPassword() != null) { for (int i = 0; i < carVipList.size(); i++) { //equalsIgnoreCase是不分大小写,需要判断输入的密码是否一样 if (carVipList.get(i).getPassword().equalsIgnoreCase(carVip.getPassword()) && carVipList.get(i).getCarId() == carVip.getCarId()) { return carVipList.get(i); } } } return null; } /** * 3,查询积分 */ public void chaScore(){ CarVip vip = new CarVip(); System.out.println("请输入你的卡号:"); vip.setCarId(sc.nextInt()); System.out.println("请输入你的密码:"); vip.setPassword(sc.next()); if((vip=hascar(vip))!=null){ System.out.println("姓名 卡号 积分 开卡时间"); System.out.println(vip.getName()+" "+vip.getCarId()+" "+vip.getSocre()+" "+vip.getRegistDate()); }else{ System.out.println("对不起,你输入的卡号和密码不匹配,请重新输入"); } } /** * 4,兑换积分 */ public boolean duiScore(){ CarVip vip = new CarVip(); System.out.println("请输入你的卡号:"); vip.setCarId(sc.nextInt()); System.out.println("请输入你的密码:"); vip.setPassword(sc.next()); if((vip=hascar(vip))!=null){ System.out.println("请输入你要兑换的积分:(100积分兑换0.1元,不足100积分不能兑换)"); int i = sc.nextInt(); if(i<vip.getSocre()){ vip.setSocre(vip.getSocre()-i); System.out.println("您的积分兑换成功:"+i/100*0.1+"元"); return true; }else{ System.out.println("对不起,你的积分不够,不能兑换"); } }else{ System.out.println("对不起,你输入的卡号和密码不匹配,请重新输入:"); } return false; } /** * 5,修改密码 */ public boolean checkPas(){ CarVip vip = new CarVip(); System.out.println("请输入您的卡号:"); vip.setCarId(sc.nextInt()); System.out.println("请输入您的密码:"); vip.setPassword(sc.next()); if((vip=hascar(vip))!=null){ System.out.println("输入正确,请输入您的新密码:"); String pas; boolean flag=false; do{ pas=sc.next(); if(pas.length()<6){ System.out.println("对不起,您输入错误,请重新输入:"); flag=false; }else{ vip.setPassword(pas); flag=true; } }while (!flag); return true; }else{ System.out.println("对不起,您输入的卡号和密码不匹配,请重新输入:"); } return false; } }
三:测试类
public class Test { public static void main(String[] args) { CarVipDao car = new CarVipDao(); car.start(); } }