编程语言
首页 > 编程语言> > JAVA超市管理系统

JAVA超市管理系统

作者:互联网

import java.util.HashMap;
import java.util.Map;

// 用户数据访问类(提供对用户数据的CRUD操作:增删改查)
public class UserDao {

    // 全局变量:存储所有User的集合
    private Map<Integer,User> userMap = new HashMap<>();

    // 增
    public boolean addUser(User user){
        if(!userMap.containsKey(user.getUserNo())){
            userMap.put(user.getUserNo(),user);
            return true;
        }
        return false;
    }

    // 删
    public boolean deleteUser(int userNo){
        if(userMap.containsKey(userNo)){
            userMap.remove(userNo);
            return true;
        }
        return false;
    }

    // 改
    public boolean updateUser(User user){
        if(userMap.containsKey(user.getUserNo())){
            userMap.put(user.getUserNo(),user);
            return true;
        }
        return false;
    }

    // 查
    public User selectUser(int userNo,String userPwd){
        if(userMap.containsKey(userNo)){
            User user = userMap.get(userNo);
            if(userPwd.equalsIgnoreCase(user.getUserPwd())){
                return user;
            }
        }
        return null;
    }

    // 根据账户查询是否存在指定用户
    public boolean checkUserNoExists(int userNo){
        return userMap.containsKey(userNo);
    }
}
// 超市会员类
public class User {

    private String userName; // 用户名称
    private Integer userNo; // 用户账号(用于登录的唯一标识)
    private String userPwd; // 用户密码
    private Integer score; // 用户积分
    private Date createDate; // 开户日期(yyyy-MM-dd)

    public User() {
    }

    public User(String userName, Integer userNo, String userPwd, Integer score, Date createDate) {
        this.userName = userName;
        this.userNo = userNo;
        this.userPwd = userPwd;
        this.score = score;
        this.createDate = createDate;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getUserNo() {
        return userNo;
    }

    public void setUserNo(Integer userNo) {
        this.userNo = userNo;
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}
// 日期格式化工具类
public class DateFormatUtils {

    // 将日期对象格式化为yyyy-MM-dd字符格式
    public static String dateToString(Date date,String pattern){
        if(pattern == null) {
            pattern = "yyyy-MM-dd";
        }
        return new SimpleDateFormat(pattern).format(date);
    }
}
// 用户业务功能相关实现类
public class UserService {

    // service依赖dao提供的数据操作能力来完成自己的业务处理能力
    private UserDao userDao = new UserDao();
    private Scanner input = new Scanner(System.in);

    // 管理系统启动方法
    public void start(){
        System.out.println("*********欢迎使用超市会员管理系统***********");
        do {
           printMenu();
           int choiceId = input.nextInt();
           switch (choiceId){
               case 1:
                   addScore();
                   break;
               case 2:
                   useScore();
                   break;
               case 3:
                   changePwd();
                   break;
               case 4:
                   showScore();
                   break;
               case 5:
                   addUser();
                   break;
               case 6:
                   dropUser();
                   break;
               default:
                   System.out.println("谢谢使用!");
                   return;
           }
           System.out.println();
        }while (true);
    }
    // 打印菜单的方法
    private void printMenu(){
        System.out.println("***************");
        System.out.println("*1.积分累计    *");
        System.out.println("*2.积分兑换    *");
        System.out.println("*3.修改密码    *");
        System.out.println("*4.查询剩余积分 *");
        System.out.println("*5.开卡        *");
        System.out.println("*6.销卡        *");
        System.out.println("*7.退出        *");
        System.out.println("****************");
        System.out.print("请选择:");
    }

    // 用于用户身份的检查(登录)
    private User findUser(){
        System.out.print("请输入账户:");
        int userNo = input.nextInt();
        System.out.print("请输入密码:");
        String userPwd = input.next();
        // 调用Dao提供的“查”方法
        User user = userDao.selectUser(userNo,userPwd);
        if (user == null) {
            System.out.println("用户账户或密码错误!");
        }
        return user;
    }

    // 积分累计
    private void addScore(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.print("请输入本次消费金额(1元累计1积分)");
            double pay = input.nextDouble();
            // 对user积分属性进行修改
            user.setScore(user.getScore()+(int)pay);
            // 修改用户信息
            userDao.updateUser(user);
            System.out.println("用户积分累计成功!当前积分:" + user.getScore());
        }
    }

    // 积分兑换
    private void useScore(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.print("请输入本次要兑换的积分(100积分兑换0.1元,不足100积分不能兑换)");
            int payScore = input.nextInt();
            // 验证积分是否充足
            if(user.getScore() >= payScore){
                // 对user积分属性进行修改
                user.setScore(user.getScore() - payScore);
                // 修改用户信息
                userDao.updateUser(user);
                System.out.println("用户积分兑换成功!本次兑换支付金额:"
                        +(payScore * 0.001)+"元。当前剩余积分:" + user.getScore());
            } else {
                System.out.println("您没有足够的积分来兑换!现有积分:" + user.getScore());
            }

        }
    }

    // 查询剩余积分
    private void showScore(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.println("用户名称:" + user.getUserName());
            System.out.println("用户账户:" + user.getUserNo());
            System.out.println("剩余积分:" + user.getScore());
            System.out.println("开卡日期:" + DateFormatUtils.dateToString(user.getCreateDate(),null));
        }
    }

    // 修改密码
    private void changePwd(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            System.out.print("请输入新密码:");
            String newPwd = input.next();
            System.out.print("请再次输入新密码:");
            String rePwd = input.next();
            if(rePwd.equals(newPwd)){
                // 更新用户
                user.setUserPwd(newPwd);
                // 调用DAO更新用户
                userDao.updateUser(user);
                System.out.println("密码修改成功!");
            } else {
                System.out.println("两次输入密码不一致,修改失败!");
            }
        }
    }

    // 开卡
    private void addUser(){
        User user = new User();
        user.setCreateDate(new Date()); // 开卡日期
        user.setScore(100); // 开卡即送100积分
        System.out.print("请输入用户名:");
        user.setUserName(input.next());
        System.out.print("请输入开卡密码:"); // 参考修改密码进行二次密码确认,此处省略...
        user.setUserPwd(input.next());
        // 随机生成用户账户(2种方式:1,使用随机数  2,使用日期时间)
        // 检查生成的账户是否存在
        while(true) {
            Random random = new Random();
            int randomNo = random.nextInt(100000000);
            if(!userDao.checkUserNoExists(randomNo)){
                // 设置用户的账户(唯一性)
                user.setUserNo(randomNo);
                break;
            }
        }
        // 方式2:通过日期格式化+随机数生成唯一卡号
//        String randomDateNo = DateFormatUtils.dateToString(new Date(),"HHmmss");
//        randomDateNo+= new Random().nextInt(10000);
//        int randomNum = Integer.valueOf(randomDateNo); // 整数卡号

        // 添加用户
        userDao.addUser(user);
        System.out.println("用户开户成功!您的卡号:"+user.getUserNo()+",请牢记!");
    }

    // 销卡
    private void dropUser(){
        // 先登录检查
        User user = findUser();
        if(user != null) {
            userDao.deleteUser(user.getUserNo());
            System.out.println("用户销户成功!");
        }
    }
}
/**
测试类
 */
public class Main {

    public static void main(String[] args) {
        // 启动管理系统
        new UserService().start();
    }
}

标签:JAVA,管理系统,System,超市,user,println,public,userNo,out
来源: https://blog.csdn.net/weixin_57614141/article/details/122469110