IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java基础练习0723:会员系统(含代码、改进点、关键点、出错点) -> 正文阅读

[Java知识库]java基础练习0723:会员系统(含代码、改进点、关键点、出错点)

题目描述

在这里插入图片描述

几个注意点

  • 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);
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 21:31:41  更:2021-07-25 21:32:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/25 4:11:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码