Java 高级编程 第三章、超市会员管理系统

StringBufferStringBuilder

        对字符串频繁修改(如字符串连接)时,使用 StringBuffer 类可以大大提高程序执行效率

//速度慢,线程安全
StringBuffer strb = new StringBuffer();
	strb.append("hello");
	strb.append(" World!"); //向后添加字符串
	strb.insert(5,"HSK"); //在指定位置插入字符串
	System.out.println(strb.toString); //转换为String类型
//速度快,线程不安全
StringBuilder strb1 = new StringBuilder();
	strb.append("hello");
	strb.append(" World!"); //向后添加字符串
	strb.insert(5,"HSK"); //在指定位置插入字符串
	System.out.println(strb1.toString); //转换为String类型
日期操作

        Date 类型:new Date() 获得当前时间,位于 java.util.Date 包中

   SimpleDateFormat 格式化日期类

//创建日期对象
Date date = new Date();
System.out.println("当前日期和时间:" +date);
//定制日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
String now = sdf.format(date);
System.out.println("格式化后的日期:" +now);
Calendar 类
Calendar calendar = Calendar.getInstance();
//获取年份
int year = calendar.get(Calendar.YEAR);
//获取月份
int month = calendar.get(Calendar.MONTH)+1;
//获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//获取星期几
int week = calendar.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("当前日期:" +year+ "年" +month+ "月" +day+ "日星期" +week);
System.currentTimeMillis(); //返回 1970年1月1日0时0分0秒到现在的毫秒数,主要用来计算代码执行时间
超市会员管理系统

        超市会员类

package ShoppingSystem;
//超市会员类
public class Member {
    //姓名、卡号、密码、积分、开卡日期
    private String name;
    private int id;
    private String password;
    private int score;
    private String date;

   public Member(){

   }

    public Member(String name, int id, String password, int score, String date) {
        this.name = name;
        this.id = id;
        this.password = password;
        this.score = score;
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}

        超市会员管理类

package ShoppingSystem;

import java.text.SimpleDateFormat;
import java.util.*;

//超市会员管理类
public class MemberManage {
    //管理所有会员信息
    List<Member> memberList = new ArrayList<>();
    Scanner sc = new Scanner(System.in);

    //输出菜单
    public void menu(){
        System.out.println("**********欢迎来到超市会员管理系统**********");
        System.out.println("1.开卡    2.修改密码    3.积分累计    4.积分兑换    5.查询剩余积分    6.退出");
        System.out.println("****************************************");
        System.out.print("请输入您的选择:");
    }

    //项目整体流程
    public void course(){
        do {
            menu();
            int choice = sc.nextInt();
            switch (choice){
                case 1:
                    openCard();
                    continue;
                case 2:
                    if (changePassword()){
                        System.out.println("密码修改成功!");
                    }
                    continue;
                case 3:
                    if (addScore()){
                        System.out.println("积分累计成功!");
                    }
                    continue;
                case 4:
                    if (convert()){
                        System.out.println("积分兑换成功!");
                    }
                    continue;
                case 5:
                    queryScore();
                    continue;
                case 6:
                    System.out.println("感谢您的使用,欢迎下次光临!!!");
                    break; //跳出switch
                default:
                    System.out.println("您的操作有误,请重新选择!");
                    continue;//结束本次循环,进入下次循环
            }
            break; //跳出循环
        }while (true);
    }
    //系统随机生成8位会员卡号
    public int getId(){
        Random random = new Random();
        int id;
        do {
            id = 1000000 + random.nextInt(99999999);
        } while(memberList.contains(id));
        return id;
    }

    //开卡
    public void openCard(){
        Member member = new Member();
        System.out.print("请输入您的注册姓名:");
        member.setName(sc.next());
        System.out.print("请输入您的注册密码:");
        member.setPassword(sc.next());
        //密码不能低于6位
        while (member.getPassword().length() < 6){
            System.out.print("密码长度不能低于6位,请重新输入:");
            member.setPassword(sc.next());
        }
        member.setId(getId());
        member.setScore(100);

        //开卡日期
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        member.setDate(sdf.format(date));

        //将注册成功的会员添加到集合中
        memberList.add(member);
        System.out.println("恭喜您开通会员卡成功!系统默认赠送您100积分,您的会员卡号为:"+member.getId()+",开卡日期为:"+member.getDate());
    }

    //验证会员是否存在
    //查询条件:会员卡号+密码
    public Member getMember(Member m){
        Member member = null;
        for (Member everymember : memberList) {
            if (m.getId() == everymember.getId() && m.getPassword().equals(everymember.getPassword())){
                //找到会员,会员存在
                member = everymember;
            }
        }
        return member;
    }

    //修改密码
    public boolean changePassword(){
        boolean flag = true; //验证密码是否成功
        Member member = new Member();
        System.out.print("请输入您的会员卡号:");
        member.setId(sc.nextInt());
        System.out.print("请输入您的会员卡密码:");
        member.setPassword(sc.next());
        member = getMember(member);
        if (member != null){
            //会员卡号和密码正确,找到会员,允许修改密码
            System.out.print("请输入新的会员密码:");
            String newPassword;
            boolean flagnewPassword; //新密码是否合法
            do {
                newPassword = sc.next();
                if (newPassword.length() < 6){
                    System.out.println("密码长度不能低于6位,请重新输入:");
                    flagnewPassword = false;
                }else {
                    member.setPassword(newPassword);
                    flag = true; //修改密码成功
                    flagnewPassword = true; //密码格式正确
                }
            }while (!flagnewPassword);
        }else {
            System.out.println("会员卡号或密码错误,请重新输入!");
            flag = false;
        }
        return flag;
    }

    //积分累计
    public boolean addScore(){
        boolean flag = true; //验证累计积分是否成功
        Member member = new Member();
        System.out.print("请输入您的会员卡号:");
        member.setId(sc.nextInt());
        System.out.print("请输入您的会员卡密码:");
        member.setPassword(sc.next());
        member = getMember(member); //查找会员
        if (member != null){
            //会员存在可以累计积分
            System.out.print("请输入您本次消费金额(消费一元累计一积分):");
            int money = sc.nextInt();
            member.setScore(member.getScore() + money);
            System.out.println("恭喜您,本次消费成功,本次消费金额为:"+money+",当前剩余积分为:"+member.getScore());
            flag = true;
        }else {
            System.out.println("您输入的会员卡号或密码错误,无法累计积分!");
            flag = false;
        }
        return flag;
    }

    //查询剩余积分
    public void queryScore(){
        Member member = new Member();
        System.out.print("请输入您的会员卡号:");
        member.setId(sc.nextInt());
        System.out.print("请输入您的会员卡密码:");
        member.setPassword(sc.next());
        member = getMember(member); //查找会员
        if (member != null){

            System.out.println("姓名\t会员卡号\t剩余积分\t开卡日期");
            System.out.println(member.getName()+"\t"+member.getId()+"\t"+member.getScore()+"\t"+member.getDate());
        }else {
            System.out.println("您输入的会员卡号或密码错误,无法查询积分!");
        }
    }

    //积分兑换
    public boolean convert(){
        boolean flag = true; //验证积分兑换是否成功
        Member member = new Member();
        System.out.print("请输入您的会员卡号:");
        member.setId(sc.nextInt());
        System.out.print("请输入您的会员卡密码:");
        member.setPassword(sc.next());
        member = getMember(member); //查找会员
        if (member != null){
            System.out.print("请输入您需要兑换使用的积分(100积分抵用0.1元,不足100积分不做抵用):");
            int score = sc.nextInt();
            //对积分兑换进行判断
            if (score <= member.getScore()){
                member.setScore(member.getScore() - score);
                System.out.println("您的消费金额中使用会员积分抵消了"+score/100*0.1+"元");
                flag = true;
            }else{
                System.out.println("抱歉,您的积分不足,无法兑换!");
                flag = false;
            }
        }else {
            System.out.println("您输入的会员卡号或密码错误,无法积分兑换!");
            flag = false;
        }
        return flag;
    }
}
        程序入口,测试类
package ShoppingSystem;
//程序入口,测试类
public class ShoppingTest {
    public static void main(String[] args) {
        MemberManage memberManage = new MemberManage();
        memberManage.course();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值