题目描述
几个注意点
- Math类的floor方法
-
产生长度为四的随机数:Random的nextInt(n)方法,0-(n-1)的数 包前不包后
-
产生规定格式的当前时间
-
.业务逻辑
-
list集合:contains(实例对象) vs contains(匿名对象)
-
引用对象的创建:
-
内部变量:只需要创建一次(switch时一个循环体,所有case都属于内部)
-
字符串的比较、转换到字符串类型、字符串中的空""
-
List item
待改进
- 业务逻辑更符合
- 操作类中的case里的内容改写为方法,case只需要进行方法的调用
- 密码 不在乎大小写
代码
VipMember.java:VIp成员类
package Test_vipSystem;
public class VipMember {
private String name;
private String accountNumber;
private String password;
private int point;
public VipMember(){
}
public VipMember(String name, String accountNumber, String password, int point) {
this.name = name;
this.accountNumber = accountNumber;
this.password = password;
this.point = point;
}
public void pointSum(double consumptionMoney){
//floor(3.14) 结果是3.0是double 并不是整数类型
// setPoint(Math.floor(consumptionMoney));//出错? 不兼容的类型: 从double转换到int可能会有损失
int temp = (int)Math.floor(consumptionMoney);//强制类型转换
setPoint(temp+getPoint());
System.out.println("积分成功!");
}
public double exchangeCaculate(int exchangePoint){
if(point >= 100&& point>exchangePoint){ //后面的条件!!!!
double money = exchangePoint/100*0.1;
setPoint(getPoint()-exchangePoint); //私有属性要用访问器
return money;
}
return 0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
}
VipSystem.java:VIP系统类
package Test_vipSystem;
import com.sun.media.sound.RIFFInvalidDataException;
import java.util.*;
//String name, String accountNumber, String password, int point
public class VipSystem {
// public VipMember[] VipMembers = new VipMember[20];
public List<VipMember> listMember= new ArrayList();
public void initial(){
listMember.add(new VipMember("张三","96327720","123456",267));
listMember.add(new VipMember("李四","37917406","123456",56));
listMember.add(new VipMember("王五","28910747","123456",90));
listMember.add(new VipMember("孙悟空","61904757","123456",700));
}
public void showInitialInterface(){
System.out.println("*****************欢迎进入超市会员管理系统**************************");
System.out.println("1.积分累计 2.积分兑换 3.查询剩余积分 4.修改密码 5.开卡 6.退出");
System.out.println("**************************************************************");
System.out.println("请输入:");
}
public VipMember logIn(Scanner input){
System.out.println("请输入您的会员卡号:");
String accountNumber = input.next();
System.out.println("请输入您的会员卡密码:");
String password = input.next();
// if(int j =0,j < listMember.size(),j++){
// }
Iterator<VipMember> iterator = listMember.iterator();
while(iterator.hasNext()){
//VipMember listMember = iterator.next();
VipMember listMember =new VipMember();
listMember = iterator.next();
if(listMember.getAccountNumber().equals(accountNumber) && listMember.getPassword().equals(password)){
return listMember;
}
}
return null; //返回空的VipMember类
}
public void operate(Scanner input){
int isexist = 0;
do{
showInitialInterface();
switch(input.nextInt()) {
case 5:
System.out.println("请输入注册姓名:");
String name = input.next();
System.out.println("请输入注册密码:");
String password = input.next()+"";
Random random = new Random();
String accountNumber = random.nextInt(100000000 - 10000000) + 10000000 + "";
int point = 100;
// VipMember vipMember1 = new VipMember(name, accountNumber, password, point);
// listMember.add(vipMember1);
// System.out.println(listMember.contains(vipMember1));
listMember.add(new VipMember(name, accountNumber, password, point)); //?为什么添加不进列表? 必须创建对象?不能new?
//>>匿名对象也可以添加进列表
// System.out.println(listMember.contains(new VipMember(name, accountNumber, password, point)));
//过程是:新建了一个和上面属性内容一样的VipMember类对象,存在这个对象,但这个新的没有存进去列表,列表找不到这个VipMember类对象,因此返回false
System.out.println("恭喜,开卡成功,赠送您100积分!您的会员卡号为:" + accountNumber);
break;
case 1:
// new VipMember() = logIn(input) //出错?
VipMember vipMember1 = logIn(input);
VipMember vipMember = new VipMember();
//登录操作:账号密码验证成功返回一个列表中对应VipMember类的对象。
vipMember = logIn(input);
if(vipMember != null){
System.out.println("请输入您此次消费的金额(消费1元累计1积分):");
double money = input.nextDouble();
vipMember.pointSum(money);
}else{
System.out.println("您的密码错误!");
}
break;
case 2:
vipMember = logIn(input);
//?上面case定义的vipMember,其他case可以用?
//>>可以用,时循环体中的内部变量
if(vipMember != null){
System.out.println("请输入您需要兑换的积分(100积分抵用0.1元,不足100积分不做抵用):");
int exchangePoint = input.nextInt();
double money = vipMember.exchangeCaculate(exchangePoint);
System.out.println("您的消费金额中使用会员积分抵消"+money+"元");
System.out.println("积分兑换成功!");
}else{
System.out.println("您的密码错误!");
}
break;
case 3:
vipMember = logIn(input);
if(vipMember != null){
System.out.println("您的剩余积分为:"+vipMember.getPoint());
}else{
System.out.println("您的密码错误!");
}
break;
case 4:
vipMember = logIn(input);
if(vipMember != null){
System.out.println("请输入新的会员卡号:");
String newPassword = input.next();
vipMember.setPassword(newPassword);
System.out.println("密码修改成功!");
}else{
System.out.println("您的密码错误!");
}
break;
case 6:
System.out.println("感谢您的使用,欢迎下次使用");
isexist = 1;
}
}while(isexist == 0);
}
}
Test1.java:测试的主函数
package Test_vipSystem;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
VipSystem vipSystem = new VipSystem();
vipSystem.initial();
Scanner input = new Scanner(System.in);
vipSystem.operate(input);
}
}