第一步我们首先要想清楚思路,比如我们在超市消费的时候是不是每个人都会有一张会员卡,会员卡号都是随机生成的。然后客人凭借这个卡号去消费的时候累计积分
所以第一步我们建立一个关于用户的一个Class类
package com.work.Demo_Timeout;
/**
* @author Lizhenye
* @date 2019/5/22 14:27
* 会员的类
*/
public class Member {
private String registDate; //开卡日期
private String name;// 姓名
private int cardId; //卡号
private String password;//密码
private int score; //积分
//构造函数 无参
public Member() {
}
//构造函数有参
public Member(String registDate, String name, int cardId, String password, int score) {
this.registDate = registDate;
this.name = name;
this.cardId = cardId;
this.password = password;
this.score = score;
}
public String getRegistDate() {
return registDate;
}
public void setRegistDate(String registDate) {
this.registDate = registDate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCardId() {
return cardId;
}
public void setCardId(int cardId) {
this.cardId = cardId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
第二 我们就要把我们方法以及里面执行的方法写进去
package com.work.Demo_Timeout;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author Lizhenye
* @date 2019/5/22 14:31
* 业务类
*/
public class MemberDao {
/**
* //先建立一个考试的菜单
*/
//定义好Scanner 用于接收客户输入信息
Scanner sc=new Scanner(System.in);
// 添加一个集合
List<Member> memberList=new ArrayList();
public void headerStart(){
System.out.println("=========================================欢迎进入会员管理系统");
System.out.println("1、积分管理 2、积分兑换 3、积分查询 4、修改密码 5、开卡 6、退出");
System.out.println("请选择您要进行的操作");
}
/**
*
* 具体的实现业务
*/
public void Start(){
do {
//添加项目的开头
headerStart();
int input = sc.nextInt();
switch (input){
case 1:
//积分存取
if (saveScore()){
System.out.println("积分存取成功");
}else {
System.out.println("存取积分失败");
}
continue;
case 2://2、积分兑换
if (minuScore()){
System.out.println("积分兑换成功");
}else {
System.out.println("存取兑换失败");
}
continue;
case 3: // 3、积分查询
showScore();
continue;
case 4:// 4、修改密码
if (changPwd()){
System.out.println("修改密码成功");
}else {
System.out.println("修改密码失败");
}
continue;
case 5:// 5、开卡
register();
continue;
case 6:
// 退出
System.out.println("感谢您使用我们超市的会员卡");
break;
default:
System.out.println("请您输入正确的操作(1~6):");
continue;
}
break;
} while (true);
}
/**
* 积分存取
* @return
*/
public boolean saveScore(){
Member member = new Member();
System.out.println("请输入您的卡号:");
member.setCardId(sc.nextInt());
System.out.println("请输入您的密码:");
member.setPassword( sc.next());
if ((member=hasMemer(member))!=null){
System.out.println("请输入您在本超市消费的金额(一元一积分):");
int money = sc.nextInt();
member.setScore(money+member.getScore());
System.out.println("积分增加成功,您目前的积分是:"+member.getScore());
return true;
}else {
System.out.println("您输入的是有问题的操作。");
}
return false;
}
/***
* 积分兑换
* @return
*/
public boolean minuScore(){
Member member = new Member();
System.out.println("请输入您的卡号:");
member.setCardId(sc.nextInt()); //接受输入的值,并且设置这个值为对象的卡号
System.out.println("请输入您的密码:");
member.setPassword(sc.next());
if ((member=hasMemer(member))!=null){
System.out.println("积分兑换规则:100积分积分为0.1元,请输入您要兑换的积分");
int num = sc.nextInt();
if((member.getScore()-num)<0){
System.out.println("您的积分不足,请重新操作");
}else{
member.setScore(member.getScore()-num);
System.out.println("兑换成功,您已经兑换. 您一共兑换"+(num/100)*0.1+"元"+"您的积分目前是:"+member.getScore());
return true;
}
}
return false;
}
/**
* 积分查询
*/
public void showScore(){
Member member = new Member(); //实例化对象为member
System.out.println("请输入您的卡号:");
member.setCardId(sc.nextInt());
System.out.println("请输入您的密码:");
member.setPassword(sc.next());
if ((member=hasMemer(member))!=null){
System.out.println("姓名 会员卡号 剩余积分 开卡日期");
System.out.println(member.getName()+" "+member.getCardId()+" "+member.getScore()+" "+member.getRegistDate());
}else{
System.out.println("您输入的账号密码有问题,无法查询");
}
}
public Member hasMemer(Member member) {
if (member.getPassword() != null) { //判断下输入的账号密码是不是为空
for (int i = 0; i < memberList.size(); i++) { //不为空就遍历循环 存数据的集合里面是不是含有这个账号密码
if (member.getCardId() == memberList.get(i).getCardId() && member.getPassword().equalsIgnoreCase(memberList.get(i).getPassword())) {
return memberList.get(i);
}
}
}
return null;
}
/**
* 修改密码
* @return
*/
public boolean changPwd(){
Member member = new Member();
System.out.println("请输入您的卡号:");
member.setCardId(sc.nextInt());
System.out.println("请输入您的密码:");
member.setPassword(sc.next());
if ((member=hasMemer(member))!=null){
System.out.println("请输入您现在修改的密码(密码的长度不能低于6位):");
String newpwd = sc.next();
if (newpwd.length()<6){
System.out.println("您的密码输入不符合规定.");
return false;
}
member.setPassword(newpwd);
}
return true;
}
/**
* 开卡
*/
public void register(){
Member member = new Member();
System.out.println("欢迎您使用本超市会员卡,请输入您的姓名:");
String carName=sc.next();
member.setName(carName);
//随机生成一个卡号
member.setCardId(this.randomCarId());
System.out.println("请输入您设置的密码(密码长度不低于6):");
//定义一个开关 是否跳出循环
boolean flag=true;
do {
String pwd = sc.next();
if (pwd.length()<6){
System.out.println("输入的密码不可以低于六位数字,请重新输入:");
flag = false;
}else{
member.setPassword(pwd);
flag =true;
}
}while (!flag);
//开发送积分100
member.setScore(100);
//添加开卡日期
SimpleDateFormat simday = new SimpleDateFormat("yyyy年MM月dd日");
Date date = new Date();
String newTime=simday.format(date);
member.setRegistDate(newTime);
memberList.add(member);
System.out.println("恭喜您成为一个超级会员,系统赠送您100积分,您的卡号是"+member.getCardId());
}
/*
* 随机一个卡号
* @return
*/
public int randomCarId(){
//实例化对象
Member member = new Member();
//随机生成一个卡号
Random random= new Random();
int carId = random.nextInt(99999);
//判断这个卡号是否存在
for (Member m:memberList){
//如果集合对象里的会员卡号存在重新随机一个新的数字
if (m.getCardId()==carId){
carId = random.nextInt();
}
}
return carId;
}
}
最后一步我们通过main方法去实现结果
package com.work.Demo_Timeout;
/**
* @author Lizhenye
* @date 2019/5/22 14:32
* 实现类
*/
public class MemberTest {
public static void main(String[] args) {
MemberDao memberDao = new MemberDao();
memberDao.Start();
}
}
以上是我们的所有代码,需要注意的就只有一个卡号的随机生成,我们要判断下这个卡号是不是已经存在了,如果存在就需要重新生成
public int randomCarId(){
//实例化对象
Member member = new Member();
//随机生成一个卡号
Random random= new Random();
int carId = random.nextInt(99999);
//判断这个卡号是否存在
for (Member m:memberList){
//如果集合对象里的会员卡号存在重新随机一个新的数字
if (m.getCardId()==carId){
carId = random.nextInt();
}
}
return carId;
}